Donchian Fibo Channels1. Set PRZ level for watching
2. Set period as swing time X 2 (or more)
3. Wait rebound from PRZ or PRZ break (use next if break)
Tìm kiếm tập lệnh với "donchian"
HelperTALibrary "HelperTA"
This library contains useful technical indicators that I use regularly in my charts.
`stockRSI` is not mine, but included because used often and referenced by internal functions.
`DCO` is a normalisation of the donchian channels; the price relative to the donchian channels, on a range.
`MarketCycle` is a weighted aggregate of RSI, Stochastic RSI & DCO (demo on the chart)
stockRSI(src, K, D, rsiPeriod, stochPeriod)
stockRSI
Parameters:
src (float)
K (int)
D (int)
rsiPeriod (simple int)
stochPeriod (int)
Returns:
DCO(price, donchianPeriod, smaPeriod)
DCO
Parameters:
price (float)
donchianPeriod (int)
smaPeriod (int)
Returns:
MarketCycle(donchianPrice, rsiPrice, srsiPrice, donchianPeriod, donchianSmoothing, rsiPeriod, rsiSmoothing, srsiPeriod, srsiSmoothing, srsiK, srsiD, rsiWeight, srsiWeight, dcoWeight)
MarketCycle
Parameters:
donchianPrice (float)
rsiPrice (float)
srsiPrice (float)
donchianPeriod (simple int)
donchianSmoothing (simple int)
rsiPeriod (simple int)
rsiSmoothing (int)
srsiPeriod (simple int)
srsiSmoothing (simple int)
srsiK (simple int)
srsiD (simple int)
rsiWeight (simple float)
srsiWeight (simple float)
dcoWeight (simple float)
Returns:
Multiple (12) Strong Buy/Sell Signals + Momentum
Indicator Manual: "Multiple (12) Strong Buy/Sell Signals + Momentum"
This indicator is designed to identify strong buy and sell signals based on 12 configurable conditions, which include a variety of technical analysis methods such as trend-following indicators, pattern recognition, volume analysis, and momentum oscillators. It allows for customizable alerts and visual cues on the chart. The indicator helps traders spot potential entry and exit points by displaying buy and sell signals based on the selected conditions.
Key Observations:
• The script integrates multiple indicators and pattern recognition methods to provide comprehensive buy/sell signals.
• Trend-based indicators like EMAs and MACD are combined with pattern recognition (flags, triangles) and momentum-based signals (RSI, ADX, and volume analysis).
• User customization is a core feature, allowing adjustments to the conditions and thresholds for more tailored signals.
• The script is designed to be responsive to market conditions, with multiple conditions filtering out noise to generate reliable signals.
________________________________________
Key Features:
1. 12 Combined Buy/Sell Signal Conditions: This indicator incorporates a diverse set of conditions based on trend analysis, momentum, and price patterns.
2. Minimum Conditions Input: You can adjust the threshold of conditions that need to be met for the buy/sell signals to appear.
3. Alert Customization: Set alert thresholds for both buy and sell signals.
4. Dynamic Visualization: Buy and sell signals are shown as triangles on the chart, with momentum signals highlighted as circles.
________________________________________
Detailed Description of the 12 Conditions:
1. Exponential Moving Averages (EMA):
o Conditions: The indicator uses EMAs with periods 3, 8, and 13 for quick trend-following signals.
o Bullish Signal: EMA3 > EMA8 > EMA13 (Bullish stack).
o Bearish Signal: EMA3 < EMA8 < EMA13 (Bearish stack).
o Reversal Signal: The crossing over or under of these EMAs can signify trend reversals.
2. MACD (Moving Average Convergence Divergence):
o Fast MACD (2, 7, 3) is used to confirm trends quickly.
o Bullish Signal: When the MACD line crosses above the signal line.
o Bearish Signal: When the MACD line crosses below the signal line.
3. Donchian Channel:
o Tracks the highest high and lowest low over a given period (default 20).
o Breakout Signal: Price breaking above the upper band is bullish; breaking below the lower band is bearish.
4. VWAP (Volume-Weighted Average Price):
o Above VWAP: Bullish condition (price above VWAP).
o Below VWAP: Bearish condition (price below VWAP).
5. EMA Stacking & Reversal:
o Tracks the order of EMAs (3, 8, 13) to confirm strong trends and reversals.
o Bullish Reversal: EMA3 < EMA8 < EMA13 followed by a crossing to bullish.
o Bearish Reversal: EMA3 > EMA8 > EMA13 followed by a crossing to bearish.
6. Bull/Bear Flags:
o Bull Flag: Characterized by a strong price movement (flagpole) followed by a pullback and breakout.
o Bear Flag: Similar to Bull Flag but in the opposite direction.
7. Triangle Patterns (Ascending and Descending):
o Detects ascending and descending triangles using pivot highs and lows.
o Ascending Triangle: Higher lows and flat resistance.
o Descending Triangle: Lower highs and flat support.
8. Volume Sensitivity:
o Identifies price moves with significant volume increases.
o High Volume: When current volume is significantly above the moving average volume (set to 1.2x of the average).
9. Momentum Indicators:
o RSI (Relative Strength Index): Confirms overbought and oversold levels with thresholds set at 65 (overbought) and 35 (oversold).
o ADX (Average Directional Index): Confirms strong trends when ADX > 28.
o Momentum Up: Momentum is upward with strong volume and bullish RSI/ADX conditions.
o Momentum Down: Momentum is downward with strong volume and bearish RSI/ADX conditions.
10. Bollinger & Keltner Squeeze:
o Squeeze Condition: A contraction in both Bollinger Bands and Keltner Channels indicates low volatility, signaling a potential breakout.
o Squeeze Breakout: Price breaking above or below the squeeze bands.
11. 3 Consecutive Candles Condition:
o Bullish: Price rises for three consecutive candles with higher highs and lows.
o Bearish: Price falls for three consecutive candles with lower highs and lows.
12. Williams %R and Stochastic RSI:
o Williams %R: A momentum oscillator with signals when the line crosses certain levels.
o Stochastic RSI: Provides overbought/oversold levels with smoother signals.
o Combined Signals: You can choose whether to require both WPR and StochRSI to signal a buy/sell.
________________________________________
User Inputs (Inputs Tab):
1. Minimum Conditions for Buy/Sell:
o min_conditions: Number of conditions required to trigger a buy/sell signal on the chart (1 to 12).
o Alert_min_conditions: User-defined alert threshold (how many conditions must be met before an alert is triggered).
2. Donchian Channel Settings:
o Show Donchian: Toggle visibility of the Donchian channel.
o Donchian Length: The length of the Donchian Channel (default 20).
3. Bull/Bear Flag Settings:
o Bull Flag Flagpole Strength: ATR multiplier to define the strength of the flagpole.
o Bull Flag Pullback Length: Length of pullback for the bull flag pattern.
o Bull Flag EMA Length: EMA length used to confirm trend during bull flag pattern.
Similar settings exist for Bear Flag patterns.
4. Momentum Indicators:
o RSI Length: Period for calculating the RSI (default 9).
o RSI Overbought: Overbought threshold for the RSI (default 65).
o RSI Oversold: Oversold threshold for the RSI (default 35).
5. Bollinger/Keltner Squeeze Settings:
o Squeeze Width Threshold: The maximum width of the Bollinger and Keltner Bands for squeeze conditions.
6. Stochastic RSI Settings:
o Stochastic RSI Length: The period for calculating the Stochastic RSI.
7. WPR Settings:
o WPR Length: Period for calculating Williams %R (default 14).
________________________________________
User Inputs (Style Tab):
1. Signal Plotting:
o Control the display and colors of the buy/sell signals, momentum indicators, and pattern signals on the chart.
o Buy/Sell Signals: Can be customized with different colors and shapes (triangle up for buys, triangle down for sells).
o Momentum Signals: Custom circle placement for momentum-up or momentum-down signals.
2. Donchian Channel:
o Show Donchian: Toggle visibility of the Donchian upper, lower, and middle bands.
o Band Colors: Choose the color for each band (upper, lower, middle).
________________________________________
How to Use the Indicator:
1. Adjust Minimum Conditions: Set the minimum number of conditions that must be met for a signal to appear. For example, set it to 5 if you want only stronger signals.
2. Set Alert Threshold: Define the number of conditions needed to trigger an alert. This can be different from the minimum conditions for visual signals.
3. Customize Appearance: Modify the colors and styles of the signals to match your preferences.
________________________________________
Conclusion:
This comprehensive trading indicator uses a combination of trend-following, pattern recognition, and momentum-based conditions to help you spot potential buy and sell opportunities. By adjusting the input settings, you can fine-tune it to match your specific trading strategy, making it a versatile tool for different market conditions.
Signal Reliability Based on Condition Count
The reliability of the buy/sell signals increases as more conditions are met. Here's a breakdown of the probabilities:
1. 1-3 Conditions Met: Lower Probability
o Signals that meet only 1-3 conditions tend to have lower reliability and are considered less probable. These signals may represent false positives or weaker market movements, and traders should approach them with caution.
2. 4 Conditions Met: More Reliable Signal
o When 4 conditions are met, the signal becomes more reliable. This indicates that multiple indicators or market patterns are aligning, increasing the likelihood of a valid buy/sell opportunity. While not foolproof, it's a stronger indication that the market may be moving in a particular direction.
3. 5-6 Conditions Met: Strong Signal
o A signal meeting 5-6 conditions is considered a strong signal. This indicates a well-confirmed move, with several technical indicators and market factors aligning to suggest a higher probability of success. These are the signals that traders often prioritize.
4. 7+ Conditions Met: Rare and High-Confidence Signal
o Signals that meet 7 or more conditions are rare and should be considered high-confidence signals. These represent a significant alignment of multiple factors, and while they are less frequent, they are highly reliable when they do occur. Traders can be more confident in acting on these signals, but they should still monitor market conditions for confirmation.
________________________________________
You can adjust the number of conditions as needed, but this breakdown should give a clear structure on how the signal strength correlates with the number of conditions met!
Trading Rush Signals & AlertsThis is an unofficial script for strategies tested on TRADING RUSH Youtube channel. Over time, most successful strategies will be added with an option to set strategy-specific alerts . Trading Rush Signals & Alerts will draw signals on the chart when the entry conditions are met. You can also opt for displaying indicators .
My script is meant for beginners but can be used by veterans too. Just pick only one or two strategies, you don't want to flood your chart with conflicting signals. You may want to support your trades with a proper analysis. If a new signal occurs when there is still an open position, you are not supposed to take another.
The current version includes MACD and Donchian Channels.
MACD strategy:
►Buy, when MACD crosses below the signal line when it is negative. The price must also be above 200 EMA.
►Sell, when MACD crosses above the signal line when it is positive. The price must also be below 200 EMA.
►This strategy was tested on 30-minute charts of EURUSD and EURJPY with reward-to-risk ratio 1,5 and win rate of 62% over 100 trades .
►►►MACD has to be added to your chart separately because it needs a new window. Indicators displaying will not add this indicator to the chart.
Donchian Channels strategy:
►Buy, when the price breaches Donchian to the upside after making a new low. The price must also be above 200 EMA.
►Sell, when the price breaches Donchian to the downside after making a new high. The price must also be below 200 EMA.
►Stop-loss is Donchian bottom for long and Donchian top for shorts. Check the channel for more information.
►This strategy was tested on 30-minute charts of EURUSD with reward-to-risk ratio 1,5 and win rate of 58% over 100 trades .
►►►I programmed alerts for Donchians to come ahead of an actual breach. If you often leave the screen when trading, this will help you. The necessary downside for that is the alerts might come when the signal doesn't trigger in the end. You will see a mark on the chart if the conditions are truly met.
Bear in mind that backtesting performance doesn't guarantee future profitability. • Most systematic strategies are not suitable for any timeframe. • You should perform your own backtest to base your trades on more data & to establish confidence in the selected strategy.
New strategies will be added when I have time. If I see multiple people asking for the same new feature, I might agree to release it with a new version. I am not going to add input options in this script, it could come as a separate script though. I am in no way affiliated with the Youtubechannel , so if you find the script helpful, shot me a message or send me some TradingView coins >)
If you encounter any bug, you can report it in a message or in comments. Support it with screenshot and relevant information such as a time when it occurred and what options were on etc.
Volume Based Ichimoku CloudIntroduction
This release focuses primarily on a volume-based Donchian. For some time I was looking for a volume-based Donchian, not finding anything that satisfied me I tried to apply one, and then I applied it to Ichimoku.
I found advantages especially in the lateralization phase, where the integration with the volume filters some false signals.
I have added some features:
- Check the conditions of buy/sell of classic Ichimoku
- Verified reverse buy/sell condition
- Alerts
- Entrance package
- possibility to choose the type of Donchian to use (classic, volume-based)
Settings
There are the classic parameters of Ichimoku, for scalping, I use setting like(6-17-34-17 or 5-14-28-14), the new parameters are:
Donchian Type : Classic / Volume Based
Show Condition : it shows green/red square on the bottom when all the conditions of Ichimoku are satisfied, without the checkmark the inputs or the alarms will not work for this type of signal
Show Reversal : it shows yellow/purple triangle on the bottom when all during short/long state condition of Ichimoku Tenkan cross the Kijun, without the checkmark the inputs or the alarms will not work for this type of signal
Trades Framework
Show Trade Lines : show the lines for Entry Point, TP1, TP2, SL
Per n Bars : For how many bars the sending lines will be drawn
Enter Gap : It's the gap, in percentage, from the last candle low/high. For example, the entry point will be set 0.1% higher than the last high of the candle, in a long situation, or 0.1% lower than the last low of the candle in a short situation.
Take Profit 1 : It's the gap, in percentage, from the entry point. For example, the first take profit will be set 0.5% higher/lower than the entry point.
Take Profit 2 : It's the gap, in percentage, from the entry point. For example, the second take profit will be set 0.5% higher/lower than the entry point.
Stop Loss : It's the gap, in percentage, from the entry point. For example, the stop loss will be set 0.5% higher/lower than the entry point.
How to use
The use will be like that for the classic Ichimoku, the combination with a volatility indicator or the volume analysis will certainly help to reduce false signals and therefore to select only the most profitable signals.
Remember that every statistical indicator is just a tool, it needs to be understood to be used at its best, otherwise, it is just a colored line in a colored graph.
Noro's RiskChannel StrategyIndicator
The Donchian price channel is used. There are 2 methods available to close the position. The user can choose a method.
Wikipedia: en.wikipedia.org
Strategy #1 (stop-loss type = channel)
Old classic trading strategy, using breakouts of the Donchan price channel.
If the price is above the price channel top line, open the long position (and close the short position)
If the price is below the lower line of the price channel, open the short position (and close the long position)
It is recommended that you all use market stop orders.
Strategy #2 (stop-loss type = center)
This metod is better. This method is recommended.
The central line (red) is the middle of the Donchian price channel. Used to close any positions.
If the price is higher than the price channel top line, open the long position.
If the price is lower than the lower line of the price channel, open the short position.
If the price has crossed the central line of the channel, close any position.
It is recommended that you all use market stop orders.
Risk
There are 2 options. Risk for long positions and risk for short positions. This is the size of the possible loss. Order size depends on the possible loss and is calculated for each position.
For
BTC/USD, BTC/USDT, XBT/USD, ETH/USD, ETH/USD (need USD!)
Timeframes: 1h and length of price channel = 50 bars or 4h and length of price channel = 12
Turtle Trade Channels Indicator TUTCILegendary trade system which proved that great traders can be made, not born.
Turtle Trade Experiment made 80% annual return for 4 years and made 150 million $
Turtle Trade trend following system is a complete opposite to the "buy low and sell high" approach.
This trend following system was taught to a group of average and normal individuals, and almost everyone turned into a profitable trader.
They used the basis logic of well known DONCHIAN CHANNELS which developed by Richard Donchian.
The main rule is "Trade an 20-day breakout and take profits when an 10-day high or low is breached ". Examples:
Buy a 20-day breakout and close the trade when price action reaches a 10-day low.
Go short a 20-day breakout and close the trade when price action reaches a 10-day high.
In this indicator,
The red line is the trading line which indicates the trend directio n:
Price bars over the trend line indicates uptrend
Price bars under the trend line means downtrend
The dotted blue line is the exit line.
Original system is:
Go long when the price High is equal to or above previous 20 day Highest price.
Go short when the price Low is equal to or below previous 20 day Lowest price.
Exit long positions when the price touches the exit line
Exit short positions when the price touches the exit line
Recommended initial stop-loss is ATR * 2 from the opening price.
Default system parameters were 20,10 and 55,20.
Original Turtle Rules:
To trade exactly like the turtles did, you need to set up two indicators representing the main and the failsafe system.
Set up the main indicator with EntryPeriod = 20 and ExitPeriod = 10 (A.k.a S1)
Set up the failsafe indicator with EntryPeriod = 55 and ExitPeriod = 20 using a different color. (A.k.a S2)
The entry strategy using S1 is as follows
Buy 20-day breakouts using S1 only if last signaled trade was a loss.
Sell 20-day breakouts using S1 only if last signaled trade was a loss.
If last signaled trade by S1 was a win, you shouldn't trade -Irregardless of the direction or if you traded last signal it or not-
The entry strategy using S2 is as follows:
Buy 55-day breakouts only if you ignored last S1 signal and the market is rallying without you
Sell 55-day breakouts only if you ignored last S1 signal and the market is pluging without you
You can Highlight the chart with provided trade signals:
Green background color when Long
Red background color when Short
No background color when flat
WARNING: TURTLE TRADE STOP or ADDING more UNITS RULES ARE NOT INCLUDED.
Author: Kıvanç Özbilgiç
Also you can show or hide trade signals with the button on the settings menu
Multi-Band Breakout IndicatorThe Multi-Band Breakout Indicator was created to help identify potential breakout opportunities in the market. It combines multiple bands (ATR-Based and Donchian) and moving averages to provide valuable insights into the underlying trend and potential breakouts. By understanding the calculations, interpretation, parameter adjustments, potential applications, and limitations of the indicator, traders can effectively incorporate it into their trading strategy.
Calculation:
The indicator utilizes several calculations to plot the bands and moving averages. The length parameter determines the period used for the Average True Range (ATR), which measures volatility. A higher length captures a longer-term view of price movement, while a lower length focuses on shorter-term volatility. The multiplier parameter adjusts the distance of the upper and lower bands from the ATR. A higher multiplier expands the bands, accommodating greater price volatility, while a lower multiplier tightens the bands, reflecting lower volatility. The MA Length parameter determines the period for the moving averages used to calculate the trend and trend moving average. A higher MA Length creates a smoother trend line, filtering out shorter-term fluctuations, while a lower MA Length provides a more sensitive trend line.
The Donchian calculations in the Multi-Band Breakout Indicator play a significant role in identifying potential breakout opportunities and providing additional confirmation for trading signals. In this indicator, the Donchian calculations are applied to the trend line, which represents the average of the upper and lower bands. To calculate the Donchian levels, the indicator uses the Donchian Length parameter, which determines the period over which the highest high and lowest low are calculated. A longer Donchian Length captures a broader price range, while a shorter length focuses on more recent price action. By incorporating the Donchian calculations into the Multi-Band Breakout Indicator, traders gain an additional layer of confirmation for breakout signals.
Interpretation:
The Multi-Band Breakout Indicator offers valuable interpretation for traders. The upper and lower bands represent dynamic levels of resistance and support, respectively. These bands reflect the potential price range within which the asset is expected to trade. The trend line is the average of these bands and provides a central reference point for the overall trend. When the price moves above the upper band, it suggests a potential overbought condition and a higher probability of a pullback. Conversely, when the price falls below the lower band, it indicates a potential oversold condition and an increased likelihood of a bounce. The trend moving average further smooths the trend line, making it easier to identify the prevailing direction.
The crossover of the trend line (representing the average of the upper and lower bands) and the trend moving average holds a significant benefit for traders. This crossover serves as a powerful signal for potential trend changes and breakout opportunities in the market. When the trend line crosses above the trend moving average, it suggests a shift in momentum towards the upside, indicating a potential bullish trend. This provides traders with an early indication of a possible upward movement in prices. Conversely, when the trend line crosses below the trend moving average, it indicates a shift in momentum towards the downside, signaling a potential bearish trend. This crossover acts as an early warning for potential downward price movement. By identifying these crossovers, traders can capture the initial stages of a new trend, enabling them to enter trades at favorable entry points and potentially maximize their profit potential.
Breakout Signals:
For bullish breakouts, the indicator looks for a bullish crossover between the trend line and the trend moving average. This crossover suggests a shift in momentum towards the upside. Additionally, it checks if the current price has broken above the upper band and the previous Donchian high. This confirms that the price is surpassing a previous resistance level, indicating further upward movement.
For bearish breakouts, the indicator looks for a bearish crossunder between the trend line and the trend moving average. This crossunder indicates a shift in momentum towards the downside. It also checks if the current price has broken below the lower band and the previous Donchian low. This confirms that the price is breaking through a previous support level, signaling potential downward movement.
When a bullish or bearish breakout is detected, it suggests a potential trading opportunity. Traders may consider initiating positions in the direction of the breakout, anticipating further price movement in that direction. However, it's important to remember that breakouts alone do not guarantee a successful trade. Other factors, such as market conditions, volume, and confirmation from additional indicators, should be taken into account. Risk management techniques should also be implemented to manage potential losses.
Coloration:
The coloration in the Multi-Band Breakout Indicator is used to visually represent different aspects of the indicator and provide valuable insights to traders. Let's break down the coloration components:
-- Trend/Basis Color : The tColor variable determines the color of the bars based on the relationship between the trend line (trend) and the closing price (close), as well as the relationship between the trend line and the trend moving average (trendMA). If the trend line is above the closing price and the trend moving average is also above the closing price, the bars are colored fuchsia, indicating a potential bullish trend. If the trend line is below the closing price and the trend moving average is also below the closing price, the bars are colored lime, indicating a potential bearish trend. If neither of these conditions is met, the bars are colored yellow, representing a neutral or indecisive market condition.
-- Moving Average Color : The maColor variable determines the color of the filled area between the trend line and the trend moving average. If the trend line is above the trend moving average, the area is filled with a lime color with 70% opacity, indicating a potential bullish trend. Conversely, if the trend line is below the trend moving average, the area is filled with a fuchsia color with 70% opacity, indicating a potential bearish trend. This coloration helps traders visually identify the relationship between the trend line and the trend moving average.
-- highColor and lowColor : The highColor and lowColor variables determine the colors of the high Donchian band (hhigh) and the low Donchian band (llow), respectively. These bands represent dynamic levels of resistance and support. If the highest point in the previous Donchian period (hhigh) is above the upper band, the highColor is set to olive with 90% opacity, indicating a potential resistance level. On the other hand, if the lowest point in the previous Donchian period (llow) is below the lower band, the lowColor is set to red with 90% opacity, suggesting a potential support level. These colorations help traders quickly identify important price levels and assess their significance in relation to the bands.
By incorporating coloration, the Multi-Band Breakout Indicator provides visual cues to traders, making it easier to interpret the relationships between various components and assisting in identifying potential trend changes and breakout opportunities. Traders can use these color cues to quickly assess the prevailing market conditions and make informed trading decisions.
Adjusting Parameters:
The Multi-Band Breakout Indicator offers flexibility through parameter adjustments. Traders can customize the indicator based on their preferences and trading style. The length parameter controls the sensitivity to price changes, with higher values capturing longer-term trends, while lower values focus on shorter-term price movements. By adjusting the parameters, such as the ATR length, multiplier, Donchian length, and MA length, traders can customize the indicator to suit different timeframes and trading strategies. For shorter timeframes, smaller values for these parameters may be more suitable, while longer timeframes may require larger values.
Potential Applications:
The Multi-Band Breakout Indicator can be applied in various trading strategies. It helps identify potential breakout opportunities, allowing traders to enter trades in the direction of the breakout. Traders can use the indicator to initiate trades when the price moves above the upper band or below the lower band, confirming a potential breakout and providing a signal to enter a trade. Additionally, the indicator can be combined with other technical analysis tools, such as support and resistance levels, candlestick patterns, or trend indicators, to increase the probability of successful trades. By incorporating the Multi-Band Breakout Indicator into their trading approach, traders can gain a better understanding of market trends and capture potential profit opportunities.
Limitations:
While the Multi-Band Breakout Indicator is a useful tool, it has some limitations that traders should consider. The indicator performs best in trending markets where price movements are relatively strong and sustained. During ranging or choppy market conditions, the indicator may generate false signals, leading to potential losses. It is crucial to use the indicator in conjunction with other analysis techniques and risk management strategies to enhance its effectiveness. Additionally, traders should consider external factors such as market news, economic events, and overall market sentiment when interpreting the signals generated by the indicator.
By combining multiple bands and moving averages, this indicator offers valuable insights into the underlying trend and helps traders make informed trading decisions. With customization options and careful interpretation, this indicator can be a valuable addition to any trader's toolkit, assisting in identifying potential breakouts, capturing profitable trades, and enhancing overall trading performance.
Rev & Line - CoffeeKillerRev & Line - CoffeeKiller Indicator Guide
🔔 Warning: This Indicator Repaints 🔔 This indicator uses real-time calculations that may change based on future price action. As a result, signals (such as arrows, lines, or color changes) **can and will repaint** — meaning they may appear, disappear, or shift after a candle closes.
**Do not rely on this tool alone for live trading decisions.** Use with caution and always confirm with non-repainting tools or additional analysis.(This indicator is designed to show me the full length of the trend and because of this there can be a smaller movement inside of the trend movement)
Welcome traders! This guide will walk you through the Rev & Line indicator, a sophisticated technical analysis tool developed by CoffeeKiller that combines multiple methodologies to identify market pivots, trends, and potential reversal points.
Core Components
1. ZigZag Analysis
- Dynamic pivot detection using ATR (Average True Range)
- Customizable sensitivity through ATR Reversal Factor
- Color-coded trend lines (green for upward, red for downward)
- Optional vertical lines at pivot points
- Real-time pivot point analysis
2. Donchian Channel Integration
- Traditional upper, lower, and middle bands
- Customizable length and displacement
- Channel-based entry signals
- Dynamic market structure visualization
3. Marker Lines System
- Dynamic support/resistance level tracking
- Pivot-based reset mechanism
- Optional fill zones between markers
- Percentage position tracking within range
4. Signal Generation System
- Confluence between ZigZag pivots and Donchian channels
- Up/down arrow visualization
- Alert system
Main Features
ZigZag Settings
- ATR Reversal Factor: Controls pivot sensitivity (default 3.2)
- Customizable line appearance:
Width control (default: 3)
Color selection (green for uptrend, red for downtrend)
Vertical line options at pivot points
Maximum vertical lines display limit
- Hide repainted option for more reliable signals
Donchian Channel Configuration
- Optional channel visibility toggle
- Length parameter for lookback period (default: 20)
- Displace option for time offset
- Bubble offset for visual placement
Marker Lines System
- High/low/middle marker lines with step-line visualization
- Dotted line projections for future reference
- Pivot-based reset mechanism
- Color-coded percentage position display
Signal Generation
- Triangle markers for signals
- Combined ZigZag and Donchian confluence
- Alert system for notifications
Visual Elements
1. Pivot Lines
- Green: Upward price movements
- Red: Downward price movements
- Customizable line width
- Optional vertical pivot markers with style options:
Solid lines for confirmed pivots
Dashed lines for older pivots
Dotted lines for most recent pivots
2. Donchian Channels
- Upper band (red): Resistance level
- Lower band (green): Support level
- Middle band (yellow): Median price line
- Customizable display options
3. Marker Lines
- High marker line (magenta): Tracks highest open price
- Low marker line (cyan): Tracks lowest open price
- Middle marker line (blue): 50% level between high/low
- Dotted line extensions for future price projections
4. Position Tracking
- Percentage position display within marker range
- Real-time calculations from 0% to 100%
- Label system for visual reference
Trading Applications
1. Trend Following
- Enter on confirmed ZigZag pivot points
- Use Donchian channel boundaries as targets
- Trail stops using marker lines
- Monitor for confluence between systems
2. Counter-Trend Trading
- Trade bounces from marker lines
- Use pivot confirmation for entry timing
- Set stops based on recent pivot points
- Target the opposite marker line
3. Range Trading
- Use high/low marker lines to define range
- Trade bounces between upper and lower markers
- Consider middle marker for range midpoint
- Monitor percentage position within range
4. Breakout Trading
- Enter on breaks above/below marker lines
- Confirm with Donchian channel breakouts
- Use ZigZag pivot confirmations
- Wait for arrow signals for additional confirmation
Optimization Guide
1. ZigZag Parameters
- Higher ATR Factor: Less sensitive, major moves only
- Lower ATR Factor: More sensitive, catches minor moves
- Adjust line width for chart visibility
- Balance vertical line count for clarity
2. Donchian Channel Settings
- Longer length: Smoother channels, fewer false signals
- Shorter length: More responsive, but potentially noisier
- Displacement: Offset for historical reference
- Consider timeframe when setting parameters
3. Marker Line Configuration
- Enable/disable based on trading style
- Toggle middle line for additional reference
- Adjust colors for visual clarity
- Enable/disable labels as needed
4. Signal Generation
- Use "Hide repainted" option for more reliable signals
- Combine ZigZag and Donchian signals for confirmation
- Set alerts based on confirmed pivot points
- Balance sensitivity with reliability
Best Practices
1. Signal Confirmation
- Wait for confirmed pivot points
- Check for Donchian channel interactions
- Confirm with price action
- Look for arrow signals at pivot points
2. Risk Management
- Use recent pivot points for stop placement
- Consider marker line boundaries for targets
- Don't trade against strong trends
- Wait for clear confluence between systems
3. Setup Optimization
- Start with default settings
- Adjust based on timeframe
- Fine-tune ATR sensitivity
- Match settings to trading style
Advanced Features
1. Alert System
- Customizable arrow alerts
- Pivot point notifications
- Text message alerts with ticker information
- Once-per-bar frequency option
2. Pivot Detection Logic
The indicator uses a sophisticated state-based approach to detect pivots:
- State transitions between "uptrend," "downtrend," and "undefined"
- ATR-based reversal detection
- Minimum movement threshold for pivot confirmation
- Historical pivot tracking and labeling
3. Marker Line Reset Mechanism
- Marker lines reset based on pivot detection
- Dynamic support/resistance level adjustment
- Percentage position calculation within range
- Automatic updates as market structure changes
Remember:
- Combine multiple confirmation signals
- Use appropriate timeframe settings
- Monitor both ZigZag and Marker signals
- Pay attention to Donchian channel interactions
- Consider market volatility when trading
This indicator works best when:
- Used with proper risk management
- Combined with other technical tools
- Applied to appropriate timeframes
- Signals are confirmed by price action
**DISCLAIMER**: This indicator and its signals are intended solely for educational and informational purposes. They do not constitute financial advice. Trading involves significant risk of loss. Always conduct your own analysis and consult with financial professionals before making trading decisions.
ootaLibrary "oota"
Collection of all custom and enhanced TA indicators - Object oriented methods implementation
method tr(c, useTrueRange)
returns true range of the candle
Namespace types: Candle
Parameters:
c (Candle) : Candle object containing ohlc data
useTrueRange (bool) : Use true range for atr calculation instead of just high/low difference
method ma(maType, length, source)
returns custom moving averages
Namespace types: simple CustomSeries
Parameters:
maType (simple CustomSeries) : Custom series type
length (simple int) : Moving Average Length
source (float) : Moving Average Source
Returns: moving average for the given type and length
method atr(maType, length, useTrueRange, c)
returns ATR with custom moving average
Namespace types: simple CustomSeries
Parameters:
maType (simple CustomSeries) : Custom series type
length (simple int) : Moving Average Length
useTrueRange (bool) : Use true range for atr calculation instead of just high/low difference
c (Candle) : Candle object containing ohlc
Returns: ATR for the given moving average type and length
method atrpercent(maType, length, useTrueRange, c)
returns ATR as percentage of close price
Namespace types: simple CustomSeries
Parameters:
maType (simple CustomSeries) : Custom series type
length (simple int) : Moving Average Length
useTrueRange (bool) : Use true range for atr calculation instead of just high/low difference
c (Candle) : Candle object containing ohlc
Returns: ATR as percentage of close price for the given moving average type and length
method bb(maType, length, multiplier, sticky, c)
returns Bollinger band for custom moving average
Namespace types: simple CustomSeries
Parameters:
maType (simple CustomSeries) : Custom series type
length (simple int) : Moving Average Length
multiplier (float) : Standard Deviation multiplier
sticky (simple bool) : - sticky boundaries which will only change when value is outside boundary.
c (Candle) : Candle object containing ohlc
Returns: Bollinger band with custom moving average for given source, length and multiplier
method bbw(maType, length, multiplier, sticky, c)
returns Bollinger bandwidth for custom moving average
Namespace types: simple CustomSeries
Parameters:
maType (simple CustomSeries) : Custom series type
length (simple int) : Moving Average Length
multiplier (float) : Standard Deviation multiplier
sticky (simple bool) : sticky boundaries which will only change when value is outside boundary.
c (Candle) : Candle object containing ohlc
Returns: Bollinger Bandwidth for custom moving average for given source, length and multiplier
method bpercentb(maType, length, multiplier, sticky, c)
returns Bollinger Percent B for custom moving average
Namespace types: simple CustomSeries
Parameters:
maType (simple CustomSeries) : Custom series type
length (simple int) : Moving Average Length
multiplier (float) : Standard Deviation multiplier
sticky (simple bool) : - sticky boundaries which will only change when value is outside boundary.
c (Candle) : Candle object containing ohlc
Returns: Bollinger Percent B for custom moving average for given source, length and multiplier
method kc(maType, length, multiplier, useTrueRange, sticky, c)
returns Keltner Channel for custom moving average
Namespace types: simple CustomSeries
Parameters:
maType (simple CustomSeries) : Custom series type
length (simple int) : Moving Average Length
multiplier (float) : Standard Deviation multiplier
useTrueRange (simple bool) : - if set to false, uses high-low.
sticky (simple bool) : - sticky boundaries which will only change when value is outside boundary.
c (Candle) : Candle object containing ohlc
Returns: Keltner Channel for custom moving average for given souce, length and multiplier
method kcw(maType, length, multiplier, useTrueRange, sticky, c)
returns Keltner Channel Width with custom moving average
Namespace types: simple CustomSeries
Parameters:
maType (simple CustomSeries) : Custom series type
length (simple int) : Moving Average Length
multiplier (float) : Standard Deviation multiplier
useTrueRange (simple bool) : - if set to false, uses high-low.
sticky (simple bool) : - sticky boundaries which will only change when value is outside boundary.
c (Candle) : Candle object containing ohlc
Returns: Keltner Channel Width for custom moving average
method kpercentk(maType, length, multiplier, useTrueRange, sticky, c)
returns Keltner Channel Percent K Width with custom moving average
Namespace types: simple CustomSeries
Parameters:
maType (simple CustomSeries) : Custom series type
length (simple int) : Moving Average Length
multiplier (float) : Standard Deviation multiplier
useTrueRange (simple bool) : - if set to false, uses high-low.
sticky (simple bool) : - sticky boundaries which will only change when value is outside boundary.
c (Candle) : Candle object containing ohlc
Returns: Keltner Percent K for given moving average, source, length and multiplier
method dc(c, length, sticky)
returns Custom Donchian Channel
Namespace types: Candle
Parameters:
c (Candle) : Candle object containing ohlc
length (simple int) : - donchian channel length
sticky (simple bool) : - sticky boundaries which will only change when value is outside boundary.
Returns: Donchian channel
method dcw(c, length, sticky)
returns Donchian Channel Width
Namespace types: Candle
Parameters:
c (Candle) : Candle object containing ohlc
length (simple int) : - donchian channel length
sticky (simple bool) : - sticky boundaries which will only change when value is outside boundary.
Returns: Donchian channel width
method dpercentd(c, length, sticky)
returns Donchian Channel Percent of price
Namespace types: Candle
Parameters:
c (Candle) : Candle object containing ohlc
length (simple int) : - donchian channel length
sticky (simple bool) : - sticky boundaries which will only change when value is outside boundary.
Returns: Donchian channel Percent D
method supertrend(maType, length, multiplier, useTrueRange, waitForClose, delayed, c)
supertrend Simple supertrend based on atr but also takes into consideration of custom MA Type, sources
Namespace types: simple CustomSeries
Parameters:
maType (simple CustomSeries) : Custom Series
length (simple int) : ATR Length
multiplier (simple float) : ATR Multiplier
useTrueRange (simple bool) : - if set to false, uses high-low.
waitForClose (simple bool) : : Considers source for direction change crossover if checked. Else, uses highSource and lowSource.
delayed (simple bool) : : if set to true lags supertrend atr stop based on target levels.
c (Candle) : Candle object containing ohlc
Returns: dir : Supertrend direction
supertrend : BuyStop if direction is 1 else SellStop
method oscillatorRange(seriesType, source, highlowLength, rangeLength, sticky)
oscillatorRange - returns Custom overbought/oversold areas for an oscillator input
Namespace types: simple CustomSeries
Parameters:
seriesType (simple CustomSeries) : - Custom series type
source (float) : - Osillator source such as RSI, COG etc.
highlowLength (simple int) : - length on which highlow of the oscillator is calculated
rangeLength (simple int) : - length used for calculating oversold/overbought range - usually same as oscillator length
sticky (simple bool) : - overbought, oversold levels won't change unless crossed
Returns: Dynamic overbought and oversold range for oscillator input
method oscillator(oscillatorType, length, shortLength, longLength, c)
oscillator - returns Choice of oscillator with custom overbought/oversold range
Namespace types: simple OscillatorType
Parameters:
oscillatorType (simple OscillatorType) : OscillatorType object
length (simple int) : - Oscillator length - not used for TSI
shortLength (simple int) : - shortLength only used for TSI
longLength (simple int) : - longLength only used for TSI
c (Candle) : Candle object containing ohlc
Returns: Oscillator value
method oscillatorWithRange(oscillatorType, length, shortLength, longLength, seriesType, highlowLength, sticky, c)
oscillatorWithRange - returns Choice of oscillator with custom overbought/oversold range
Namespace types: simple OscillatorType
Parameters:
oscillatorType (simple OscillatorType) : OscillatorType object
length (simple int) : - Oscillator length - not used for TSI
shortLength (simple int) : - shortLength only used for TSI
longLength (simple int) : - longLength only used for TSI
seriesType (simple CustomSeries) : - CustomSeries enum type
highlowLength (simple int) : - length on which highlow of the oscillator is calculated
sticky (simple bool) : - overbought, oversold levels won't change unless crossed
c (Candle) : Candle object containing ohlc
Returns: Oscillator value along with dynamic overbought and oversold range for oscillator input
Candle
Custom candle object
Fields:
o (series float) : open
h (series float) : high
l (series float) : low
c (series float) : close
barindex (series int) : bar_index
bartime (series int) : time
bartimeclose (series int) : time_close
v (series float) : volume
taLibrary "ta"
Collection of all custom and enhanced TA indicators
ma(source, maType, length)
returns custom moving averages
Parameters:
source (float) : Moving Average Source
maType (simple string) : Moving Average Type : Can be sma, ema, hma, rma, wma, vwma, swma, highlow, linreg, median
length (simple int) : Moving Average Length
Returns: moving average for the given type and length
atr(maType, length)
returns ATR with custom moving average
Parameters:
maType (simple string) : Moving Average Type : Can be sma, ema, hma, rma, wma, vwma, swma, highlow, linreg, median
length (simple int) : Moving Average Length
Returns: ATR for the given moving average type and length
atrpercent(maType, length)
returns ATR as percentage of close price
Parameters:
maType (simple string) : Moving Average Type : Can be sma, ema, hma, rma, wma, vwma, swma, highlow, linreg, median
length (simple int) : Moving Average Length
Returns: ATR as percentage of close price for the given moving average type and length
bb(source, maType, length, multiplier, sticky)
returns Bollinger band for custom moving average
Parameters:
source (float) : Moving Average Source
maType (simple string) : Moving Average Type : Can be sma, ema, hma, rma, wma, vwma, swma, highlow, linreg, median
length (simple int) : Moving Average Length
multiplier (float) : Standard Deviation multiplier
sticky (simple bool) : - sticky boundaries which will only change when value is outside boundary.
Returns: Bollinger band with custom moving average for given source, length and multiplier
bbw(source, maType, length, multiplier, sticky)
returns Bollinger bandwidth for custom moving average
Parameters:
source (float) : Moving Average Source
maType (simple string) : Moving Average Type : Can be sma, ema, hma, rma, wma, vwma, swma, highlow, linreg, median
length (simple int) : Moving Average Length
multiplier (float) : Standard Deviation multiplier
sticky (simple bool) : - sticky boundaries which will only change when value is outside boundary.
Returns: Bollinger Bandwidth for custom moving average for given source, length and multiplier
bpercentb(source, maType, length, multiplier, sticky)
returns Bollinger Percent B for custom moving average
Parameters:
source (float) : Moving Average Source
maType (simple string) : Moving Average Type : Can be sma, ema, hma, rma, wma, vwma, swma, highlow, linreg, median
length (simple int) : Moving Average Length
multiplier (float) : Standard Deviation multiplier
sticky (simple bool) : - sticky boundaries which will only change when value is outside boundary.
Returns: Bollinger Percent B for custom moving average for given source, length and multiplier
kc(source, maType, length, multiplier, useTrueRange, sticky)
returns Keltner Channel for custom moving average
Parameters:
source (float) : Moving Average Source
maType (simple string) : Moving Average Type : Can be sma, ema, hma, rma, wma, vwma, swma, highlow, linreg, median
length (simple int) : Moving Average Length
multiplier (float) : Standard Deviation multiplier
useTrueRange (simple bool) : - if set to false, uses high-low.
sticky (simple bool) : - sticky boundaries which will only change when value is outside boundary.
Returns: Keltner Channel for custom moving average for given souce, length and multiplier
kcw(source, maType, length, multiplier, useTrueRange, sticky)
returns Keltner Channel Width with custom moving average
Parameters:
source (float) : Moving Average Source
maType (simple string) : Moving Average Type : Can be sma, ema, hma, rma, wma, vwma, swma, highlow, linreg, median
length (simple int) : Moving Average Length
multiplier (float) : Standard Deviation multiplier
useTrueRange (simple bool) : - if set to false, uses high-low.
sticky (simple bool) : - sticky boundaries which will only change when value is outside boundary.
Returns: Keltner Channel Width for custom moving average
kpercentk(source, maType, length, multiplier, useTrueRange, sticky)
returns Keltner Channel Percent K Width with custom moving average
Parameters:
source (float) : Moving Average Source
maType (simple string) : Moving Average Type : Can be sma, ema, hma, rma, wma, vwma, swma, highlow, linreg, median
length (simple int) : Moving Average Length
multiplier (float) : Standard Deviation multiplier
useTrueRange (simple bool) : - if set to false, uses high-low.
sticky (simple bool) : - sticky boundaries which will only change when value is outside boundary.
Returns: Keltner Percent K for given moving average, source, length and multiplier
dc(length, useAlternateSource, alternateSource, sticky)
returns Custom Donchian Channel
Parameters:
length (simple int) : - donchian channel length
useAlternateSource (simple bool) : - Custom source is used only if useAlternateSource is set to true
alternateSource (float) : - Custom source
sticky (simple bool) : - sticky boundaries which will only change when value is outside boundary.
Returns: Donchian channel
dcw(length, useAlternateSource, alternateSource, sticky)
returns Donchian Channel Width
Parameters:
length (simple int) : - donchian channel length
useAlternateSource (simple bool) : - Custom source is used only if useAlternateSource is set to true
alternateSource (float) : - Custom source
sticky (simple bool) : - sticky boundaries which will only change when value is outside boundary.
Returns: Donchian channel width
dpercentd(length, useAlternateSource, alternateSource, sticky)
returns Donchian Channel Percent of price
Parameters:
length (simple int) : - donchian channel length
useAlternateSource (simple bool) : - Custom source is used only if useAlternateSource is set to true
alternateSource (float) : - Custom source
sticky (simple bool) : - sticky boundaries which will only change when value is outside boundary.
Returns: Donchian channel Percent D
oscillatorRange(source, method, highlowLength, rangeLength, sticky)
oscillatorRange - returns Custom overbought/oversold areas for an oscillator input
Parameters:
source (float) : - Osillator source such as RSI, COG etc.
method (simple string) : - Valid values for method are : sma, ema, hma, rma, wma, vwma, swma, highlow, linreg, median
highlowLength (simple int) : - length on which highlow of the oscillator is calculated
rangeLength (simple int) : - length used for calculating oversold/overbought range - usually same as oscillator length
sticky (simple bool) : - overbought, oversold levels won't change unless crossed
Returns: Dynamic overbought and oversold range for oscillator input
oscillator(type, length, shortLength, longLength, source, highSource, lowSource, method, highlowLength, sticky)
oscillator - returns Choice of oscillator with custom overbought/oversold range
Parameters:
type (simple string) : - oscillator type. Valid values : cci, cmo, cog, mfi, roc, rsi, stoch, tsi, wpr
length (simple int) : - Oscillator length - not used for TSI
shortLength (simple int) : - shortLength only used for TSI
longLength (simple int) : - longLength only used for TSI
source (float) : - custom source if required
highSource (float) : - custom high source for stochastic oscillator
lowSource (float) : - custom low source for stochastic oscillator
method (simple string) : - Valid values for method are : sma, ema, hma, rma, wma, vwma, swma, highlow, linreg, median
highlowLength (simple int) : - length on which highlow of the oscillator is calculated
sticky (simple bool) : - overbought, oversold levels won't change unless crossed
Returns: Oscillator value along with dynamic overbought and oversold range for oscillator input
taLibrary "ta"
Collection of all custom and enhanced TA indicators. Same as enhanced_ta. But, removed all the displays to make it faster.
ma(source, maType, length)
returns custom moving averages
Parameters:
source : Moving Average Source
maType : Moving Average Type : Can be sma, ema, hma, rma, wma, vwma, swma, highlow, linreg, median
length : Moving Average Length
Returns: moving average for the given type and length
atr(maType, length)
returns ATR with custom moving average
Parameters:
maType : Moving Average Type : Can be sma, ema, hma, rma, wma, vwma, swma, highlow, linreg, median
length : Moving Average Length
Returns: ATR for the given moving average type and length
atrpercent(maType, length)
returns ATR as percentage of close price
Parameters:
maType : Moving Average Type : Can be sma, ema, hma, rma, wma, vwma, swma, highlow, linreg, median
length : Moving Average Length
Returns: ATR as percentage of close price for the given moving average type and length
bb(source, maType, length, multiplier, sticky)
returns Bollinger band for custom moving average
Parameters:
source : Moving Average Source
maType : Moving Average Type : Can be sma, ema, hma, rma, wma, vwma, swma, highlow, linreg, median
length : Moving Average Length
multiplier : Standard Deviation multiplier
sticky : - sticky boundaries which will only change when value is outside boundary.
Returns: Bollinger band with custom moving average for given source, length and multiplier
bbw(source, maType, length, multiplier, sticky)
returns Bollinger bandwidth for custom moving average
Parameters:
source : Moving Average Source
maType : Moving Average Type : Can be sma, ema, hma, rma, wma, vwma, swma, highlow, linreg, median
length : Moving Average Length
multiplier : Standard Deviation multiplier
sticky : - sticky boundaries which will only change when value is outside boundary.
Returns: Bollinger Bandwidth for custom moving average for given source, length and multiplier
bpercentb(source, maType, length, multiplier, sticky)
returns Bollinger Percent B for custom moving average
Parameters:
source : Moving Average Source
maType : Moving Average Type : Can be sma, ema, hma, rma, wma, vwma, swma, highlow, linreg, median
length : Moving Average Length
multiplier : Standard Deviation multiplier
sticky : - sticky boundaries which will only change when value is outside boundary.
Returns: Bollinger Percent B for custom moving average for given source, length and multiplier
kc(source, maType, length, multiplier, useTrueRange, sticky)
returns Keltner Channel for custom moving average
Parameters:
source : Moving Average Source
maType : Moving Average Type : Can be sma, ema, hma, rma, wma, vwma, swma, highlow, linreg, median
length : Moving Average Length
multiplier : Standard Deviation multiplier
useTrueRange : - if set to false, uses high-low.
sticky : - sticky boundaries which will only change when value is outside boundary.
Returns: Keltner Channel for custom moving average for given souce, length and multiplier
kcw(source, maType, length, multiplier, useTrueRange, sticky)
returns Keltner Channel Width with custom moving average
Parameters:
source : Moving Average Source
maType : Moving Average Type : Can be sma, ema, hma, rma, wma, vwma, swma, highlow, linreg, median
length : Moving Average Length
multiplier : Standard Deviation multiplier
useTrueRange : - if set to false, uses high-low.
sticky : - sticky boundaries which will only change when value is outside boundary.
Returns: Keltner Channel Width for custom moving average
kpercentk(source, maType, length, multiplier, useTrueRange, sticky)
returns Keltner Channel Percent K Width with custom moving average
Parameters:
source : Moving Average Source
maType : Moving Average Type : Can be sma, ema, hma, rma, wma, vwma, swma, highlow, linreg, median
length : Moving Average Length
multiplier : Standard Deviation multiplier
useTrueRange : - if set to false, uses high-low.
sticky : - sticky boundaries which will only change when value is outside boundary.
Returns: Keltner Percent K for given moving average, source, length and multiplier
dc(length, useAlternateSource, alternateSource, sticky)
returns Custom Donchian Channel
Parameters:
length : - donchian channel length
useAlternateSource : - Custom source is used only if useAlternateSource is set to true
alternateSource : - Custom source
sticky : - sticky boundaries which will only change when value is outside boundary.
Returns: Donchian channel
dcw(length, useAlternateSource, alternateSource, sticky)
returns Donchian Channel Width
Parameters:
length : - donchian channel length
useAlternateSource : - Custom source is used only if useAlternateSource is set to true
alternateSource : - Custom source
sticky : - sticky boundaries which will only change when value is outside boundary.
Returns: Donchian channel width
dpercentd(useAlternateSource, alternateSource, length, sticky)
returns Donchian Channel Percent of price
Parameters:
useAlternateSource : - Custom source is used only if useAlternateSource is set to true
alternateSource : - Custom source
length : - donchian channel length
sticky : - sticky boundaries which will only change when value is outside boundary.
Returns: Donchian channel Percent D
oscillatorRange(source, method, highlowLength, rangeLength, sticky)
oscillatorRange - returns Custom overbought/oversold areas for an oscillator input
Parameters:
source : - Osillator source such as RSI, COG etc.
method : - Valid values for method are : sma, ema, hma, rma, wma, vwma, swma, highlow, linreg, median
highlowLength : - length on which highlow of the oscillator is calculated
rangeLength : - length used for calculating oversold/overbought range - usually same as oscillator length
sticky : - overbought, oversold levels won't change unless crossed
Returns: Dynamic overbought and oversold range for oscillator input
oscillator(type, length, shortLength, longLength, source, highSource, lowSource, method, highlowLength, sticky)
oscillator - returns Choice of oscillator with custom overbought/oversold range
Parameters:
type : - oscillator type. Valid values : cci, cmo, cog, mfi, roc, rsi, stoch, tsi, wpr
length : - Oscillator length - not used for TSI
shortLength : - shortLength only used for TSI
longLength : - longLength only used for TSI
source : - custom source if required
highSource : - custom high source for stochastic oscillator
lowSource : - custom low source for stochastic oscillator
method : - Valid values for method are : sma, ema, hma, rma, wma, vwma, swma, highlow, linreg, median
highlowLength : - length on which highlow of the oscillator is calculated
sticky : - overbought, oversold levels won't change unless crossed
Returns: Oscillator value along with dynamic overbought and oversold range for oscillator input
multibands(bandType, source, maType, length, useTrueRange, sticky, numberOfBands, multiplierStart, multiplierStep)
multibands - returns Choice of oscillator with custom overbought/oversold range
Parameters:
bandType : - Band type - can be either bb or kc
source : - custom source if required
maType : Moving Average Type : Can be sma, ema, hma, rma, wma, vwma, swma, highlow, linreg, median
length : - Oscillator length - not used for TSI
useTrueRange : - if set to false, uses high-low.
sticky : - for sticky borders which only change upon source crossover/crossunder
numberOfBands : - Number of bands to generate
multiplierStart : - Starting ATR or Standard deviation multiplier for first band
multiplierStep : - Incremental value for multiplier for each band
Returns: array of band values sorted in ascending order
mbandoscillator(bandType, source, maType, length, useTrueRange, stickyBands, numberOfBands, multiplierStart, multiplierStep)
mbandoscillator - Multiband oscillator created on the basis of bands
Parameters:
bandType : - Band type - can be either bb or kc
source : - custom source if required
maType : Moving Average Type : Can be sma, ema, hma, rma, wma, vwma, swma, highlow, linreg, median
length : - Oscillator length - not used for TSI
useTrueRange : - if set to false, uses high-low.
stickyBands : - for sticky borders which only change upon source crossover/crossunder for band detection
numberOfBands : - Number of bands to generate
multiplierStart : - Starting ATR or Standard deviation multiplier for first band
multiplierStep : - Incremental value for multiplier for each band
Returns: oscillator currentStates - Array containing states for last n bars
Fuzzy SMA with DCTI Confirmation[FibonacciFlux]FibonacciFlux: Advanced Fuzzy Logic System with Donchian Trend Confirmation
Institutional-grade trend analysis combining adaptive Fuzzy Logic with Donchian Channel Trend Intensity for superior signal quality
Conceptual Framework & Research Foundation
FibonacciFlux represents a significant advancement in quantitative technical analysis, merging two powerful analytical methodologies: normalized fuzzy logic systems and Donchian Channel Trend Intensity (DCTI). This sophisticated indicator addresses a fundamental challenge in market analysis – the inherent imprecision of trend identification in dynamic, multi-dimensional market environments.
While traditional indicators often produce simplistic binary signals, markets exist in states of continuous, graduated transition. FibonacciFlux embraces this complexity through its implementation of fuzzy set theory, enhanced by DCTI's structural trend confirmation capabilities. The result is an indicator that provides nuanced, probabilistic trend assessment with institutional-grade signal quality.
Core Technological Components
1. Advanced Fuzzy Logic System with Percentile Normalization
At the foundation of FibonacciFlux lies a comprehensive fuzzy logic system that transforms conventional technical metrics into degrees of membership in linguistic variables:
// Fuzzy triangular membership function with robust error handling
fuzzy_triangle(val, left, center, right) =>
if na(val)
0.0
float denominator1 = math.max(1e-10, center - left)
float denominator2 = math.max(1e-10, right - center)
math.max(0.0, math.min(left == center ? val <= center ? 1.0 : 0.0 : (val - left) / denominator1,
center == right ? val >= center ? 1.0 : 0.0 : (right - val) / denominator2))
The system employs percentile-based normalization for SMA deviation – a critical innovation that enables self-calibration across different assets and market regimes:
// Percentile-based normalization for adaptive calibration
raw_diff = price_src - sma_val
diff_abs_percentile = ta.percentile_linear_interpolation(math.abs(raw_diff), normLookback, percRank) + 1e-10
normalized_diff_raw = raw_diff / diff_abs_percentile
normalized_diff = useClamping ? math.max(-clampValue, math.min(clampValue, normalized_diff_raw)) : normalized_diff_raw
This normalization approach represents a significant advancement over fixed-threshold systems, allowing the indicator to automatically adapt to varying volatility environments and maintain consistent signal quality across diverse market conditions.
2. Donchian Channel Trend Intensity (DCTI) Integration
FibonacciFlux significantly enhances fuzzy logic analysis through the integration of Donchian Channel Trend Intensity (DCTI) – a sophisticated measure of trend strength based on the relationship between short-term and long-term price extremes:
// DCTI calculation for structural trend confirmation
f_dcti(src, majorPer, minorPer, sigPer) =>
H = ta.highest(high, majorPer) // Major period high
L = ta.lowest(low, majorPer) // Major period low
h = ta.highest(high, minorPer) // Minor period high
l = ta.lowest(low, minorPer) // Minor period low
float pdiv = not na(L) ? l - L : 0 // Positive divergence (low vs major low)
float ndiv = not na(H) ? H - h : 0 // Negative divergence (major high vs high)
float divisor = pdiv + ndiv
dctiValue = divisor == 0 ? 0 : 100 * ((pdiv - ndiv) / divisor) // Normalized to -100 to +100 range
sigValue = ta.ema(dctiValue, sigPer)
DCTI provides a complementary structural perspective on market trends by quantifying the relationship between short-term and long-term price extremes. This creates a multi-dimensional analysis framework that combines adaptive deviation measurement (fuzzy SMA) with channel-based trend intensity confirmation (DCTI).
Multi-Dimensional Fuzzy Input Variables
FibonacciFlux processes four distinct technical dimensions through its fuzzy system:
Normalized SMA Deviation: Measures price displacement relative to historical volatility context
Rate of Change (ROC): Captures price momentum over configurable timeframes
Relative Strength Index (RSI): Evaluates cyclical overbought/oversold conditions
Donchian Channel Trend Intensity (DCTI): Provides structural trend confirmation through channel analysis
Each dimension is processed through comprehensive fuzzy sets that transform crisp numerical values into linguistic variables:
// Normalized SMA Deviation - Self-calibrating to volatility regimes
ndiff_LP := fuzzy_triangle(normalized_diff, norm_scale * 0.3, norm_scale * 0.7, norm_scale * 1.1)
ndiff_SP := fuzzy_triangle(normalized_diff, norm_scale * 0.05, norm_scale * 0.25, norm_scale * 0.5)
ndiff_NZ := fuzzy_triangle(normalized_diff, -norm_scale * 0.1, 0.0, norm_scale * 0.1)
ndiff_SN := fuzzy_triangle(normalized_diff, -norm_scale * 0.5, -norm_scale * 0.25, -norm_scale * 0.05)
ndiff_LN := fuzzy_triangle(normalized_diff, -norm_scale * 1.1, -norm_scale * 0.7, -norm_scale * 0.3)
// DCTI - Structural trend measurement
dcti_SP := fuzzy_triangle(dcti_val, 60.0, 85.0, 101.0) // Strong Positive Trend (> ~85)
dcti_WP := fuzzy_triangle(dcti_val, 20.0, 45.0, 70.0) // Weak Positive Trend (~30-60)
dcti_Z := fuzzy_triangle(dcti_val, -30.0, 0.0, 30.0) // Near Zero / Trendless (~+/- 20)
dcti_WN := fuzzy_triangle(dcti_val, -70.0, -45.0, -20.0) // Weak Negative Trend (~-30 - -60)
dcti_SN := fuzzy_triangle(dcti_val, -101.0, -85.0, -60.0) // Strong Negative Trend (< ~-85)
Advanced Fuzzy Rule System with DCTI Confirmation
The core intelligence of FibonacciFlux lies in its sophisticated fuzzy rule system – a structured knowledge representation that encodes expert understanding of market dynamics:
// Base Trend Rules with DCTI Confirmation
cond1 = math.min(ndiff_LP, roc_HP, rsi_M)
strength_SB := math.max(strength_SB, cond1 * (dcti_SP > 0.5 ? 1.2 : dcti_Z > 0.1 ? 0.5 : 1.0))
// DCTI Override Rules - Structural trend confirmation with momentum alignment
cond14 = math.min(ndiff_NZ, roc_HP, dcti_SP)
strength_SB := math.max(strength_SB, cond14 * 0.5)
The rule system implements 15 distinct fuzzy rules that evaluate various market conditions including:
Established Trends: Strong deviations with confirming momentum and DCTI alignment
Emerging Trends: Early deviation patterns with initial momentum and DCTI confirmation
Weakening Trends: Divergent signals between deviation, momentum, and DCTI
Reversal Conditions: Counter-trend signals with DCTI confirmation
Neutral Consolidations: Minimal deviation with low momentum and neutral DCTI
A key innovation is the weighted influence of DCTI on rule activation. When strong DCTI readings align with other indicators, rule strength is amplified (up to 1.2x). Conversely, when DCTI contradicts other indicators, rule impact is reduced (as low as 0.5x). This creates a dynamic, self-adjusting system that prioritizes high-conviction signals.
Defuzzification & Signal Generation
The final step transforms fuzzy outputs into a precise trend score through center-of-gravity defuzzification:
// Defuzzification with precise floating-point handling
denominator = strength_SB + strength_WB + strength_N + strength_WBe + strength_SBe
if denominator > 1e-10
fuzzyTrendScore := (strength_SB * STRONG_BULL + strength_WB * WEAK_BULL +
strength_N * NEUTRAL + strength_WBe * WEAK_BEAR +
strength_SBe * STRONG_BEAR) / denominator
The resulting FuzzyTrendScore ranges from -1.0 (Strong Bear) to +1.0 (Strong Bull), with critical threshold zones at ±0.3 (Weak trend) and ±0.7 (Strong trend). The histogram visualization employs intuitive color-coding for immediate trend assessment.
Strategic Applications for Institutional Trading
FibonacciFlux provides substantial advantages for sophisticated trading operations:
Multi-Timeframe Signal Confirmation: Institutional-grade signal validation across multiple technical dimensions
Trend Strength Quantification: Precise measurement of trend conviction with noise filtration
Early Trend Identification: Detection of emerging trends before traditional indicators through fuzzy pattern recognition
Adaptive Market Regime Analysis: Self-calibrating analysis across varying volatility environments
Algorithmic Strategy Integration: Well-defined numerical output suitable for systematic trading frameworks
Risk Management Enhancement: Superior signal fidelity for risk exposure optimization
Customization Parameters
FibonacciFlux offers extensive customization to align with specific trading mandates and market conditions:
Fuzzy SMA Settings: Configure baseline trend identification parameters including SMA, ROC, and RSI lengths
Normalization Settings: Fine-tune the self-calibration mechanism with adjustable lookback period, percentile rank, and optional clamping
DCTI Parameters: Optimize trend structure confirmation with adjustable major/minor periods and signal smoothing
Visualization Controls: Customize display transparency for optimal chart integration
These parameters enable precise calibration for different asset classes, timeframes, and market regimes while maintaining the core analytical framework.
Implementation Notes
For optimal implementation, consider the following guidance:
Higher timeframes (4H+) benefit from increased normalization lookback (800+) for stability
Volatile assets may require adjusted clamping values (2.5-4.0) for optimal signal sensitivity
DCTI parameters should be aligned with chart timeframe (higher timeframes require increased major/minor periods)
The indicator performs exceptionally well as a trend filter for systematic trading strategies
Acknowledgments
FibonacciFlux builds upon the pioneering work of Donovan Wall in Donchian Channel Trend Intensity analysis. The normalization approach draws inspiration from percentile-based statistical techniques in quantitative finance. This indicator is shared for educational and analytical purposes under Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) license.
Past performance does not guarantee future results. All trading involves risk. This indicator should be used as one component of a comprehensive analysis framework.
Shout out @DonovanWall
20-34 Dual Dot Alerts OnlyPine Script that uses dual Donchian Channels (20-period and 34-period) and places tiny blue dots above candles when the highest price touches any upper Donchian Channel and below candles when the lowest price touches any lower Donchian Channel, without displaying the channels themselves, you can use the code.
### Explanation of the Code:
1. **Indicator Declaration**: The script is named "Dual Donchian Channels Dots Only" and overlays on the price chart.
2. **Input for Lengths**: Users can set lengths for two Donchian Channels (20 and 34 periods).
3. **Calculating Bands**: The upper and lower bands are calculated using `ta.highest` and `ta.lowest` functions over the specified periods.
4. **Touch Conditions**:
- `upperTouch`: Checks if the highest price of the current candle touches either of the upper bands.
- `lowerTouch`: Checks if the lowest price of the current candle touches either of the lower bands.
5. **Plotting Dots**:
- A tiny blue dot is plotted above bars where `upperTouch` is true.
- A tiny blue dot is plotted below bars where `lowerTouch` is true.
### How to Use:
1. Copy this script into TradingView’s Pine Script editor.
2. Save it and add it to your chart.
3. You will see tiny blue dots appear above or below candles based on whether they touch any of the upper or lower Donchian Bands.
This setup provides a clear visual indication of price interactions with both Donchian Channels while keeping the chart uncluttered by hiding the channel lines.
taLibrary "ta"
█ OVERVIEW
This library holds technical analysis functions calculating values for which no Pine built-in exists.
Look first. Then leap.
█ FUNCTIONS
cagr(entryTime, entryPrice, exitTime, exitPrice)
It calculates the "Compound Annual Growth Rate" between two points in time. The CAGR is a notional, annualized growth rate that assumes all profits are reinvested. It only takes into account the prices of the two end points — not drawdowns, so it does not calculate risk. It can be used as a yardstick to compare the performance of two instruments. Because it annualizes values, the function requires a minimum of one day between the two end points (annualizing returns over smaller periods of times doesn't produce very meaningful figures).
Parameters:
entryTime : The starting timestamp.
entryPrice : The starting point's price.
exitTime : The ending timestamp.
exitPrice : The ending point's price.
Returns: CAGR in % (50 is 50%). Returns `na` if there is not >=1D between `entryTime` and `exitTime`, or until the two time points have not been reached by the script.
█ v2, Mar. 8, 2022
Added functions `allTimeHigh()` and `allTimeLow()` to find the highest or lowest value of a source from the first historical bar to the current bar. These functions will not look ahead; they will only return new highs/lows on the bar where they occur.
allTimeHigh(src)
Tracks the highest value of `src` from the first historical bar to the current bar.
Parameters:
src : (series int/float) Series to track. Optional. The default is `high`.
Returns: (float) The highest value tracked.
allTimeLow(src)
Tracks the lowest value of `src` from the first historical bar to the current bar.
Parameters:
src : (series int/float) Series to track. Optional. The default is `low`.
Returns: (float) The lowest value tracked.
█ v3, Sept. 27, 2022
This version includes the following new functions:
aroon(length)
Calculates the values of the Aroon indicator.
Parameters:
length (simple int) : (simple int) Number of bars (length).
Returns: ( [float, float ]) A tuple of the Aroon-Up and Aroon-Down values.
coppock(source, longLength, shortLength, smoothLength)
Calculates the value of the Coppock Curve indicator.
Parameters:
source (float) : (series int/float) Series of values to process.
longLength (simple int) : (simple int) Number of bars for the fast ROC value (length).
shortLength (simple int) : (simple int) Number of bars for the slow ROC value (length).
smoothLength (simple int) : (simple int) Number of bars for the weigted moving average value (length).
Returns: (float) The oscillator value.
dema(source, length)
Calculates the value of the Double Exponential Moving Average (DEMA).
Parameters:
source (float) : (series int/float) Series of values to process.
length (simple int) : (simple int) Length for the smoothing parameter calculation.
Returns: (float) The double exponentially weighted moving average of the `source`.
dema2(src, length)
An alternate Double Exponential Moving Average (Dema) function to `dema()`, which allows a "series float" length argument.
Parameters:
src : (series int/float) Series of values to process.
length : (series int/float) Length for the smoothing parameter calculation.
Returns: (float) The double exponentially weighted moving average of the `src`.
dm(length)
Calculates the value of the "Demarker" indicator.
Parameters:
length (simple int) : (simple int) Number of bars (length).
Returns: (float) The oscillator value.
donchian(length)
Calculates the values of a Donchian Channel using `high` and `low` over a given `length`.
Parameters:
length (int) : (series int) Number of bars (length).
Returns: ( [float, float, float ]) A tuple containing the channel high, low, and median, respectively.
ema2(src, length)
An alternate ema function to the `ta.ema()` built-in, which allows a "series float" length argument.
Parameters:
src : (series int/float) Series of values to process.
length : (series int/float) Number of bars (length).
Returns: (float) The exponentially weighted moving average of the `src`.
eom(length, div)
Calculates the value of the Ease of Movement indicator.
Parameters:
length (simple int) : (simple int) Number of bars (length).
div (simple int) : (simple int) Divisor used for normalzing values. Optional. The default is 10000.
Returns: (float) The oscillator value.
frama(source, length)
The Fractal Adaptive Moving Average (FRAMA), developed by John Ehlers, is an adaptive moving average that dynamically adjusts its lookback period based on fractal geometry.
Parameters:
source (float) : (series int/float) Series of values to process.
length (int) : (series int) Number of bars (length).
Returns: (float) The fractal adaptive moving average of the `source`.
ft(source, length)
Calculates the value of the Fisher Transform indicator.
Parameters:
source (float) : (series int/float) Series of values to process.
length (simple int) : (simple int) Number of bars (length).
Returns: (float) The oscillator value.
ht(source)
Calculates the value of the Hilbert Transform indicator.
Parameters:
source (float) : (series int/float) Series of values to process.
Returns: (float) The oscillator value.
ichimoku(conLength, baseLength, senkouLength)
Calculates values of the Ichimoku Cloud indicator, including tenkan, kijun, senkouSpan1, senkouSpan2, and chikou. NOTE: offsets forward or backward can be done using the `offset` argument in `plot()`.
Parameters:
conLength (int) : (series int) Length for the Conversion Line (Tenkan). The default is 9 periods, which returns the mid-point of the 9 period Donchian Channel.
baseLength (int) : (series int) Length for the Base Line (Kijun-sen). The default is 26 periods, which returns the mid-point of the 26 period Donchian Channel.
senkouLength (int) : (series int) Length for the Senkou Span 2 (Leading Span B). The default is 52 periods, which returns the mid-point of the 52 period Donchian Channel.
Returns: ( [float, float, float, float, float ]) A tuple of the Tenkan, Kijun, Senkou Span 1, Senkou Span 2, and Chikou Span values. NOTE: by default, the senkouSpan1 and senkouSpan2 should be plotted 26 periods in the future, and the Chikou Span plotted 26 days in the past.
ift(source)
Calculates the value of the Inverse Fisher Transform indicator.
Parameters:
source (float) : (series int/float) Series of values to process.
Returns: (float) The oscillator value.
kvo(fastLen, slowLen, trigLen)
Calculates the values of the Klinger Volume Oscillator.
Parameters:
fastLen (simple int) : (simple int) Length for the fast moving average smoothing parameter calculation.
slowLen (simple int) : (simple int) Length for the slow moving average smoothing parameter calculation.
trigLen (simple int) : (simple int) Length for the trigger moving average smoothing parameter calculation.
Returns: ( [float, float ]) A tuple of the KVO value, and the trigger value.
pzo(length)
Calculates the value of the Price Zone Oscillator.
Parameters:
length (simple int) : (simple int) Length for the smoothing parameter calculation.
Returns: (float) The oscillator value.
rms(source, length)
Calculates the Root Mean Square of the `source` over the `length`.
Parameters:
source (float) : (series int/float) Series of values to process.
length (int) : (series int) Number of bars (length).
Returns: (float) The RMS value.
rwi(length)
Calculates the values of the Random Walk Index.
Parameters:
length (simple int) : (simple int) Lookback and ATR smoothing parameter length.
Returns: ( [float, float ]) A tuple of the `rwiHigh` and `rwiLow` values.
stc(source, fast, slow, cycle, d1, d2)
Calculates the value of the Schaff Trend Cycle indicator.
Parameters:
source (float) : (series int/float) Series of values to process.
fast (simple int) : (simple int) Length for the MACD fast smoothing parameter calculation.
slow (simple int) : (simple int) Length for the MACD slow smoothing parameter calculation.
cycle (simple int) : (simple int) Number of bars for the Stochastic values (length).
d1 (simple int) : (simple int) Length for the initial %D smoothing parameter calculation.
d2 (simple int) : (simple int) Length for the final %D smoothing parameter calculation.
Returns: (float) The oscillator value.
stochFull(periodK, smoothK, periodD)
Calculates the %K and %D values of the Full Stochastic indicator.
Parameters:
periodK (simple int) : (simple int) Number of bars for Stochastic calculation. (length).
smoothK (simple int) : (simple int) Number of bars for smoothing of the %K value (length).
periodD (simple int) : (simple int) Number of bars for smoothing of the %D value (length).
Returns: ( [float, float ]) A tuple of the slow %K and the %D moving average values.
stochRsi(lengthRsi, periodK, smoothK, periodD, source)
Calculates the %K and %D values of the Stochastic RSI indicator.
Parameters:
lengthRsi (simple int) : (simple int) Length for the RSI smoothing parameter calculation.
periodK (simple int) : (simple int) Number of bars for Stochastic calculation. (length).
smoothK (simple int) : (simple int) Number of bars for smoothing of the %K value (length).
periodD (simple int) : (simple int) Number of bars for smoothing of the %D value (length).
source (float) : (series int/float) Series of values to process. Optional. The default is `close`.
Returns: ( [float, float ]) A tuple of the slow %K and the %D moving average values.
supertrend(factor, atrLength, wicks)
Calculates the values of the SuperTrend indicator with the ability to take candle wicks into account, rather than only the closing price.
Parameters:
factor (float) : (series int/float) Multiplier for the ATR value.
atrLength (simple int) : (simple int) Length for the ATR smoothing parameter calculation.
wicks (simple bool) : (simple bool) Condition to determine whether to take candle wicks into account when reversing trend, or to use the close price. Optional. Default is false.
Returns: ( [float, int ]) A tuple of the superTrend value and trend direction.
szo(source, length)
Calculates the value of the Sentiment Zone Oscillator.
Parameters:
source (float) : (series int/float) Series of values to process.
length (simple int) : (simple int) Length for the smoothing parameter calculation.
Returns: (float) The oscillator value.
t3(source, length, vf)
Calculates the value of the Tilson Moving Average (T3).
Parameters:
source (float) : (series int/float) Series of values to process.
length (simple int) : (simple int) Length for the smoothing parameter calculation.
vf (simple float) : (simple float) Volume factor. Affects the responsiveness.
Returns: (float) The Tilson moving average of the `source`.
t3Alt(source, length, vf)
An alternate Tilson Moving Average (T3) function to `t3()`, which allows a "series float" `length` argument.
Parameters:
source (float) : (series int/float) Series of values to process.
length (float) : (series int/float) Length for the smoothing parameter calculation.
vf (simple float) : (simple float) Volume factor. Affects the responsiveness.
Returns: (float) The Tilson moving average of the `source`.
tema(source, length)
Calculates the value of the Triple Exponential Moving Average (TEMA).
Parameters:
source (float) : (series int/float) Series of values to process.
length (simple int) : (simple int) Length for the smoothing parameter calculation.
Returns: (float) The triple exponentially weighted moving average of the `source`.
tema2(source, length)
An alternate Triple Exponential Moving Average (TEMA) function to `tema()`, which allows a "series float" `length` argument.
Parameters:
source (float) : (series int/float) Series of values to process.
length (float) : (series int/float) Length for the smoothing parameter calculation.
Returns: (float) The triple exponentially weighted moving average of the `source`.
trima(source, length)
Calculates the value of the Triangular Moving Average (TRIMA).
Parameters:
source (float) : (series int/float) Series of values to process.
length (int) : (series int) Number of bars (length).
Returns: (float) The triangular moving average of the `source`.
trima2(src, length)
An alternate Triangular Moving Average (TRIMA) function to `trima()`, which allows a "series int" length argument.
Parameters:
src : (series int/float) Series of values to process.
length : (series int) Number of bars (length).
Returns: (float) The triangular moving average of the `src`.
trix(source, length, signalLength, exponential)
Calculates the values of the TRIX indicator.
Parameters:
source (float) : (series int/float) Series of values to process.
length (simple int) : (simple int) Length for the smoothing parameter calculation.
signalLength (simple int) : (simple int) Length for smoothing the signal line.
exponential (simple bool) : (simple bool) Condition to determine whether exponential or simple smoothing is used. Optional. The default is `true` (exponential smoothing).
Returns: ( [float, float, float ]) A tuple of the TRIX value, the signal value, and the histogram.
uo(fastLen, midLen, slowLen)
Calculates the value of the Ultimate Oscillator.
Parameters:
fastLen (simple int) : (series int) Number of bars for the fast smoothing average (length).
midLen (simple int) : (series int) Number of bars for the middle smoothing average (length).
slowLen (simple int) : (series int) Number of bars for the slow smoothing average (length).
Returns: (float) The oscillator value.
vhf(source, length)
Calculates the value of the Vertical Horizontal Filter.
Parameters:
source (float) : (series int/float) Series of values to process.
length (simple int) : (simple int) Number of bars (length).
Returns: (float) The oscillator value.
vi(length)
Calculates the values of the Vortex Indicator.
Parameters:
length (simple int) : (simple int) Number of bars (length).
Returns: ( [float, float ]) A tuple of the viPlus and viMinus values.
vzo(length)
Calculates the value of the Volume Zone Oscillator.
Parameters:
length (simple int) : (simple int) Length for the smoothing parameter calculation.
Returns: (float) The oscillator value.
williamsFractal(period)
Detects Williams Fractals.
Parameters:
period (int) : (series int) Number of bars (length).
Returns: ( [bool, bool ]) A tuple of an up fractal and down fractal. Variables are true when detected.
wpo(length)
Calculates the value of the Wave Period Oscillator.
Parameters:
length (simple int) : (simple int) Length for the smoothing parameter calculation.
Returns: (float) The oscillator value.
█ v7, Nov. 2, 2023
This version includes the following new and updated functions:
atr2(length)
An alternate ATR function to the `ta.atr()` built-in, which allows a "series float" `length` argument.
Parameters:
length (float) : (series int/float) Length for the smoothing parameter calculation.
Returns: (float) The ATR value.
changePercent(newValue, oldValue)
Calculates the percentage difference between two distinct values.
Parameters:
newValue (float) : (series int/float) The current value.
oldValue (float) : (series int/float) The previous value.
Returns: (float) The percentage change from the `oldValue` to the `newValue`.
donchian(length)
Calculates the values of a Donchian Channel using `high` and `low` over a given `length`.
Parameters:
length (int) : (series int) Number of bars (length).
Returns: ( [float, float, float ]) A tuple containing the channel high, low, and median, respectively.
highestSince(cond, source)
Tracks the highest value of a series since the last occurrence of a condition.
Parameters:
cond (bool) : (series bool) A condition which, when `true`, resets the tracking of the highest `source`.
source (float) : (series int/float) Series of values to process. Optional. The default is `high`.
Returns: (float) The highest `source` value since the last time the `cond` was `true`.
lowestSince(cond, source)
Tracks the lowest value of a series since the last occurrence of a condition.
Parameters:
cond (bool) : (series bool) A condition which, when `true`, resets the tracking of the lowest `source`.
source (float) : (series int/float) Series of values to process. Optional. The default is `low`.
Returns: (float) The lowest `source` value since the last time the `cond` was `true`.
relativeVolume(length, anchorTimeframe, isCumulative, adjustRealtime)
Calculates the volume since the last change in the time value from the `anchorTimeframe`, the historical average volume using bars from past periods that have the same relative time offset as the current bar from the start of its period, and the ratio of these volumes. The volume values are cumulative by default, but can be adjusted to non-accumulated with the `isCumulative` parameter.
Parameters:
length (simple int) : (simple int) The number of periods to use for the historical average calculation.
anchorTimeframe (simple string) : (simple string) The anchor timeframe used in the calculation. Optional. Default is "D".
isCumulative (simple bool) : (simple bool) If `true`, the volume values will be accumulated since the start of the last `anchorTimeframe`. If `false`, values will be used without accumulation. Optional. The default is `true`.
adjustRealtime (simple bool) : (simple bool) If `true`, estimates the cumulative value on unclosed bars based on the data since the last `anchor` condition. Optional. The default is `false`.
Returns: ( [float, float, float ]) A tuple of three float values. The first element is the current volume. The second is the average of volumes at equivalent time offsets from past anchors over the specified number of periods. The third is the ratio of the current volume to the historical average volume.
rma2(source, length)
An alternate RMA function to the `ta.rma()` built-in, which allows a "series float" `length` argument.
Parameters:
source (float) : (series int/float) Series of values to process.
length (float) : (series int/float) Length for the smoothing parameter calculation.
Returns: (float) The rolling moving average of the `source`.
supertrend2(factor, atrLength, wicks)
An alternate SuperTrend function to `supertrend()`, which allows a "series float" `atrLength` argument.
Parameters:
factor (float) : (series int/float) Multiplier for the ATR value.
atrLength (float) : (series int/float) Length for the ATR smoothing parameter calculation.
wicks (simple bool) : (simple bool) Condition to determine whether to take candle wicks into account when reversing trend, or to use the close price. Optional. Default is `false`.
Returns: ( [float, int ]) A tuple of the superTrend value and trend direction.
vStop(source, atrLength, atrFactor)
Calculates an ATR-based stop value that trails behind the `source`. Can serve as a possible stop-loss guide and trend identifier.
Parameters:
source (float) : (series int/float) Series of values that the stop trails behind.
atrLength (simple int) : (simple int) Length for the ATR smoothing parameter calculation.
atrFactor (float) : (series int/float) The multiplier of the ATR value. Affects the maximum distance between the stop and the `source` value. A value of 1 means the maximum distance is 100% of the ATR value. Optional. The default is 1.
Returns: ( [float, bool ]) A tuple of the volatility stop value and the trend direction as a "bool".
vStop2(source, atrLength, atrFactor)
An alternate Volatility Stop function to `vStop()`, which allows a "series float" `atrLength` argument.
Parameters:
source (float) : (series int/float) Series of values that the stop trails behind.
atrLength (float) : (series int/float) Length for the ATR smoothing parameter calculation.
atrFactor (float) : (series int/float) The multiplier of the ATR value. Affects the maximum distance between the stop and the `source` value. A value of 1 means the maximum distance is 100% of the ATR value. Optional. The default is 1.
Returns: ( [float, bool ]) A tuple of the volatility stop value and the trend direction as a "bool".
Removed Functions:
allTimeHigh(src)
Tracks the highest value of `src` from the first historical bar to the current bar.
allTimeLow(src)
Tracks the lowest value of `src` from the first historical bar to the current bar.
trima2(src, length)
An alternate Triangular Moving Average (TRIMA) function to `trima()`, which allows a
"series int" length argument.
True Range Trend StrengthThis script is designed to analyze trend strength using True Range calculations alongside Donchian Channels and smoothed moving averages. It provides a dynamic way to interpret market momentum, trend reversals, and anticipate potential entry points for trades.
Key Functionalities:
Trend Strength Oscillator:
Calculates trend strength based on the difference between long and short momentum derived from ATR (Average True Range) adjusted stop levels.
Smooths the trend strength using a simple moving average for better readability.
Donchian Channels on Trend Strength Oscillator:
Plots upper and lower Donchian Channels on the smoothed trend strength oscillator.
Traders can use these levels to anticipate breakout points and determine the strength of a trend.
Zero-Cross Shading:
Highlights bullish and bearish zones with shaded backgrounds:
Green for bullish zones where smoothed trend strength is above zero.
Red for bearish zones where smoothed trend strength is below zero.
Moving Averages for Oscillator:
Overlays fast and slow moving averages on the oscillator to provide crossover signals:
Fast MA Cross Above Slow MA: Indicates bullish momentum.
Fast MA Cross Below Slow MA: Indicates bearish momentum.
Alerts:
Alerts are available for MA crossovers, allowing traders to receive timely notifications about potential trend reversals or continuation signals.
Anticipating Entries with Donchian Channels:
The integration of Donchian Channels offers an edge in anticipating excellent trade entries.
Traders can use the oscillator's position relative to the channels to gauge oversold/overbought conditions or potential breakouts.
Use Case:
This script is particularly useful for traders looking to:
Identify the strength and direction of market trends.
Time entries and exits based on dynamic Donchian Channel levels and trend strength analysis.
Incorporate moving averages and visual cues for better decision-making.
Turtle Trading System IndicatorKey Features & Components
Donchian Channels
The core of the indicator is the Donchian Channel, represented by the upper and lower blue bands.
Upper Channel: The highest price over a user-defined period.
Lower Channel: The lowest price over the same period.
Middle Line: The midpoint between the upper and lower channels.
These channels are used to identify potential breakouts, which form the basis for trade entries.
Trading Signals
The script automatically generates clear, non-repainting signals for potential trades:
Long Entry (Green ▲): A green upward-facing triangle appears below the candle when the closing price breaks above the upper Donchian channel, signaling the start of a potential uptrend.
Short Entry (Red ▼): A red downward-facing triangle appears above the candle when the closing price breaks below the lower Donchian channel, signaling the start of a potential downtrend.
Long Exit (Green X): A green cross appears above the candle when the price crosses below the middle line, suggesting the uptrend is weakening.
Short Exit (Orange X): An orange cross appears below the candle when the price crosses above the middle line, suggesting the downtrend is losing momentum.
Integrated Risk Management
A crucial element of the Turtle strategy is disciplined risk management, which is built into this indicator.
Volatility-Based Position Sizing
You can enable position sizing that adapts to market volatility using the Average True Range (ATR). When an entry signal occurs, a label appears showing a calculated position size unit. The formula aims to normalize risk, meaning you would trade smaller sizes in volatile markets and larger sizes in calmer markets. The formula used is:
Volatility Unit=
100
Risk %
×
4×ATR
Close Price
Dynamic Stop Loss
Upon a long or short entry, a stop-loss level is plotted on the chart as red circles. This level is calculated based on the ATR, automatically adjusting to the market's current volatility to provide a data-driven exit point for managing losses. It is calculated as:
Long Stop: Close Price - 1.8 * ATR
Short Stop: Close Price + 1.8 * ATR
On-Chart Information Panel
A convenient table is displayed in the bottom-right corner of the chart, showing the current ATR value and the calculated Position Size unit for quick and easy reference.
Customizable Settings
You can tailor the indicator to your specific strategy and risk tolerance:
Donchian Channel Period: Sets the lookback period for the channels. The default is 20. Shorter periods will be more sensitive and generate more signals.
ATR Period: Sets the lookback period for the Average True Range calculation, affecting both position size and stop-loss levels. The default is 14.
Risk Percentage: The percentage of equity you wish to risk per trade. This directly influences the position size calculation.
Use Volatility Position Sizing: A simple checkbox to turn the ATR-based position sizing on or off.
Combined ATPC & MACD DivergenceTrend Optimizer + Divergence Finder in One Unified Tool
🔍 Overview:
This powerful dual-system indicator merges two proven analytical engines:
✅ The Algorganic Typical Price Channel (ATPC) — a custom trend oscillator that highlights mean-reversion and directional bias.
✅ A refined MACD system with divergence detection, enhanced with an adjusted Donchian midline for real-time trend strength filtering.
Together, they provide a high-confidence, multi-signal system ideal for swing trading, scalping, or confirming reversals with context.
⚙️ Core Components & Logic
🧠 1. ATPC Engine (Trend Commodity Index)
A momentum and volatility-normalized oscillator based on the typical price (H+L+C)/3:
TrendCI Line (Blue) – Main trend signal based on smoothed CCI logic.
TrendLine2 (Orange) – A slower smoothing of TrendCI for crossovers.
Key Zones (customizable):
🔴 Ultra Overbought: +73
🟣 Overbought: +58
🟣 Oversold: -58
🔴 Ultra Oversold: -73
Trade Logic:
✅ Buy Signal: TrendCI crosses above TrendLine2 while in oversold zone
❌ Sell Signal: TrendCI crosses below TrendLine2 while in overbought zone
Additional visual feedback:
Histogram Bars show strength and direction of momentum shift
Green/Red Circles highlight potential long/short setups
📉 2. MACD System + Divergence Finder
Classic MACD enhanced with a Donchian Midline overlay to filter trend bias.
🔷 MACD Line and 🟠 Signal Line show crossover momentum
🟩/🟥 Histogram shows distance from the signal line
🟪 Adjusted Donchian Midline dynamically adapts to range-bound vs trending environments
Background Color provides real-time trend state:
✅ Green = Bullish Trend
❌ Red = Bearish Trend
No color = Neutral / Choppy
MACD Boundaries (user-defined):
Overbought: +1.0
Oversold: -1.0
🔀 3. Divergence Detection
Spot hidden power shifts before price reacts:
🔼 Positive Divergence – Price makes lower lows, but MACD histogram rises
🔽 Negative Divergence – Price makes higher highs, but MACD histogram weakens
These are visually marked with:
Green “+Div” label (bullish reversal cue)
Red “–Div” label (bearish exhaustion signal)
🎯 How to Use It
For Trend Traders:
Stay in sync with macro trend using MACD histogram + background
Use ATPC crossovers for precision entries
Avoid signals during neutral background (chop filter)
For Reversal Traders:
Look for bullish +Div with ATPC buy signal in oversold zone
Look for bearish –Div with ATPC sell signal in overbought zone
Mid-Donchian line can act as confluence or breakout trigger
For Scalpers & Intraday Traders:
Combine with VWAP, liquidity zones, or order flow levels
ATPC crossovers + MACD histogram zero-line flip = potential scalp entry
Use histogram slope and divergence to avoid false momentum traps
🧩 Customizable Inputs
🎛️ ATPC: Channel & Smoothing lengths, overbought/oversold thresholds
🎛️ MACD: Fast/slow EMAs, signal smoothing, Donchian period, bounds
🎨 Fully theme-compatible with adjustable colors and line styles
🔔 Alerts (Add Your Own)
While this version doesn’t contain built-in alerts, you can easily add alerts based on:
buySignal or sellSignal from ATPC logic
Histogram cross zero or trend flip
MACD Divergence event
📜 “This indicator doesn't just show signals—it tells a story about who’s in control of the market, and when that control might be slipping.”
Gold Breakout Strategy - RR 4Strategy Name: Gold Breakout Strategy - RR 4
🧠 Main Objective
This strategy aims to capitalize on breakouts from the Donchian Channel on Gold (XAU/USD) by filtering trades with:
Volume confirmation,
A custom momentum indicator (LWTI - Linear Weighted Trend Index),
And a specific trading session (8 PM to 8 AM Quebec time — GMT-5).
It takes only one trade per day, either a buy or a sell, using a fixed stop-loss at the wick of the breakout candle and a 4:1 reward-to-risk (RR) ratio.
📊 Indicators Used
Donchian Channel
Length: 96
Detects breakouts of recent highs or lows.
Volume
Simple Moving Average (SMA) over 30 bars.
A breakout is only valid if the current volume is above the SMA.
LWTI (Linear Weighted Trend Index)
Measures momentum using price differences over 25 bars, smoothed over 5.
Used to confirm trend direction:
Buy when LWTI > its smoothed version (uptrend).
Sell when LWTI < its smoothed version (downtrend).
⏰ Time Filter
The strategy only allows entries between 8 PM and 8 AM (GMT-5 / Quebec time).
A timestamp-based filter ensures the system recognizes the correct trading session even across midnight.
📌 Entry Conditions
🟢 Buy (Long)
Price breaks above the previous Donchian Channel high.
The current channel high is higher than the previous one.
Volume is above its moving average.
LWTI confirms an uptrend.
The time is within the trading session (20:00 to 08:00).
No trade has been taken yet today.
🔴 Sell (Short)
Price breaks below the previous Donchian Channel low.
The current channel low is lower than the previous one.
Volume is above its moving average.
LWTI confirms a downtrend.
The time is within the trading session.
No trade has been taken yet today.
💸 Trade Management
Stop-Loss (SL):
For long entries: placed below the wick low of the breakout candle.
For short entries: placed above the wick high of the breakout candle.
Take-Profit (TP):
Set at a fixed 4:1 reward-to-risk ratio.
Calculated as 4x the distance between the entry price and stop-loss.
No trailing stop, no break-even, no scaling in/out.
🎨 Visuals
Green triangle appears below the candle on a buy signal.
Red triangle appears above the candle on a sell signal.
Donchian Channel lines are plotted on the chart.
The strategy is designed for the 5-minute timeframe.
🔄 One Trade Per Day Rule
Once a trade is taken (buy or sell), no more trades will be executed for the rest of the day. This prevents overtrading and limits exposure.
ian_Trado v15 Trend Entry Filter# 📈 ian_Trado v15 Trend Entry Filter (Pine Script v6)
The **ian_Trado v15** is a multi-factor **trend confirmation filter** for NASDAQ (NAS100), Dow Jones (DJ30), Gold (XAU), DAX, and USDJPY.
It combines **EMA structure**, **Donchian channel breakout**, **MACD histogram momentum**, **Volume confirmation**, and a **Range Compression Filter** to avoid entering during choppy or sideways markets.
✅ Designed for **bot deployment** (e.g., grid bots, long/short breakout bots) or **manual trading**.
---
## 🔍 How This Filter Works:
1. **EMA Trend Confirmation**
- Long Trend: EMA(1) > EMA(5) > EMA(60)
- Short Trend: EMA(1) < EMA(5) < EMA(60)
2. **Donchian Channel Width Expansion**
- Only allows trades when the **breakout width** exceeds a minimum threshold.
3. **MACD Histogram Slope Filter (Optional)**
- Confirms momentum building in the direction of the trend.
- Strict Mode: MACD histogram must consistently rise or fall over 3 bars.
4. **Volume Filter (Optional)**
- Ensures volume supports the move (filters out weak conditions).
5. **Range Compression Filter (Optional)**
- Avoids entries during sideways chop.
6. **Cooldown Control**
- Limits overtrading by requiring spacing between entries.
7. **Exit Conditions**
- Gray dot appears when trending conditions are no longer valid.
---
## ⚙️ Settings Explained:
| Setting | Description |
|:--------|:------------|
| **Cooldown Bars** | Minimum bars between consecutive entries |
| **Profit Target (%)** | Visual profit marker for exit tracking |
| **Donchian Channel Length** | Lookback period for detecting breakout width |
| **Minimum Donchian Width** | Threshold to confirm meaningful breakouts |
| **Volume Lookback Period** | Average volume validation window |
| **Box Range (Range Compression)** | Max allowed price range over lookback bars |
| **Range Compression Bars** | Number of bars to check for range compression |
| **Strict MACD Filter** | Use stricter MACD slope checks |
---
## 📊 Recommended Settings by Instrument (1H Chart):
| Asset | Min Donchian Width | Range Compression | Profit Target |
|:------|:-------------------|:------------------|:--------------|
| **NAS100** (Nasdaq) | 300–450 pts | 400 pts / 40 bars | 1.5% |
| **DJ30** (Dow Jones) | 400–600 pts | 500 pts / 40 bars | 1.0–1.5% |
| **XAU/USD** (Gold) | 10–15 pts | 8 pts / 30 bars | 0.8–1.2% |
| **DAX40** (Germany) | 200–300 pts | 250 pts / 40 bars | 1.0% |
| **USD/JPY** (Forex) | 0.5–0.8 pts | 0.4 pts / 40 bars | 0.5–0.8% |
---
## 🔔 Alerts Available:
- Long Entry
- Short Entry
- Exit Zone
> **Note:** Volume filter may be disabled if volume is unreliable (e.g., some forex pairs).
---
## 📅 Version:
- **ian_Trado v15** — April 2025
- Built with **Pine Script v6** for maximum stability
- Clean toggling and plotting logic (no `na` errors)
Ensemble Alerts█ OVERVIEW
This indicator creates highly customizable alert conditions and messages by combining several technical conditions into groups , which users can specify directly from the "Settings/Inputs" tab. It offers a flexible framework for building and testing complex alert conditions without requiring code modifications for each adjustment.
█ CONCEPTS
Ensemble analysis
Ensemble analysis is a form of data analysis that combines several "weaker" models to produce a potentially more robust model. In a trading context, one of the most prevalent forms of ensemble analysis is the aggregation (grouping) of several indicators to derive market insights and reinforce trading decisions. With this analysis, traders typically inspect multiple indicators, signaling trade actions when specific conditions or groups of conditions align.
Simplifying ensemble creation
Combining indicators into one or more ensembles can be challenging, especially for users without programming knowledge. It usually involves writing custom scripts to aggregate the indicators and trigger trading alerts based on the confluence of specific conditions. Making such scripts customizable via inputs poses an additional challenge, as it often involves complicated input menus and conditional logic.
This indicator addresses these challenges by providing a simple, flexible input menu where users can easily define alert criteria by listing groups of conditions from various technical indicators in simple text boxes . With this script, you can create complex alert conditions intuitively from the "Settings/Inputs" tab without ever writing or modifying a single line of code. This framework makes advanced alert setups more accessible to non-coders. Additionally, it can help Pine programmers save time and effort when testing various condition combinations.
█ FEATURES
Configurable alert direction
The "Direction" dropdown at the top of the "Settings/Inputs" tab specifies the allowed direction for the alert conditions. There are four possible options:
• Up only : The indicator only evaluates upward conditions.
• Down only : The indicator only evaluates downward conditions.
• Up and down (default): The indicator evaluates upward and downward conditions, creating alert triggers for both.
• Alternating : The indicator prevents alert triggers for consecutive conditions in the same direction. An upward condition must be the first occurrence after a downward condition to trigger an alert, and vice versa for downward conditions.
Flexible condition groups
This script features six text inputs where users can define distinct condition groups (ensembles) for their alerts. An alert trigger occurs if all the conditions in at least one group occur.
Each input accepts a comma-separated list of numbers with optional spaces (e.g., "1, 4, 8"). Each listed number, from 1 to 35, corresponds to a specific individual condition. Below are the conditions that the numbers represent:
1 — RSI above/below threshold
2 — RSI below/above threshold
3 — Stoch above/below threshold
4 — Stoch below/above threshold
5 — Stoch K over/under D
6 — Stoch K under/over D
7 — AO above/below threshold
8 — AO below/above threshold
9 — AO rising/falling
10 — AO falling/rising
11 — Supertrend up/down
12 — Supertrend down/up
13 — Close above/below MA
14 — Close below/above MA
15 — Close above/below open
16 — Close below/above open
17 — Close increase/decrease
18 — Close decrease/increase
19 — Close near Donchian top/bottom (Close > (Mid + HH) / 2)
20 — Close near Donchian bottom/top (Close < (Mid + LL) / 2)
21 — New Donchian high/low
22 — New Donchian low/high
23 — Rising volume
24 — Falling volume
25 — Volume above average (Volume > SMA(Volume, 20))
26 — Volume below average (Volume < SMA(Volume, 20))
27 — High body to range ratio (Abs(Close - Open) / (High - Low) > 0.5)
28 — Low body to range ratio (Abs(Close - Open) / (High - Low) < 0.5)
29 — High relative volatility (ATR(7) > ATR(40))
30 — Low relative volatility (ATR(7) < ATR(40))
31 — External condition 1
32 — External condition 2
33 — External condition 3
34 — External condition 4
35 — External condition 5
These constituent conditions fall into three distinct categories:
• Directional pairs : The numbers 1-22 correspond to pairs of opposing upward and downward conditions. For example, if one of the inputs includes "1" in the comma-separated list, that group uses the "RSI above/below threshold" condition pair. In this case, the RSI must be above a high threshold for the group to trigger an upward alert, and the RSI must be below a defined low threshold to trigger a downward alert.
• Non-directional filters : The numbers 23-30 correspond to conditions that do not represent directional information. These conditions act as filters for both upward and downward alerts. Traders often use non-directional conditions to refine trending or mean reversion signals. For instance, if one of the input lists includes "30", that group uses the "Low relative volatility" condition. The group can trigger an upward or downward alert only if the 7-period Average True Range (ATR) is below the 40-period ATR.
• External conditions : The numbers 31-35 correspond to external conditions based on the plots from other indicators on the chart. To set these conditions, use the source inputs in the "External conditions" section near the bottom of the "Settings/Inputs" tab. The external value can represent an upward, downward, or non-directional condition based on the following logic:
▫ Any value above 0 represents an upward condition.
▫ Any value below 0 represents a downward condition.
▫ If the checkbox next to the source input is selected, the condition becomes non-directional . Any group that uses the condition can trigger upward or downward alerts only if the source value is not 0.
To learn more about using plotted values from other indicators, see this article in our Help Center and the Source input section of our Pine Script™ User Manual.
Group markers
Each comma-separated list represents a distinct group , where all the listed conditions must occur to trigger an alert. This script assigns preset markers (names) to each condition group to make the active ensembles easily identifiable in the generated alert messages and labels. The markers assigned to each group use the format "M", where "M" is short for "Marker" and "x" is the group number. The titles of the inputs at the top of the "Settings/Inputs" tab show these markers for convenience.
For upward conditions, the labels and alert messages show group markers with upward triangles (e.g., "M1▲"). For downward conditions, they show markers with downward triangles (e.g., "M1▼").
NOTE: By default, this script populates the "M1" field with a pre-configured list for a mean reversion group ("2,18,24,28"). The other fields are empty. If any "M*" input does not contain a value, the indicator ignores it in the alert calculations.
Custom alert messages
By default, the indicator's alert message text contains the activated markers and their direction as a comma-separated list. Users can override this message for upward or downward alerts with the two text fields at the bottom of the "Settings/Inputs" tab. When the fields are not empty , the alerts use that text instead of the default marker list.
NOTE: This script generates alert triggers, not the alerts themselves. To set up an alert based on this script's conditions, open the "Create Alert" dialog box, then select the "Ensemble Alerts" and "Any alert() function call" options in the "Condition" tabs. See the Alerts FAQ in our Pine Script™ User Manual for more information.
Condition visualization
This script offers organized visualizations of its conditions, allowing users to inspect the behaviors of each condition alongside the specified groups. The key visual features include:
1) Conditional plots
• The indicator plots the history of each individual condition, excluding the external conditions, as circles at different levels. Opposite conditions appear at positive and negative levels with the same absolute value. The plots for each condition show values only on the bars where they occur.
• Each condition's plot is color-coded based on its type. Aqua and orange plots represent opposing directional conditions, and purple plots represent non-directional conditions. The titles of the plots also contain the condition numbers to which they apply.
• The plots in the separate pane can be turned on or off with the "Show plots in pane" checkbox near the top of the "Settings/Inputs" tab. This input only toggles the color-coded circles, which reduces the graphical load. If you deactivate these visuals, you can still inspect each condition from the script's status line and the Data Window.
• As a bonus, the indicator includes "Up alert" and "Down alert" plots in the Data Window, representing the combined upward and downward ensemble alert conditions. These plots are also usable in additional indicator-on-indicator calculations.
2) Dynamic labels
• The indicator draws a label on the main chart pane displaying the activated group markers (e.g., "M1▲") each time an alert condition occurs.
• The labels for upward alerts appear below chart bars. The labels for downward alerts appear above the bars.
NOTE: This indicator can display up to 500 labels because that is the maximum allowed for a single Pine script.
3) Background highlighting
• The indicator can highlight the main chart's background on bars where upward or downward condition groups activate. Use the "Highlight background" inputs in the "Settings/Inputs" tab to enable these highlights and customize their colors.
• Unlike the dynamic labels, these background highlights are available for all chart bars, irrespective of the number of condition occurrences.
█ NOTES
• This script uses Pine Script™ v6, the latest version of TradingView's programming language. See the Release notes and Migration guide to learn what's new in v6 and how to convert your scripts to this version.
• This script imports our new Alerts library, which features functions that provide high-level simplicity for working with complex compound conditions and alerts. We used the library's `compoundAlertMessage()` function in this indicator. It evaluates items from "bool" arrays in groups specified by an array of strings containing comma-separated index lists , returning a tuple of "string" values containing the marker of each activated group.
• The script imports the latest version of the ta library to calculate several technical indicators not included in the built-in `ta.*` namespace, including Double Exponential Moving Average (DEMA), Triple Exponential Moving Average (TEMA), Fractal Adaptive Moving Average (FRAMA), Tilson T3, Awesome Oscillator (AO), Full Stochastic (%K and %D), SuperTrend, and Donchian Channels.
• The script uses the `force_overlay` parameter in the label.new() and bgcolor() calls to display the drawings and background colors in the main chart pane.
• The plots and hlines use the available `display.*` constants to determine whether the visuals appear in the separate pane.
Look first. Then leap.
RiverFlow ADX ScreenerRiverFlow ADX Screener, Scans ADX and Donchian Trend values across various Timeframes. This screener provides support to the Riverflow indicator. Riverflow concept is based on Two indicators. Donchian Channel and ADX or DMI.
How to implement?
1.Donchian Channel with period 20
2. ADX / DMI 14,14 threshold 20
Entry / Exit:
1. Buy/Sell Signal from ADX Crossovers.
2. Trend Confirmation Donchian Channel.
3. Major Trend EMA 200
Buy/Sell:
After a buy/sell is generated by ADX Crossover, Check for Donchian Trend. it has to be in same direction as trend. for FTT trades take 2x limit. for Forex and Stocks take 1:1.5, SL must be placed below recent swing. One can use Riverflow indicator for better results.
ADX Indicator is plotted with
Plus: Green line
Minus: Red Line
ADX strength: plotted as Background area.
TREND: Trend is represented by Green and Red Area around Threshold line
Table:
red indicates down trend
green indicates up trend
grey indicates sideways
Weak ADX levels are treated sideways and a channel is plotted on ADX and PLUS and MINUS lines . NO TRADES are to be TAKEN on within the SIDEWAYS region.
Settings are not required as it purely works on Default settings. However Donchian Length can be changed from settings.
Timeframes below 1Day are screened. Riverflow strategy works on timeframe 5M and above timeframe. so option is not provided for lower timeframes.
Best suits for INTRADAY and LONG TERM Trading
Orion:Supertrend HybridSupertrend Hybrid
This indicator is a combination of the Supertrend and Donchian Channels.
The original Supertrend indicator shades the area from the mean (hl2) of the bar/candle to the Supertrend line.
This Hybrid uses the mid section of the Donchian channel to the Supertrend line as the area to be shaded.
This provides a visual of when prices are getting close to potentially reversing the trend.
Values:
Length = Length of the Donchian Channels (Default: 12)
ATR Length = Lookback length of the ATR calculation (Default: 10)
Factor = Multiply the ATR by this value to get a trend reversal value (Default: 3.0)
Prices cross above the red line indicating a bullish trend is in play
Prices cross below the green line indicating a bearish trend is in play
Yellow line represents the mid-section of the Donchian Channel.
Suggested usage:
Add a Stochastic and set the Stochastic %K Length to the same value as the Donchian Length.
When below trend (red line dominate) and prices cross into the shaded area, if stochastic crosses above 70, prices may challenge/cross the red trend line.
When above trend (green line dominate) and prices cross into the shaded area, if stochastic crosses below 30, prices may challenge/cross the green trend line.
IF in an up trend (green line dominate) and stochastic crosses/remains above 70, potential higher price movement exists.
IF in an down trend (red line dominate) and stochastic crosses/remains below 30, potential lower price movement exists.