Market Conditions with RSI v6Market Conditions with RSI Indicator
This indicator combines price action, volume, and RSI (Relative Strength Index) to identify market conditions and generate trading signals.
What It Does
The indicator classifies market conditions into four categories:
1.Strong Bullish: When price is rising, volume is up, and the volume-based "open interest" is increasing
2.Weak Bullish: When price is rising, but volume is down, and the volume-based "open interest" is decreasing
3.Weak Bearish: When price is declining, volume is up, and the volume-based "open interest" is increasing
4.Strong Bearish: When price is declining, volume is down, and the volume-based "open interest" is decreasing
These market conditions are then combined with RSI readings to generate buy and sell signals.
## How to Use It
1. Add the indicator to your TradingView chart
2. The indicator will display below your price chart (since it's not an overlay)
3. Look for buy signals (green triangles at the bottom) and sell signals (red triangles at the top)
4. Use the color-coded background to quickly identify the current market condition
5. Check the information table in the top-right corner for detailed metrics
What It Shows
1. RSI Line: The blue line showing the Relative Strength Index value
2. Background Color:
- Green = Strong Bullish
- Light Green = Weak Bullish
- Orange = Weak Bearish
- Red = Strong Bearish
3. Buy Signals (green triangles) appear when:
- Strong Bullish condition with RSI below 50 (catching momentum early)
- Weak Bearish condition with RSI below 30 (oversold opportunity)
4. Sell Signals (red triangles) appear when:
- Strong Bearish condition with RSI above 50 (catching downward momentum)
- Weak Bullish condition with RSI above 70 (overbought opportunity)
5. Information Table showing:
- Current market condition
- RSI value
- Price direction (rising/declining)
- Volume status (up/down)
- Volume-based "open interest" proxy (up/down)
Customization Options
You can adjust:
- RSI Length (default: 14)
- RSI Overbought Level (default: 70)
- RSI Oversold Level (default: 30)
- Volume Moving Average Length (default: 20)
- "Open Interest" Moving Average Length (default: 20)
ค้นหาในสคริปต์สำหรับ "bear"
zone trading stratThis only works for DOGEUSD , I made it for the 8cap chart so only use it for that.
If you want this for other symbols/charts you need to comment below or msg me.
# Price Zone Trading System: Technical Explanation
## Core Concept
The Price Zone Tracker is built on the concept that price tends to respect certain key levels or "zones" on the chart. These zones act as support and resistance areas where price may bounce or break through. The system combines zone analysis with multiple technical indicators to generate high-probability trading signals.
## Zone Analysis
The system tracks 9 predefined price zones. Each zone has both a high and low boundary, except for Zone 5 which is represented by a single line. When price enters a zone, the system monitors whether it stays within the zone, breaks above it (bullish), or breaks below it (bearish).
This zone behavior establishes the foundational bias of the system:
- When price closes above its previous zone: Zone State = Bullish
- When price closes below its previous zone: Zone State = Bearish
- When price remains within a zone: Zone State = Neutral
## Trend Analysis Components
The system performs multi-timeframe analysis using several technical components:
1. **Higher Timeframe Analysis** (±3 points in scoring)
- Uses 15-minute charts for sub-5-minute timeframes
- Uses 30-minute charts for 5-minute timeframes
- Uses 60-minute charts for timeframes above 5 minutes
- Evaluates candlestick patterns and EMA crossovers on the higher timeframe
2. **EMA Direction** (±1 point in scoring)
- Compares 12-period and 26-period EMAs
- Bullish when fast EMA > slow EMA
- Bearish when fast EMA < slow EMA
3. **MACD Analysis** (±1 point in scoring)
- Uses standard 12/26/9 MACD settings
- Bullish when MACD line crosses above signal line with positive histogram
- Bearish when MACD line crosses below signal line with negative histogram
4. **Price Action** (±2 points in scoring)
- Evaluates whether price is making higher highs/higher lows (uptrend)
- Or lower highs/lower lows (downtrend)
- Also considers ATR-based volatility and strength of movements
## Trend Score Calculation
All these components are weighted and combined into a trend score:
- Higher timeframe components have stronger weights (±2-3 points)
- Current timeframe components have moderate weights (±1 point)
- Price action components have varied weights (±0.5-2 points)
The final trend state is determined by thresholds:
- Score > +3: Trend Analysis State = Bullish
- Score < -3: Trend Analysis State = Bearish
- Score between -3 and +3: Trend Analysis State = Neutral
## Signal Generation Logic
The system combines the Zone State with the Trend Analysis State:
1. If Zone State and Trend Analysis State are both bullish:
- Combined State = Bullish
- Line Color = Green
2. If Zone State and Trend Analysis State are both bearish:
- Combined State = Bearish
- Line Color = Red
3. If Zone State and Trend Analysis State contradict each other:
- Combined State = Neutral
- Line Color = Black
This implements a safety mechanism requiring both zone analysis and technical indicators to agree before generating a directional signal.
## Trading Signals
Trading signals are generated based on changes in the Combined State:
- When Combined State changes from neutral/bearish to bullish:
- Trading Signal = LONG (green triangle appears on chart)
- When Combined State changes from neutral/bullish to bearish:
- Trading Signal = SHORT (red triangle appears on chart)
- When Combined State changes from bullish/bearish to neutral:
- Trading Signal = EXIT (yellow X appears on chart)
- When Combined State remains unchanged:
- Trading Signal = NONE (no new marker appears)
## Reversal Warning
The system also monitors for potential reversal conditions:
- When Combined State is bullish but both RSI and MFI are overbought (>70)
- When Combined State is bearish but both RSI and MFI are oversold (<30)
In these cases, a yellow diamond appears on the chart as a warning that a reversal might be imminent.
## Visual Elements
The indicator provides multiple visual elements:
1. Zone boundaries as translucent orange areas
2. A single colored line below price (green/red/black) showing the current signal
3. Trading signals as shapes on the chart
4. An information panel showing all relevant indicator values and signals
## Usage Limitations
The indicator is designed to work optimally on timeframes below 30 minutes. On higher timeframes, a warning appears and analysis is disabled.
Power Struggle [GOODY]📊 Power Struggle – Gauge the Battle Between Bulls & Bears
"Power Struggle " is an advanced, multi-layered market strength and momentum analysis tool. It combines the classic Elder Impulse System and Elder-Ray Power Columns with modern enhancements like visual gauges, momentum shift alerts, and volume-based divergence detection — all in one clean and intuitive interface.
________________________________________
🧠 What This Indicator Shows You:
✅ Bull vs Bear Power Columns
• Visualize who’s in control with clean columns showing Bull and Bear dominance.
• Fully integrated with EMA-based Impulse logic to detect trend conviction.
✅ Buy/Sell Signal Labels & Alerts
• Trend-following signals based on dynamic power thresholds.
• Green = Bull Confirmed | Red = Bear Confirmed
• Alerts included for all signal and divergence conditions.
✅ Dynamic Volume Gauge (Horizontal or Vertical)
• A powerful gauge showing real-time buyer/seller strength.
• Includes divergence detection when volume and price disagree, often a warning sign.
• 🔄 Fully customizable layout, position, flip, rotation, and gradient styling.
✅ Active Column Gauge
• Tracks real-time momentum shifts within each candle.
• Highlights power shifts with emoji markers (🐂/🐻), and calculates where price closes within each candle's range.
✅ Volume-in-Candle Labels (Optional)
• See raw Buy vs Sell volume numbers inside the candles.
• Easily spot if price moves are supported by actual volume.
________________________________________
⚙️ Customizable Settings
• 🎚️ Set thresholds for signal strictness
• 🔔 Use built-in alerts for:
o Bullish/Bearish Impulse
o Bull/Bear Power Thresholds
o Bullish/Bearish Divergences
o Momentum Shifts
Trapped Traders Order BlocksHow It Works
The Trapped Traders Order Blocks indicator identifies specific price action patterns that suggest large market participants ("big money") have been trapped in losing positions after significant price sweeps, creating potential opportunities for reversals. The indicator detects both "bullish trap blocks" (where bearish traders are trapped) and "bearish trap blocks" (where bullish traders are trapped). Here’s the step-by-step process for each:
Bullish Trap Block (Bears Trapped):
A bearish candle (Candle A) must sweep the high of the previous candle (Candle B), meaning its high exceeds the high of the prior candle.
This bearish candle must have a longer upper wick than its lower wick, indicating rejection of higher prices.
The candle must not be a doji (i.e., it must have a significant body, defined as the body being at least 10% of the candle's range).
The next candle (Candle C) must close above the body of the bearish candle (Candle A), suggesting that price has immediately moved against the bearish sweep, potentially trapping bearish traders who entered short positions expecting a downward move.
The body of the bearish candle (Candle A) is marked as a "bullish trap block." A box is drawn around this candle's body, and a label ("Bullish Trap") is placed below it.
Bearish Trap Block (Bulls Trapped):
A bullish candle (Candle A) must sweep the low of the previous candle (Candle B), meaning its low is below the low of the prior candle.
This bullish candle must have a longer lower wick than its upper wick, indicating rejection of lower prices.
The candle must not be a doji.
The next candle (Candle C) must close below the body of the bullish candle (Candle A), suggesting that price has immediately moved against the bullish sweep, potentially trapping bullish traders who entered long positions expecting an upward move.
The body of the bullish candle (Candle A) is marked as a "bearish trap block." A box is drawn around this candle's body, and a label ("Bearish Trap") is placed above it.
Dynamic Box Extension:
For both bullish and bearish trap blocks, the box extends dynamically to the current bar unless it exceeds a user-defined age (default is 52 bars), at which point it stops at the maximum age.
Sweep Detection:
Bullish Sweep (of any trap block, bullish or bearish):
The current candle's open is above the top of the box.
The low is below the top of the box.
The close is above the top of the box.
The lower wick is longer than the upper wick (indicating rejection of lower prices).
The close is above 50% of the candle's range (ensuring a strong bullish bias).
When a bullish sweep occurs, a label ("Bullish Sweep") is placed at the low of the candle, pointing upward, and an alert is triggered.
Bearish Sweep (of any trap block, bullish or bearish):
The current candle's open is below the bottom of the box.
The high is above the bottom of the box.
The close is below the bottom of the box.
The upper wick is longer than the lower wick (indicating rejection of higher prices).
The close is below 50% of the candle's range (ensuring a strong bearish bias).
When a bearish sweep occurs, a label ("Bearish Sweep") is placed at the high of the candle, pointing downward, and an alert is triggered.
When to Be Used
The Trapped Traders Order Blocks indicator is best used in the following scenarios:
Reversal Trading:
Use this indicator to identify potential reversal points in the market. Bullish trap blocks suggest that trapped bears may unwind their short positions, leading to a potential bullish move. Bearish trap blocks suggest that trapped bulls may unwind their long positions, leading to a potential bearish move.
Look for sweeps of these blocks as confirmation of a directional move. A bullish sweep indicates a potential upward move, while a bearish sweep indicates a potential downward move.
Range-Bound Markets:
In sideways or ranging markets, trapped blocks can highlight key levels where large players have been caught off-guard. These levels often act as support or resistance, and a sweep of the block can signal a breakout or continuation in the direction of the sweep.
Confluence with Other Indicators:
Combine the trapped blocks with other technical analysis tools, such as support/resistance levels, Fibonacci retracements, or volume analysis, to increase the probability of a successful trade. For example, a bullish trap block near a strong support level with a bullish sweep can provide a high-probability setup for a long position, while a bearish trap block near a strong resistance level with a bearish sweep can signal a short opportunity.
Timeframes:
The indicator is most effective on higher timeframes such as 1-day (1D), 1-week (1W), and 1-month (1M) charts. These timeframes are more likely to capture significant moves involving large market participants, reducing noise and false signals compared to lower timeframes. While it can be used on lower timeframes (e.g., 1-hour or 4-hour), the signals may be less reliable due to increased market noise.
Logic Behind It
The logic behind the Trapped Traders Order Blocks indicator is rooted in market psychology and the behavior of large market participants ("big money"). When a large sweep candle occurs where price spikes in one direction but then quickly reverses it often indicates that traders have entered positions in the direction of the sweep, expecting a continuation. However, if the price immediately moves against them, these traders are now trapped in losing positions.
Bullish Trap Block (Bears Trapped):
A large bearish sweep candle (spiking upward but closing lower) suggests that bearish traders (bears) have entered short positions at the top of the move, expecting a downward continuation. If the next candle closes above the bearish candle's body, these bears are trapped in losing positions.
The body of the bearish candle becomes a "bullish trap block" because the trapped bears are likely to have placed their stop-loss orders or break-even exit orders just above the high of the sweep candle or within the body of the candle. As price revisits this level in the future, these trapped traders may attempt to unwind their positions by buying back their shorts, which can drive the price higher. This unwinding process often attracts new buyers, leading to a potential bullish reversal or continuation.
The bullish sweep conditions (e.g., close > box top, longer lower wick, and close above 50% of the range) ensure that the price action at the block level shows strong bullish momentum and rejection of lower prices, confirming the potential for a move higher.
Bearish Trap Block (Bulls Trapped):
A large bullish sweep candle (spiking downward but closing higher) suggests that bullish traders (bulls) have entered long positions at the bottom of the move, expecting an upward continuation. If the next candle closes below the bullish candle's body, these bulls are trapped in losing positions.
The body of the bullish candle becomes a "bearish trap block" because the trapped bulls are likely to have placed their stop-loss orders or break-even exit orders just below the low of the sweep candle or within the body of the candle. As price revisits this level in the future, these trapped traders may attempt to unwind their positions by selling their longs, which can drive the price lower. This unwinding process often attracts new sellers, leading to a potential bearish reversal or continuation.
The bearish sweep conditions (e.g., close < box bottom, longer upper wick, and close below 50% of the range) ensure that the price action at the block level shows strong bearish momentum and rejection of higher prices, confirming the potential for a move lower.
Summary
Bullish Trap Block: Occurs when bears get trapped after a bearish sweep candle is immediately followed by a bullish candle, indicating a potential reversal as trapped bears may unwind their positions.
Bearish Trap Block: Occurs when bulls get trapped after a bullish sweep candle is immediately followed by a bearish candle, indicating a potential bearish reversal.
Use Case: Ideal for identifying reversal opportunities, especially in range-bound markets or at key support/resistance levels on higher timeframes like 1D, 1W, and 1M, and can be combined with other indicators for confluence.
Logic: Large sweep candles followed by an immediate reversal suggest that big money has been trapped, and these traders may unwind their positions at break-even in the near future, driving price in the opposite direction of their initial trade.
This indicator provides a visual and actionable way to identify these trapped trader scenarios, with customizable settings for box display, sweep visuals, and alerts to help traders capitalize on these opportunities, particularly on higher timeframes where the signals are most reliable.
Democratic MultiAsset Strategy [BerlinCode42]Happy Trade,
Intro
Included Trade Concept
Included Indicators and Compare-Functions
Usage and Example
Settings Menu
Declaration for Tradingview House Rules on Script Publishing
Disclaimer
Conclusion
1. Intro
This is the first multi-asset strategy available on TradingView—a market breadth multi-asset trading strategy with integrated webhooks, backtesting capabilities, and essential strategy components like Take Profit, Stop Loss, Trailing, Hedging, Time & Session Filters, and Alerts.
How It Trades? At the start of each new bar, one asset from a set of eight is selected to go long or short. As long there is available cash and the selected asset meets the minimum criteria.
The selection process works through a voting system, similar to a democracy. Each asset is evaluated using up to five indicators that the user can choose. The asset with the highest overall voting score is picked for the trade. If no asset meets all criteria, no trade is executed, and the cash reserve remains untouched for future opportunities.
How to Set Up This Market Breadth Strategy:
Choose eight assets from the same market (e.g., cryptos or big tech stocks).
Select one to five indicators for the voting system.
Refine the strategy by adjusting Take Profit, Stop Loss, Hedging, Trailing, and Filters.
2. Voting as the included Trade Concept
The world of financial trading is filled with both risks and opportunities, and the key challenge is to identify the right opportunities, manage risks, and do both right on time.
There are countless indicators designed to spot opportunities and filter out risks, but no indicator is perfect—they only work statistically, hitting the right signals more often than the wrong ones.
The goal of this strategy is to increase the accuracy of these Indicators by:
Supervising a larger number of assets
Filtering out less promising opportunities
This is achieved through a voting system that compares indicator values across eight different assets. It doesn't just compare long trades—it also evaluates long vs. short positions to identify the most promising trade.
Why focus on one asset class? While you can randomly select assets from different asset classes, doing so prevents the algorithm from identifying the strongest asset within a single class. Think about, within one asset class there is often a major trend whereby different asset classes has not really such behavior.
And, you don’t necessarily need trading in multiple classes—this algorithm is designed to generate profits in both bullish and bearish markets. So when ever an asset class rise or fall the voting system ensure to jump on the strongest asset. So this focusing on one asset class is an integral part of this strategy. This all leads to more stable and robust trading results compared to handling each asset separately.
3. Included Indicators and Compare-Functions
You can choose from 17 different indicators, each offering different types of signals:
Some provide a directional signal
Some offer a simple on/off signal
Some provide both
Available Indicators: RSI, Stochastic RSI, MFI, Price, Volume, Volume Oscillator, Pressure, Bilson Gann Trend, Confluence, TDI, SMA, EMA, WMA, HMA, VWAP, ZLMA, T3MA
However, these indicators alone do not generate trade signals. To do so, they must be compared with thresholds or other indicators using specific comparison functions.
Example – RSI as a Trade Signal. The RSI provides a value between 0 and 100. A common interpretation is:
RSI over 80 → Signal to go short or exit a long trade
RSI under 20 → Signal to go long or exit a short trade
Here, two comparison functions and two thresholds are used to determine trade signals.
Below is the full set of available comparison functions, where: I represents the indicator’s value and A represents the comparator’s value.
I < A if I smaller A then trade signal
I > A if I bigger A then trade signal
I = A if I equal to A then trade signal
I != A if I not equal to A then trade signal
A <> B if I bigger A and I smaller B then trade signal
A >< B if I smaller A then long trade signal or if I bigger B then short trade signal
Image 1
In Image 1, you can see one of five input sections, where you define an indicator along with its function, comparator, and constants. For our RSI example, we select:
Indicator: RSI
Function: >< (greater/less than)
Comparator: Constant
Constants: A = 20, B = 80
With these settings a go short signal is triggered when RSI crosses above 80. And a go long signal is triggered when RSI crosses below 20.
Relative Strength Indicator: The RSI from the public TradingView library provides a directional trade signal. You can adjust the price source and period length in the indicator settings.
Stochastic Relative Strength Indicator: As above the Stoch RSI offers a trade signal with direction. It is calculated out of the RSI, the stochastic derivation and the SMA from the Tradingview library. You can set the in-going price source and the period length for the RSI, for the Stochastic Derivation and for the SMA as blurring in the Indicator settings section.
Money Flow Indicator: As above the MFI from the public Tradingview library offers a trade signal with direction. You can set the in-going price source and the period length in the Indicator settings section.
Price: The Price as Indicator is as simple as it can be. You can chose Open, High, Low or Close or combinations of them like HLC3 or even you can import an external Indicator. The absolute price or value can later be used to generate a trade signals when certain constant thresholds or other indicators signals are crossed.
Volume: Similar as above the Volume as Indicator offers the average volume as absolute value. You can set the period length for the smoothing and you can chose where it is presented in the base currency $ or is the other. For example the trade pair BTCUSD you can chose to present the value in $ or in BTC.
Volume Oscillator: The Volume Oscillator Indicator offers a value in the range of . Whereby a value close to 0 means that the volume is very low. A value around 1 means the volume is same high as before and Values higher as 1 means the volume is bigger then before. You can set the period length for the smoothing and you can chose where it is presented in the base currency $ or is the other. For example the trade pair BTCUSD you can chose to present the value in $ or in BTC.
Pressure Indicator: The Pressure is an adapted version of LazyBear's script (Squeeze Momentum Indicator) Pressure is a Filter that highlight bars before a bigger price move in any direction. The result are integer numbers between 0 and 4 whereby 0 means no bigger price move excepted, while 4 means huge price move expected. You can set the in-going price source and the period length in the Indicator settings section.
Bilson Gann Trend: The Bilson Gann Trend Indicator is a specific re-implementation of the widely known Bilson Gann Count Algorithm to detect Highs and Lows. On base of the last four Highs and Lows a trend direction can be calculated. It is based on 2 rules to confirm a local pivot candidate. When a local pivot candidate is confirmed, let it be a High then it looks for Lows to confirm. The result range is whereby -1 means down trend, 1 means uptrend and 0 sideways.
Confluence: The Confluence Indicator is a simplified version of Dale Legan's "Confluence" indicator written by Gary Fritz. It uses five SMAs with different periods lengths. Whereby the faster SMA get compared with the (slower) SMA with the next higher period lengths. Is the faster SMA smaller then the slower SMA then -1, otherwise +1. This is done with all SMAs and the final sum range between . Whereby values around 0 means price is going side way, Crossing under 0 means trend change from bull to bear. Is the value>2 means a strong bull trend and <-2 a strong bear trend.
Trades Dynamic Index: The TDI is an adapted version from the "Traders Dynamic Index" of LazyBear. The range of the result is whereby 2 means Top goShort, -2 means Bottom goLong, 0 is neutral, 1 is up trend, -1 is down trend.
Simple Moving Average: The SMA is the one from the Tradingview library. You can compare it with the last close price or any other moving average indicator to indicate up and down trends. You can set the in-going price source and the period length in the Indicator settings section.
Exponential Moving Average: The EMA as above is the one from the Tradingview library. You can compare it with the last close price or any other moving average indicator to indicate up and down trends. You can set the in-going price source and the period length in the Indicator settings section.
Weighted Moving Average: The WMA as above is the one from the Tradingview library. You can compare it with the last close price or any other moving average indicator to indicate up and down trends. You can set the in-going price source and the period length in the Indicator settings section.
Hull Moving Average: HMA as above is the one from the Tradingview library. You can compare it with the last close price or any other moving average indicator to indicate up and down trends. You can set the in-going price source and the period length in the Indicator settings section.
Volume Weighted Average Price: The VWAP as above is the one from the Tradingview library. You can compare it with the last close price or any other moving average indicator to indicate up and down trends. You can set the in-going price source in the Indicator settings section.
Zero Lag Moving Average: The ZLMA by John Ehlers and Ric Way describe in their paper: www.mesasoftware.com
As the other moving averages you can compare it with the last close price or any other moving average indicator to indicate up and down trends. You can set the in-going price source and the period length in the Indicator settings section.
T3 Moving Average: The T3MA is the one from the Tradingview library. You can compare it with the last close price or any other moving average indicator to indicate up and down trends. You can set the in-going price source, the period length and a factor in the Indicator settings section. Keep this factor at 1 and the T3MA swing in the same range as the input. Bigger 1 and it swings over. Factors close to 0 and the T3MA becomes a center line.
All MA's following the price. The function to compare any MA Indicators would be < or > to generate a trade direction. An example follows in the next section.
4. Example and Usage
In this section, you see how to set up the strategy using a simple example. This example was intentionally chosen at random and has not undergone any iterations to refine the trade results.
We use the RSI as the trade signal indicator and apply a filter using a combination of two moving averages (MAs). The faster MA is an EMA, while the slower MA is an SMA. By comparing these two MAs, we determine a trend direction. If the faster MA is above the slower MA the trend is upwards etc. This trend direction can then be used for filtering trades.
The strategy follows these rules:
If the RSI is below 20, a buy signal is generated.
If the RSI is above 80, a sell signal is generated.
However, this RSI trade signal is filtered so that a trade is only given the maximum voting weight if the RSI trade direction aligns with the trend direction determined by the MA filter.
So first, you need to add your chosen assets or simply keep the default ones. In Image 2, you can see one of the eight asset input sections.
Image 2
This strategy offers some general trade settings that apply equally to all assets and some asset-specific settings. This distinction is necessary because some assets have higher volatility than others, requiring asset-specific Take Profit and Stop Loss levels.
Once you have made your selections, proceed to the Indicators and Compare Functions for the voting. Image 3 shows an example of this setup.
Image 3
Later on go to the Indicator specific settings shown in Image 4 to refine the trade results.
Image 4
For refine the trade results take also a look on the result summary table, development of capital plot, on the list of closed and open trades and screener table shown in Image 5.
Image 5
To locate any trade for any asset in the chronological and scroll-able trade list, each trade is marked with a label:
An opening label displaying the trade direction, ticker ID, trade number, invested amount, and remaining cash reserves.
A closing label showing the closing reason, ticker ID, trade number, trade profit (%), trade revenue ($), and updated cash reserves.
Additionally: a green line marks each Take Profit level. An orange line indicates the (trailing) Stop Loss.
The summary table in the bottom-left corner provides insights into how effective the trade strategy is. By analyzing the trade list, you can identify trades that should be avoided.
To find those bad trades on the chart, use the trade number or timestamp. With replay mode, you can go back in time to review a specific trade in detail.
Image 6
In Image 6, you can see an example where replay mode and the start time filter are used to display specific trades within a narrow time range. By identifying a large number of bad trades, you may recognize patterns and formulate conditions to avoid them in the future.
This is the backtesting tool that allows you to develop and refine your trading strategy continuously. With each iteration—from general adjustments to detailed optimizations—you can use these tools to improve your strategy. You can:
Add other indicators with trade signals and direction
Add more indicators signals as filter
Adjust the settings of your indicators to optimize results
Configure key strategy settings, such as Time and Session Filters, Stop Loss, Take Profit, and more
By doing so, you can identify a profitable strategy and its optimal settings.
5. Settings Menu
In the settings menu you will find the following high-lighted sections. Most of the settings have a i mark on their right side. Move over it with the cursor to read specific explanation.
Backtest Results: Here you can decide about visibility of the trade list, of the Screener Table and of the Results Summary. And the colors for bullish, side ways, bearish and no signal. Go above and see Image 5.
Time Filter: You can set a Start time or deactivate it by leave it unhooked. The same with End Time and Duration Days . Duration Days can also count from End time in case you deactivate Start time.
Session Filter: Here, you can chose to activate trading on a weekly basis, specifying which days of the week trading is allowed and which are excluded. Additionally, you can configure trading on a daily basis, setting the start and end times for when trades are permitted. If activated, no new trades will be initiated outside the defined times and sessions.
Trade Logic: Here you can set an extra time frame for all indicators. You can enable Longs or Shorts or both trades.
The min Criteria percentage setting defines the minimum number of voices an asset has to get to be traded. So if you set this to 50% or less also weak winners of the voting get traded while 100% means that the winner of the voting has to get all possible voices.
Additionally, you have the option to delay entry signals. This feature is particularly useful when trade signals exhibit noise and require smoothing.
Enable Trailing Stop and force the strategy to trade only at bar closing. Other-ways the strategy trade intrabar, so when ever a voting present an asset to trade, it will send the alert and the webhooks.
The Hedging is basic as shown in the following Image 7 and serves as a catch if price moves fast in the wrong direction. You can activate a hedging mechanism, which opens a trade in the opposite direction if the price moves x% against the entry price. If both the Stop Loss and Hedging are triggered within the same bar, the hedging action will always take precedence.
Image 6
Indicators to use for Trade Signal Generating: Here you chose the Indicators and their Compare Function for the Voting . Any activated asset will get their indicator valuation which get compared over all assets. The asset with the highest valuation is elected for the trade as long free cash is present and as long the minimum criteria are met.
The Screener Table will show all indicators results of the last bar of all assets. Those indicator values which met the threshold get a background color to high light it. Green for bullish, red for bearish and orange for trade signals without direction. If you chose an Indicator here but without any compare function it will show also their results but with just gray background.
Indicator Settings: here you can setup the indicator specific settings. for deeper insights see 3. Included Indicators and Compare-Functions .
Assets, TP & SL Settings: Asset specific settings. Chose here the TickerID of all Assets you wanna trade. Take Profit 1&2 set the target prices of any trade in relation to the entry price. The Take Profit 1 exit a part of the position defined by the quantity value. Stop Loss set the price to step out when a trade goes the wrong direction.
Invest Settings: Here, you can set the initial amount of cash to start with. The Quantity Percentage determines how much of the available cash is allocated to each trade, while the Fee percentage specifies the trading fee applied to both opening and closing positions.
Webhooks: Here, you configure the License ID and the Comment . This is particularly useful if you plan to use multiple instances of the script, ensuring the webhooks target the correct positions. The Take Profit and Stop Loss values are displayed as prices.
6. Declaration for Tradingview House Rules on Script Publishing
The unique feature of this Democratic Multi-Asset Strategy is its ability to trade multiple assets simultaneously. Equipped with a set of different standard Indicators, it's new democratic Voting System does more robust trading decisions compared to single-asset. Interchangeable Indicators and customizable strategy settings allowing for a wide range of trading strategies.
This script is closed-source and invite-only to support and compensate for over a year of development work. Unlike other single asset strategies, this one cannot use TradingView's strategy functions. Instead, it is designed as an indicator.
7. Disclaimer
Trading is risky, and traders do lose money, eventually all. This script is for informational and educational purposes only. All content should be considered hypothetical, selected post-factum and is not to be construed as financial advice. Decisions to buy, sell, hold, or trade in securities, commodities, and other investments involve risk and are best made based on the advice of qualified financial professionals. Past performance does not guarantee future results. Using this script on your own risk. This script may have bugs and I declare don't be responsible for any losses.
8. Conclusion
Now it’s your turn! Chose an asset class and pick 8 of them and chose some indicators to see the trading results of this democratic voting system. Refine your multi-asset strategy to favorable settings. Once you find a promising configuration, you can set up alerts to send webhooks directly. Configure all parameters, test and validate them in paper trading, and if results align with your expectations, you even can deploy this script as your trading bit.
Cheers
Enhanced Order Flow Pressure GaugeShort Description:
Estimates bullish/bearish pressure by analyzing each candle’s close position within its range, then weighting that by volume. Detects potential trend shifts and provides real-time signals.
Full Description:
1. Purpose
The Enhanced Order Flow Pressure Gauge (OFPG+) is designed to approximate buy vs. sell pressure within each bar, even if you don’t have full Level II / order flow data. By measuring the candle’s close relative to its high-low range and multiplying by volume, OFPG+ provides insights into which side of the market (bulls or bears) is more aggressive in a given interval.
2. Key Components
Pressure Score (Histogram):
Raw measure of each bar’s close position (rangePos) minus midpoint, multiplied by volume. If the bar closes near its high with decent volume, the score is positive (bullish). Conversely, a close near its low yields a negative (bearish) reading.
Cumulative Pressure:
Sum of all pressure readings over time (similar to cumulative delta), reflecting the overall market bias.
Pressure Delta:
The change in cumulative pressure from one bar to the next, plotted as a line. Rising values suggest increasing bullish momentum, while falling values show growing bearish influence.
3. Visual Cues & Signals
Histogram (Pressure Profile): A color-coded bar for each candle, indicating net bullish (blue) or bearish (gray) intrabar pressure.
Pressure Delta Line: Plotted over the histogram. Turns bullish (blue) when net buy pressure is increasing, or bearish (gray) when net selling accelerates.
Background Highlights:
Turns lightly blue if the smoothed pressure line exceeds the positive threshold, or lightly gray if it goes below the negative threshold.
Bullish / Bearish Signals:
Bullish Signal occurs when the smoothed pressure line crosses above the positive threshold, combined with a positive Delta.
Bearish Signal occurs when the smoothed pressure line crosses below the negative threshold, combined with a negative Delta.
Confirmed Signals:
After a bullish/bearish signal, OFPG+ checks the highest or lowest smoothed pressure values over a user-defined number of bars (signalLookback) to confirm momentum.
Plotshapes (diamond icons) appear on the chart to mark these confirmed reversals.
4. Usage Scenarios
Trend-Following / Momentum: Watch for transitions from negative to positive net pressure or vice versa. Helps identify potential turning points.
Reversal Confirmation: The threshold-based signals plus the “confirmed” checks can help filter choppy conditions.
Volume-Weighted Insights: By factoring in volume, strong closes near the highs or lows are weighted more heavily, capturing sentiment shifts.
5. Inputs & Parameters
Smoothing Length (length): The EMA period for smoothing the raw pressure score.
Volume Weight (volWeight): Scales the volume impact on pressure calculations.
Pressure Threshold (threshold): Defines when pressure is considered significantly bullish or bearish.
Signal Lookback (signalLookback): Number of bars to confirm momentum after a signal.
6. Alerts
Bullish Signal & Confirmed Bullish
Bearish Signal & Confirmed Bearish
These alerts can notify you in real-time about potential shifts in the market’s buying or selling pressure.
7. Disclaimer
This script provides an approximation of order flow by analyzing candle structure and volume. It does not represent actual exchange-level order data.
Past performance is not necessarily indicative of future results. Always conduct thorough analysis and use proper risk management.
Not financial advice. Use at your own discretion.
WIG20 Total Value-Weighted VolumeThis Pine Script creates a custom indicator for TradingView that calculates and visualizes the total "value-weighted volume" of the 20 stocks in the WIG20 index (a major Polish stock market index). Here's a breakdown of what it does:
Functionality:
Stock Selection:
The script allows you to input the ticker symbols for the 20 stocks that make up the WIG20 index (e.g., "PKO" for PKO Bank Polski, "PKN" for PKN Orlen, etc.). These are customizable via input fields, so you can adjust them to match the current WIG20 constituents.
Data Retrieval:
For each of the 20 stocks, it fetches two pieces of data from the current chart timeframe (e.g., daily, hourly):
Volume: The number of shares traded (e.g., v01 for the first stock).
Average Price: The midpoint price of the candle, calculated as (open + close) / 2 (e.g., p01 for the first stock). This represents a typical price for that period.
Value-Weighted Volume Calculation:
For each stock, it multiplies the volume by its average price (e.g., vw01 = v01 * p01). This converts the raw volume (in shares) into a monetary value (e.g., in Polish złoty, PLN, assuming the prices are in PLN).
The result, called "value-weighted volume," reflects the total monetary amount traded for each stock rather than just the number of shares.
Total Value-Weighted Volume:
It sums the value-weighted volumes of all 20 stocks into a single value, totalValueVolume. This represents the combined monetary trading activity across the WIG20 index for each time period (e.g., each candle on the chart).
Statistical Analysis:
The script calculates a rolling mean and standard deviation of the totalValueVolume over a user-defined lookback period (default is 20 bars, adjustable via input).
It then computes a "3-sigma" threshold, which is the mean plus three times the standard deviation. This threshold identifies unusually high trading activity (statistically significant outliers).
Candle Direction:
It checks whether the current candle on the chart (e.g., the WIG20 index itself) is bullish or bearish:
Bullish: If the close price is higher than the open price (close > open).
Bearish: If the close price is lower than the open price (close < open).
Color-Coded Visualization:
The totalValueVolume is plotted as a histogram on the chart with dynamic colors:
Blue: If the value-weighted volume is below the 3-sigma threshold (normal trading activity).
Green: If the value-weighted volume exceeds the 3-sigma threshold and the candle is bullish (indicating unusually high buying activity).
Red: If the value-weighted volume exceeds the 3-sigma threshold and the candle is bearish (indicating unusually high selling activity).
Purpose:
What It Shows: The indicator highlights the total monetary trading volume across the WIG20 stocks, adjusted for each stock’s price, and flags periods of exceptional activity (above 3 sigma) with colors that indicate market direction (bullish or bearish).
Use Case: Traders or analysts might use this to:
Identify significant market events where trading volume spikes (e.g., news-driven moves).
Assess whether those spikes align with bullish (green) or bearish (red) sentiment, based on the WIG20 index’s price movement.
Compare monetary trading activity across different periods, rather than just share volume, which gives more weight to higher-priced stocks.
Key Features:
Customizable: You can tweak the stock symbols and lookback period to fit your needs.
Statistical Insight: The 3-sigma rule helps spot outliers in trading activity.
Visual Clarity: The histogram’s color changes make it easy to see when volume spikes occur and whether they’re tied to upward or downward price moves.
Example Output:
On a daily WIG20 chart, if one day’s total value-weighted volume is exceptionally high (above 3 sigma) and the WIG20 closes higher than it opened, the histogram bar for that day turns green. If it closes lower, it turns red. Otherwise, it stays blue.
In essence, this script transforms raw volume data into a price-adjusted, statistically informed indicator that visually emphasizes significant trading events with directional context!
Price-Aligned Trend Indicator - Saerthak AnandThis is a Pine Script (version 6) for TradingView that creates a "Price-Aligned Trend Indicator" with three different T3 moving averages (Fast, Medium, and Slow). The indicator colors the lines based on the trend (bullish, bearish, or neutral) and adds "BREAKOUT" or "BREAKDOWN" labels when the fast moving average crosses the medium moving average.
Explanation:
T3 Moving Average Calculation: The function calculates the T3 moving average by recursively applying the exponential moving average (EMA) multiple times.
Trend Conditions:
Bullish: Fast > Medium > Slow.
Bearish: Fast < Medium < Slow.
Neutral: Any other condition.
Plotting:
The three T3 moving averages are plotted with different levels of opacity based on the trend.
A colored cloud is filled between the fast and medium lines, indicating the current trend.
Breakout and Breakdown Labels:
A "BREAKOUT" label is displayed when the fast T3 crosses above the medium T3 and the overall trend is bullish.
A "BREAKDOWN" label is displayed when the fast T3 crosses below the medium T3 and the overall trend is bearish.
Suggestions for Improvement:
Performance Optimization: You may want to experiment with higher T3 lengths for smoother trend visualization.
Customization: Consider adding options for users to customize colors and label display.
Alert Conditions: You can add alertcondition for breakouts and breakdowns for real-time alerts in TradingView.
Signal Confirmation: Add further trend confirmation (e.g., volume analysis or RSI) to reduce false signals.
SPY vs TQQQ Candle Divergence# SPY vs TQQQ Candle Divergence Indicator
## Description
This indicator monitors and visualizes candlestick divergences between SPY (S&P 500 ETF) and TQQQ (ProShares UltraPro QQQ ETF). It identifies situations where one security is showing bullish movement (green candle) while the other is showing bearish movement (red candle) within the same time period.
## Features
- Real-time divergence detection between SPY and TQQQ
- Visual markers with distinct colors for each type of divergence
- Built-in alert conditions for automated monitoring
- Works on any timeframe
- Overlay indicator that plots directly on the chart
## Divergence Types
### SPY Bullish / TQQQ Bearish
- Condition: SPY forms a green candle while TQQQ forms a red candle
- Marker: Green label with "SPY" text above the bar
- Alert Message: "SPY is green while TQQQ is red"
### SPY Bearish / TQQQ Bullish
- Condition: SPY forms a red candle while TQQQ forms a green candle
- Marker: Red label with "SPY" text below the bar
- Alert Message: "TQQQ is green while SPY is red"
### TQQQ Bullish / SPY Bearish
- Visualization: Blue label with "TQQQ" text above the bar
- Indicates TQQQ strength relative to SPY
### TQQQ Bearish / SPY Bullish
- Visualization: Purple label with "TQQQ" text below the bar
- Indicates TQQQ weakness relative to SPY
## Technical Implementation
- Built on Pine Script version 5
- Uses `request.security()` to fetch data for both symbols
- Implements simple candle color detection (1 for green, -1 for red, 0 for doji)
- Plots markers using `plotshape()` with different colors and positions
## Visual Elements
- Label Colors:
- SPY Bullish: Green
- SPY Bearish: Red
- TQQQ Bullish: Blue
- TQQQ Bearish: Purple
- All labels use white text for visibility
- Small label size for clean chart appearance
- Labels positioned above/below bars for clear identification
## Alert System
Two built-in alert conditions:
1. "SPY Green TQQQ Red Divergence"
2. "TQQQ Green SPY Red Divergence"
## Usage
1. Add the indicator to any chart (preferably SPY or TQQQ)
2. Look for colored labels indicating divergences
3. Set up alerts for automated monitoring
4. Use divergences as potential signals for:
- Market sector rotation
- Relative strength analysis
- Trading opportunities
- Risk management
## Notes
- Best used in conjunction with other technical indicators
- Consider overall market conditions when interpreting signals
- Useful for identifying potential market reversals or continuations
- Can help in timing entries and exits
## Limitations
- Requires data feed for both SPY and TQQQ
- Only considers candle color, not candle size or volume
- May generate frequent signals in choppy markets
## Disclaimer
This indicator is for informational purposes only. Always use proper risk management and consider multiple factors when making trading decisions.
Uptrick: FRAMA Matrix RSIUptrick: FRAMA Matrix RSI
Introduction
The Uptrick: FRAMA Matrix RSI is a momentum-based indicator that integrates the Relative Strength Index (RSI) with the Fractal Adaptive Moving Average (FRAMA). By applying FRAMA's adaptive smoothing to RSI—and further refining it with a Zero-Lag Moving Average (ZLMA)—this script creates a refined and reliable momentum oscillator. The indicator now includes enhanced divergence detection, potential reversal signals, customizable buy/sell signal options, an internal stats table, and a fully customizable bar coloring system for an enhanced visual trading experience.
Why Combine RSI with FRAMA
Traditional RSI is a well-known momentum indicator but has several limitations. It is highly sensitive to price fluctuations, often generating false signals in choppy or volatile markets. FRAMA, in contrast, adapts dynamically to price changes by adjusting its smoothing factor based on market conditions.
By integrating FRAMA into RSI calculations, this indicator reduces noise while preserving RSI's ability to track momentum, adapts to volatility by reducing lag in trending markets and smoothing out choppiness in ranging conditions, enhances trend-following capability for more reliable momentum shifts, and refines overbought and oversold signals by adjusting to the current market structure.
With the new enhancements, such as a manual alpha input, noise filtering, divergence detection, and multiple buy/sell signal options, the indicator offers even greater flexibility and precision for traders. This combination improves the standard RSI by making it more adaptive and responsive to market changes.
Originality
This indicator is unique because it applies FRAMA's adaptive smoothing technique to RSI, creating a dynamic momentum oscillator that adjusts to different market conditions. Many traditional RSI-based indicators either use fixed smoothing methods like exponential moving averages or employ basic RSI calculations without adjusting for volatility.
This script stands out by integrating several elements, including the fractal dimension-based smoothing of FRAMA to reduce noise while retaining responsiveness, the use of Zero-Lag Moving Average smoothing to enhance trend sensitivity and reduce lag, divergence detection to highlight mismatches between price action and RSI momentum, a noise filter and manual alpha option to prevent minor fluctuations from generating false signals, customizable buy/sell signal options that let traders choose between ZLMA-based or FRAMA RSI-based signals, an internal stats table displaying real-time FRAMA calculations such as fractal dimension and the adaptive alpha factor, and a fully customizable bar coloring system to visually distinguish bullish, bearish, and neutral conditions.
Features
Adaptive FRAMA RSI
The indicator applies FRAMA to RSI values, making the momentum oscillator adaptive to volatility while filtering out noise. Unlike a traditional RSI that reacts equally to all price movements, FRAMA RSI adjusts its smoothing factor based on market structure, making it more effective for identifying true momentum shifts.
Zero-Lag Moving Average (ZLMA)
A smoothing technique that minimizes lag while preserving the responsiveness of price movements. It is applied to the FRAMA RSI to further refine signals and ensure smoother trend detection.
Bullish and Bearish Threshold Crossovers
This system compares FRAMA RSI to a user-defined threshold (default is 50). When FRAMA RSI moves above the threshold, it indicates bullish momentum, while movement below signals bearish conditions. The enhanced noise filter ensures that only significant moves trigger signals.
Noise Filter and Manual Alpha
A new noise filter input prevents tiny fluctuations from triggering false signals. In addition, a manual alpha option allows traders to override the automatically computed smoothing factor with a custom value, providing extra control over the indicator’s sensitivity.
Divergence Detection
The indicator identifies divergence patterns by comparing FRAMA RSI pivots to price action. Bullish divergence occurs when price makes a lower low while FRAMA RSI makes a higher low, and bearish divergence occurs when price makes a higher high while FRAMA RSI makes a lower high. These signals can help traders anticipate potential reversals.
Reversal Signals
Labels appear on the chart when FRAMA RSI confirms classic RSI overbought (70) or oversold (30) conditions, providing visual cues for potential trend reversals.
Buy and Sell Signal Options
Traders can now choose between two signal-generation methods. ZLMA-based signals trigger when the ZLMA of FRAMA RSI crosses key overbought (70) or oversold (30) levels, while FRAMA RSI-based signals trigger when FRAMA RSI itself crosses these levels. This added flexibility allows users to tailor the indicator to their preferred trading style.
ZLMA:
FRAMA:
Customizable Alerts
Alerts notify traders when FRAMA RSI crosses key levels, divergence signals occur, reversal conditions are met, or buy/sell signals trigger. This ensures that important trading events are not missed.
Fully Customizable Bar Coloring System
Users can color bars based on different conditions, enhancing visual clarity. Bar coloring modes include: FRAMA RSI threshold (bars change color based on whether FRAMA RSI is above or below the threshold), ZLMA crossover (bars change when ZLMA crosses overbought or oversold levels), buy/sell signals (bars change when official signals trigger), divergence (bars highlight when bullish or bearish divergence is detected), and reversals (bars indicate when RSI reaches overbought or oversold conditions confirmed by FRAMA RSI). The system also remembers the last applied bar color, ensuring a smooth visual transition.
Input Parameters and Features
Core Inputs
RSI Length (default: 14) defines the period for RSI calculations.
FRAMA Lookback (default: 16) determines the length for the FRAMA smoothing function.
RSI Bull Threshold (default: 50) sets the level above which the market is considered bullish and below which it is bearish.
Noise Filter (default: 1.0) ensures that small fluctuations do not trigger false bullish or bearish signals.
Additional Features
Show Bull and Bear Alerts (default: true) enables notifications when FRAMA RSI crosses the threshold.
Enable Divergence Detection (default: false) highlights bullish and bearish divergences based on price and FRAMA RSI pivots.
Show Potential Reversal Signals (default: false) identifies overbought (70) and oversold (30) levels as possible trend reversal points.
Buy and Sell Signal Option (default: ZLMA) allows traders to choose between ZLMA-based signals or FRAMA RSI-based signals for trade entry.
ZLMA Enhancements
ZLMA Length (default: 14) determines the period for the Zero-Lag Moving Average applied to FRAMA RSI.
Visualization Options
Show Internal Stats Table (default: false) displays real-time FRAMA calculations, including fractal dimension and the adaptive alpha smoothing factor.
Show Threshold FRAMA Signals (default: false) plots buy and sell labels when FRAMA RSI crosses the threshold level.
How It Works
FRAMA Calculation
FRAMA dynamically adjusts smoothing based on the price fractal dimension. The alpha smoothing factor is derived from the fractal dimension or can be set manually to maintain responsiveness.
RSI with FRAMA Smoothing
RSI is calculated using the user-defined lookback period. FRAMA is then applied to the RSI to make it more adaptive to volatility. Optionally, ZLMA is applied to further refine the signals and reduce lag.
Bullish and Bearish Threshold Crosses
A bullish condition occurs when FRAMA RSI crosses above the threshold, while a bearish condition occurs when it falls below. The noise filter ensures that only significant trend shifts generate signals.
Buy and Sell Signal Options
Traders can choose between ZLMA crossovers or FRAMA RSI crossovers as the basis for buy and sell signals, offering flexibility in trade entry timing.
Divergence Detection
The indicator identifies divergences where price action and FRAMA RSI momentum do not align, potentially signaling upcoming reversals.
Reversal Signal Labels
When classic RSI overbought or oversold levels are confirmed by FRAMA RSI conditions, reversal labels are added on the chart to highlight potential exhaustion points.
Bar Coloring System
Bars are dynamically colored based on various conditions such as RSI thresholds, ZLMA crossovers, buy/sell signals, divergence, and reversals, allowing traders to quickly interpret market sentiment.
Alerts and Internal Stats
Customizable alerts notify traders of key events, and an optional internal stats table displays real-time calculations (fractal dimension, alpha value, and RSI values) to help users understand the underlying dynamics of the indicator.
Summary
The Uptrick: FRAMA Matrix RSI offers an enhanced approach to momentum analysis by combining RSI with adaptive FRAMA smoothing and additional layers of signal refinement. The indicator now includes adaptive RSI smoothing to reduce noise and improve responsiveness, Zero-Lag Moving Average filtering to minimize lag, divergence and reversal detection to identify potential turning points, customizable buy/sell signal options that let traders choose between different signal methodologies, a fully customizable bar coloring system to visually distinguish market conditions, and an internal stats table for real-time insight into FRAMA calculation parameters.
Whether used for trend confirmation, divergence detection, or momentum-based strategies, this indicator provides a powerful and adaptive approach to trading.
Disclaimer
This script is for informational and educational purposes only. Trading involves risk, and past performance does not guarantee future results. Always conduct proper research and consult with a financial advisor before making trading decisions.
ZenAlgo - Heavy DeltaThe ZenAlgo - Heavy Delta indicator is a comprehensive technical analysis tool designed for traders seeking a deeper understanding of market dynamics. It combines multiple advanced sub-indicators, including Order Blocks, Moving Averages, VWAP, and Delta Volume analysis, and more to provide actionable insights. This indicator is particularly useful for identifying potential trade entries and exits based on institutional order flow and price action patterns.
Features
Order Block Detection: Identifies bullish and bearish order blocks with detailed visualization and volume analysis.
VWAP (Volume Weighted Average Price): Tracks the average price of a security weighted by volume over various anchor periods.
Moving Averages (MA): Customizable MAs (13, 21, 50, 200 periods) to detect trends and momentum shifts.
Daily Open and Monday Range: Highlights key levels like daily open and intraday/multi-day high-low ranges for better price context.
Delta Volume Analysis: Measures the net difference between buying and selling volume for market sentiment insights.
Divergence Detection: Detects regular and hidden bullish/bearish divergences for trend reversal opportunities.
Visual Alerts: Displays intuitive symbols for potential buy/sell signals and key price levels.
Added Value: Why Is This Indicator Original/Why Shall You Pay for This Indicator?
The ZenAlgo - Heavy Delta indicator offers a distinct advantage by integrating multiple analysis techniques into one cohesive tool. While many individual indicators are freely available, this script goes beyond simple overlays to provide an advanced analytical framework. Here’s why it stands out:
1. Synergy of Indicators
Order Blocks: These are not static; the indicator dynamically calculates zones where institutional activity likely occurred, supported by volume-weighted metrics.
Delta Volume Analysis: Freely available delta volume tools typically show raw data, but this script filters noise, categorizes volume into meaningful up/down segments, and integrates it with other signals for context.
VWAP and Moving Averages: VWAP and customizable MAs are enhanced with divergence checks, color-coded trends, and market state classifications. This integration helps confirm trends and reversals with higher precision.
2. Volume-Based Insights
Traditional volume indicators often fail to show the "intent" behind price moves. This script combines delta volume and order block data to highlight areas of significant buying or selling pressure and their potential impacts on future price action.
3. Visual Simplicity with Advanced Logic
Unlike using several separate tools, which can clutter your chart, this indicator presents a streamlined interface. Every plotted element serves a clear purpose, minimizing distractions while maximizing actionable insights.
4. Customized for Active Traders
The indicator doesn’t just provide standard calculations. It includes proprietary adjustments like mitigation thresholds in order blocks, percentage-based signals for VWAP, and delta volume intensity levels that align better with active market conditions.
5. Why Pay for It?
Time and effort savings: Instead of setting up and calibrating multiple tools, this indicator combines them into a single efficient package.
Enhanced accuracy: Each sub-indicator validates the others, reducing false signals.
Unique features: For instance, the script automatically adjusts for multi-timeframe inconsistencies and uses gradient color fills to convey volume strength in order blocks—a feature absent in free indicators.
How It Works
The indicator combines individual sub-indicators into a logical framework where each part contributes to the overall analysis. Here’s how each feature operates:
1. Order Blocks
Identification: Uses specific price action patterns to locate zones of likely institutional interest (bullish or bearish blocks).
Dynamic Updates: The blocks adjust as new price data comes in, ensuring their relevance. Volume within these zones is weighted, helping assess their strength and potential price reactions.
Visual Enhancements: Blocks are color-coded and filled with gradients based on volume intensity, providing immediate visual cues about their importance.
2. VWAP (Volume Weighted Average Price)
Calculation: Anchored to user-selected periods (daily, weekly, etc.), VWAP is recalculated in real-time, showing the "fair" price based on traded volume.
Integration: Acts as a dynamic support/resistance line, particularly useful in intraday and swing trading. Labels provide percentage deviation for quick interpretation.
3. Moving Averages (MAs)
Customization: Supports various types (EMA, SMA, etc.) and lengths (13, 21, 50, 200). Traders can configure these to suit their strategies.
Market Status: By comparing the price to these MAs, the indicator classifies the market as Full Bull, Bullish, Neutral, Bearish, or Full Bear. This high-level summary helps traders quickly gauge market sentiment.
4. Delta Volume
Core Logic: Calculates the net difference between buying and selling pressure (volume) for each candle.
Visual Signals: Plots symbols when significant delta volume changes coincide with other indicator signals, like divergence or order block activity.
5. Daily Open and Monday Range
Purpose: Identifies key psychological levels like the daily open and the high/low range for the first trading day of the week.
Context: Highlights these levels with dynamic percentage changes, helping traders understand how price is behaving relative to them.
6. Divergence Detection
Logic: Tracks discrepancies between price movement and momentum (via Moving Averages, Delta Volume, and Order Blocks). These divergences often precede reversals.
Validation: Divergences are only flagged when other features, like delta volume shifts or order block interactions, confirm the setup.
By combining these tools in a meaningful way, ZenAlgo - Heavy Delta transforms raw data into actionable intelligence, giving traders a comprehensive view of market dynamics and a significant edge in decision-making.
Why Use Heikin Ashi for Heavy Delta?
The ZenAlgo - Heavy Delta indicator is optimized for Heikin Ashi (HA) candles, which smooth out market noise and make trends more visually apparent. Heikin Ashi works best for this strategy for several key reasons:
Why Heikin Ashi Works Best
Trend Clarity: Unlike traditional candlesticks, Heikin Ashi averages price data to create smoother transitions. This helps the indicator better identify sustained trends and reduces false signals caused by short-term price fluctuations.
Noise Reduction: HA candles filter out minor fluctuations and emphasize the overall market direction, making it easier to align the indicator’s signals (like Delta Volume and Order Blocks) with larger market movements.
Improved Visual Insights: Features like Order Blocks and Delta Volume align well with Heikin Ashi's smoothed representation, as it avoids the erratic movements that traditional candles sometimes display.
Better Support for Trend Strategies: Heikin Ashi candles naturally highlight key reversals and continuation patterns, which complement the analytical goals of this indicator.
Important Notes About Heikin Ashi:
Synthetic Nature of HA Candles: Heikin Ashi values are calculated differently than traditional candles. For example: a) The open is the average of the prior candle's open and close. b) The close is the average of the high, low, open, and close. This synthetic nature means that HA candles do not reflect actual market prices but rather smoothed averages, which can slightly lag real-time price movements.
Lagging Effect: Because HA candles use averaged data, they can lag behind actual price action. This is beneficial for identifying trends but less effective for precise entry/exit timing.
Inaccuracy in Low Volatility: In low-volume or low-volatility conditions, HA candles may distort actual price dynamics, leading to less reliable insights.
No Direct Alerts or Buy/Sell Signals : Issuing explicit buy or sell signals based on Heikin Ashi candles is not possible due to their averaged, synthetic nature. As such, the ZenAlgo - Heavy Delta indicator does not generate direct trading signals. Instead, the indicator is a decision-support tool that provides insights into trends, volume dynamics, and potential key levels, leaving trade execution to the trader's discretion.
Usage Examples
Trend Confirmation: Use the MA market status to identify if the market is in a Full Bull or Bear state.
Reversal Zones: Monitor order block zones for price rejection or absorption, signaling a potential reversal.
Breakout Trading: Trade breakouts when price surpasses VWAP or Monday Range highs/lows.
Delta Divergence: Look for positive/negative delta volume divergences during consolidations for breakout cues.
Mean Reversion: Use VWAP or MAs as dynamic support/resistance for mean reversion setups.
Intraday Scalping: Utilize daily open and intraday levels for short-term trades.
Swing Trading: Employ order blocks and multi-day ranges to frame swing trade setups.
Volume Climax: Identify volume spikes using Delta Volume to confirm trend continuation or reversal.
Momentum Trading: Combine divergence signals with Delta Volume for high-conviction entries.
Risk Management: Use defined order block boundaries to set stop losses and targets.
Settings
Order Blocks: Customize label visibility, label offsets, and block appearance.
VWAP: Adjust anchor period and toggle visibility.
Moving Averages: Configure length, type (EMA, SMA, etc.), and visibility of MAs (13, 21, 50, 200).
Delta Volume: Enable/disable delta symbols and labels, adjust sensitivity multipliers.
Daily Open/Monday Range: Toggle visibility and customize display preferences.
General Visuals: Adjust label offsets, color schemes, and transparency.
Important Notes
This indicator is a technical analysis tool and does not guarantee trading success.
Use it in conjunction with other indicators and fundamental analysis for a more comprehensive trading strategy.
Performance may vary in low-liquidity markets or during sudden news events.
Divergence signals might fail in strongly trending markets.
SCE - Single Candle EntryThe SCE - Single Candle Entry Strategy indicator is designed for traders looking to capitalize on powerful single-candle patterns and their combinations to identify potential entries and reversals. This indicator focuses specifically on The Strat methodology, making it accessible for both scalpers and swing traders across any timeframe.
Key Features
Identifies and marks number 3 candles (outside bars)
Detects powerful 3-2 combinations
Shows extra strong setups with potential reversal signals
Clean and uncluttered visual design
Customizable display options
Comprehensive alert system
Understanding the Signals
Number 3 Candles
A number 3 is an outside bar that makes both a higher high AND lower low than the previous candle
Bullish 3: closes above its open (marked with green '3')
Bearish 3: closes below its open (marked with red '3')
3-2 Combinations (★)
A powerful setup occurs when a number 2 follows a number 3 in the same direction:
Bullish: A bullish 3 followed by a bullish 2 that closes above the high of the 3
Bearish: A bearish 3 followed by a bearish 2 that closes below the low of the 3
Strong 3-2 Combinations (⚡)
Even more powerful setups that could indicate potential reversal points:
Strong Bullish: A bullish 3-2 that forms after a bearish candle
Strong Bearish: A bearish 3-2 that forms after a bullish candle
Settings
The indicator allows you to toggle:
Number 3 candles display
Regular 3-2 combinations
Strong 3-2 combinations
Tips for Usage
Look for strong 3-2 combinations (⚡) as potential reversal signals
Combine with other indicators or price action for confirmation
Use the alerts function to ensure you never miss a setup
Works effectively on any timeframe
Can be used for both scalping and swing trading
Disclaimer
This indicator is meant for educational and informational purposes only. Always conduct your own analysis and manage your risk appropriately.
Get ready to simplify your entries.
CVD OscillatorCVD Delta Oscillator
A momentum oscillator that measures buying and selling pressure through volume analysis, based on the principle that volume precedes price (cause and effect).
How It Works
Volume Analysis
Measures the force of buying and selling by analyzing how volume interacts with price movement within each bar
When price closes higher in a bar's range with strong volume, this indicates stronger buying pressure
When price closes lower in a bar's range with strong volume, this indicates stronger selling pressure
Momentum Measurement
Uses two EMAs (fast and slow) to smooth the volume delta
The difference between these EMAs creates an oscillator that shows:
Rising values = Buying pressure increasing
Falling values = Selling pressure increasing
Zero line crossovers = Potential shift in control between buyers and sellers
Signal Generation
Divergences
Bullish: Price falls to new lows while buying pressure increases (potential reversal up)
Bearish: Price rises to new highs while selling pressure increases (potential reversal down)
Zero-Line Crossovers
Bullish: Buying pressure overtakes selling pressure
Bearish: Selling pressure overtakes buying pressure
Practical Application
Reading the Indicator
Green columns above zero = Net buying pressure
Red columns below zero = Net selling pressure
Larger columns = Stronger pressure
Divergences and crossovers = Potential turning points
Trading Context
Helps identify when price movement has strong or weak volume support
Shows potential exhaustion points through divergences
Confirms trend changes through zero-line crossovers
Customization
Adjustable EMA periods for different trading styles
Toggle-able visual signals
Automatic alerts for all signals
Pearson's R TrendPearson's R Trend Indicator
Overview
The Pearson's R Trend Indicator is an advanced technical analysis tool that measures the strength and direction of price trends using statistical correlation. By comparing fast and slow-period Pearson correlation coefficients, this indicator helps identify trend momentum, potential reversals, and overbought/oversold conditions.
Key Features
Dual timeframe correlation analysis (Fast and Slow periods)
Signal line with crossover alerts
Dynamic histogram for trend visualization
Configurable overbought/oversold levels
Multiple visual components with customizable colors
Comprehensive alert system
Technical Details
Core Calculations
Fast R: Calculates Pearson's correlation coefficient over the faster period (default: 21 periods)
Slow R: Calculates Pearson's correlation coefficient over the slower period (default: 34 periods)
R-Diff: Normalized difference between Fast and Slow R values (range: -1 to 1)
Signal Line: Smoothed average of R-Diff (default: 3-period SMA)
Histogram: Difference between R-Diff and Signal Line
Signal Generation
Zero Line Crosses
• Bullish: R-Diff crosses above zero
• Bearish: R-Diff crosses below zero
Signal Line Crosses
• Bullish: R-Diff crosses above Signal Line
• Bearish: R-Diff crosses below Signal Line
Overbought/Oversold Conditions
• Overbought: R-Diff above 0.45 (default)
• Oversold: R-Diff below -0.45 (default)
Customization Options
Calculation Settings
Fast Length: Period for fast correlation calculation (default: 21)
Slow Length: Period for slow correlation calculation (default: 34)
Signal Smoothing: Moving average period for signal line (default: 3)
Price Source: Configurable input source (default: close)
Visual Settings
Histogram display toggle
Signal line display toggle
Crossing markers toggle
Line width adjustments
Custom color schemes for bullish/bearish signals
Configurable overbought/oversold levels
Interpretation
Bullish Signals
R-Diff crossing above zero
R-Diff crossing above signal line
R-Diff emerging from oversold territory
Positive histogram expansion
Bearish Signals
R-Diff crossing below zero
R-Diff crossing below signal line
R-Diff dropping from overbought territory
Negative histogram expansion
Alert Conditions
Zero line crosses (both directions)
Signal line crosses (both directions)
Overbought zone entry
Oversold zone entry
Best Practices
Use multiple timeframe analysis for confirmation
Combine with volume and price action analysis
Watch for divergences between R-Diff and price
Pay attention to histogram momentum changes
Use overbought/oversold levels as dynamic support/resistance zones
Notes
The indicator uses statistical correlation to measure trend strength
Normalized calculations ensure consistent -1 to 1 range
Built-in alert system for all major signal types
Customizable visual elements for optimal chart analysis
Disclaimer
This technical indicator is designed to supplement your trading analysis and should not be used as the sole decision-making tool. Always combine with other forms of analysis and proper risk management techniques.
Sector Trend MapThe Sector Trend Map is a powerful tool designed to provide a sentiment heatmap for major market sectors. This indicator tracks the average trend direction across 11 key sectors, including Technology, Financials, Healthcare, Energy, and more. By monitoring each sector's sentiment, the Sector Trend Map helps traders quickly assess whether sectors are bullish or bearish, allowing for better-informed trading decisions.
This indicator plots a visual heatmap showing the sentiment strength for each sector on a scale from 0 to 100. The colors range from green for bullish sentiment to red for bearish sentiment. Additionally, it displays a real-time percentage of sectors that are bullish and bearish in a dynamic table located in the bottom right corner of the chart.
This indicator simplifies sector sentiment analysis by providing clear visual cues, making it easy to stay on top of market dynamics and make data-driven trading decisions.
Key Features:
Sentiment Heatmap: Displays a heatmap of sector sentiment ranging from bullish (green) to bearish (red).
Bullish/Bearish Percentages: A dynamic table showing the percentage of sectors that are bullish or bearish.
Tracks 11 Key Sectors: Monitors sectors such as Technology, Financials, Energy, Healthcare, and more.
Simple and Clear Visuals: Provides easy-to-read color coding for quick decision-making.
Customizable Moving Averages: Select between SMA, EMA, WMA, or DEMA for the trend calculation.
Market Hours Sensitivity: Indicator operates during regular market hours, ensuring relevance for day traders and active traders.
Overlay Sentiment Colors on Candles:
This feature allows you to overlay the sentiment (green for bullish, red for bearish) directly onto the price chart candles. You can enable or disable this option based on your preference.
How to Use the Sector Trend Map:
The heatmap is divided into different sectors. Each sector is colored based on its current sentiment:
🟢 Green (Bullish sentiment)
🔴 Red (Bearish sentiment)
Sentiment is calculated on a scale from 0 to 100, with 50 being the neutral point. Sectors above 50 are bullish, while sectors below 50 are bearish.
Bullish/Bearish Percentage Table:
A table is displayed in the bottom right corner of the screen, showing the percentage of sectors that are currently bullish and bearish.
Bullish %: The percentage of sectors above 50 on the sentiment scale.
Bearish %: The percentage of sectors below 50 on the sentiment scale.
Market Hours Activity:
The indicator only calculates and displays data during market hours (09:30 AM to 4:00 PM EST), ensuring it stays relevant to intraday trading. Outside of market hours, the indicator remains inactive.
Best Used For:
Intraday Traders: Get real-time sector sentiment during market hours and make better trading decisions based on sector strength or weakness.
Swing Traders: Monitor sector trends to spot shifts in market sentiment over time.
Sector Rotation Strategies: Use the indicator to identify which sectors are gaining or losing strength, aiding in sector rotation strategies.
Practical Example:
If 7 out of the 11 sectors display a bullish sentiment, the table will show 63.64% as bullish and 36.36% as bearish. The heatmap will show green sectors for those above the 50 sentiment threshold, allowing you to visually spot the sectors leading the market.
Trading IQ - ICT LibraryLibrary "ICTlibrary"
Used to calculate various ICT related price levels and strategies. An ongoing project.
Hello Coders!
This library is meant for sourcing ICT related concepts. While some functions might generate more output than you require, you can specify "Lite Mode" as "true" in applicable functions to slim down necessary inputs.
isLastBar(userTF)
Identifies the last bar on the chart before a timeframe change
Parameters:
userTF (simple int) : the timeframe you wish to calculate the last bar for, must be converted to integer using 'timeframe.in_seconds()'
Returns: bool true if bar on chart is last bar of higher TF, dalse if bar on chart is not last bar of higher TF
necessaryData(atrTF)
returns necessaryData UDT for historical data access
Parameters:
atrTF (float) : user-selected timeframe ATR value.
Returns: logZ. log return Z score, used for calculating order blocks.
method gradBoxes(gradientBoxes, idColor, timeStart, bottom, top, rightCoordinate)
creates neon like effect for box drawings
Namespace types: array
Parameters:
gradientBoxes (array) : an array.new() to store the gradient boxes
idColor (color)
timeStart (int) : left point of box
bottom (float) : bottom of box price point
top (float) : top of box price point
rightCoordinate (int) : right point of box
Returns: void
checkIfTraded(tradeName)
checks if recent trade is of specific name
Parameters:
tradeName (string)
Returns: bool true if recent trade id matches target name, false otherwise
checkIfClosed(tradeName)
checks if recent closed trade is of specific name
Parameters:
tradeName (string)
Returns: bool true if recent closed trade id matches target name, false otherwise
IQZZ(atrMult, finalTF)
custom ZZ to quickly determine market direction.
Parameters:
atrMult (float) : an atr multiplier used to determine the required price move for a ZZ direction change
finalTF (string) : the timeframe used for the atr calcuation
Returns: dir market direction. Up => 1, down => -1
method drawBos(id, startPoint, getKeyPointTime, getKeyPointPrice, col, showBOS, isUp)
calculates and draws Break Of Structure
Namespace types: array
Parameters:
id (array)
startPoint (chart.point)
getKeyPointTime (int) : the actual time of startPoint, simplystartPoint.time
getKeyPointPrice (float) : the actual time of startPoint, simplystartPoint.price
col (color) : color of the BoS line / label
showBOS (bool) : whether to show label/line. This function still calculates internally for other ICT related concepts even if not drawn.
isUp (bool) : whether BoS happened during price increase or price decrease.
Returns: void
method drawMSS(id, startPoint, getKeyPointTime, getKeyPointPrice, col, showMSS, isUp, upRejections, dnRejections, highArr, lowArr, timeArr, closeArr, openArr, atrTFarr, upRejectionsPrices, dnRejectionsPrices)
calculates and draws Market Structure Shift. This data is also used to calculate Rejection Blocks.
Namespace types: array
Parameters:
id (array)
startPoint (chart.point)
getKeyPointTime (int) : the actual time of startPoint, simplystartPoint.time
getKeyPointPrice (float) : the actual time of startPoint, simplystartPoint.price
col (color) : color of the MSS line / label
showMSS (bool) : whether to show label/line. This function still calculates internally for other ICT related concepts even if not drawn.
isUp (bool) : whether MSS happened during price increase or price decrease.
upRejections (array)
dnRejections (array)
highArr (array) : array containing historical highs, should be taken from the UDT "necessaryData" defined above
lowArr (array) : array containing historical lows, should be taken from the UDT "necessaryData" defined above
timeArr (array) : array containing historical times, should be taken from the UDT "necessaryData" defined above
closeArr (array) : array containing historical closes, should be taken from the UDT "necessaryData" defined above
openArr (array) : array containing historical opens, should be taken from the UDT "necessaryData" defined above
atrTFarr (array) : array containing historical atr values (of user-selected TF), should be taken from the UDT "necessaryData" defined above
upRejectionsPrices (array) : array containing up rejections prices. Is sorted and used to determine selective looping for invalidations.
dnRejectionsPrices (array) : array containing down rejections prices. Is sorted and used to determine selective looping for invalidations.
Returns: void
method getTime(id, compare, timeArr)
gets time of inputted price (compare) in an array of data
this is useful when the user-selected timeframe for ICT concepts is greater than the chart's timeframe
Namespace types: array
Parameters:
id (array) : the array of data to search through, to find which index has the same value as "compare"
compare (float) : the target data point to find in the array
timeArr (array) : array of historical times
Returns: the time that the data point in the array was recorded
method OB(id, highArr, signArr, lowArr, timeArr, sign)
store bullish orderblock data
Namespace types: array
Parameters:
id (array)
highArr (array) : array of historical highs
signArr (array) : array of historical price direction "math.sign(close - open)"
lowArr (array) : array of historical lows
timeArr (array) : array of historical times
sign (int) : orderblock direction, -1 => bullish, 1 => bearish
Returns: void
OTEstrat(OTEstart, future, closeArr, highArr, lowArr, timeArr, longOTEPT, longOTESL, longOTElevel, shortOTEPT, shortOTESL, shortOTElevel, structureDirection, oteLongs, atrTF, oteShorts)
executes the OTE strategy
Parameters:
OTEstart (chart.point)
future (int) : future time point for drawings
closeArr (array) : array of historical closes
highArr (array) : array of historical highs
lowArr (array) : array of historical lows
timeArr (array) : array of historical times
longOTEPT (string) : user-selected long OTE profit target, please create an input.string() for this using the example below
longOTESL (int) : user-selected long OTE stop loss, please create an input.string() for this using the example below
longOTElevel (float) : long entry price of selected retracement ratio for OTE
shortOTEPT (string) : user-selected short OTE profit target, please create an input.string() for this using the example below
shortOTESL (int) : user-selected short OTE stop loss, please create an input.string() for this using the example below
shortOTElevel (float) : short entry price of selected retracement ratio for OTE
structureDirection (string) : current market structure direction, this should be "Up" or "Down". This is used to cancel pending orders if market structure changes
oteLongs (bool) : input.bool() for whether OTE longs can be executed
atrTF (float) : atr of the user-seleceted TF
oteShorts (bool) : input.bool() for whether OTE shorts can be executed
@exampleInputs
oteLongs = input.bool(defval = false, title = "OTE Longs", group = "Optimal Trade Entry")
longOTElevel = input.float(defval = 0.79, title = "Long Entry Retracement Level", options = , group = "Optimal Trade Entry")
longOTEPT = input.string(defval = "-0.5", title = "Long TP", options = , group = "Optimal Trade Entry")
longOTESL = input.int(defval = 0, title = "How Many Ticks Below Swing Low For Stop Loss", group = "Optimal Trade Entry")
oteShorts = input.bool(defval = false, title = "OTE Shorts", group = "Optimal Trade Entry")
shortOTElevel = input.float(defval = 0.79, title = "Short Entry Retracement Level", options = , group = "Optimal Trade Entry")
shortOTEPT = input.string(defval = "-0.5", title = "Short TP", options = , group = "Optimal Trade Entry")
shortOTESL = input.int(defval = 0, title = "How Many Ticks Above Swing Low For Stop Loss", group = "Optimal Trade Entry")
Returns: void (0)
displacement(logZ, atrTFreg, highArr, timeArr, lowArr, upDispShow, dnDispShow, masterCoords, labelLevels, dispUpcol, rightCoordinate, dispDncol, noBorders)
calculates and draws dispacements
Parameters:
logZ (float) : log return of current price, used to determine a "significant price move" for a displacement
atrTFreg (float) : atr of user-seleceted timeframe
highArr (array) : array of historical highs
timeArr (array) : array of historical times
lowArr (array) : array of historical lows
upDispShow (int) : amount of historical upside displacements to show
dnDispShow (int) : amount of historical downside displacements to show
masterCoords (map) : a map to push the most recent displacement prices into, useful for having key levels in one data structure
labelLevels (string) : used to determine label placement for the displacement, can be inside box, outside box, or none, example below
dispUpcol (color) : upside displacement color
rightCoordinate (int) : future time for displacement drawing, best is "last_bar_time"
dispDncol (color) : downside displacement color
noBorders (bool) : input.bool() to remove box borders, example below
@exampleInputs
labelLevels = input.string(defval = "Inside" , title = "Box Label Placement", options = )
noBorders = input.bool(defval = false, title = "No Borders On Levels")
Returns: void
method getStrongLow(id, startIndex, timeArr, lowArr, strongLowPoints)
unshift strong low data to array id
Namespace types: array
Parameters:
id (array)
startIndex (int) : the starting index for the timeArr array of the UDT "necessaryData".
this point should start from at least 1 pivot prior to find the low before an upside BoS
timeArr (array) : array of historical times
lowArr (array) : array of historical lows
strongLowPoints (array) : array of strong low prices. Used to retrieve highest strong low price and see if need for
removal of invalidated strong lows
Returns: void
method getStrongHigh(id, startIndex, timeArr, highArr, strongHighPoints)
unshift strong high data to array id
Namespace types: array
Parameters:
id (array)
startIndex (int) : the starting index for the timeArr array of the UDT "necessaryData".
this point should start from at least 1 pivot prior to find the high before a downside BoS
timeArr (array) : array of historical times
highArr (array) : array of historical highs
strongHighPoints (array)
Returns: void
equalLevels(highArr, lowArr, timeArr, rightCoordinate, equalHighsCol, equalLowsCol, liteMode)
used to calculate recent equal highs or equal lows
Parameters:
highArr (array) : array of historical highs
lowArr (array) : array of historical lows
timeArr (array) : array of historical times
rightCoordinate (int) : a future time (right for boxes, x2 for lines)
equalHighsCol (color) : user-selected color for equal highs drawings
equalLowsCol (color) : user-selected color for equal lows drawings
liteMode (bool) : optional for a lite mode version of an ICT strategy. For more control over drawings leave as "True", "False" will apply neon effects
Returns: void
quickTime(timeString)
used to quickly determine if a user-inputted time range is currently active in NYT time
Parameters:
timeString (string) : a time range
Returns: true if session is active, false if session is inactive
macros(showMacros, noBorders)
used to calculate and draw session macros
Parameters:
showMacros (bool) : an input.bool() or simple bool to determine whether to activate the function
noBorders (bool) : an input.bool() to determine whether the box anchored to the session should have borders
Returns: void
po3(tf, left, right, show)
use to calculate HTF po3 candle
@tip only call this function on "barstate.islast"
Parameters:
tf (simple string)
left (int) : the left point of the candle, calculated as bar_index + left,
right (int) : :the right point of the candle, calculated as bar_index + right,
show (bool) : input.bool() whether to show the po3 candle or not
Returns: void
silverBullet(silverBulletStratLong, silverBulletStratShort, future, userTF, H, L, H2, L2, noBorders, silverBulletLongTP, historicalPoints, historicalData, silverBulletLongSL, silverBulletShortTP, silverBulletShortSL)
used to execute the Silver Bullet Strategy
Parameters:
silverBulletStratLong (simple bool)
silverBulletStratShort (simple bool)
future (int) : a future time, used for drawings, example "last_bar_time"
userTF (simple int)
H (float) : the high price of the user-selected TF
L (float) : the low price of the user-selected TF
H2 (float) : the high price of the user-selected TF
L2 (float) : the low price of the user-selected TF
noBorders (bool) : an input.bool() used to remove the borders from box drawings
silverBulletLongTP (series silverBulletLevels)
historicalPoints (array)
historicalData (necessaryData)
silverBulletLongSL (series silverBulletLevels)
silverBulletShortTP (series silverBulletLevels)
silverBulletShortSL (series silverBulletLevels)
Returns: void
method invalidFVGcheck(FVGarr, upFVGpricesSorted, dnFVGpricesSorted)
check if existing FVGs are still valid
Namespace types: array
Parameters:
FVGarr (array)
upFVGpricesSorted (array) : an array of bullish FVG prices, used to selective search through FVG array to remove invalidated levels
dnFVGpricesSorted (array) : an array of bearish FVG prices, used to selective search through FVG array to remove invalidated levels
Returns: void (0)
method drawFVG(counter, FVGshow, FVGname, FVGcol, data, masterCoords, labelLevels, borderTransp, liteMode, rightCoordinate)
draws FVGs on last bar
Namespace types: map
Parameters:
counter (map) : a counter, as map, keeping count of the number of FVGs drawn, makes sure that there aren't more FVGs drawn
than int FVGshow
FVGshow (int) : the number of FVGs to show. There should be a bullish FVG show and bearish FVG show. This function "drawFVG" is used separately
for bearish FVG and bullish FVG.
FVGname (string) : the name of the FVG, "FVG Up" or "FVG Down"
FVGcol (color) : desired FVG color
data (FVG)
masterCoords (map) : a map containing the names and price points of key levels. Used to define price ranges.
labelLevels (string) : an input.string with options "Inside", "Outside", "Remove". Determines whether FVG labels should be inside box, outside,
or na.
borderTransp (int)
liteMode (bool)
rightCoordinate (int) : the right coordinate of any drawings. Must be a time point.
Returns: void
invalidBlockCheck(bullishOBbox, bearishOBbox, userTF)
check if existing order blocks are still valid
Parameters:
bullishOBbox (array) : an array declared using the UDT orderBlock that contains bullish order block related data
bearishOBbox (array) : an array declared using the UDT orderBlock that contains bearish order block related data
userTF (simple int)
Returns: void (0)
method lastBarRejections(id, rejectionColor, idShow, rejectionString, labelLevels, borderTransp, liteMode, rightCoordinate, masterCoords)
draws rejectionBlocks on last bar
Namespace types: array
Parameters:
id (array) : the array, an array of rejection block data declared using the UDT rejection block
rejectionColor (color) : the desired color of the rejection box
idShow (int)
rejectionString (string) : the desired name of the rejection blocks
labelLevels (string) : an input.string() to determine if labels for the block should be inside the box, outside, or none.
borderTransp (int)
liteMode (bool) : an input.bool(). True = neon effect, false = no neon.
rightCoordinate (int) : atime for the right coordinate of the box
masterCoords (map) : a map that stores the price of key levels and assigns them a name, used to determine price ranges
Returns: void
method OBdraw(id, OBshow, BBshow, OBcol, BBcol, bullishString, bearishString, isBullish, labelLevels, borderTransp, liteMode, rightCoordinate, masterCoords)
draws orderblocks and breaker blocks for data stored in UDT array()
Namespace types: array
Parameters:
id (array) : the array, an array of order block data declared using the UDT orderblock
OBshow (int) : the number of order blocks to show
BBshow (int) : the number of breaker blocks to show
OBcol (color) : color of order blocks
BBcol (color) : color of breaker blocks
bullishString (string) : the title of bullish blocks, which is a regular bullish orderblock or a bearish orderblock that's converted to breakerblock
bearishString (string) : the title of bearish blocks, which is a regular bearish orderblock or a bullish orderblock that's converted to breakerblock
isBullish (bool) : whether the array contains bullish orderblocks or bearish orderblocks. If bullish orderblocks,
the array will naturally contain bearish BB, and if bearish OB, the array will naturally contain bullish BB
labelLevels (string) : an input.string() to determine if labels for the block should be inside the box, outside, or none.
borderTransp (int)
liteMode (bool) : an input.bool(). True = neon effect, false = no neon.
rightCoordinate (int) : atime for the right coordinate of the box
masterCoords (map) : a map that stores the price of key levels and assigns them a name, used to determine price ranges
Returns: void
FVG
UDT for FVG calcualtions
Fields:
H (series float) : high price of user-selected timeframe
L (series float) : low price of user-selected timeframe
direction (series string) : FVG direction => "Up" or "Down"
T (series int) : => time of bar on user-selected timeframe where FVG was created
fvgLabel (series label) : optional label for FVG
fvgLineTop (series line) : optional line for top of FVG
fvgLineBot (series line) : optional line for bottom of FVG
fvgBox (series box) : optional box for FVG
labelLine
quickly pair a line and label together as UDT
Fields:
lin (series line) : Line you wish to pair with label
lab (series label) : Label you wish to pair with line
orderBlock
UDT for order block calculations
Fields:
orderBlockData (array) : array containing order block x and y points
orderBlockBox (series box) : optional order block box
vioCount (series int) : = 0 violation count of the order block. 0 = Order Block, 1 = Breaker Block
traded (series bool)
status (series string) : = "OB" status == "OB" => Level is order block. status == "BB" => Level is breaker block.
orderBlockLab (series label) : options label for the order block / breaker block.
strongPoints
UDT for strong highs and strong lows
Fields:
price (series float) : price of the strong high or strong low
timeAtprice (series int) : time of the strong high or strong low
strongPointLabel (series label) : optional label for strong point
strongPointLine (series line) : optional line for strong point
overlayLine (series line) : optional lines for strong point to enhance visibility
overlayLine2 (series line) : optional lines for strong point to enhance visibility
displacement
UDT for dispacements
Fields:
highPrice (series float) : high price of displacement
lowPrice (series float) : low price of displacement
timeAtPrice (series int) : time of bar where displacement occurred
displacementBox (series box) : optional box to draw displacement
displacementLab (series label) : optional label for displacement
po3data
UDT for po3 calculations
Fields:
dHigh (series float) : higher timeframe high price
dLow (series float) : higher timeframe low price
dOpen (series float) : higher timeframe open price
dClose (series float) : higher timeframe close price
po3box (series box) : box to draw po3 candle body
po3line (array) : line array to draw po3 wicks
po3Labels (array) : label array to label price points of po3 candle
macros
UDT for session macros
Fields:
sessions (array) : Array of sessions, you can populate this array using the "quickTime" function located above "export macros".
prices (matrix) : Matrix of session data -> open, high, low, close, time
sessionTimes (array) : Array of session names. Pairs with array sessions.
sessionLines (matrix) : Optional array for sesion drawings.
OTEtimes
UDT for data storage and drawings associated with OTE strategy
Fields:
upTimes (array) : time of highest point before trade is taken
dnTimes (array) : time of lowest point before trade is taken
tpLineLong (series line) : line to mark tp level long
tpLabelLong (series label) : label to mark tp level long
slLineLong (series line) : line to mark sl level long
slLabelLong (series label) : label to mark sl level long
tpLineShort (series line) : line to mark tp level short
tpLabelShort (series label) : label to mark tp level short
slLineShort (series line) : line to mark sl level short
slLabelShort (series label) : label to mark sl level short
sweeps
UDT for data storage and drawings associated with liquidity sweeps
Fields:
upSweeps (matrix) : matrix containing liquidity sweep price points and time points for up sweeps
dnSweeps (matrix) : matrix containing liquidity sweep price points and time points for down sweeps
upSweepDrawings (array) : optional up sweep box array. Pair the size of this array with the rows or columns,
dnSweepDrawings (array) : optional up sweep box array. Pair the size of this array with the rows or columns,
raidExitDrawings
UDT for drawings associated with the Liquidity Raid Strategy
Fields:
tpLine (series line) : tp line for the liquidity raid entry
tpLabel (series label) : tp label for the liquidity raid entry
slLine (series line) : sl line for the liquidity raid entry
slLabel (series label) : sl label for the liquidity raid entry
m2022
UDT for data storage and drawings associated with the Model 2022 Strategy
Fields:
mTime (series int) : time of the FVG where entry limit order is placed
mIndex (series int) : array index of FVG where entry limit order is placed. This requires an array of FVG data, which is defined above.
mEntryDistance (series float) : the distance of the FVG to the 50% range. M2022 looks for the fvg closest to 50% mark of range.
mEntry (series float) : the entry price for the most eligible fvg
fvgHigh (series float) : the high point of the eligible fvg
fvgLow (series float) : the low point of the eligible fvg
longFVGentryBox (series box) : long FVG box, used to draw the eligible FVG
shortFVGentryBox (series box) : short FVG box, used to draw the eligible FVG
line50P (series line) : line used to mark 50% of the range
line100P (series line) : line used to mark 100% (top) of the range
line0P (series line) : line used to mark 0% (bottom) of the range
label50P (series label) : label used to mark 50% of the range
label100P (series label) : label used to mark 100% (top) of the range
label0P (series label) : label used to mark 0% (bottom) of the range
sweepData (array)
silverBullet
UDT for data storage and drawings associated with the Silver Bullet Strategy
Fields:
session (series bool)
sessionStr (series string) : name of the session for silver bullet
sessionBias (series string)
sessionHigh (series float) : = high high of session // use math.max(silverBullet.sessionHigh, high)
sessionLow (series float) : = low low of session // use math.min(silverBullet.sessionLow, low)
sessionFVG (series float) : if applicable, the FVG created during the session
sessionFVGdraw (series box) : if applicable, draw the FVG created during the session
traded (series bool)
tp (series float) : tp of trade entered at the session FVG
sl (series float) : sl of trade entered at the session FVG
sessionDraw (series box) : optional draw session with box
sessionDrawLabel (series label) : optional label session with label
silverBulletDrawings
UDT for trade exit drawings associated with the Silver Bullet Strategy
Fields:
tpLine (series line) : tp line drawing for strategy
tpLabel (series label) : tp label drawing for strategy
slLine (series line) : sl line drawing for strategy
slLabel (series label) : sl label drawing for strategy
unicornModel
UDT for data storage and drawings associated with the Unicorn Model Strategy
Fields:
hPoint (chart.point)
hPoint2 (chart.point)
hPoint3 (chart.point)
breakerBlock (series box) : used to draw the breaker block required for the Unicorn Model
FVG (series box) : used to draw the FVG required for the Unicorn model
topBlock (series float) : price of top of breaker block, can be used to detail trade entry
botBlock (series float) : price of bottom of breaker block, can be used to detail trade entry
startBlock (series int) : start time of the breaker block, used to set the "left = " param for the box
includes (array) : used to store the time of the breaker block, or FVG, or the chart point sequence that setup the Unicorn Model.
entry (series float) : // eligible entry price, for longs"math.max(topBlock, FVG.get_top())",
tpLine (series line) : optional line to mark PT
tpLabel (series label) : optional label to mark PT
slLine (series line) : optional line to mark SL
slLabel (series label) : optional label to mark SL
rejectionBlocks
UDT for data storage and drawings associated with rejection blocks
Fields:
rejectionPoint (chart.point)
bodyPrice (series float) : candle body price closest to the rejection point, for "Up" rejections => math.max(open, close),
rejectionBox (series box) : optional box drawing of the rejection block
rejectionLabel (series label) : optional label for the rejection block
equalLevelsDraw
UDT for data storage and drawings associated with equal highs / equal lows
Fields:
connector (series line) : single line placed at the first high or low, y = avgerage of distinguished equal highs/lows
connectorLab (series label) : optional label to be placed at the highs or lows
levels (array) : array containing the equal highs or lows prices
times (array) : array containing the equal highs or lows individual times
startTime (series int) : the time of the first high or low that forms a sequence of equal highs or lows
radiate (array) : options label to "radiate" the label in connector lab. Can be used for anything
necessaryData
UDT for data storage of historical price points.
Fields:
highArr (array) : array containing historical high points
lowArr (array) : array containing historical low points
timeArr (array) : array containing historical time points
logArr (array) : array containing historical log returns
signArr (array) : array containing historical price directions
closeArr (array) : array containing historical close points
binaryTimeArr (array) : array containing historical time points, uses "push" instead of "unshift" to allow for binary search
binaryCloseArr (array) : array containing historical close points, uses "push" instead of "unshift" to allow the correct
binaryOpenArr (array) : array containing historical optn points, uses "push" instead of "unshift" to allow the correct
atrTFarr (array) : array containing historical user-selected TF atr points
openArr (array) : array containing historical open points
Gabriel's Cyclic Smoothed RSI [Enhanced]Overview
Gabriel's Cyclic Smoothed RSI (short title: cRSI ) is a sophisticated technical indicator developed to provide traders with deeper insights into market rhythms and price momentum. Building upon the traditional Relative Strength Index (RSI), this enhanced version incorporates dynamic cycle analysis, divergence detection, and optional stochastic oscillators to deliver a more nuanced understanding of market conditions.
Key Features
Cyclic Smoothed RSI (cRSI):
Adaptive Momentum: The cRSI adapts to the dominant market cycle, providing a smoothed RSI that reacts dynamically to price changes.
Ultra-Smooth & Zero-Lag: Designed to minimize lag, ensuring timely signals that closely follow price movements.
Accurate Divergence Detection: Identifies both regular and hidden bullish/bearish divergences, enhancing signal reliability.
Dynamic Overbought/Oversold Bands:
Customizable Thresholds: Set dynamic overbought and oversold levels based on market rhythm analysis.
Adaptive Bands: Bands adjust according to the dominant cycle, offering a more accurate representation of market extremes.
Stochastic cRSI & KDJ Oscillator (Optional):
Enhanced Oscillators: Incorporate stochastic and KDJ oscillators for additional momentum analysis.
Ribbon Displays: Visual ribbons provide clarity on oscillator trends and potential reversal points.
Divergence Detection:
Regular & Hidden Divergences: Detects both regular and hidden bullish/bearish divergences to anticipate potential trend reversals.
Customizable Lookback: Adjust pivot lookback periods to fine-tune divergence sensitivity.
Visual Enhancements:
Triangles & Labels: Visual signals in the form of triangles and labels indicate buy/sell opportunities and divergence events.
Bar Coloring: Option to color bars based on signal strength, providing immediate visual cues.
Alert Conditions:
Custom Alerts: Set up alerts for various signal types, including strong buy/sell signals and divergence events, ensuring you never miss critical market movements.
Input Settings
cRSI Settings
Source: Select the data source for calculations (e.g., Close, Open, High, Low, HLC3, OHLC4).
Dominant Cycle Length: Define the dominant market cycle length based on rhythm analysis.
Vibration: Adjusts the sensitivity of the cRSI to price changes.
Leveling %: Determines the percentage level for dynamic band adjustments.
Show cRSI Plot: Toggle the display of the cRSI line.
Show Cyclic Smoothed Bands: Toggle the display of dynamic overbought and oversold bands.
Show Trend Fill: Enable or disable the trend fill cloud between upper and lower bands.
MA Settings
MA Type: Choose the type of Moving Average (SMA, Bollinger Bands, EMA, SMMA (RMA), WMA, VWMA) to smooth the cRSI.
MA Length: Set the length of the Moving Average.
BB StdDev: Define the standard deviation multiplier for Bollinger Bands.
Show cRSI-based MA: Toggle the display of the cRSI-based Moving Average line.
Stochastic Settings
Show Stochastic cRSI: Enable the stochastic oscillator based on cRSI.
Ribbon: Enable ribbon display for the Stochastic oscillator.
Show KDJ: Toggle the display of the KDJ oscillator.
KDJ Ribbon: Enable ribbon display for the KDJ oscillator.
Stochastic Length: Set the length for the Stochastic calculation.
%K Smoothing: Define the smoothing period for %K.
%D Smoothing: Define the smoothing period for %D.
Stoch Scaling %: Adjusts the vertical scaling of the stochastic to prevent distortion.
Overbought/Oversold Settings
Overbought: Set the Overbought threshold for the cRSI.
OB Extreme: Define the Extreme Overbought threshold for the Stochastic cRSI.
Oversold: Set the Oversold threshold for the cRSI.
OS Extreme: Define the Extreme Oversold threshold for the Stochastic cRSI.
Divergence Settings
Pivot Lookback Right: Number of bars to the right of the pivot for divergence detection.
Pivot Lookback Left: Number of bars to the left of the pivot for divergence detection.
Max of Lookback Range: Maximum number of bars to look back for divergence detection.
Min of Lookback Range: Minimum number of bars to look back for divergence detection.
Plot Bullish: Enable plotting of bullish divergence signals.
Plot Hidden Bullish: Enable plotting of hidden bullish divergence signals.
Plot Bearish: Enable plotting of bearish divergence signals.
Plot Hidden Bearish: Enable plotting of hidden bearish divergence signals.
Delay Plot Until Candle is Closed: Prevents repainting by delaying the plotting of divergence signals until the candle is fully closed.
The Adaptive Pairwise Momentum System [QuantraSystems]The Adaptive Pairwise Momentum System
QuantraSystems guarantees that the information created and published within this document and on the Tradingview platform is fully compliant with applicable regulations, does not constitute investment advice, and is not exclusively intended for qualified investors.
Important Note!
The system equity curve presented here has been generated as part of the process of testing and verifying the methodology behind this script.
Crucially, it was developed after the system was conceptualized, designed, and created, which helps to mitigate the risk of overfitting to historical data. In other words, the system was built for robustness, not for simply optimizing past performance.
This ensures that the system is less likely to degrade in performance over time, compared to hyper-optimized systems that are tailored to past data. No tweaks or optimizations were made to this system post-backtest.
Even More Important Note!!
The nature of markets is that they change quickly and unpredictably. Past performance does not guarantee future results - this is a fundamental rule in trading and investing.
While this system is designed with broad, flexible conditions to adapt quickly to a range of market environments, it is essential to understand that no assumptions should be made about future returns based on historical data. Markets are inherently uncertain, and this system - like all trading systems - cannot predict future outcomes.
Introduction
The Adaptive Pairwise Momentum System is not just an indicator but a comprehensive asset rotation and trend-following system. In short, it aims to find the highest performing asset from the provided range.
The system dynamically optimizes capital allocation across up to four high-performing assets, ensuring that the portfolio adapts swiftly to changing market conditions. The system logic consists of sophisticated quantitative methods, rapid momentum analysis, and robust trend filtering. The overarching goal is to ensure that the portfolio is always invested in the highest-performing asset based on dynamic market conditions, while at the same time managing risk through broader market filters and internal mechanisms like volatility and beta analysis.
Legend
System Equity Curve:
The equity curve displayed in the chart is dynamically colored based on the asset allocation at any given time. This color-coded approach allows traders to immediately identify transitions between assets and the corresponding impact on portfolio performance.
Highlighting of Current Highest Performer:
The current bar in the chart is highlighted based on the confirmed highest performing asset. This is designed to give traders advanced notice of potential shifts in allocation even before a formal position change occurs. The highlighting enables traders to prepare in real time, making it easier to manage positions without lag, particularly in fast-moving markets.
Highlighted Symbols in the Asset Table:
In the table displayed on the right hand side of the screen, the current top-performing symbol is highlighted. This clear signal at a glance provides immediate insight into which asset is currently being favored by the system. This feature enhances clarity and helps traders make informed decisions quickly, without needing to analyze the underlying data manually.
Performance Overview in Tables:
The left table provides insight into both daily and overall system performance from inception, offering traders a detailed view of short-term fluctuations and long-term growth. The right-hand table breaks down essential metrics such as Sharpe ratio, Sortino ratio, Omega ratio, and maximum drawdown for each asset, as well as for the overall system and HODL strategy.
Asset-Specific Signals:
The signals column in the table indicates whether an asset is currently held or being considered for holding based on the system's dynamic rankings. This is a critical visual aid for asset reallocation decisions, signaling when it may be appropriate to either maintain or change the asset of the portfolio.
Core Features and Methodologies
Flexibility in Asset Selection
One of the major advantages of this system is its flexibility. Users can easily modify the number and type of assets included for comparison. You can quickly input different assets and backtest their performance, allowing you to verify how well this system might fit different tokens or market conditions. This flexibility empowers users to adapt the system to a wide range of market environments and tailor it to their unique preferences.
Whole System Risk Mitigation - Macro Trend Filter
One of the features of this script is its integration of a Macro-level Trend Filter for the entire portfolio. The purpose of this filter is to ensure no capital is allocated to any token in the rotation system unless Bitcoin itself is in a positive trend. The logic here is that Bitcoin, as the cryptocurrency market leader, often sets the tone for the entire cryptocurrency market. By using Bitcoins trend direction as a barometer for overall market conditions, we create a system where capital is not allocated during unfavorable or bearish market conditions - significantly reducing exposure to downside risk.
Users have the ability to toggle this filter on and off in the input menu, with five customizable options for the trend filter, including the option to use no filter. These options are:
Nova QSM - a trend aggregate combining the Rolling VWAP, Wave Pendulum Trend, KRO Overlay, and the Pulse Profiler provides the market trend signal confirmation.
Kilonova QSM - a versatile aggregate combining the Rolling VWAP, KRO Overlay, the KRO Base, RSI Volatility Bands, NNTRSI, Regression Smoothed RSI and the RoC Suite.
Quasar QSM - an enhanced version of the original RSI Pulsar. The Quasar QSM refines the trend following approach by utilizing an aggregated methodology.
Pairwise Momentum and Strength Ranking
The backbone of this system is its ability to identify the strongest-performing asset in the selected pool, ensuring that the portfolio is always exposed to the asset showing the highest relative momentum. The system continually ranks these assets against each other and determines the highest performer by measure of past and coincident outperformance. This process occurs rapidly, allowing for swift responses to shifts in market momentum, which ensures capital is always working in the most efficient manner. The speed and precision of this reallocation strategy make the script particularly well-suited for active, momentum-driven portfolios.
Beta-Adjusted Asset Selection as a Tiebreaker
In the circumstance where two (or more) assets exhibit the same relative momentum score, the system introduces another layer of analysis. In the event of a strength ‘tie’ the system will preference maintaining the current position - that is, if the previously strongest asset is now tied, the system will still allocate to the same asset. If this is not the case, the asset with the higher beta is selected. Beta is a measure of an asset’s volatility relative to Bitcoin (BTC).
This ensures that in bullish conditions, the system favors assets with a higher potential for outsized gains due to their inherent volatility. Beta is calculated based on the Average Daily Return of each asset compared to BTC. By doing this, the system ensures that it is dynamically adjusting to risk and reward, allocating to assets with higher risk in favorable conditions and lower risk in less favorable conditions.
Dynamic Asset Reallocation - Opposed to Multi-Asset Fixed Intervals
One of the standout features of this system is its ability to dynamically reallocate capital. Unlike traditional portfolio allocation strategies that may rebalance between a basket of assets monthly or quarterly, this system recalculates and reallocates capital on the next bar close (if required). As soon as a new asset exhibits superior performance relative to others, the system immediately adjusts, closing the previous position and reallocating funds to the top-ranked asset.
This approach is particularly powerful in volatile markets like cryptocurrencies, where trends can shift quickly. By reallocating swiftly, the system maximizes exposure to high-performing assets while minimizing time spent in underperforming ones. Moreover, this process is entirely automated, freeing the trader from manually tracking and measuring individual token strength.
Our research has demonstrated that, from a risk-adjusted return perspective, concentration into the top-performing asset consistently outperforms broad diversification across longer time horizons. By focusing capital on the highest-performing asset, the system captures outsized returns that are not achievable through traditional diversification. However, a more risk-averse investor, or one seeking to reduce drawdowns, may prefer to move the portfolio further left along the theoretical Capital Allocation Line by incorporating a blend of cash, treasury bonds, or other yield-generating assets or even include market neutral strategies alongside the rotation system. This hybrid approach would effectively lower the overall volatility of the portfolio while still maintaining exposure to the system’s outsized returns. In theory, such an investor can reduce risk without sacrificing too much potential upside, creating a more balanced risk-return profile.
Position Changes and Fees/Slippage
Another critical and often overlooked element of this system is its ability to account for fees and slippage. Given the increased speed and frequency of allocation logic compared to the buy-and-hold strategy, it is of vital importance that the system recognises that switching between assets may incur slippage, especially in highly volatile markets. To account for this, the system integrates realistic slippage and fee estimates directly into the equity curve, simulating expected execution costs under typical market conditions and gives users a more realistic view of expected performance.
Number of Position Changes
Understanding the number of position changes in a strategy is critical to assessing its feasibility in real world trading. Frequent position changes can lead to increased costs due to slippage and fees. Monitoring the number of position changes provides insight into the system’s behavior - helping to evaluate how active the strategy is and whether it aligns with the trader's desired time input for position management.
Equity Curve and Performance Calculations
To provide a benchmark, the script also generates a Buy-and-Hold (or "HODL") equity curve that represents an equal split across the four selected assets. This allows users to easily compare the performance of the dynamic rotation system with that of a more traditional investment strategy.
The script tracks key performance metrics for both the dynamic portfolio and the HODL strategy, including:
Sharpe Ratio
The Sharpe Ratio is a key metric that evaluates a portfolio’s risk-adjusted return by comparing its ‘excess’ return to its volatility. Traditionally, the Sharpe Ratio measures returns relative to a risk-free rate. However, in our system’s calculation, we omit the risk-free rate and instead measure returns above a benchmark of 0%. This adjustment provides a more universal comparison, especially in the context of highly volatile assets like cryptocurrencies, where a traditional risk-free benchmark, such as the usual 3-month T-bills, is often irrelevant or too distant from the realities of the crypto market.
By using 0% as the baseline, we focus purely on the strategy's ability to generate raw returns in the face of market risk, which makes it easier to compare performance across different strategies or asset classes. In an environment like cryptocurrency, where volatility can be extreme, the importance of relative return against a highly volatile backdrop outweighs comparisons to a risk-free rate that bears little resemblance to the risk profile of digital assets.
Sortino Ratio
The Sortino Ratio improves upon the Sharpe Ratio by specifically targeting downside risk and leaves the upside potential untouched. In contrast to the Sharpe Ratio (which penalizes both upside and downside volatility), the Sortino Ratio focuses only on negative return deviations. This makes it a more suitable metric for evaluating strategies like the Adaptive Pairwise Momentum Strategy - that aim to minimize drawdowns without restricting upside capture. By measuring returns relative to a 0% baseline, the Sortino ratio provides a clearer assessment of how well the system generates gains while avoiding substantial losses in highly volatile markets like crypto.
Omega Ratio
The Omega Ratio is calculated as the ratio of gains to losses across all return thresholds, providing a more complete view of how the system balances upside and downside risk even compared to the Sortino Ratio. While it achieves a similar outcome to the Sortino Ratio by emphasizing the system's ability to capture gains while limiting losses, it is technically a mathematically superior method. However, we include both the Omega and Sortino ratios in our metric table, as the Sortino Ratio remains more widely recognized and commonly understood by traders and investors of all levels.
Case Study
Notes
For the sake of brevity, the Important Notes section found in the header of this text will not be rewritten. Instead, it will be highlighted that now is the perfect time to reread these notes. Reading this case study in the context of what has been mentioned above is of key importance.
As a second note, it is worth mentioning that certain market periods are referred to as either “Bull” or “Bear” markets - terms I personally find to be vague and undefinable - and therefore unfavorable. They will be used nevertheless, due to their familiarity and ease of understanding in this context. Substitute phrases could be “Macro Uptrend” or “Macro Downtrend.”
Overview
This case study provides an in-depth performance analysis of the Adaptive Pairwise Momentum System , a long-only system that dynamically allocates to outperforming assets and moves into cash during unfavorable conditions.
This backtest includes realistic assumptions for slippage and fees, applying a 0.5% cost for every position change, which includes both asset reallocation and moving to a cash position. Additionally, the system was tested using the top four cryptocurrencies by market capitalization as of the test start date of 01/01/2022 in order to minimize selection bias.
The top tokens on this date (excluding Stablecoins) were:
Bitcoin
Ethereum
Solana
BNB
This decision was made in order to avoid cherry picking assets that might have exhibited exceptional historical performance - minimizing skew in the back test. Furthermore, although this backtest focuses on these specific assets, the system is built to be flexible and adaptable, capable of being applied to a wide range of assets beyond those initially tested.
Any potential lookahead bias or repainting in the calculations has been addressed by implementing the lookback modifier for all repainting sensitive data, including asset ratios, asset scoring, and beta values. This ensures that no future information is inadvertently used in the asset allocation process.
Additionally, a fixed lookback period of one bar is used for the trend filter during allocations - meaning that the trend filter from the prior bar must be positive for an allocation to occur on the current bar. It is also important to note that all the data displayed by the indicator is based on the last confirmed (closed) bar, ensuring that the entire system is repaint-proof.
The study spans the 2022 cryptocurrency bear market through the subsequent bull market of 2023 and 2024. The stress test highlights how the system reacted to one of the most challenging market downturns in crypto history - which includes events such as:
Luna and TerraUSD crash
Three Arrows Capital liquidation
Celsius bankruptcy
Voyager Digital bankruptcy
FTX collapse
Silicon Valley + Signature + Silvergate banking collapses
Subsequent USDC deppegging
And arguably more important, 2022 was characterized by a tightening of monetary policy after the unprecedented monetary easing in response to the Covid pandemic of 2020/2021. This shift undeniably puts downward pressure on asset prices, most probably to the extent that this had a causal role to many of the above events.
By incorporating these real-world challenges, the backtest provides a more accurate and robust performance evaluation that avoids overfitting or excessive optimization for one specific market condition.
The Bear Market of 2022: Stress Test and System Resilience
During the 2022 bear market, where the overall crypto market experienced deep and consistent corrections, the Adaptive Pairwise Momentum System demonstrated its ability to mitigate downside risk effectively.
Dynamic Allocation and Cash Exposure:
The system rotated in and out of cash, as indicated by the gray period on the system equity curve. This allocation to cash during downtrending periods, specifically in late 2022, acted as the systems ‘risk-off’ exposure - the purest form of such an exposure. This prevented the system from experiencing the magnitude of drawdown suffered by the ‘Buy-and-Hold (HODL) investors.
In contrast, a passive HODL strategy would have suffered a staggering 75.32% drawdown, as it remained fully allocated to chosen assets during the market's decline. The active Pairwise Momentum system’s smaller drawdown of 54.35% demonstrates its more effective capital preservation mechanisms.
The Bull Market of 2023 and 2024: Capturing Market Upside
Following the crypto bear market, the system effectively capitalized on the recovery and subsequent bull market of 2023 and 2024.
Maximizing Market Gains:
As trends began turning bullish in early 2023, the system caught the momentum and promptly allocated capital to only the quantified highest performing asset of the time - resulting in a parabolic rise in the system's equity curve. Notably, the curve transitions from gray to purple during this period, indicating that Solana (SOL) was the top-performing asset selected by the system.
This allocation to Solana is particularly striking because, at the time, it was an asset many in the market shunned due to its association with the FTX collapse just months prior. However, this highlights a key advantage of quantitative systems like the one presented here: decisions are driven purely from objective data - free from emotional or subjective biases. Unlike human traders, who are inclined (whether consciously or subconsciously) to avoid assets that are ‘out of favor,’ this system focuses purely on price performance, often uncovering opportunities that are overlooked by discretionary based investors. This ability to make data-driven decisions ensures that the strategy is always positioned to capture the best risk-adjusted returns, even in scenarios where judgment might fail.
Minimizing Volatility and Drawdown in Uptrends
While the system captured substantial returns during the bull market it also did so with lower volatility compared to HODL. The sharpe ratio of 4.05 (versus HODL’s 3.31) reflects the system's superior risk-adjusted performance. The allocation shifts, combined with tactical periods of cash holding during minor corrections, ensured a smoother equity curve growth compared to the buy-and-hold approach.
Final Summary
The percentage returns are mentioned last for a reason - it is important to emphasize that risk-adjusted performance is paramount. In this backtest, the Pairwise Momentum system consistently outperforms due to its ability to dynamically manage risk (as seen in the superior Sharpe, Sortino and Omega ratios). With a smaller drawdown of 54.35% compared to HODL’s 75.32%, the system demonstrates its resilience during market downturns, while also capturing the highest beta on the upside during bullish phases.
The system delivered 266.26% return since the backtest start date of January 1st 2022, compared to HODL’s 10.24%, resulting in a performance delta of 256.02%
While this backtest goes some of the way to verifying the system’s feasibility, it’s important to note that past performance is not indicative of future results - especially in volatile and evolving markets like cryptocurrencies. Market behavior can shift, and in particular, if the market experiences prolonged sideways action, trend following systems such as the Adaptive Pairwise Momentum Strategy WILL face significant challenges.
Prometheus Topological Persistent EntropyPersistence Entropy falls under the branch of math topology. Topology is a study of shapes as they twist and contort. It can be useful in the context of markets to determine how volatile they may be and different from the past.
The key idea is to create a persistence diagram from these log return segments. The persistence diagram tracks the "birth" and "death" of price features:
A birth occurs when a new price pattern or feature emerges in the data.
A death occurs when that pattern disappears.
By comparing prices within each segment, the script tracks how long specific price features persist before they die out. The lifetime of each feature (difference between death and birth) represents how robust or fleeting the pattern is. Persistent price features tend to reflect stable trends, while shorter-lived features indicate volatility.
Entropy Calculation: The lifetimes of these patterns are then used to compute the entropy of the system. Entropy, in this case, measures the amount of disorder or randomness in the price movements. The more varied the lifetimes, the higher the entropy, indicating a more volatile market. If the price patterns exhibit longer, more consistent lifetimes, the entropy is lower, signaling a more stable market.
Calculation:
We start by getting log returns for a user defined look back value. In the compute_persistent_entropy function we separate the overall log returns into windows. We then compute persistence diagrams of the windows. It tracks the birth and death of price patterns to see how persistent they are. Then we calculate the entropy of the windows.
After we go through that process we get an array of entropies, we then smooth it by taking the sum of all of them and dividing it by how many we have so the indicator can function better.
// Calculate log returns
log_returns = array.new()
for i = 1 to lgr_lkb
array.push(log_returns, math.log(close / close ))
// Function to compute a simplified persistence diagram
compute_persistence_diagram(segment) =>
n = array.size(segment)
lifetimes = array.new()
for i = 0 to n - 1
for j = i + 1 to n - 1
birth = array.get(segment, i)
death = array.get(segment, j-1)
if birth != death
array.push(lifetimes, math.abs(death - birth))
lifetimes
// Function to compute entropy of a list of values
compute_entropy(values) =>
n = array.size(values)
if n == 0
0.0
else
freq_map = map.new()
total_sum = 0.0
for i = 0 to n - 1
value = array.get(values, i)
//freq_map := freq_map.get(value, 0.0) + 1
map.put(freq_map, value, value + 1)
total_sum += 1
entropy = 0.0
for in freq_map
p = count / total_sum
entropy -= p * math.log(p)
entropy
compute_persistent_entropy(log_returns, window_size) =>
n = (lgr_lkb) - (2 * window_size) + 1
entropies = array.new()
for i = 0 to n - 1
segment1 = array.new()
segment2 = array.new()
for j = 0 to window_size - 1
array.push(segment1, array.get(log_returns, i + j))
array.push(segment2, array.get(log_returns, i + window_size + j))
dgm1 = compute_persistence_diagram(segment1)
dgm2 = compute_persistence_diagram(segment2)
combined_diagram = array.concat(dgm1, dgm2)
entropy = compute_entropy(combined_diagram)
array.push(entropies, entropy)
entropies
//---------------------------------------------
//---------------PE----------------------------
//---------------------------------------------
// Calculate Persistent Entropy
entropies = compute_persistent_entropy(log_returns, window_size)
smooth_pe = array.sum(entropies) / array.size(entropies)
This image illustrates how the indicator works for traders. The purple line is the actual indicator value. The line that changes from green to red is a SMA of the indicator value, we use this to determine bullish or bearish. When the smoothed persistence entropy is above it’s SMA that signals bearishness.
The indicator tends to look prettier on higher time frames, we see NASDAQ:TSLA on a 4 hour here and below we see it on the 5 minute.
On a lower time frame it looks a little weird but still functions the same way.
Prometheus encourages users to use indicators as tools along with their own discretion. No indicator is 100% accurate. We encourage comments about requested features and criticism.
Options Series - MTF 1 and 3 Minute
Objective:
The indicator is named "Options Series - MTF 1 and 3 Minute", suggesting it's designed to analyze options series with multiple time frames (MTF), particularly focusing on 1-minute and 3-minute intervals.
OHLC Values Of Candle:
The code fetches the Open, High, Low, and Close (OHLC) values of the current candle for the specified ticker and timeframes (current, 1 minute, and 3 minutes). Additionally, it calculates the 200-period Simple Moving Average (SMA) of the closing prices for each timeframe.
Bull vs. Bear Condition:
It defines conditions for Bullish and Bearish scenarios based on comparing the current close price with the previous 200-period SMA close price for both 1-minute and 3-minute timeframes. If the current close price is higher than the previous 200-period SMA close price, it's considered Bullish, and if it's lower, it's considered Bearish.
Final Color Condition and Plot:
It determines the color of the candlestick based on the Bullish or Bearish condition. If the conditions for a Bullish scenario are met, the candlestick color is set to green (GreenColorCandle). If the conditions for a Bearish scenario are met, the candlestick color is set to red (RedColorCandle). If neither condition is met (i.e., the candle is neither Bullish nor Bearish), the color remains gray.
The code then plots the 200-period SMA values for both 1-minute and 3-minute timeframes and colors them based on the candlestick color. It also colors the bars based on the candlestick color.
Insights:
This indicator focuses on comparing current close prices with the 200-period SMA close prices to determine market sentiment (Bullish or Bearish).
It utilizes multiple time frames (1 minute and 3 minutes) to provide a broader perspective on market movements.
The color-coded candlesticks and bars make it visually easy to identify Bullish and Bearish trends.
This indicator can be used as part trading based on the identified market sentiment.
Swiss Knife [MERT]Introduction
The Swiss Knife indicator is a comprehensive trading tool designed to provide a multi-dimensional analysis of the market. By integrating a wide array of technical indicators across multiple timeframes, it offers traders a holistic view of market sentiment, momentum, and potential reversal points. This indicator is particularly useful for traders looking to combine trend analysis, momentum indicators, volume data, and price action into a single, easy-to-read format.
---
Key Features
Multi-Timeframe Analysis : Evaluates indicators on Daily , 4-Hour , 1-Hour , and 15-Minute timeframes.
Comprehensive Indicator Suite : Incorporates MACD , Awesome Oscillator (AO) , Parabolic SAR , SuperTrend , DPO , RSI , Stochastic Oscillator , Bollinger Bands , Ichimoku Cloud , Chande Momentum Oscillator (CMO) , Donchian Channels , ADX , volume-based momentum indicators, Fractals , and divergence detection.
Market Sentiment Scoring : Aggregates signals from multiple indicators to provide an overall sentiment score.
Visual Aids : Displays EMA lines, trendlines, divergence signals, and a sentiment table directly on the chart.
Super Trend Reversal Signals : Identifies potential market reversal points by assessing the momentum of automated trading bots.
---
Explanation of Each Indicator
Moving Average Convergence Divergence (MACD)
- Purpose : Measures the relationship between two moving averages of price.
- Interpretation : A positive histogram suggests bullish momentum; a negative histogram indicates bearish momentum.
Awesome Oscillator (AO)
- Purpose : Gauges market momentum by comparing recent market movements to historic ones.
- Interpretation : Above zero indicates bullish momentum; below zero indicates bearish momentum.
Parabolic SAR (SAR)
- Purpose : Identifies potential reversal points in price direction.
- Interpretation : Dots below price suggest an uptrend; dots above price suggest a downtrend.
SuperTrend
- Purpose : Determines the prevailing market trend.
- Interpretation : Provides buy or sell signals based on price movements relative to the SuperTrend line.
Detrended Price Oscillator (DPO)
- Purpose : Removes trend from price to identify cycles.
- Interpretation : Values above zero suggest price is above the moving average; values below zero indicate it is below.
Relative Strength Index (RSI)
- Purpose : Measures the speed and change of price movements.
- Interpretation : Values above 50 indicate bullish momentum; values below 50 indicate bearish momentum.
Stochastic Oscillator
- Purpose : Compares a particular closing price to a range of its prices over a certain period.
- Interpretation : Values above 50 indicate bullish conditions; values below 50 indicate bearish conditions.
Bollinger Bands (BB)
- Purpose : Measures market volatility and provides relative price levels.
- Interpretation : Price above the middle band suggests bullishness; below the middle band suggests bearishness.
Ichimoku Cloud
- Purpose : Provides support and resistance levels, trend direction, and momentum.
- Interpretation : Bullish signals when price is above the cloud; bearish signals when price is below the cloud.
Chande Momentum Oscillator (CMO)
- Purpose : Measures momentum on both up and down days.
- Interpretation : Values above 50 indicate strong upward momentum; values below -50 indicate strong downward momentum.
Donchian Channels
- Purpose : Identifies volatility and potential breakouts.
- Interpretation : Price above the upper band suggests bullish breakout; below the lower band suggests bearish breakout.
Average Directional Index (ADX)
- Purpose : Measures the strength of a trend.
- Interpretation : DI+ above DI- indicates bullish trend; DI- above DI+ indicates bearish trend.
Volume Momentum Indicators (VolMom, CumVolMom, POCMom)
- Purpose : Analyze volume to assess buying and selling pressure.
- Interpretation : Positive values suggest bullish volume momentum; negative values indicate bearish volume momentum.
Fractals
- Purpose : Identify potential reversal points in the market.
- Interpretation : Up fractals may indicate a future downtrend; down fractals may indicate a future uptrend.
Divergence Detection
- Purpose : Identifies divergences between price and various indicators (RSI, MACD, Stochastic, OBV, MFI, A/D Line).
- Interpretation : Bullish divergences suggest potential upward reversal; bearish divergences suggest potential downward reversal.
- Note : This functionality utilizes the library from Divergence Indicator .
---
Coloring Scheme
Background Color
- Purpose : Reflects the overall market sentiment by combining sentiment scores from all indicators across different timeframes.
- Interpretation :
- Green Shades : Indicate bullish market sentiment.
- Red Shades : Indicate bearish market sentiment.
- Intensity : The strength of the color corresponds to the strength of the sentiment score.
Sentiment Table
- Purpose : Displays the status of each indicator across different timeframes.
- Interpretation :
- Green Cell : The indicator suggests a bullish signal.
- Red Cell : The indicator suggests a bearish signal.
- Percentage Score : Indicates the overall bullish or bearish sentiment on that timeframe.
Exponential Moving Averages (EMAs)
- Purpose : Provide dynamic support and resistance levels.
- Colors :
- EMA 10 : Lime
- EMA 20 : Yellow
- EMA 50 : Orange
- EMA 100 : Red
- EMA 200 : Purple
Trendlines
- Purpose : Visual representation of support and resistance levels based on pivot points.
- Interpretation :
- Upward Trendlines : Colored green , indicating support levels.
- Downward Trendlines : Colored red , indicating resistance levels.
- Note : Trendlines are drawn using the library from Simple Trendlines .
---
Utility of Market Sentiment
The indicator aggregates signals from multiple technical indicators across various timeframes to compute an overall market sentiment score . This comprehensive approach helps traders understand the prevailing market conditions by:
Confirming Trends : Multiple indicators pointing in the same direction can confirm the strength of a trend.
Identifying Reversals : Divergences and fractals can signal potential turning points.
Timeframe Alignment : Aligning signals across different timeframes can enhance the probability of successful trades.
---
Divergences
Divergence occurs when the price of an asset moves in the opposite direction of a technical indicator, suggesting a potential reversal.
- Bullish Divergence : Price makes a lower low, but the indicator makes a higher low.
- Bearish Divergence : Price makes a higher high, but the indicator makes a lower high.
The indicator detects divergences for:
RSI
MACD
Stochastic Oscillator
On-Balance Volume (OBV)
Money Flow Index (MFI)
Accumulation/Distribution Line (A/D Line)
By identifying these divergences, traders can spot early signs of trend reversals and adjust their strategies accordingly.
---
Trendlines
Trendlines are essential tools for identifying support and resistance levels. The indicator automatically draws trendlines based on pivot points:
- Upward Trendlines (Support) : Connect higher lows, indicating an uptrend.
- Downward Trendlines (Resistance) : Connect lower highs, indicating a downtrend.
These trendlines help traders visualize the trend direction and potential breakout or reversal points.
---
Super Trend Reversals (ST Reversal)
The core idea behind the Super Trend Reversals indicator is to assess the momentum of automated trading bots (often referred to as 'Supertrend bots') that enter the market during critical turning points. Specifically, the indicator is tuned to identify when the market is nearing bottoms or peaks, just before it shifts direction based on the triggered Supertrend signals. This approach helps traders:
Engage Early : Enter the market as reversal momentum builds up.
Optimize Entries and Exits : Enter under favorable conditions and exit before momentum wanes.
By capturing these reversal points, traders can enhance their trading performance.
---
Conclusion
The Swiss Knife indicator serves as a versatile tool that combines multiple technical analysis methods into a single, comprehensive indicator. By assessing various aspects of the market—including trend direction, momentum, volume, and price action—it provides traders with valuable insights to make informed trading decisions.
---
Citations
- Divergence Detection Library : Divergence Indicator by DevLucem
- Trendline Drawing Library : Simple Trendlines by HoanGhetti
---
Note : This indicator is intended for informational purposes and should be used in conjunction with other analysis techniques. Always perform due diligence before making trading decisions.
---
Potential Divergence Checker#### Key Features
1. Potential Divergence Signals:
Potential divergences can signal a change in price movement before it occurs. This indicator identifies potential divergences instead of waiting for full confirmation, allowing it to detect signs of divergence earlier than traditional methods. This provides more flexible entry points and can act as a broader filter for potential setups.
2. Exposing Signals for External Use:
One of its advanced features is the ability to expose signals for use in other scripts. This allows users to integrate divergence signals and related entry/exit points into custom strategies or automated systems.
3. Custom Entry/Exit Timing Based on Years and Days:
The indicator provides entry and exit signals based on years and days, which could be useful for time-specific market behavior, long-term trades, and back testing.
#### Basic Usage
This indicator can check for all types of potential divergences: bullish, hidden bullish, bearish, hidden bearish. All you need to do is choose the type you want to check for under “DIVERGENCE TYPE” in the settings. On the chart, potential bullish divergences will show up as triangles below the price candles. one the chart potential bearish divergences will show up as upside down triangles above the price candles
#### Signals for Advanced Usage
You can use this indicator as a source in other indicators or strategies using the following information:
“ PD: Bull divergence signal ” will return “1” when a divergence is present and “0” when not present
“ PD: HBull divergence(hidden bull) signal ” will return “1” when a divergence is present and “0” when not present
“ PD: Bear divergence signal ” will return “1” when a divergence is present and “0” when not present
“ PD: HBear divergence(hidden bear) signal ” will return “1” when a divergence is present and “0” when not present
“ PD: enter ” signal will return a “1” when both the days and years criteria in the “entry filter settings” are met and “0” when not met.
“ PD: exit ” signal will return a “1” when the days criteria in the “exit filter settings” are met and “0” when not met.
#### Examples of Using Signals
1. If you are testing a long strategy for Bitcoin and do not want it to run during bear market years(e.g., the second year after a US presidential election), you can enable the “year and day filter for entry,” uncheck the following years in the settings: 2010, 2014, 2018, 2022, 2026, and reference the signal below in our strategy
signal: “ PD: enter ”
2. Let’s say you have a good long strategy, but want to make it a bit more profitable, you can tell the strategy not to run on days where there is potential bearish divergence and have it only run on more profitable days using these signals and the appropriate settings in the indicator
signal: “ PD: Bear divergence signal ” will return a ‘0’ with no bearish divergence present
signal: “ PD: enter ” will return a “1” if the entry falls on a specific, more profitable day chosen in the settings
#### Disclaimer
The "Potential Divergence Checker" indicator is a tool designed to identify potential market signals. It may have bugs and not do what it should do. It is not a guarantee of future trading performance, and users should exercise caution when making trading decisions based on its outputs. Always perform your own research and consider consulting with a financial advisor before making any investment decisions. Trading involves significant risk, and past performance is not indicative of future results.
MTF AnalysisMTF Analysis - Multi-Timeframe TradingView Script
Overview: The "MTF Analysis" script provides a comprehensive approach to analyzing price trends across daily, weekly, and monthly timeframes using linear regression channels. It helps traders identify strong and weak bullish or bearish conditions based on the relationship between the current price and regression lines derived from multiple timeframes.
Key Features:
User-Defined Inputs:
Regression Lengths: Customize regression lengths for daily, weekly, and monthly timeframes.
Smoothing Length: Apply smoothing to regression lines.
Near-Zero Threshold: Filter out signals near a defined slope threshold for more refined analysis.
Daily Time Frame Filter: Optional filter to consider daily regression slope in signal generation.
Regression Line Calculation:
The script calculates linear regression lines for each timeframe (daily, weekly, monthly) and applies a smoothing function to refine the signals.
Signal Conditions:
Strong Bullish/Bearish: Signals generated when the price is consistently above/below weekly and monthly regression lines, with the option to apply the daily timeframe filter.
Weak Bullish/Bearish: Signals generated when the price is above/below the monthly regression line alone.
Visual Indicators:
The script plots regression lines on the chart with different colors for easy identification.
It also displays arrows on the chart to indicate strong or weak bullish/bearish signals.
Alerts:
Custom alerts for each signal condition help traders stay informed of potential trading opportunities.
This script is highly customizable, allowing traders to tailor it to their specific trading style and preferences.
This summary can be used to introduce the script to other traders or for publication on platforms like TradingView.






















