Advanced Keltner Channel/Oscillator [MyTradingCoder]This indicator combines a traditional Keltner Channel overlay with an oscillator, providing a comprehensive view of price action, trend, and momentum. The core of this indicator is its advanced ATR calculation, which uses statistical methods to provide a more robust measure of volatility.
Starting with the overlay component, the center line is created using a biquad low-pass filter applied to the chosen price source. This provides a smoother representation of price than a simple moving average. The upper and lower channel lines are then calculated using the statistically derived ATR, with an additional set of mid-lines between the center and outer lines. This creates a more nuanced view of price action within the channel.
The color coding of the center line provides an immediate visual cue of the current price momentum. As the price moves up relative to the ATR, the line shifts towards the bullish color, and vice versa for downward moves. This color gradient allows for quick assessment of the current market sentiment.
The oscillator component transforms the channel into a different perspective. It takes the price's position within the channel and maps it to either a normalized -100 to +100 scale or displays it in price units, depending on your settings. This oscillator essentially shows where the current price is in relation to the channel boundaries.
The oscillator includes two key lines: the main oscillator line and a signal line. The main line represents the current position within the channel, smoothed by an exponential moving average (EMA). The signal line is a further smoothed version of the oscillator line. The interaction between these two lines can provide trading signals, similar to how MACD is often used.
When the oscillator line crosses above the signal line, it might indicate bullish momentum, especially if this occurs in the lower half of the oscillator range. Conversely, the oscillator line crossing below the signal line could signal bearish momentum, particularly if it happens in the upper half of the range.
The oscillator's position relative to its own range is also informative. Values near the top of the range (close to 100 if normalized) suggest that price is near the upper Keltner Channel band, indicating potential overbought conditions. Values near the bottom of the range (close to -100 if normalized) suggest proximity to the lower band, potentially indicating oversold conditions.
One of the strengths of this indicator is how the overlay and oscillator work together. For example, if the price is touching the upper band on the overlay, you'd see the oscillator at or near its maximum value. This confluence of signals can provide stronger evidence of overbought conditions. Similarly, the oscillator hitting extremes can draw your attention to price action at the channel boundaries on the overlay.
The mid-lines on both the overlay and oscillator provide additional nuance. On the overlay, price action between the mid-line and outer line might suggest strong but not extreme momentum. On the oscillator, this would correspond to readings in the outer quartiles of the range.
The customizable visual settings allow you to adjust the indicator to your preferences. The glow effects and color coding can make it easier to quickly interpret the current market conditions at a glance.
Overlay Component:
The overlay displays Keltner Channel bands dynamically adapting to market conditions, providing clear visual cues for potential trend reversals, breakouts, and overbought/oversold zones.
The center line is a biquad low-pass filter applied to the chosen price source.
Upper and lower channel lines are calculated using a statistically derived ATR.
Includes mid-lines between the center and outer channel lines.
Color-coded based on price movement relative to the ATR.
Oscillator Component:
The oscillator component complements the overlay, highlighting momentum and potential turning points.
Normalized values make it easy to compare across different assets and timeframes.
Signal line crossovers generate potential buy/sell signals.
Advanced ATR Calculation:
Uses a unique method to compute ATR, incorporating concepts like root mean square (RMS) and z-score clamping.
Provides both an average and mode-based ATR value.
Customizable Visual Settings:
Adjustable colors for bullish and bearish moves, oscillator lines, and channel components.
Options for line width, transparency, and glow effects.
Ability to display overlay, oscillator, or both simultaneously.
Flexible Parameters:
Customizable inputs for channel width multiplier, ATR period, smoothing factors, and oscillator settings.
Adjustable Q factor for the biquad filter.
Key Advantages:
Advanced ATR Calculation: Utilizes a statistical method to generate ATR, ensuring greater responsiveness and accuracy in volatile markets.
Overlay and Oscillator: Provides a comprehensive view of price action, combining trend and momentum analysis.
Customizable: Adjust settings to fine-tune the indicator to your specific needs and trading style.
Visually Appealing: Clear and concise design for easy interpretation.
The ATR (Average True Range) in this indicator is derived using a sophisticated statistical method that differs from the traditional ATR calculation. It begins by calculating the True Range (TR) as the difference between the high and low of each bar. Instead of a simple moving average, it computes the Root Mean Square (RMS) of the TR over the specified period, giving more weight to larger price movements. The indicator then calculates a Z-score by dividing the TR by the RMS, which standardizes the TR relative to recent volatility. This Z-score is clamped to a maximum value (10 in this case) to prevent extreme outliers from skewing the results, and then rounded to a specified number of decimal places (2 in this script).
These rounded Z-scores are collected in an array, keeping track of how many times each value occurs. From this array, two key values are derived: the mode, which is the most frequently occurring Z-score, and the average, which is the weighted average of all Z-scores. These values are then scaled back to price units by multiplying by the RMS.
Now, let's examine how these values are used in the indicator. For the Keltner Channel lines, the mid lines (top and bottom) use the mode of the ATR, representing the most common volatility state. The max lines (top and bottom) use the average of the ATR, incorporating all volatility states, including less common but larger moves. By using the mode for the mid lines and the average for the max lines, the indicator provides a nuanced view of volatility. The mid lines represent the "typical" market state, while the max lines account for less frequent but significant price movements.
For the color coding of the center line, the mode of the ATR is used to normalize the price movement. The script calculates the difference between the current price and the price 'degree' bars ago (default is 2), and then divides this difference by the mode of the ATR. The resulting value is passed through an arctangent function and scaled to a 0-1 range. This scaled value is used to create a color gradient between the bearish and bullish colors.
Using the mode of the ATR for this color coding ensures that the color changes are based on the most typical volatility state of the market. This means that the color will change more quickly in low volatility environments and more slowly in high volatility environments, providing a consistent visual representation of price momentum relative to current market conditions.
Using a good IIR (Infinite Impulse Response) low-pass filter, such as the biquad filter implemented in this indicator, offers significant advantages over simpler moving averages like the EMA (Exponential Moving Average) or other basic moving averages.
At its core, an EMA is indeed a simple, single-pole IIR filter, but it has limitations in terms of its frequency response and phase delay characteristics. The biquad filter, on the other hand, is a two-pole, two-zero filter that provides superior control over the frequency response curve. This allows for a much sharper cutoff between the passband and stopband, meaning it can more effectively separate the signal (in this case, the underlying price trend) from the noise (short-term price fluctuations).
The improved frequency response of a well-designed biquad filter means it can achieve a better balance between smoothness and responsiveness. While an EMA might need a longer period to sufficiently smooth out price noise, potentially leading to more lag, a biquad filter can achieve similar or better smoothing with less lag. This is crucial in financial markets where timely information is vital for making trading decisions.
Moreover, the biquad filter allows for independent control of the cutoff frequency and the Q factor. The Q factor, in particular, is a powerful parameter that affects the filter's resonance at the cutoff frequency. By adjusting the Q factor, users can fine-tune the filter's behavior to suit different market conditions or trading styles. This level of control is simply not available with basic moving averages.
Another advantage of the biquad filter is its superior phase response. In the context of financial data, this translates to more consistent lag across different frequency components of the price action. This can lead to more reliable signals, especially when it comes to identifying trend changes or price reversals.
The computational efficiency of biquad filters is also worth noting. Despite their more complex mathematical foundation, biquad filters can be implemented very efficiently, often requiring only a few operations per sample. This makes them suitable for real-time applications and high-frequency trading scenarios.
Furthermore, the use of a more sophisticated filter like the biquad can help in reducing false signals. The improved noise rejection capabilities mean that minor price fluctuations are less likely to cause unnecessary crossovers or indicator movements, potentially leading to fewer false breakouts or reversal signals.
In the specific context of a Keltner Channel, using a biquad filter for the center line can provide a more stable and reliable basis for the entire indicator. It can help in better defining the overall trend, which is crucial since the Keltner Channel is often used for trend-following strategies. The smoother, yet more responsive center line can lead to more accurate channel boundaries, potentially improving the reliability of overbought/oversold signals and breakout indications.
In conclusion, this advanced Keltner Channel indicator represents a significant evolution in technical analysis tools, combining the power of traditional Keltner Channels with modern statistical methods and signal processing techniques. By integrating a sophisticated ATR calculation, a biquad low-pass filter, and a complementary oscillator component, this indicator offers traders a comprehensive and nuanced view of market dynamics.
The indicator's strength lies in its ability to adapt to varying market conditions, providing clear visual cues for trend identification, momentum assessment, and potential reversal points. The use of statistically derived ATR values for channel construction and the implementation of a biquad filter for the center line result in a more responsive and accurate representation of price action compared to traditional methods.
Furthermore, the dual nature of this indicator – functioning as both an overlay and an oscillator – allows traders to simultaneously analyze price trends and momentum from different perspectives. This multifaceted approach can lead to more informed decision-making and potentially more reliable trading signals.
The high degree of customization available in the indicator's settings enables traders to fine-tune its performance to suit their specific trading styles and market preferences. From adjustable visual elements to flexible parameter inputs, users can optimize the indicator for various trading scenarios and time frames.
Ultimately, while no indicator can predict market movements with certainty, this advanced Keltner Channel provides traders with a powerful tool for market analysis. By offering a more sophisticated approach to measuring volatility, trend, and momentum, it equips traders with valuable insights to navigate the complex world of financial markets. As with any trading tool, it should be used in conjunction with other forms of analysis and within a well-defined risk management framework to maximize its potential benefits.
Komut dosyalarını "ATR" için ara
Trimmed ATR🧠 **Brief Description**:
Trimmed ATR is a modified volatility indicator that removes extreme values from the ATR calculation. This makes it more reliable for analyzing market conditions and filters out "noise" spikes. It is particularly useful for setting stop-losses and in strategies sensitive to false volatility.
🧾 **How Does Trimmed ATR Work?**
📌 For each bar:
- True Range (TR) is calculated.
- A sliding window of the last N TR values (where N = length) is stored.
- The TR list is sorted, and trimPercent % is cut off from each side:
- The smallest and largest values are removed.
- The remaining values are averaged → Trimmed ATR.
🔍 **Why Is This Important?**
Regular ATR can be distorted by outliers:
- A single spike can sharply inflate the ATR.
- This creates a false impression of market volatility.
🎯 Trimmed ATR solves this by eliminating the impact of anomalies, providing a more stable and accurate volatility measure.
📈 **What Does It Mean If Trimmed ATR Is Higher or Lower Than Regular ATR?**
🔵 **Trimmed ATR is lower than ATR** — this is normal:
- There are isolated TR spikes (high volatility on 1–2 bars).
- ATR increases, including these outliers.
- Trimmed ATR discards them → reflects the true average market background.
🧠 This is the most common case, indicating: a spike occurred, but the market is generally calm.
🟠 **Trimmed ATR is higher than ATR** — a rare but important signal:
- There were artificially low TR values (very small movements).
- ATR becomes too low.
- Trimmed ATR discards these "quiet" periods → provides a more realistic volatility estimate.
⚠️ This may indicate:
- Hidden pressure.
- Preparation for a breakout from a tight range.
- Underestimated volatility.
💡 **Applications**:
- **Trailing Stop**: Trimmed ATR helps avoid stop triggers due to noise.
- **Trend Filter**: Better reflects the "true" market dynamics.
- **Strategy Backtesting**: Eliminates distortions in volatility calculations.
Not-So-Average True Range (nsATR)Not-So-Average True Range (nsATR)
*By Sherlock_MacGyver*
---
Long Story Short
The nsATR is a complete overhaul of traditional ATR analysis. It was designed to solve the fundamental issues with standard ATR, such as lag, lack of contextual awareness, and equal treatment of all volatility events.
Key innovations include:
* A smarter ATR that reacts dynamically when price movement exceeds normal expectations.
* Envelope zones that distinguish between moderate and extreme volatility conditions.
* A long-term ATR baseline that adds historical context to current readings.
* A compression detection system that flags when the market is coiled and ready to break out.
This indicator is designed for traders who want to see volatility the way it actually behaves — contextually, asymmetrically, and with predictive power.
---
What Is This Thing?
Standard ATR (Average True Range) has limitations:
* It smooths too slowly (using Wilder's RMA), which delays detection of meaningful moves.
* It lacks context — no way to know if current volatility is high or low relative to history.
* It treats all volatility equally, regardless of scale or significance.
nsATR** was built from scratch to overcome these weaknesses by applying:
* Amplification of large True Range spikes.
* Visual envelope zones for detecting volatility regimes.
* A long-term context line to anchor current readings.
* Multi-factor compression analysis to anticipate breakouts.
---
Core Features
1. Breach Detection with Amplification
When True Range exceeds a user-defined threshold (e.g., ATR × 1.2), it is amplified using a power function to reflect nonlinear volatility. This amplified value is then smoothed and cascades into future ATR values, affecting the indicator beyond a single bar.
2. Direction Tagging
Volatility spikes are tagged as upward or downward based on basic price momentum (close vs previous close). This provides visual context for how volatility is behaving in real-time.
3. Envelope Zones
Two adaptive envelopes highlight the current volatility regime:
* Stage 1: Moderate volatility (default: ATR × 1.5)
* Stage 2: Extreme volatility (default: ATR × 2.0)
Breaching these zones signals meaningful expansion in volatility.
4. Long-Term Context Baseline
A 200-period simple moving average of the classic ATR establishes whether current readings are above or below long-term volatility expectations.
5. Multi-Signal Compression Detection
Flags potential breakout conditions when:
* ATR is below its long-term baseline
* Price Bollinger Bands are compressed
* RSI Bollinger Bands are also compressed
All three signals must align to plot a "Volatility Confluence Dot" — an early warning of potential expansion.
---
Chart Outputs
In the Indicator Pane:
* Breach Amplified ATR (Orange line)
* Classic ATR baseline (White line)
* Long-Term context baseline (Cyan line)
* Stage 1 and Stage 2 Envelopes (Purple and Yellow lines)
On the Price Chart:
* Triangles for breach direction (green/red)
* Diamonds for compression zones
* Optional background coloring for visual clarity
---
Alerts
Built-in alert conditions:
1. ATR breach detected
2. Stage 1 envelope breached
3. Stage 2 envelope breached
4. Compression zone detected
---
Customization
All components are modular. Traders can adjust:
* Display toggles for each visual layer
* Colors and line widths
* Breach threshold and amplification power
* Envelope sensitivity
* Compression sensitivity and lookback windows
Some options are disabled by default to reduce clutter but can be turned on for more aggressive signal detection.
---
Real-Time Behavior (Non-Repainting Clarification)
The indicator updates in real time on the current bar as new data comes in. This is expected behavior for live trading tools. Once a bar closes, values do not change. In other words, the indicator *does not repaint history* — but the current bar can update dynamically until it closes.
---
Use Cases
* Day traders: Use compression zones to anticipate volatility surges.
* Swing traders: Use envelope breaches for regime awareness.
* System developers: Replace standard ATR in your logic for better responsiveness.
* Risk managers: Use directional volatility signals to better model exposure.
---
About the Developer
Sherlock_MacGyver develops original trading systems that question default assumptions and solve real trader problems.
Intraday Uncertainty [PhenLabs]📊 Intraday Uncertainty
Version: PineScript™ v6
📌 Description
The Intraday Uncertainty indicator offers traders a visual representation of market certainty/uncertainty during trading sessions. By comparing each price bar’s range to the Average True Range (ATR), it provides an intuitive way to gauge market conviction through a color gradient system.
This tool helps traders identify periods of high certainty (potentially trending markets) versus high uncertainty (potentially choppy or volatile markets) without complex calculations or multiple indicators. The color-coded bars create an immediate visual cue to support decision-making in varying market conditions.
🚀 Points of Innovation
Automated range-to-ATR ratio calculation that adapts to changing market volatility
Dynamic color gradient system that visually distinguishes between certain and uncertain price action
Customizable gradient clamping to fine-tune sensitivity to market conditions
Integrated dashboard that provides clear interpretation guidance
Position-flexible legend that accommodates different chart layouts
Highly optimized for performance with minimal calculation overhead
🔧 Core Components
ATR Calculation: Measures market volatility using a configurable lookback period
Range-to-ATR Ratio: Compares current bar’s high-low range against average volatility
Gradient Mapping System: Converts numerical uncertainty values into an intuitive color scale
Dashboard Legend: Provides clear interpretation guidance with customizable positioning
🔥 Key Features
Bar Coloring: Instantly identifies market certainty levels through intuitive color gradients
Customizable ATR Period: Adjust sensitivity to historical volatility based on trading style
Gradient Clamping: Fine-tune the color sensitivity using the Range/ATR multiplier
Color Customization: Personalize the color scheme to match your chart aesthetics
Informative Dashboard: Quickly interpret color meanings with the optional on-chart legend
Flexible Display Options: Customize dashboard position and text size for your chart layout
🎨 Visualization
Color Gradient: Bars colored on a spectrum from green (high certainty) to red (high uncertainty)
Dashboard Legend: Optional on-chart guide explaining the color interpretation
Color Intensity: Stronger colors indicate more extreme certainty/uncertainty levels
At-a-glance Interpretation: Quickly identify market conviction without analyzing numbers
📖 Usage Guidelines
Calculation Settings
ATR Period
Default: 14
Range: 1+
Description: Controls the lookback period for ATR calculation. Lower values increase sensitivity to recent volatility, while higher values provide more stability.
Gradient Clamp (Range/ATR Multiplier)
Default: 2.0
Range: 0.1+
Description: Sets the maximum Range/ATR ratio for gradient scaling. Ranges above this value display the end color (high uncertainty).
Color Settings
Gradient Start Color (High Certainty)
Default: Green
Description: Color representing high market certainty (low Range/ATR ratio)
Gradient End Color (Low Certainty)
Default: Red
Description: Color representing low market certainty (high Range/ATR ratio)
Dashboard Settings
Show Dashboard Legend
Default: True
Description: Toggles the visibility of the on-chart interpretation guide
Dashboard Position
Options: top_right, top_left, bottom_right, bottom_left, middle_right, middle_left
Default: bottom_right
Description: Controls the placement of the dashboard on your chart
Dashboard Text Size
Options: tiny, small, normal, large, huge
Default: normal
Description: Adjusts the text size of the dashboard for readability
✅ Best Use Cases
Identifying potential trend shifts when certainty levels change dramatically
Confirming trend strength through consistent certainty levels
Detecting choppy/sideways markets with persistent high uncertainty
Filtering trading signals from other indicators based on certainty levels
Gauging market conviction behind price breakouts or pullbacks
Optimizing entry/exit timing based on certainty/uncertainty transitions
⚠️ Limitations
Does not predict future price direction, only measures current bar certainty
May provide false signals during news events or unexpected volatility spikes
Requires context within the broader market environment for optimal interpretation
Color interpretation is relative rather than absolute across different securities
ATR-based calculation means sensitivity varies across different timeframes
💡 What Makes This Unique
Simplicity: Single visual indicator that doesn’t require multiple technical tools
Adaptability: Automatically adjusts to changing market volatility conditions
Contextual Analysis: Provides market conviction context beyond just price movement
Intuitive Design: Color-based system that requires minimal learning curve
Efficiency: Lightweight calculation that doesn’t impact chart performance
🔬 How It Works
1. ATR Calculation:
Calculates the Average True Range using the specified period
Establishes a baseline for normal market volatility
2. Range Analysis:
Measures each bar’s high-low range
Compares this range to the current ATR value to create a ratio
3. Gradient Mapping:
Converts the Range/ATR ratio to a normalized value between 0 and 1
Maps this value onto a color gradient between the start and end colors
Applies the resulting color to the price bar
4. Dashboard Creation:
Constructs an information panel on the last visible bar
Populates it with color samples and interpretation guidance
💡 Note:
This indicator works best when used in conjunction with other technical analysis tools rather than in isolation. The certainty/uncertainty measure provides context for your trading decisions but should not be the sole basis for entries and exits. Consider using higher certainty periods for trend-following strategies and exercise caution during periods of high uncertainty.
Dskyz (DAFE) MAtrix with ATR-Powered Precision Dskyz (DAFE) MAtrix with ATR-Powered Precision
This cutting‐edge futures trading strategy built to thrive in rapidly changing market conditions. Developed for high-frequency futures trading on instruments such as the CME Mini MNQ, this strategy leverages a matrix of sophisticated moving averages combined with ATR-based filters to pinpoint high-probability entries and exits. Its unique combination of adaptable technical indicators and multi-timeframe trend filtering sets it apart from standard strategies, providing enhanced precision and dynamic responsiveness.
imgur.com
Core Functional Components
1. Advanced Moving Averages
A distinguishing feature of the DAFE strategy is its robust, multi-choice moving averages (MAs). Clients can choose from a wide array of MAs—each with specific strengths—in order to fine-tune their trading signals. The code includes user-defined functions for the following MAs:
imgur.com
Hull Moving Average (HMA):
The hma(src, len) function calculates the HMA by using weighted moving averages (WMAs) to reduce lag considerably while smoothing price data. This function computes an intermediate WMA of half the specified length, then a full-length WMA, and finally applies a further WMA over the square root of the length. This design allows for rapid adaptation to price changes without the typical delays of traditional moving averages.
Triple Exponential Moving Average (TEMA):
Implemented via tema(src, len), TEMA uses three consecutive exponential moving averages (EMAs) to effectively cancel out lag and capture price momentum. The final formula—3 * (ema1 - ema2) + ema3—produces a highly responsive indicator that filters out short-term noise.
Double Exponential Moving Average (DEMA):
Through the dema(src, len) function, DEMA calculates an EMA and then a second EMA on top of it. Its simplified formula of 2 * ema1 - ema2 provides a smoother curve than a single EMA while maintaining enhanced responsiveness.
Volume Weighted Moving Average (VWMA):
With vwma(src, len), this MA accounts for trading volume by weighting the price, thereby offering a more contextual picture of market activity. This is crucial when volume spikes indicate significant moves.
Zero Lag EMA (ZLEMA):
The zlema(src, len) function applies a correction to reduce the inherent lag found in EMAs. By subtracting a calculated lag (based on half the moving average window), ZLEMA is exceptionally attuned to recent price movements.
Arnaud Legoux Moving Average (ALMA):
The alma(src, len, offset, sigma) function introduces ALMA—a type of moving average designed to be less affected by outliers. With parameters for offset and sigma, it allows customization of the degree to which the MA reacts to market noise.
Kaufman Adaptive Moving Average (KAMA):
The custom kama(src, len) function is noteworthy for its adaptive nature. It computes an efficiency ratio by comparing price change against volatility, then dynamically adjusts its smoothing constant. This results in an MA that quickly responds during trending periods while remaining smoothed during consolidation.
Each of these functions—integrated into the strategy—is selectable by the trader (via the fastMAType and slowMAType inputs). This flexibility permits the tailored application of the MA most suited to current market dynamics and individual risk management preferences.
2. ATR-Based Filters and Risk Controls
ATR Calculation and Volatility Filter:
The strategy computes the Average True Range (ATR) over a user-defined period (atrPeriod). ATR is then used to derive both:
Volatility Assessment: Expressed as a ratio of ATR to closing price, ensuring that trades are taken only when volatility remains within a safe, predefined threshold (volatilityThreshold).
ATR-Based Entry Filters: Implemented as atrFilterLong and atrFilterShort, these conditions ensure that for long entries the price is sufficiently above the slow MA and vice versa for shorts. This acts as an additional confirmation filter.
Dynamic Exit Management:
The exit logic employs a dual approach:
Fixed Stop and Profit Target: Stops and targets are set at multiples of ATR (fixedStopMultiplier and profitTargetATRMult), helping manage risk in volatile markets.
Trailing Stop Adjustments: A trailing stop is calculated using the ATR multiplied by a user-defined offset (trailOffset), which captures additional profits as the trade moves favorably while protecting against reversals.
3. Multi-Timeframe Trend Filtering
The strategy enhances its signal reliability by leveraging a secondary, higher timeframe analysis:
15-Minute Trend Analysis:
By retrieving 15-minute moving averages (fastMA15m and slowMA15m) via request.security, the strategy determines the broader market trend. This secondary filter (enabled or disabled through useTrendFilter) ensures that entries are aligned with the prevailing market direction, thereby reducing the incidence of false signals.
4. Signal and Execution Logic
Combined MA Alignment:
The entry conditions are based primarily on the alignment of the fast and slow MAs. A long condition is triggered when the current price is above both MAs and the fast MA is above the slow MA—complemented by the ATR filter and volume conditions. The reverse applies for a short condition.
Volume and Time Window Validation:
Trades are permitted only if the current volume exceeds a minimum (minVolume) and the current hour falls within the predefined trading window (tradingStartHour to tradingEndHour). An additional volume spike check (comparing current volume to a moving average of past volumes) further filters for optimal market conditions.
Comprehensive Order Execution:
The strategy utilizes flexible order execution functions that allow pyramiding (up to 10 positions), ensuring that it can scale into positions as favorable conditions persist. The use of both market entries and automated exits (with profit targets, stop-losses, and trailing stops) ensures that risk is managed at every step.
5. Integrated Dashboard and Metrics
For transparency and real-time analysis, the strategy includes:
On-Chart Visualizations:
Both fast and slow MAs are plotted on the chart, making it easy to see the market’s technical foundation.
Dynamic Metrics Dashboard:
A built-in table displays crucial performance statistics—including current profit/loss, equity, ATR (both raw and as a percentage), and the percentage gap between the moving averages. These metrics offer immediate insight into the health and performance of the strategy.
Input Parameters: Detailed Breakdown
Every input is meticulously designed to offer granular control:
Fast & Slow Lengths:
Determine the window size for the fast and slow moving averages. Smaller values yield more sensitivity, while larger values provide a smoother, delayed response.
Fast/Slow MA Types:
Choose the type of moving average for fast and slow signals. The versatility—from basic SMA and EMA to more complex ones like HMA, TEMA, ZLEMA, ALMA, and KAMA—allows customization to fit different market scenarios.
ATR Parameters:
atrPeriod and atrMultiplier shape the volatility assessment, directly affecting entry filters and risk management through stop-loss and profit target levels.
Trend and Volume Filters:
Inputs such as useTrendFilter, minVolume, and the volume spike condition help confirm that a trade occurs in active, trending markets rather than during periods of low liquidity or market noise.
Trading Hours:
Restricting trade execution to specific hours (tradingStartHour and tradingEndHour) helps avoid illiquid or choppy markets outside of prime trading sessions.
Exit Strategies:
Parameters like trailOffset, profitTargetATRMult, and fixedStopMultiplier provide multiple layers of risk management and profit protection by tailoring how exits are generated relative to current market conditions.
Pyramiding and Fixed Trade Quantity:
The strategy supports multiple entries within a trend (up to 10 positions) and sets a predefined trade quantity (fixedQuantity) to maintain consistent exposure and risk per trade.
Dashboard Controls:
The resetDashboard input allows for on-the-fly resetting of performance metrics, keeping the strategy’s performance dashboard accurate and up-to-date.
Why This Strategy is Truly Exceptional
Multi-Faceted Adaptability:
The ability to switch seamlessly between various moving average types—each suited to particular market conditions—enables the strategy to adapt dynamically. This is a testament to the high level of coding sophistication and market insight infused within the system.
Robust Risk Management:
The integration of ATR-based stops, profit targets, and trailing stops ensures that every trade is executed with well-defined risk parameters. The system is designed to mitigate unexpected market swings while optimizing profit capture.
Comprehensive Market Filtering:
By combining moving average crossovers with volume analysis, volatility thresholds, and multi-timeframe trend filters, the strategy only enters trades under the most favorable conditions. This multi-layered filtering reduces noise and enhances signal quality.
-Final Thoughts-
The Dskyz Adaptive Futures Elite (DAFE) MAtrix with ATR-Powered Precision strategy is not just another trading algorithm—it is a multi-dimensional, fully customizable system built on advanced technical principles and sophisticated risk management techniques. Every function and input parameter has been carefully engineered to provide traders with a system that is both powerful and transparent.
For clients seeking a state-of-the-art trading solution that adapts dynamically to market conditions while maintaining strict discipline in risk management, this strategy truly stands in a class of its own.
****Please show support if you enjoyed this strategy. I'll have more coming out in the near future!!
-Dskyz
Caution
DAFE is experimental, not a profit guarantee. Futures trading risks significant losses due to leverage. Backtest, simulate, and monitor actively before live use. All trading decisions are your responsibility.
Market Structure Break with Volume & ATR#### Indicator Overview:
The *Market Structure Break with Volume & ATR (MSB+VolATR)* indicator is designed to identify significant market structure breakouts and breakdowns using a combination of price action, volume analysis, and volatility (ATR). It is particularly useful for traders who rely on higher timeframes for swing trading or positional trading. The indicator highlights bullish and bearish breakouts, retests, fakeouts, and potential buy/sell signals based on RSI overbought/oversold conditions.
---
### Key Features:
1. *Market Structure Analysis*:
- Identifies swing highs and lows on a user-defined higher timeframe.
- Detects breakouts and breakdowns when price exceeds these levels with volume and ATR validation.
2. *Volume Validation*:
- Ensures breakouts are accompanied by above-average volume, reducing the likelihood of false signals.
3. *ATR Filter*:
- Filters out insignificant breakouts by requiring the breakout size to exceed a multiple of the ATR.
4. *RSI Integration*:
- Adds a momentum filter by considering overbought/oversold conditions using RSI.
5. *Visual Enhancements*:
- Draws colored boxes to highlight breakout zones.
- Labels breakouts, retests, and fakeouts for easy interpretation.
- Displays stop levels for potential trades.
6. *Alerts*:
- Provides alert conditions for buy and sell signals, enabling real-time notifications.
---
### Input Settings and Their Effects:
1. **Timeframe (tf):
- Determines the higher timeframe for market structure analysis.
- *Effect*: A higher timeframe (e.g., 1D) reduces noise and provides more reliable swing points, while a lower timeframe (e.g., 4H) may generate more frequent but less reliable signals.
2. **Lookback Period (length):
- Defines the number of historical bars used to identify significant highs and lows.
- *Effect*: A longer lookback period (e.g., 50) captures broader market structure, while a shorter period (e.g., 20) reacts faster to recent price action.
3. **ATR Length (atr_length):
- Sets the period for ATR calculation.
- *Effect*: A shorter ATR length (e.g., 14) reacts faster to recent volatility, while a longer length (e.g., 21) smooths out volatility spikes.
4. **ATR Multiplier (atr_multiplier):
- Filters insignificant breakouts by requiring the breakout size to exceed ATR × multiplier.
- *Effect*: A higher multiplier (e.g., 0.2) reduces false signals but may miss smaller breakouts.
5. **Volume Multiplier (volume_multiplier):
- Sets the volume threshold for breakout validation.
- *Effect*: A higher multiplier (e.g., 1.0) ensures stronger volume confirmation but may reduce the number of signals.
6. **RSI Length (rsi_length):
- Defines the period for RSI calculation.
- *Effect*: A shorter RSI length (e.g., 10) makes the indicator more sensitive to recent price changes, while a longer length (e.g., 20) smooths out RSI fluctuations.
7. *RSI Overbought/Oversold Levels*:
- Sets the thresholds for overbought (default: 70) and oversold (default: 30) conditions.
- *Effect*: Adjusting these levels can make the indicator more or less conservative in generating signals.
8. **Stop Loss Multiplier (SL_Multiplier):
- Determines the distance of the stop-loss level from the entry price based on ATR.
- *Effect*: A higher multiplier (e.g., 2.0) provides wider stops, reducing the risk of being stopped out prematurely but increasing potential losses.
---
### How It Works:
1. *Breakout Detection*:
- A bullish breakout occurs when the close exceeds the highest high of the lookback period, with volume above the threshold and breakout size exceeding ATR × multiplier.
- A bearish breakout occurs when the close falls below the lowest low of the lookback period, with similar volume and ATR validation.
2. *Retest Logic*:
- After a breakout, if price retests the breakout zone without closing beyond it, a retest label is displayed.
3. *Fakeout Detection*:
- If price briefly breaks out but reverses back into the range, a fakeout label is displayed.
4. *Buy/Sell Signals*:
- A sell signal is generated when price reverses below a bullish breakout zone and RSI is overbought.
- A buy signal is generated when price reverses above a bearish breakout zone and RSI is oversold.
5. *Stop Levels*:
- Stop-loss levels are plotted based on ATR × SL_Multiplier, providing a visual guide for risk management.
---
### Who Can Use It and How:
1. *Swing Traders*:
- Use the indicator on daily or 4-hour timeframes to identify high-probability breakout trades.
- Combine with other technical analysis tools (e.g., trendlines, Fibonacci levels) for confirmation.
2. *Positional Traders*:
- Apply the indicator on weekly or daily charts to capture long-term trends.
- Use the stop-loss levels to manage risk over extended periods.
3. *Algorithmic Traders*:
- Integrate the buy/sell signals into automated trading systems.
- Use the alert conditions to trigger trades programmatically.
4. *Risk-Averse Traders*:
- Adjust the ATR and volume multipliers to filter out low-probability trades.
- Use wider stop-loss levels to avoid premature exits.
---
### Where to Use It:
- *Forex*: Identify breakouts in major currency pairs.
- *Stocks*: Spot trend reversals in high-volume stocks.
- *Commodities*: Trade breakouts in gold, oil, or other commodities.
- *Crypto*: Apply to Bitcoin, Ethereum, or other cryptocurrencies for volatile breakout opportunities.
---
### Example Use Case:
- *Timeframe*: 1D
- *Lookback Period*: 50
- *ATR Length*: 14
- *ATR Multiplier*: 0.1
- *Volume Multiplier*: 0.5
- *RSI Length*: 14
- *RSI Overbought/Oversold*: 70/30
- *SL Multiplier*: 1.5
In this setup, the indicator will:
1. Identify significant swing highs and lows on the daily chart.
2. Validate breakouts with volume and ATR filters.
3. Generate buy/sell signals when price reverses and RSI confirms overbought/oversold conditions.
4. Plot stop-loss levels for risk management.
---
### Conclusion:
The *MSB+VolATR* indicator is a versatile tool for traders seeking to capitalize on market structure breakouts with added confirmation from volume and volatility. By customizing the input settings, traders can adapt the indicator to their preferred trading style and risk tolerance. Whether you're a swing trader, positional trader, or algorithmic trader, this indicator provides actionable insights to enhance your trading strategy.
00 Averaging Down Backtest Strategy by RPAlawyer v21FOR EDUCATIONAL PURPOSES ONLY! THE CODE IS NOT YET FULLY DEVELOPED, BUT IT CAN PROVIDE INTERESTING DATA AND INSIGHTS IN ITS CURRENT STATE.
This strategy is an 'averaging down' backtester strategy. The goal of averaging/doubling down is to buy more of an asset at a lower price to reduce your average entry price.
This backtester code proves why you shouldn't do averaging down, but the code can be developed (and will be developed) further, and there might be settings even in its current form that prove that averaging down can be done effectively.
Different averaging down strategies exist:
- Linear/Fixed Amount: buy $1000 every time price drops 5%
- Grid Trading: Placing orders at price levels, often with increasing size, like $1000 at -5%, $2000 at -10%
- Martingale: doubling the position size with each new entry
- Reverse Martingale: decreasing position size as price falls: $4000, then $2000, then $1000
- Percentage-Based: position size based on % of remaining capital, like 10% of available funds at each level
- Dynamic/Adaptive: larger entries during high volatility, smaller during low
- Logarithmic: position sizes increase logarithmically as price drops
Unlike the above average costing strategies, it applies averaging down (I use DCA as a synonym) at a very strong trend reversal. So not at a certain predetermined percentage negative PNL % but at a trend reversal signaled by an indicator - hence it most closely resembles a dynamically moving grid DCA strategy.
Both entering the trade and averaging down assume a strong trend. The signals for trend detection are provided by an indicator that I published under the name '00 Parabolic SAR Trend Following Signals by RPAlawyer', but any indicator that generates numeric signals of 1 and -1 for buy and sell signals can be used.
The indicator must be connected to the strategy: in the strategy settings under 'External Source' you need to select '00 Parabolic SAR Trend Following Signals by RPAlawyer: Connector'. From this point, the strategy detects when the indicator generates buy and sell signals.
The strategy considers a strong trend when a buy signal appears above a very conservative ATR band, or a sell signal below the ATR band. The conservative ATR is chosen to filter ranging markets. This very conservative ATR setting has a default multiplier of 8 and length of 40. The multiplier can be increased up to 10, but there will be very few buy and sell signals at that level and DCA requirements will be very high. Trade entry and DCA occur at these strong trends. In the settings, the 'ATR Filter' setting determines the entry condition (e.g., ATR Filter multiplier of 9), and the 'DCA ATR' determines when DCA will happen (e.g., DCA ATR multiplier of 6).
The DCA levels and DCA amounts are determined as follows:
The first DCA occurs below the DCA Base Deviation% level (see settings, default 3%) which acts as a threshold. The thick green line indicates the long position avg price, and the thin red line below the green line indicates the 3% DCA threshold for long positions. The thick red line indicates the short position avg price, and the thin red line above the thick red line indicates the short position 3% DCA threshold. DCA size multiplier defines the DCA amount invested.
If the loss exceeds 3% AND a buy signal arrives below the lower ATR band for longs, or a sell signal arrives above the upper ATR band for shorts, then the first DCA will be executed. So the first DCA won't happen at 3%, rather 3% is a threshold where the additional condition is that the price must close above or below the ATR band (let's say the first DCA occured at 8%) – this is why the code resembles a dynamic grid strategy, where the grid moves such that alongside the first 3% threshold, a strong trend must also appear for DCA. At this point, the thick green/red line moves because the avg price is modified as a result of the DCA, and the thin red line indicating the next DCA level also moves. The next DCA level is determined by the first DCA level, meaning modified avg price plus an additional +8% + (3% * the Step Scale Multiplier in the settings). This next DCA level will be indicated by the modified thin red line, and the price must break through this level and again break through the ATR band for the second DCA to occur.
Since all this wasn't complicated enough, and I was always obsessed by the idea that when we're sitting in an underwater position for days, doing DCA and waiting for the price to correct, we can actually enter a short position on the other side, on which we can realize profit (if the broker allows taking hedge positions, Binance allows this in Europe).
This opposite position in this strategy can open from the point AFTER THE FIRST DCA OF THE BASE POSITION OCCURS. This base position first DCA actually indicates that the price has already moved against us significantly so time to earn some money on the other side. Breaking through the ATR band is also a condition for entry here, so the hedge position entry is not automatic, and the condition for further DCA is breaking through the DCA Base Deviation (default 3%) and breaking through the ATR band. So for the 'hedge' or rather opposite position, the entry and further DCA conditions are the same as for the base position. The hedge position avg price is indicated by a thick black line and the Next Hedge DCA Level is indicated by a thin black line.
The TPs are indicated by green labels for base positions and red labels for hedge positions.
No SL built into the strategy at this point but you are free to do your coding.
Summary data can be found in the upper right corner.
The fantastic trend reversal indicator Machine learning: Lorentzian Classification by jdehorty can be used as an external indicator, choose 'backtest stream' for the external source. The ATR Band multiplicators need to be reduced to 5-6 when using Lorentz.
The code can be further developed in several aspects, and as I write this, I already have a few ideas 😊
Cosine-Weighted MA ATR [InvestorUnknown]The Cosine-Weighted Moving Average (CWMA) ATR (Average True Range) indicator is designed to enhance the analysis of price movements in financial markets. By incorporating a cosine-based weighting mechanism , this indicator provides a unique approach to smoothing price data and measuring volatility, making it a valuable tool for traders and investors.
Cosine-Weighted Moving Average (CWMA)
The CWMA is calculated using weights derived from the cosine function, which emphasizes different data points in a distinctive manner. Unlike traditional moving averages that assign equal weight to all data points, the cosine weighting allocates more significance to values at the edges of the data window. This can help capture significant price movements while mitigating the impact of outlier values.
The weights are shifted to ensure they remain non-negative, which helps in maintaining a stable calculation throughout the data series. The normalization of these weights ensures they sum to one, providing a proportional contribution to the average.
// Function to calculate the Cosine-Weighted Moving Average with shifted weights
f_Cosine_Weighted_MA(series float src, simple int length) =>
var float cosine_weights = array.new_float(0)
array.clear(cosine_weights) // Clear the array before recalculating weights
for i = 0 to length - 1
weight = math.cos((math.pi * (i + 1)) / length) + 1 // Shift by adding 1
array.push(cosine_weights, weight)
// Normalize the weights
sum_weights = array.sum(cosine_weights)
for i = 0 to length - 1
norm_weight = array.get(cosine_weights, i) / sum_weights
array.set(cosine_weights, i, norm_weight)
// Calculate Cosine-Weighted Moving Average
cwma = 0.0
if bar_index >= length
for i = 0 to length - 1
cwma := cwma + array.get(cosine_weights, i) * close
cwma
Cosine-Weighted ATR Calculation
The ATR is an essential measure of volatility, reflecting the average range of price movement over a specified period. The Cosine-Weighted ATR uses a similar weighting scheme to that of the CWMA, allowing for a more nuanced understanding of volatility. By emphasizing more recent price movements while retaining sensitivity to broader trends, this ATR variant offers traders enhanced insight into potential price fluctuations.
// Function to calculate the Cosine-Weighted ATR with shifted weights
f_Cosine_Weighted_ATR(simple int length) =>
var float cosine_weights_atr = array.new_float(0)
array.clear(cosine_weights_atr)
for i = 0 to length - 1
weight = math.cos((math.pi * (i + 1)) / length) + 1 // Shift by adding 1
array.push(cosine_weights_atr, weight)
// Normalize the weights
sum_weights_atr = array.sum(cosine_weights_atr)
for i = 0 to length - 1
norm_weight_atr = array.get(cosine_weights_atr, i) / sum_weights_atr
array.set(cosine_weights_atr, i, norm_weight_atr)
// Calculate Cosine-Weighted ATR using true ranges
cwatr = 0.0
tr = ta.tr(true) // True Range
if bar_index >= length
for i = 0 to length - 1
cwatr := cwatr + array.get(cosine_weights_atr, i) * tr
cwatr
Signal Generation
The indicator generates long and short signals based on the relationship between the price (user input) and the calculated upper and lower bands, derived from the CWMA and the Cosine-Weighted ATR. Crossover conditions are used to identify potential entry points, providing a systematic approach to trading decisions.
// - - - - - CALCULATIONS - - - - - //{
bar b = bar.new()
float src = b.calc_src(cwma_src)
float cwma = f_Cosine_Weighted_MA(src, ma_length)
// Use normal ATR or Cosine-Weighted ATR based on input
float atr = atr_type == "Normal ATR" ? ta.atr(atr_len) : f_Cosine_Weighted_ATR(atr_len)
// Calculate upper and lower bands using ATR
float cwma_up = cwma + (atr * atr_mult)
float cwma_dn = cwma - (atr * atr_mult)
float src_l = b.calc_src(src_long)
float src_s = b.calc_src(src_short)
// Signal logic for crossovers and crossunders
var int signal = 0
if ta.crossover(src_l, cwma_up)
signal := 1
if ta.crossunder(src_s, cwma_dn)
signal := -1
//}
Backtest Mode and Equity Calculation
To evaluate its effectiveness, the indicator includes a backtest mode, allowing users to test its performance on historical data:
Backtest Equity: A detailed equity curve is calculated based on the generated signals over a user-defined period (startDate to endDate).
Buy and Hold Comparison: Alongside the strategy’s equity, a Buy-and-Hold equity curve is plotted for performance comparison.
Visualization and Alerts
The indicator features customizable plots, allowing users to visualize the CWMA, ATR bands, and signals effectively. The colors change dynamically based on market conditions, with clear distinctions between long and short signals.
Alerts can be configured to notify users of crossover events, providing timely information for potential trading opportunities.
Sine-Weighted MA ATR [InvestorUnknown]The Sine-Weighted MA ATR is a technical analysis tool designed to emphasize recent price data using sine-weighted calculations , making it particularly well-suited for analyzing cyclical markets with repetitive patterns . The indicator combines the Sine-Weighted Moving Average (SWMA) and a Sine-Weighted Average True Range (SWATR) to enhance price trend detection and volatility analysis.
Sine-Weighted Moving Average (SWMA):
Unlike traditional moving averages that apply uniform or exponentially decaying weights, the SWMA applies Sine weights to the price data.
Emphasis on central data points: The Sine function assigns more weight to the middle of the lookback period, giving less importance to the beginning and end points. This helps capture the main trend more effectively while reducing noise from recent volatility or older data.
// Function to calculate the Sine-Weighted Moving Average
f_Sine_Weighted_MA(series float src, simple int length) =>
var float sine_weights = array.new_float(0)
array.clear(sine_weights) // Clear the array before recalculating weights
for i = 0 to length - 1
weight = math.sin((math.pi * (i + 1)) / length)
array.push(sine_weights, weight)
// Normalize the weights
sum_weights = array.sum(sine_weights)
for i = 0 to length - 1
norm_weight = array.get(sine_weights, i) / sum_weights
array.set(sine_weights, i, norm_weight)
// Calculate Sine-Weighted Moving Average
swma = 0.0
if bar_index >= length
for i = 0 to length - 1
swma := swma + array.get(sine_weights, i) * close
swma
Sine-Weighted ATR:
This is a variation of the Average True Range (ATR), which measures market volatility. Like the SWMA, the ATR is smoothed using Sine-based weighting, where central values are more heavily considered compared to the extremities. This improves sensitivity to changes in volatility while maintaining stability in highly volatile markets.
// Function to calculate the Sine-Weighted ATR
f_Sine_Weighted_ATR(simple int length) =>
var float sine_weights_atr = array.new_float(0)
array.clear(sine_weights_atr)
for i = 0 to length - 1
weight = math.sin((math.pi * (i + 1)) / length)
array.push(sine_weights_atr, weight)
// Normalize the weights
sum_weights_atr = array.sum(sine_weights_atr)
for i = 0 to length - 1
norm_weight_atr = array.get(sine_weights_atr, i) / sum_weights_atr
array.set(sine_weights_atr, i, norm_weight_atr)
// Calculate Sine-Weighted ATR using true ranges
swatr = 0.0
tr = ta.tr(true) // True Range
if bar_index >= length
for i = 0 to length - 1
swatr := swatr + array.get(sine_weights_atr, i) * tr
swatr
ATR Bands:
Upper and lower bands are created by adding/subtracting the Sine-Weighted ATR from the SWMA. These bands help identify overbought or oversold conditions, and when the price crosses these levels, it may generate long or short trade signals.
// - - - - - CALCULATIONS - - - - - //{
bar b = bar.new()
float src = b.calc_src(swma_src)
float swma = f_Sine_Weighted_MA(src, ma_length)
// Use normal ATR or Sine-Weighted ATR based on input
float atr = atr_type == "Normal ATR" ? ta.atr(atr_len) : f_Sine_Weighted_ATR(atr_len)
// Calculate upper and lower bands using ATR
float swma_up = swma + (atr * atr_mult)
float swma_dn = swma - (atr * atr_mult)
float src_l = b.calc_src(src_long)
float src_s = b.calc_src(src_short)
// Signal logic for crossovers and crossunders
var int signal = 0
if ta.crossover(src_l, swma_up)
signal := 1
if ta.crossunder(src_s, swma_dn)
signal := -1
//}
Signal Logic:
Long/Short Signals are triggered when the price crosses above or below the Sine-Weighted ATR bands
Backtest Mode and Equity Calculation
To evaluate its effectiveness, the indicator includes a backtest mode, allowing users to test its performance on historical data:
Backtest Equity: A detailed equity curve is calculated based on the generated signals over a user-defined period (startDate to endDate).
Buy and Hold Comparison: Alongside the strategy’s equity, a Buy-and-Hold equity curve is plotted for performance comparison.
Alerts
The indicator includes built-in alerts for both long and short signals, ensuring users are promptly notified when market conditions meet the criteria for an entry or exit.
Bollinger Bands Enhanced StrategyOverview
The common practice of using Bollinger bands is to use it for building mean reversion or squeeze momentum strategies. In the current script Bollinger Bands Enhanced Strategy we are trying to combine the strengths of both strategies types. It utilizes Bollinger Bands indicator to buy the local dip and activates trailing profit system after reaching the user given number of Average True Ranges (ATR). Also it uses 200 period EMA to filter trades only in the direction of a trend. Strategy can execute only long trades.
Unique Features
Trailing Profit System: Strategy uses user given number of ATR to activate trailing take profit. If price has already reached the trailing profit activation level, scrip will close long trade if price closes below Bollinger Bands middle line.
Configurable Trading Periods: Users can tailor the strategy to specific market windows, adapting to different market conditions.
Major Trend Filter: Strategy utilizes 100 period EMA to take trades only in the direction of a trend.
Flexible Risk Management: Users can choose number of ATR as a stop loss (by default = 1.75) for trades. This is flexible approach because ATR is recalculated on every candle, therefore stop-loss readjusted to the current volatility.
Methodology
First of all, script checks if currently price is above the 200-period exponential moving average EMA. EMA is used to establish the current trend. Script will take long trades on if this filtering system showing us the uptrend. Then the strategy executes the long trade if candle’s low below the lower Bollinger band. To calculate the middle Bollinger line, we use the standard 20-period simple moving average (SMA), lower band is calculated by the substruction from middle line the standard deviation multiplied by user given value (by default = 2).
When long trade executed, script places stop-loss at the price level below the entry price by user defined number of ATR (by default = 1.75). This stop-loss level recalculates at every candle while trade is open according to the current candle ATR value. Also strategy set the trailing profit activation level at the price above the position average price by user given number of ATR (by default = 2.25). It is also recalculated every candle according to ATR value. When price hit this level script plotted the triangle with the label “Strong Uptrend” and start trail the price at the middle Bollinger line. It also started to be plotted as a green line.
When price close below this trailing level script closes the long trade and search for the next trade opportunity.
Risk Management
The strategy employs a combined and flexible approach to risk management:
It allows positions to ride the trend as long as the price continues to move favorably, aiming to capture significant price movements. It features a user-defined ATR stop loss parameter to mitigate risks based on individual risk tolerance. By default, this stop-loss is set to a 1.75*ATR drop from the entry point, but it can be adjusted according to the trader's preferences.
There is no fixed take profit, but strategy allows user to define user the ATR trailing profit activation parameter. By default, this stop-loss is set to a 2.25*ATR growth from the entry point, but it can be adjusted according to the trader's preferences.
Justification of Methodology
This strategy leverages Bollinger bangs indicator to open long trades in the local dips. If price reached the lower band there is a high probability of bounce. Here is an issue: during the strong downtrend price can constantly goes down without any significant correction. That’s why we decided to use 200-period EMA as a trend filter to increase the probability of opening long trades during major uptrend only.
Usually, Bollinger Bands indicator is using for mean reversion or breakout strategies. Both of them have the disadvantages. The mean reversion buys the dip, but closes on the return to some mean value. Therefore, it usually misses the major trend moves. The breakout strategies usually have the issue with too high buy price because to have the breakout confirmation price shall break some price level. Therefore, in such strategies traders need to set the large stop-loss, which decreases potential reward to risk ratio.
In this strategy we are trying to combine the best features of both types of strategies. Script utilizes ate ATR to setup the stop-loss and trailing profit activation levels. ATR takes into account the current volatility. Therefore, when we setup stop-loss with the user-given number of ATR we increase the probability to decrease the number of false stop outs. The trailing profit concept is trying to add the beat feature from breakout strategies and increase probability to stay in trade while uptrend is developing. When price hit the trailing profit activation level, script started to trail the price with middle line if Bollinger bands indicator. Only when candle closes below the middle line script closes the long trade.
Backtest Results
Operating window: Date range of backtests is 2020.10.01 - 2024.07.01. It is chosen to let the strategy to close all opened positions.
Commission and Slippage: Includes a standard Binance commission of 0.1% and accounts for possible slippage over 5 ticks.
Initial capital: 10000 USDT
Percent of capital used in every trade: 30%
Maximum Single Position Loss: -9.78%
Maximum Single Profit: +25.62%
Net Profit: +6778.11 USDT (+67.78%)
Total Trades: 111 (48.65% win rate)
Profit Factor: 2.065
Maximum Accumulated Loss: 853.56 USDT (-6.60%)
Average Profit per Trade: 61.06 USDT (+1.62%)
Average Trade Duration: 76 hours
These results are obtained with realistic parameters representing trading conditions observed at major exchanges such as Binance and with realistic trading portfolio usage parameters.
How to Use
Add the script to favorites for easy access.
Apply to the desired timeframe and chart (optimal performance observed on 4h BTC/USDT).
Configure settings using the dropdown choice list in the built-in menu.
Set up alerts to automate strategy positions through web hook with the text: {{strategy.order.alert_message}}
Disclaimer:
Educational and informational tool reflecting Skyrex commitment to informed trading. Past performance does not guarantee future results. Test strategies in a simulated environment before live implementation
Fourier Adjusted Average True Range [BackQuant]Fourier Adjusted Average True Range
1. Conceptual Foundation and Innovation
The FA-ATR leverages the principles of Fourier analysis to dissect market prices into their constituent cyclical components. By applying Fourier Transform to the price data, the FA-ATR captures the dominant cycles and trends which are often obscured in noisy market data. This integration allows the FA-ATR to adapt its readings based on underlying market dynamics, offering a refined view of volatility that is sensitive to both market direction and momentum.
2. Technical Composition and Calculation
The core of the FA-ATR involves calculating the traditional ATR, which measures market volatility by decomposing the entire range of price movements. The FA-ATR extends this by incorporating a Fourier Transform of price data to assess cyclical patterns over a user-defined period 'N'. This process synthesizes both the magnitude of price changes and their rhythmic occurrences, resulting in a more comprehensive volatility indicator.
Fourier Transform Application: The Fourier series is calculated using price data to identify the fundamental frequency of market movements. This frequency helps in adjusting the ATR to reflect more accurately the current market conditions.
Dynamic Adjustment: The ATR is then adjusted by the magnitude of the dominant cycle from the Fourier analysis, enhancing or reducing the ATR value based on the intensity and phase of market cycles.
3. Features and User Inputs
Customizability: Traders can modify the Fourier period, ATR period, and the multiplication factor to suit different trading styles and market environments.
Visualization : The FA-ATR can be plotted directly on the chart, providing a visual representation of volatility. Additionally, the option to paint candles according to the trend direction enhances the usability and interpretative ease of the indicator.
Confluence with Moving Averages: Optionally, a moving average of the FA-ATR can be displayed, serving as a confluence factor for confirming trends or potential reversals.
4. Practical Applications
The FA-ATR is particularly useful in markets characterized by periodic fluctuations or those that exhibit strong cyclical trends. Traders can utilize this indicator to:
Adjust Stop-Loss Orders: More accurately set stop-loss orders based on a volatility measure that accounts for cyclical market changes.
Trend Confirmation: Use the FA-ATR to confirm trend strength and sustainability, helping to avoid false signals often encountered in volatile markets.
Strategic Entry and Exit: The indicator's responsiveness to changing market dynamics makes it an excellent tool for planning entries and exits in a trend-following or a breakout trading strategy.
5. Advantages and Strategic Value
By integrating Fourier analysis, the FA-ATR provides a volatility measure that is both adaptive and anticipatory, giving traders a forward-looking tool that adjusts to changes before they become apparent through traditional indicators. This anticipatory feature makes it an invaluable asset for traders looking to gain an edge in fast-paced and rapidly changing market conditions.
6. Summary and Usage Tips
The Fourier Adjusted Average True Range is a cutting-edge development in technical analysis, offering traders an enhanced tool for assessing market volatility with increased accuracy and responsiveness. Its ability to adapt to the market's cyclical nature makes it particularly useful for those trading in highly volatile or cyclically influenced markets.
Traders are encouraged to integrate the FA-ATR into their trading systems as a supplementary tool to improve risk management and decision-making accuracy, thereby potentially increasing the effectiveness of their trading strategies.
INDEX:BTCUSD
INDEX:ETHUSD
BINANCE:SOLUSD
Big Poppa Code Strat & Momentum Strategy IndicatorThis indicator is a combination of a few things in order to work with a unique trading style gleaned from Callme100k, jrgreatness, TrustMyLevels , FaithInTheStrat, Rob Smith and Saty Mahajan.
This Indicator is created to help you day trade using, ATR Fibonacci Levels, Price Action and Momentum.
It displays Fibonacci Levels Based on ATR to indicate when a security is 0.236, 0.382 +- the Days Open, +- the Days Open, 0.618 +- the Days Open and 1.0 +- Days Open.
To understand this script you need to understand
Average True Range (ATR)
1 Bar Inside Bar
2 Bar Outside Bar (Break either the top or bottom)
3 Bar Engulfing Bar
Strat Setups - 212, 322, 312
Fibonacci - 0.236, 0.382, 0.618, 1.0
Moving Averages
A Trend is considered bullish when (green)
Current Price is greater than the Fast EMA Value (8)
Fast EMA is greater than PIVOT EMA Value (21)
Pivot EMA is greater than SLOW EMA Value (34)
OR Hull is trending up and the Price is above the Volume Weighted Moving Average and price is above VWAP
A trend is considered Bearish when (red)
Current Price is less than the Fast EMA Value (8)
Fast EMA is less than PIVOT EMA Value (21)
Pivot EMA is less than SLOW EMA Value (34)
OR Hull is trending down and the Price is below the Volume Weighted Moving Average and price is below VWAP
If these conditions are not met then the Momentum is in Conflict (orange)
The Momentum band will match the color of the current trend
The table that is present can be turned off at any time lets you see
1) If Moving Averages are showing bullish, bearish or in conflict
2) If There us Time Frame Continuity, (if 5 min up, are all the other timeframes up also)
3) How much of the ATR have we moved on the day
4) Are we in Call or Put range for the day based on ATR Fib Levels
The Ideal situation for entering a call
1) Momentum is Green
2) FTFC on Green
3) A Strat Actionable Signal is present
4) You are in the call range, 0.236 - 0.618 ATR + the Price
5) The ATR still has room, I.e only 50% of the ATR has been run already
Ideal situation from entering a put
1) Momentum is red
2) FTFC on Red
3) A Strat Actionable Signal is present
4) You are in the put range, 0.236 - 0.618 ATR - the Price
5) The ATR still has room, I.e only 50% of the ATR has been run already
Exit the trade for these reasons you entered (for profit or loss)
1) ATR has no more room
2) FTFC is now in conflict
3) Momentum has shifted
Take Profit when
1) You reach a new ATR Level 0.618, 1.0 , -0.618, -1, etc
Passive Stop Loss
1) Open Price if you are aggressive
2) Next ATR Level Down or Up
Feel free to take profit and leave runners
This script does not give signals, you should do your own research, I am not a financial advisors, I am simply applying principles of seasoned veterans to code. You make all decisions about how you buy, sell and trade. The creator of this script makes no promises and takes no responsibility for your personal trading.
To research the methods described above look up
Rob Smith : The Strat
Saty Mahajan : ATR Levels
Fibonacci
Using the HULL Moving Average
Exponential Moving Averages
VWAP
VWMA
Modified ATR Indicator [KL]Modified Average True Range (ATR) Indicator
This indicator displays the ATR with relative highs and relative lows statistically determined.
What is ATR:
To know what ATR is, we need to understand what a True Range (TR) is.
- TR at a given bar is the highest distance between points: a) High vs low, b) High vs Close, and c) Low vs Close.
- ATR is the moving average of TRs over a predefined lookback period; 14 is the most commonly used.
- ATR can be mathematically expressed as:
Why is ATR Important
ATR often used to measure volatility; high volatility is indicated by high ATR, vice versa for low. This is a versatile tool allowing traders to determine entry/exit points, as well as the size of stop losses and when to take profits relative to it.
This is an opinion: Through observations, I have noticed that ATR can also indirectly tell us the levels of relative volume. This intuitively makes sense because in order to increase length of TR, high amounts of capital inflow/outflow is required (graphically speaking, high volume is required in order to make lengths of candle sticks longer). The relationship between ATR and relative volume should hold unless the market is illiquid to the extreme that there is no relationship between volume and price.
That said, knowing the relative lows/highs of ATR is very useful. It can be interpreted as:
- Relative high = high volatility, usually during sell offs
- Relative low = decreasing volume, could indicate price consolidation
Instead of arbitrarily determining whether ATR is high/low, this indicator will determine relative highs and relative lows using a simple statistical model.
How relative high/low is determined by this model
This indicator applies two-tailed hypothesis testing to test whether ATR (ie. say lookback of 14) has greatly deviated from a larger sample size (ie. lookback of 50). Assuming ATR is normally distributed and variance is known, then test statistic (z) can be used to determine whether ATR14 is within the critical area under Null Hypothesis: ATR14 == ATR50. If z falls below/above the left/right critical values (ie. 1.645 for a 90% confidence interval), then this is shown by the indicator through using different colors to plot the ATR line.
[Top] Simple ATR TP/SLSimple TP/SL from ATR (Locked per Bar) - Advanced Position Management Tool
What This Indicator Does:
Automatically calculates and displays Take Profit (TP) and Stop Loss (SL) levels based on Average True Range (ATR)
Locks ATR values and direction signals at the start of each bar to prevent repainting and provide consistent levels
Offers multiple direction detection modes including real-time candle-based positioning for dynamic trading approaches
Displays entry, TP, and SL levels as clean horizontal lines that extend from the current bar
Original Features That Make This Script Unique:
Bar-Locked ATR System: ATR values are captured and frozen at bar open, ensuring levels remain stable throughout the bar's progression
Multi-Modal Direction Detection: Four distinct modes for determining TP/SL positioning - Trend Following (EMA-based), Bullish Only, Bearish Only, and real-time Candle Based
Real-Time Candle Flipping: In Candle Based mode, TP/SL levels flip immediately when the current candle changes from bullish to bearish or vice versa
Persistent Line Management: Uses efficient line object management to prevent ghost lines and maintain clean visual presentation
Flexible Base Price Selection: Choose between Open (static), Close (dynamic), or midpoint (H+L)/2 for entry level calculation
How The Algorithm Works:
ATR Calculation: Captures ATR value at each bar open using specified length parameter, maintaining consistency throughout the bar
Direction Determination: Uses different methods based on selected mode - EMA crossover for trend following, or real-time candle color for dynamic positioning
Level Calculation: TP level = Base Price + (Direction × TP Multiplier × ATR), SL level = Base Price - (Direction × SL Multiplier × ATR)
Visual Management: Creates persistent line objects once, then updates their positions every bar for optimal performance
Direction Modes Explained:
Trend Following: Uses 5-period and 12-period EMA relationship to determine trend direction (locked at bar open)
Bullish Only: Always places TP above and SL below entry (traditional long setup)
Bearish Only: Always places TP below and SL above entry (traditional short setup)
Candle Based: Dynamically adjusts based on current candle direction - flips in real-time as candle develops
Key Input Parameters:
ATR Length: Period for ATR calculation (default 14) - longer periods provide smoother volatility measurement
TP Multiplier: Take profit distance as multiple of ATR (default 1.0) - higher values target larger profits
SL Multiplier: Stop loss distance as multiple of ATR (default 1.0) - higher values allow more room for price movement
Base Price: Reference point for level calculations - Open for static entry, Close for dynamic tracking
Direction Mode: Method for determining whether TP goes above or below entry level
How To Use This Indicator:
For Position Sizing: Use the displayed SL distance to calculate appropriate position size based on your risk tolerance
For Entry Timing: Wait for price to approach the entry level before taking positions
For Risk Management: Set your actual stop loss orders at or near the displayed SL level
For Profit Taking: Use the TP level as initial profit target, consider scaling out at this level
Mode Selection: Choose Candle Based for scalping and quick reversals, Trend Following for swing trading
Visual Style Customization:
Line Colors: Customize TP line color (default teal) and SL line color (default orange) for easy identification
Line Widths: Adjust TP/SL line thickness (1-5) and entry line thickness (1-3) for visibility preferences
Clean Display: Lines extend 3 bars forward from current bar and update position dynamically
Best Practices:
Use on clean charts without multiple overlapping indicators for clearest visual interpretation
Combine with volume analysis and key support/resistance levels for enhanced decision making
Adjust ATR length based on your trading timeframe - shorter for scalping, longer for position trading
Test different TP/SL multipliers based on the volatility characteristics of your chosen instruments
Consider using Trend Following mode during strong trending periods and Candle Based during ranging markets
ADR/ATR Session by LK## **Features**
1. **Custom ADR & ATR Calculation**
* Calculates **Average Daily Range (ADR)** and **Average True Range (ATR)** separately for:
* **Session timeframe** (default H4 / 06:00–13:00)
* **Daily timeframe**
* Independent smoothing method selection (**SMA, EMA, RMA, WMA**) for H4 ADR, H4 ATR, Daily ADR, and Daily ATR.
2. **Percentage Metrics**
* % of ADR / ATR covered by the **current H4 bar**.
* ADR / ATR expressed as a percentage of the **current price**.
* % of ADR already reached for the **current day**.
* % of Daily ATR vs current day’s True Range.
3. **Dynamic Chart Lines**
* Draws **3 lines for H4**: Session Open, ADR High, ADR Low.
* Draws **3 lines for Daily**: Daily Open, ADR High, ADR Low.
* Lines **extend to the right** so they stay visible across the chart.
* Colors and widths are fully customizable.
4. **Real-Time Data Table**
* Compact table displaying all ADR/ATR values and percentages.
* Adjustable table font size (**tiny, small, normal, large, huge**).
* Transparent background option for minimal chart obstruction.
5. **Flexible Session Settings**
* Select session start and end time in hours/minutes.
* Choose session timezone (chart timezone or major financial centers).
* Toggle H4 lines, Daily lines separately.
6. **Lookahead Control**
* Option to wait for higher-timeframe candle close before updating values (more accurate, less repainting).
---
## **How to Use**
### **1. Adding the Indicator**
* Copy and paste the Pine Script into TradingView’s Pine Editor.
* Click **“Add to chart”**.
* Make sure your chart supports the higher timeframes you choose (e.g., H4 and Daily).
### **2. Setting Your Session**
* **Session Start Hour** & **End Hour** → Defines the intraday session to measure ADR/ATR (default: 06:00–13:00).
* **Session Timezone** → Pick “Chart” or a major financial center (e.g., New York, London, Tokyo).
### **3. Choosing Smoothing Methods**
* For each ADR/ATR (H4 and Daily), choose:
* SMA (Simple)
* EMA (Exponential)
* RMA (Wilder’s smoothing)
* WMA (Weighted)
### **4. Adjusting Chart Display**
* **Show H4 Lines** → Displays session open and ADR High/Low for the current H4 session.
* **Show Daily Lines** → Displays daily open and ADR High/Low.
* Customize line colors and widths.
### **5. Reading the Table**
* **H4 Section**
* ADR / ATR values for the selected session.
* % of ADR/ATR covered by the **current H4 bar**.
* ADR/ATR as % of the current price.
* **Daily Section**
* ADR / ATR for the daily timeframe.
* % of ADR already covered by today’s range.
* ADR/ATR as % of price.
### **6. Pro Tips**
* Use **H4 ADR %** to gauge intraday exhaustion — if current range is near 100%, market may slow or reverse.
* Use **Daily ADR %** for swing trade context — if a day has moved beyond its ADR, expect lower continuation probability.
* Combine with support/resistance to identify high-probability reversal zones.
Position Size Calculator (Fixed % or ATR-based Stop Support)Position Size Calculator (Fixed % or ATR-based Stop Support)
Purpose and Background
This indicator allows traders to calculate appropriate position sizes directly on the chart, based on a key rule:
“What percentage of your capital are you willing to risk per trade?”
While many traders focus on entries and indicators, position sizing and risk allocation are often overlooked.
This tool visualizes and simplifies the “1% risk rule” promoted by IBD (Investor’s Business Daily) and William J. O’Neil, helping both beginners and experienced traders maintain disciplined capital management.
Key Features
Automatically calculates and displays:
・ Position Size
The number of units (shares, contracts, coins) you can hold based on your stop-loss range and risk allowance.
・ Stop Price
The price level at which your stop-loss would be triggered.
・ Risk Amount
The maximum loss per trade based on your portfolio size and risk percentage.
Two stop-loss modes available:
・ Fixed % Mode
O’Neil suggests using up to 8% stop-loss in uptrends and keeping it tighter (around 4%) in corrections. This mode allows flexible manual settings.
・ ATR-Based Mode
Uses the asset’s average volatility to dynamically calculate stop-loss width using the Average True Range (ATR).
ATR Usage and Recommended Settings
ATR helps you avoid noise-based stop-outs and align your risk with market volatility.
There are two parameters you can adjust:
・ ATR Length
Defines how many bars are used to calculate the average range.
・Shorter values (5–10) respond faster for day trades
・Longer values (14–21) offer smoother ranges for swing/position trades(Default is 14)
・ATR Multiplier
Sets how wide the stop-loss is by multiplying the ATR value:
・Day trading: 1.0–1.5×
・Swing trading: 1.5–2.5×
・Position trading: 2.0–3.0×
Practical Examples: Risk % × Stop-Loss % → Max Positions
This tool helps estimate how many positions you can hold in a portfolio based on your risk per trade and stop width.
Examples:
・Risk 0.5%, Stop 8% → Max 16 positions
・Risk 0.5%, Stop 4% → Max 8 positions
・Risk 1.0%, Stop 8% → Max 8 positions
・Risk 1.0%, Stop 4% → Max 4 positions
・Risk 2.0%, Stop 8% → Max 4 positions
・Risk 2.0%, Stop 4% → Max 2 positions
These assume worst-case scenarios where all positions are stopped out simultaneously within your overall portfolio risk limit.
Display & Customization Options
・ Currency Display: USD or JPY
No currency conversion is applied. Select based on your trading region (e.g., USD for U.S. stocks, JPY for Japanese stocks).
Support for additional currencies can be added upon request.
・ Show/Hide Decimal Places
Toggle decimals for better visibility. Ideal for fractional assets like crypto and CFDs.
・ Position of Output
Choose from top-right, middle-right, or bottom-right on the chart.
・ Text Display Size: Large / Normal / Small
Choose the table size that best suits your viewing preferences.
・ Explanation of Displayed Labels
・ Position Size : Units to buy/sell based on risk
・ Stop Price : Price where stop-loss is triggered
・ Risk Amount : Max loss allowed for the trade
How to Use
1、Set your Portfolio Size
2、Choose your Currency (USD or JPY)
3、Input Risk per Trade (%) (e.g., 1%)
4、Select Stop Loss Method
・ Fixed % : Enter a manual stop-loss percent (e.g., 8%)
・ ATR : Then also enter:
・ ATR Length : Number of bars used to calculate ATR (e.g., 14)
・ ATR Multiplier : Factor applied to ATR to determine stop-loss (e.g., 2.0)
5、Adjust decimals, label position, or text size as needed
6、The result is displayed in a table directly on your chart
Notes
・ Uses the current close price (close) as the basis
Real-time bid/ask data isn't available in Pine Script, so the close price is used for consistent results.
・ No buy/sell signals are generated
This tool is for position sizing and risk calculation only, not trade entries.
Recommended For
・Traders who want precise, rule-based position sizing
・Users following IBD or O’Neil’s 1% risk principle
・Those incorporating ATR for stop-loss strategies
・Multi-asset traders (stocks, crypto, CFDs, etc.)
・ Anyone who wants to calculate position size and risk without using a calculator or external tool—fully inside TradingView
Engulfing and ATR-Imbalance [odnac]This Pine Script indicator combines two powerful concepts—Engulfing Candlestick Patterns and ATR Imbalance—to identify potential market reversal points with increased precision.
Engulfing Candlestick Patterns:
Bullish Engulfing: Identified when a candle closes higher than it opens, and it completely engulfs the previous candle (previous close is lower than the current open, and previous high is lower than the current close).
Bearish Engulfing: Identified when a candle closes lower than it opens, and it completely engulfs the previous candle (previous close is higher than the current open, and previous low is higher than the current close).
Bar Coloring: These patterns are highlighted with a customizable color (light gray by default) to make them easily identifiable.
ATR-Based Imbalance:
The Average True Range (ATR) is used to measure market volatility, and this script checks if the current candle’s range (difference between high and low) exceeds a defined multiple of the ATR, indicating a possible imbalance.
Imbalance Detection: If the current candle’s range is greater than ATR * imbalance multiplier (default multiplier: 1.5), it is marked as an ATR imbalance.
Bar Coloring: Candles with a significant imbalance (greater range than the ATR-based threshold) are highlighted in yellow, indicating an outlier or extreme price movement.
Engulfing + ATR Imbalance:
When both a Bullish Engulfing pattern and an ATR Imbalance are detected, a green triangle up is plotted below the bar, signaling a potential bullish reversal.
Conversely, when both a Bearish Engulfing pattern and an ATR Imbalance occur, a red triangle down is plotted above the bar, signaling a potential bearish reversal.
User Inputs:
Engulfing Plot: Enable or disable the plotting of Engulfing Candles.
ATR Length: Set the period used to calculate the ATR (default is 5).
Imbalance Multiplier: Adjust the multiplier to define the threshold for ATR imbalance detection (default is 1.5).
Bar Colors: Customizable color for both Engulfing candles and Imbalance candles.
Engulfing & Imbalance Plot: Enable or disable plotting of the combined conditions (Engulfing + ATR Imbalance) with arrows.
How This Indicator Helps:
By combining price action patterns with volatility analysis, this indicator highlights high-probability reversal points where significant price movement (imbalance) coincides with a clear Engulfing pattern. Traders can use these signals to time entries or exits based on both price action and market volatility.
The Ultimate ATR-BBW Market Volatility Indicator"The ATR-BBW Market Volatility Indicator combines the Average True Range (ATR) and Bollinger Bands Width (BBW) to provide a measure of market volatility. This indicator does not indicate bullish or bearish trends, but rather the magnitude of price fluctuations.
* Usage: When the indicator moves upward, it suggests increasing market volatility, indicating that prices are moving within a wider range. Conversely, a downward movement implies decreasing volatility, signifying that prices are moving within a narrower range.
* Note: This sub-indicator solely reflects market volatility and does not provide buy or sell signals.
Investing involves risk. Please conduct thorough research before making any investment decisions.
ATR and BBW Explained:
* Average True Range (ATR): ATR is a technical analysis indicator used to measure market volatility. It calculates the average of a series of true ranges, where the true range is the greatest of the following:
* The current high minus the current low
* The absolute value of the current high minus the previous close
* The absolute value of the current low minus the previous close
* A higher ATR value indicates higher volatility, while a lower value suggests lower volatility.
* Bollinger Bands Width (BBW): Bollinger Bands are plotted two standard deviations above and below a simple moving average. BBW measures the distance between the upper and lower bands. A wider BBW indicates higher volatility, as prices are moving further away from the moving average. Conversely, a narrower BBW suggests lower volatility.
Combining ATR and BBW:
By combining ATR and BBW, the ATR-BBW indicator provides a more comprehensive view of market volatility. ATR captures the overall volatility of the market, while BBW measures the volatility relative to the moving average. Together, they provide a more robust indicator of market conditions and can be used to identify potential trading opportunities.
Why ATR and BBW are Effective for Measuring Volatility:
* ATR directly measures the actual price movement, regardless of the direction.
* BBW shows how much prices are deviating from their average, indicating the strength of the current trend.
* Combined: By combining these two measures, the ATR-BBW indicator provides a more comprehensive and accurate assessment of market volatility.
In essence, the ATR-BBW indicator helps traders understand the magnitude of price fluctuations, allowing them to make more informed trading decisions.
ALT - ATR Percent Rank🔵 Description
The "ALT - ATR Percent Rank" indicator is a financial analysis tool designed to assess the volatility of an asset relative to its historical behavior, using the Average True Range (ATR) metric.
🔵 Purpose
The indicator aims to provide traders with insights into how the current volatility of an asset compares to its past levels. By evaluating the Percent Rank of the ATR, traders can determine if the current ATR value is high or low in the context of a specified historical period.
🔵 Functionality
• Asset and Timeframe Flexibility
Selectable Asset: Users can choose to apply the indicator to a different asset than the one currently displayed on the chart. This is particularly useful for comparing the volatility of multiple assets without switching charts.
Customizable Timeframe: The indicator can be set to analyze the ATR on different timeframes, regardless of the chart's current timeframe. This allows for multi-timeframe analysis without changing the view of the current chart.
• ATR Calculation
The Average True Range (ATR) is calculated over a user-defined number of bars (ATR Length). ATR is a commonly used measure of volatility that captures the degree of price movement per bar.
REF: Average True Range (ATR) Calculation
• Percent Rank Analysis
The indicator computes the Percent Rank of the current ATR value based on a specified lookback period (Percent Rank Lookback). This tells users how the current ATR compares to ATR values over the recent past, expressed as a percentile. For example, a Percent Rank of 90% indicates that the current ATR is higher than 90% of its values over the chosen lookback period, suggesting higher volatility.
• Visualization
The result is plotted as a line on a separate panel below the main trading chart, making it easy to view changes in volatility relative to historical levels.
🔵 Use Cases
• Trend Confirmation
Traders might use the indicator to confirm if a price movement is backed by significant volatility changes, which could validate the strength of a trend.
• Risk Management
Understanding when an asset is experiencing unusually high or low volatility could help in adjusting trading strategies, such as altering position sizes or setting stop-loss orders.
• Comparative Analysis
By enabling the analysis of different assets or timeframes, traders can perform comparative volatility studies, which can be essential in portfolio management or when seeking diversification opportunities.
This indicator is a valuable tool for traders who rely on volatility analysis to make informed trading decisions, providing a clear, quantifiable measure of how current market conditions compare to historical data.
Focused Average True RangeThe Focused Average True Range (FATR) is a modified version of the classic Average True Range (ATR) indicator. It is designed to provide traders with more accurate data on volatility, minimizing the impact of sharp spikes in volatility.
The main distinction between the Focused ATR and the standard ATR lies in the utilization of percentiles. Instead of calculating the average price change as the regular ATR does, the Focused ATR selects a value in the middle of the range of price changes. This makes it less sensitive to sharp changes in volatility, which can be beneficial in certain trading scenarios.
Settings:
Percentile. This parameter determines which value in the series of price changes will be used. For example, if the percentile is set to 50, the indicator will use the median value of the series of price changes. This is the default value. Imagine a class of students lined up by height, and instead of calculating the average height of all students, we take the height of the students in the middle of the line. Similarly here, we take the ATR from the middle of the series. Increasing the percentile will lead to the use of a value closer to the upper bound of the range, while decreasing the percentile will lead to the use of a value closer to the lower bound.
How to Use:
The Focused ATR is especially useful for determining the sizes of stop-losses and take-profits, thanks to its ability to consider the value in the middle of the series of price changes rather than the average value. This allows traders to more accurately assess volatility and risk, which in turn can assist in optimizing trading strategies
---
Фокусированный Средний Истинный Диапазон (Focused ATR) представляет собой модифицированную версию классического индикатора ATR. Он разработан с целью предоставления трейдерам более точных данных о волатильности, минимизируя влияние резких скачков волатильности.
Основное отличие Фокусированного ATR от стандартного ATR заключается в использовании процентиля. Вместо того, чтобы рассчитывать среднее значение изменений цены, как это делает обычный ATR, Фокусированный ATR выбирает значение в середине диапазона изменений цены. Это делает его менее чувствительным к резким изменениям волатильности, что может быть полезно в некоторых торговых сценариях.
Настройки:
Процентиль. Этот параметр определяет, какое значение в ряду изменений цены будет использоваться. Например, если процентиль равен 50, то индикатор будет использовать медианное значение ряда изменений цены. Это стандартное значение. Представьте себе, что ученики класса выстроились по росту, и мы считаем не средний рост всех учеников, а берем рост учеников из середины колонны. Так и тут. Мы берем ATR из середины ряда. Увеличение процентиля приведет к использованию значения, ближе к верхней границе диапазона, в то время как уменьшение процентиля приведет к использованию значения, ближе к нижней границе.
Как использовать:
Фокусированный ATR особенно полезен для определения размеров стоп-лоссов и тейк-профитов, благодаря своей способности учитывать значение в середине ряда изменений цены, а не среднее значение. Это позволяет трейдерам более точно оценить волатильность и риск, что в свою очередь может помочь в оптимизации торговых стратегий.
.
Adaptive ATR Trailing Stops█ Introduction
This script is based on the average true range (ATR) and has been improved with the HHV or LLV. The script supports the trader to have his stoploss trailed. In this case, the stoploss is dynamic and can be adjusted with each candleclose.
█ What Does This Indicator Do?
The ATR SL Trailing Indicator helps you dynamically adjust your stop-loss levels based on market movements. It uses market volatility to calculate trailing stop-loss levels, ensuring you can secure profits or minimize losses. The indicator creates two lines:
A green/red line for long positions (when you’re betting on prices going up).
A green/red line for short positions (when you’re betting on prices going down).
█ Key Concepts: How Does the Indicator Work?
The Average True Range (ATR) measures market volatility, showing how much the price moves over a specific period.
A high ATR indicates a volatile market (large price swings), while a low ATR indicates a quiet market (smaller price changes).
Why is ATR important? ATR helps dynamically adjust the distance between your stop-loss and the current price. In volatile markets, the stop-loss is placed further away to avoid being triggered by short-term fluctuations. In quieter markets, the stop-loss is set closer to the price.
The HHV is the highest price over a specific period. For long positions, the indicator uses the highest price minus an ATR-based value to determine the stop-loss level.
Why is HHV important? HHV ensures the stop-loss for long positions only moves up when the price reaches new highs. Once the price starts falling, the stop-loss remains unchanged to lock in profits or minimize losses.
The LLV is the lowest price over a specific period. For short positions, the indicator uses the lowest price plus an ATR-based value to determine the stop-loss level.
Why is LLV important? LLV ensures the stop-loss for short positions only moves down when the price reaches new lows. Once the price starts rising, the stop-loss remains unchanged to lock in profits or minimize losses.
█ How Does the Indicator Work?
For Long Positions:
The indicator sets the stop-loss below the current price, based on:
Market volatility (ATR).
The highest price over a specific period (HHV).
The line turns green when the current price is above the stop-loss.
The line turns red when the price drops below the stop-loss, signaling you may need to exit the trade.
For Short Positions:
The indicator sets the stop-loss above the current price, based on:
*Market volatility (ATR).
*The lowest price over a specific period (LLV).
*The line turns green when the current price is below the stop-loss.
*The line turns red when the price moves above the stop-loss, signaling you may need to exit the trade.
█ Advantages of the ATR SL Trailing Indicator
*Dynamic and adaptive: Automatically adjusts stop-loss levels based on market volatility.
*Visual clarity: Green and red lines clearly indicate whether your position is safe or at risk.
*Effective risk management: Helps you lock in profits and minimize losses without the need for constant manual adjustments.
█ When Should You Use This Indicator?
*If you practice trend-based trading and want your stop-losses to automatically adapt to market movements.
*In volatile markets, to avoid being stopped out by short-term fluctuations.
*When you want to implement efficient risk management without manually adjusting your positions.
█ Inputs
The user can set the indicator for both longs and shorts. This is particularly important because the calculation is different. The HHV is used for longs and the LLV for shorts. The user can therefore set the period/length for the ATR on the one hand and the HHV/LLV on the other. He also has a multiplier, which can also be customized. The multiplier multiplies the price change of each individual candle.
█ Color Change
If the SL is trailed and the price breaks a line, the color changes. In this case, it would have executed the SL on an open trade.
Intramarket Difference Index StrategyHi Traders !!
The IDI Strategy:
In layman’s terms this strategy compares two indicators across markets and exploits their differences.
note: it is best the two markets are correlated as then we know we are trading a short to long term deviation from both markets' general trend with the assumption both markets will trend again sometime in the future thereby exhausting our trading opportunity.
📍 Import Notes:
This Strategy calculates trade position size independently (i.e. risk per trade is controlled in the user inputs tab), this means that the ‘Order size’ input in the ‘Properties’ tab will have no effect on the strategy. Why ? because this allows us to define custom position size algorithms which we can use to improve our risk management and equity growth over time. Here we have the option to have fixed quantity or fixed percentage of equity ATR (Average True Range) based stops in addition to the turtle trading position size algorithm.
‘Pyramiding’ does not work for this strategy’, similar to the order size input togeling this input will have no effect on the strategy as the strategy explicitly defines the maximum order size to be 1.
This strategy is not perfect, and as of writing of this post I have not traded this algo.
Always take your time to backtests and debug the strategy.
🔷 The IDI Strategy:
By default this strategy pulls data from your current TV chart and then compares it to the base market, be default BINANCE:BTCUSD . The strategy pulls SMA and RSI data from either market (we call this the difference data), standardizes the data (solving the different unit problem across markets) such that it is comparable and then differentiates the data, calling the result of this transformation and difference the Intramarket Difference (ID). The formula for the the ID is
ID = market1_diff_data - market2_diff_data (1)
Where
market(i)_diff_data = diff_data / ATR(j)_market(i)^0.5,
where i = {1, 2} and j = the natural numbers excluding 0
Formula (1) interpretation is the following
When ID > 0: this means the current market outperforms the base market
When ID = 0: Markets are at long run equilibrium
When ID < 0: this means the current market underperforms the base market
To form the strategy we define one of two strategy type’s which are Trend and Mean Revesion respectively.
🔸 Trend Case:
Given the ‘‘Strategy Type’’ is equal to TREND we define a threshold for which if the ID crosses over we go long and if the ID crosses under the negative of the threshold we go short.
The motivating idea is that the ID is an indicator of the two symbols being out of sync, and given we know volatility clustering, momentum and mean reversion of anomalies to be a stylised fact of financial data we can construct a trading premise. Let's first talk more about this premise.
For some markets (cryptocurrency markets - synthetic symbols in TV) the stylised fact of momentum is true, this means that higher momentum is followed by higher momentum, and given we know momentum to be a vector quantity (with magnitude and direction) this momentum can be both positive and negative i.e. when the ID crosses above some threshold we make an assumption it will continue in that direction for some time before executing back to its long run equilibrium of 0 which is a reasonable assumption to make if the market are correlated. For example for the BTCUSD - ETHUSD pair, if the ID > +threshold (inputs for MA and RSI based ID thresholds are found under the ‘‘INTRAMARKET DIFFERENCE INDEX’’ group’), ETHUSD outperforms BTCUSD, we assume the momentum to continue so we go long ETHUSD.
In the standard case we would exit the market when the IDI returns to its long run equilibrium of 0 (for the positive case the ID may return to 0 because ETH’s difference data may have decreased or BTC’s difference data may have increased). However in this strategy we will not define this as our exit condition, why ?
This is because we want to ‘‘let our winners run’’, to achieve this we define a trailing Donchian Channel stop loss (along with a fixed ATR based stop as our volatility proxy). If we were too use the 0 exit the strategy may print a buy signal (ID > +threshold in the simple case, market regimes may be used), return to 0 and then print another buy signal, and this process can loop may times, this high trade frequency means we fail capture the entire market move lowering our profit, furthermore on lower time frames this high trade frequencies mean we pay more transaction costs (due to price slippage, commission and big-ask spread) which means less profit.
By capturing the sum of many momentum moves we are essentially following the trend hence the trend following strategy type.
Here we also print the IDI (with default strategy settings with the MA difference type), we can see that by letting our winners run we may catch many valid momentum moves, that results in a larger final pnl that if we would otherwise exit based on the equilibrium condition(Valid trades are denoted by solid green and red arrows respectively and all other valid trades which occur within the original signal are light green and red small arrows).
another example...
Note: if you would like to plot the IDI separately copy and paste the following code in a new Pine Script indicator template.
indicator("IDI")
// INTRAMARKET INDEX
var string g_idi = "intramarket diffirence index"
ui_index_1 = input.symbol("BINANCE:BTCUSD", title = "Base market", group = g_idi)
// ui_index_2 = input.symbol("BINANCE:ETHUSD", title = "Quote Market", group = g_idi)
type = input.string("MA", title = "Differrencing Series", options = , group = g_idi)
ui_ma_lkb = input.int(24, title = "lookback of ma and volatility scaling constant", group = g_idi)
ui_rsi_lkb = input.int(14, title = "Lookback of RSI", group = g_idi)
ui_atr_lkb = input.int(300, title = "ATR lookback - Normalising value", group = g_idi)
ui_ma_threshold = input.float(5, title = "Threshold of Upward/Downward Trend (MA)", group = g_idi)
ui_rsi_threshold = input.float(20, title = "Threshold of Upward/Downward Trend (RSI)", group = g_idi)
//>>+----------------------------------------------------------------+}
// CUSTOM FUNCTIONS |
//<<+----------------------------------------------------------------+{
// construct UDT (User defined type) containing the IDI (Intramarket Difference Index) source values
// UDT will hold many variables / functions grouped under the UDT
type functions
float Close // close price
float ma // ma of symbol
float rsi // rsi of the asset
float atr // atr of the asset
// the security data
getUDTdata(symbol, malookback, rsilookback, atrlookback) =>
indexHighTF = barstate.isrealtime ? 1 : 0
= request.security(symbol, timeframe = timeframe.period,
expression = [close , // Instentiate UDT variables
ta.sma(close, malookback) ,
ta.rsi(close, rsilookback) ,
ta.atr(atrlookback) ])
data = functions.new(close_, ma_, rsi_, atr_)
data
// Intramerket Difference Index
idi(type, symbol1, malookback, rsilookback, atrlookback, mathreshold, rsithreshold) =>
threshold = float(na)
index1 = getUDTdata(symbol1, malookback, rsilookback, atrlookback)
index2 = getUDTdata(syminfo.tickerid, malookback, rsilookback, atrlookback)
// declare difference variables for both base and quote symbols, conditional on which difference type is selected
var diffindex1 = 0.0, var diffindex2 = 0.0,
// declare Intramarket Difference Index based on series type, note
// if > 0, index 2 outpreforms index 1, buy index 2 (momentum based) until equalibrium
// if < 0, index 2 underpreforms index 1, sell index 1 (momentum based) until equalibrium
// for idi to be valid both series must be stationary and normalised so both series hae he same scale
intramarket_difference = 0.0
if type == "MA"
threshold := mathreshold
diffindex1 := (index1.Close - index1.ma) / math.pow(index1.atr*malookback, 0.5)
diffindex2 := (index2.Close - index2.ma) / math.pow(index2.atr*malookback, 0.5)
intramarket_difference := diffindex2 - diffindex1
else if type == "RSI"
threshold := rsilookback
diffindex1 := index1.rsi
diffindex2 := index2.rsi
intramarket_difference := diffindex2 - diffindex1
//>>+----------------------------------------------------------------+}
// STRATEGY FUNCTIONS CALLS |
//<<+----------------------------------------------------------------+{
// plot the intramarket difference
= idi(type,
ui_index_1,
ui_ma_lkb,
ui_rsi_lkb,
ui_atr_lkb,
ui_ma_threshold,
ui_rsi_threshold)
//>>+----------------------------------------------------------------+}
plot(intramarket_difference, color = color.orange)
hline(type == "MA" ? ui_ma_threshold : ui_rsi_threshold, color = color.green)
hline(type == "MA" ? -ui_ma_threshold : -ui_rsi_threshold, color = color.red)
hline(0)
Note it is possible that after printing a buy the strategy then prints many sell signals before returning to a buy, which again has the same implication (less profit. Potentially because we exit early only for price to continue upwards hence missing the larger "trend"). The image below showcases this cenario and again, by allowing our winner to run we may capture more profit (theoretically).
This should be clear...
🔸 Mean Reversion Case:
We stated prior that mean reversion of anomalies is an standerdies fact of financial data, how can we exploit this ?
We exploit this by normalizing the ID by applying the Ehlers fisher transformation. The transformed data is then assumed to be approximately normally distributed. To form the strategy we employ the same logic as for the z score, if the FT normalized ID > 2.5 (< -2.5) we buy (short). Our exit conditions remain unchanged (fixed ATR stop and trailing Donchian Trailing stop)
🔷 Position Sizing:
If ‘‘Fixed Risk From Initial Balance’’ is toggled true this means we risk a fixed percentage of our initial balance, if false we risk a fixed percentage of our equity (current balance).
Note we also employ a volatility adjusted position sizing formula, the turtle training method which is defined as follows.
Turtle position size = (1/ r * ATR * DV) * C
Where,
r = risk factor coefficient (default is 20)
ATR(j) = risk proxy, over j times steps
DV = Dollar Volatility, where DV = (1/Asset Price) * Capital at Risk
🔷 Risk Management:
Correct money management means we can limit risk and increase reward (theoretically). Here we employ
Max loss and gain per day
Max loss per trade
Max number of consecutive losing trades until trade skip
To read more see the tooltips (info circle).
🔷 Take Profit:
By defualt the script uses a Donchain Channel as a trailing stop and take profit, In addition to this the script defines a fixed ATR stop losses (by defualt, this covers cases where the DC range may be to wide making a fixed ATR stop usefull), ATR take profits however are defined but optional.
ATR SL and TP defined for all trades
🔷 Hurst Regime (Regime Filter):
The Hurst Exponent (H) aims to segment the market into three different states, Trending (H > 0.5), Random Geometric Brownian Motion (H = 0.5) and Mean Reverting / Contrarian (H < 0.5). In my interpretation this can be used as a trend filter that eliminates market noise.
We utilize the trending and mean reverting based states, as extra conditions required for valid trades for both strategy types respectively, in the process increasing our trade entry quality.
🔷 Example model Architecture:
Here is an example of one configuration of this strategy, combining all aspects discussed in this post.
Future Updates
- Automation integration (next update)
Advanced EMA Cross with Normalized ATR Filter, Controlling ADX
Description:
This strategy is based on EMA cross strategy and additional filters are used to get better results, a normalized ATR filter, and ADX control...
It aims to provide traders with a code base that generates signals for long positions based on market conditions defined by various indicators.
How it Works:
1. EMA: Uses short (8 periods) and long (20 periods) EMAs to identify crossovers.
2. ATR: Uses a 14-period ATR, normalized to its 20-period historical range, to filter out noise.
3. ADX: Uses a 14-period RMA to identify strong trends.
4. Volume: Filters trades based on a 14-period SMA of volume.
5. Super Trend: Uses a Super Trend indicator to identify the market direction.
How to Use:
- Buy Signal: Generated when EMA short crosses above EMA long, and other conditions like ATR and market direction are met.
- Sell Signal: Generated based on EMA crossunder and high ADX value.
Originality and Usefulness:
This script combines EMA, ATR, ADX, and Super Trend indicators to filter out false signals and identify more reliable trading opportunities.
USD Strength in the code is not working, just simulated it as PSEUDO CODE:
Strategy Results:
- Account Size: $1000
- Commission: Not considered
- Slippage: Not considered
- Risk: Manageable through parameters, now less than 5% per trade
- Dataset: Aim for more than 100 trades for a sufficient sample size
- Test Conditions: Test in 30 min chart for BTCUSDT
IMPORTANT NOTE: This script should be used for educational purposes and should not be considered as financial advice.
Chart:
- The script's output is plotted as Buy and Sell signals on the chart.
- No other scripts are included for clarity.
- Have tested with 30mins period
- You are encouraged to play with parameters, let me know if it helps you and/or if you can upgrade the code to a better level.
WHY DID I USE ATR AND ADX?
ATR filter is usually used for the following purposes.
Market Volatility: ATR measures how volatile the market is. High ATR values indicate that the price is experiencing significant fluctuations.
Filtering: Crossing a certain ATR threshold may indicate that the market is active enough to present trading opportunities.
Risk Management: ATR can also be used to set stop-loss and take-profit levels, helping to manage risk effectively.
And ADX is usually used for;
Trend Strength: ADX measures the strength of a trend. High ADX values indicate a strong trend.
Filtering: An ADX value above a certain level suggests that the trend is strong and it might be safer to trade.
Versatility: ADX does not indicate the direction of the trend, only its strength. This makes it useful in both bullish and bearish markets.
Using these indicators together can help filter out false signals and produce more reliable trading signals. While ATR helps to determine if the market is active enough, ADX measures the strength of the trend. Combined, they can create a more complex and effective trading strategy.
I've used ADX data to support generating a buy signal after a golden cross (bullish trend) and waiting until this is a strong trend. It sounds good to check for different trend strengths for bullish and bearish markets to decide a buy signal. Additionally I used ATR to check if the market has enough fluctuations.