Distance From moving averageDistance From Moving Average is designed to help traders visualize the deviation of the current price from a specified moving average. Users can select from four different types of moving averages: Simple Moving Average (SMA), Exponential Moving Average (EMA), Weighted Moving Average (WMA), and Hull Moving Average (HMA).
Key Features:
User-Friendly Input Options:
Choose the type of moving average from a dropdown menu.
Set the length of the moving average, with a default value of 200.
Custom Moving Average Calculations:
The script computes the selected moving average using the appropriate mathematical formula, allowing for versatile analysis based on individual trading strategies.
Distance Calculation:
The indicator calculates the distance between the current price and the chosen moving average, providing insight into market momentum. A positive value indicates that the price is above the moving average, while a negative value shows it is below.
Visual Representation:
The distance is plotted on the chart, with color coding:
Lime: Indicates that the price is above the moving average (bullish sentiment).
Red: Indicates that the price is below the moving average (bearish sentiment).
Customization:
Users can further customize the appearance of the plotted line, enhancing clarity and visibility on the chart.
This indicator is particularly useful for traders looking to gauge market conditions and make informed decisions based on the relationship between current prices and key moving averages.
지표 및 전략
Multi-Setting Moving AverageThis indicator is a TradingView tool that allows you to set the calculation periods for moving averages according to different time frames.
Unlike standard moving average indicators, which require manual adjustments when changing time frames, this indicator is designed to automatically reflect the settings for each time frame, eliminating the hassle of changing settings.
このインジケーターは、異なる時間枠に応じた移動平均線の計算期間を設定できるトレーディングビューのツールです。
一般の移動平均線のインジケーターは時間枠の変更に伴って手動で設定を調整する必要がありますが、このインジケーターは時間枠ごとの設定が自動で反映されるように工夫されているため、設定変更の手間が省けます。
LiquidityFlow Dominance+Alerts (btc.d, T3, Stables)LiquidityFlow Dominance+Alerts: Overview & Usage Guide
Overview
The LiquidityFlow Dominance+Alerts indicator provides a dynamic view of liquidity flow across Bitcoin, Altcoins, and Stablecoins, helping track liquidity shifts and identify market sentiment. By integrating moving averages, custom alerts, and thresholds for extreme outliers, this indicator helps to anticipate bullish and bearish shifts in liquidity and alert market tops and bottoms.
Key features include:
1. Liquidity Flow Monitoring : Track liquidity flow across Bitcoin (BTC), Altcoins (TOTAL3), and Stablecoins (USDT, USDC, DAI).
2. Custom Alerts : Set alerts for key liquidity shifts and extreme conditions in Stablecoin dominance, both with static and moving average (MA)-based calculations.
3. Moving Averages : Use Simple, Exponential, or Weighted Moving Averages to smooth out market data for more reliable signals.
4. Outlier Detection : Identify potential tops and bottoms using thresholds for Stablecoin dominance, with alerts for extreme movements.
Functionality
Data Inputs and Key Metrics
- Symbols Monitored:
- Bitcoin Dominance (BTC.D)
- Altcoin Market Cap (TOTAL3)
- Stablecoins (USDT.D, USDC.D, DAI.D)
- Liquidity Flow Conditions:
- Track percentage changes in dominance across sectors to detect liquidity flow into Bitcoin, Altcoins, or Stablecoins.
- Custom Metrics:
- Liquidity Flow Index: BTC Dominance minus Stablecoin Dominance.
- Liquidity Flow Ratio: BTC Dominance divided by the combined dominance of Stablecoins and Altcoins.
Moving Average Integration
- Select from SMA, EMA, or WMA to apply moving averages to the dominance metrics. Moving averages help smooth out short-term volatility and provide more consistent signals.
- Moving averages are applied to each sector (BTC, Altcoins, and Stablecoins) and compared to their previous period values to determine shifts in liquidity.
Alerts and Thresholds
- % Change Lookback Period: Adjust the lookback period to align with the timeframe of your chart. Shorter timeframes may require a lower lookback period, while higher timeframes may benefit from longer periods.
- Stables Bull/Bear % for Alerts: Set a threshold for when Stablecoin dominance becomes a bullish or bearish signal relative to BTC and Altcoins. A higher threshold may be used in volatile markets to filter out noise.
- Extreme Outliers Detection: Use the **Stables Up/Down Extreme Threshold** to identify potential market tops or bottoms when Stablecoin dominance deviates significantly from historical trends. The **Extreme Lookback Period** controls the time window for detecting these anomalies.
How to Use the Indicator
Adjusting the % Change Lookback Period
- The `% Change Lookback Period` should be adjusted based on your chart’s timeframe. For example, a shorter period (e.g., 7) works well for intraday charts, while longer periods (e.g., 14) might be more suitable for daily or weekly charts.
Setting Thresholds for Alerts
- Stables Bull/Bear % for Alerts: Adjust this setting to define when Stablecoin dominance triggers bullish or bearish alerts. A value like 1% could be a good starting point for most market conditions but can be fine-tuned based on volatility.
- Extreme Lookback Period: Define the lookback period for detecting extreme moves in Stablecoin dominance. This will help identify major tops and bottoms in the market. For shorter-term trades, consider using a shorter extreme lookback (e.g., 7-10 periods).
Alerts for Liquidity Shifts
- The indicator supports alerts for key liquidity shifts, which are useful for staying ahead of market movements. Alerts can be set to notify you when liquidity moves into:
- Bitcoin: Indicating a potential bullish trend for Bitcoin.
- Altcoins: Signaling altcoins are bullish.
- Stablecoins: Suggesting a risk-off environment or market correction.
Extreme Alerts for Stables
- Extreme Up/Down Alerts: These are triggered when Stablecoin dominance crosses extreme thresholds. For example, if Stablecoin dominance rises more than 14% over a set period, it could signal a market top, while a significant drop could indicate a market bottom.
Moving Average Calculations
- In addition to static percentage changes, moving averages can be applied to smooth out dominance values. The type and length of the moving average can be customized:
- SMA (Simple Moving Average): Best for smoothing out volatility in a linear way.
- EMA (Exponential Moving Average): More responsive to recent data, making it useful in faster markets.
- WMA (Weighted Moving Average): Emphasizes more recent data, but less reactive than the EMA.
Additional Usage Tips:
- Background Colors: The indicator visually highlights the dominant liquidity flow:
- Orange: Liquidity is shifting toward Bitcoin.
- Aqua: Liquidity is flowing into Altcoins.
- Red: Liquidity is moving into Stablecoins.
Auto Anchored Swing VWAP'sThe Auto Anchored Swing VWAP's indicator automatically anchors Volume-Weighted Average Price (VWAP) lines to recent swing highs and swing lows. VWAPs often act as key support or resistance levels because they represent the average price at which the majority of trading volume has occurred over a given time.
What is VWAP? VWAP is an essential tool in trading, representing the average price of a security over a specific period, weighted by volume. It helps traders identify the average price at which most trades have been executed, providing a balanced view of price action over time.
Anchored VWAPs: Unlike traditional VWAPs, which start from the beginning of the day, anchored VWAPs allow traders to "anchor" the calculation to a specific point in time or a pivot on the chart, in this case a swing high and swing low. This version of VWAP follows the price action from a selected point forward.
When the price is above the VWAP, it indicates that the majority of traders have paid less for the asset, creating a potential support zone as buyers may step in at or near this level. On the other hand, when the price is below the VWAP, it suggests that most traders have paid a higher price, which can lead to a resistance level where sellers may appear to defend their positions.
Anchored VWAPs, in particular, provide more precise support and resistance levels by starting from a specific swing high, swing low, or other significant point on the chart. This allows traders to track how price interacts with these levels after a certain bar.
The selectable pivot lookback length in this indicator defines the number of bars to the left and right of a potential swing high or swing low that must be lower (for a swing high) or higher (for a swing low) in order to confirm the pivot. In other words, it controls how many surrounding bars need to validate a local price extreme before it is considered a true swing point.
For example, if the lookback length is set to 9, a swing high is identified when there are 9 bars to the left and 9 bars to the right that all have lower highs than the current bar. The same logic applies for swing lows, where the price must be lower than the highs of the bars to the left and right for it to be considered a swing low.
This parameter allows traders to control the sensitivity of the swing points used to anchor VWAPs. A smaller lookback value will identify more frequent and short-term swing highs and lows, making the VWAPs more responsive to recent price action. Conversely, a larger lookback value will result in fewer but more significant swing points.
Pine Script
Utilization of Pine Script’s Enum Feature: This indicator leverages Pine Script's new enum feature for the selection of the VWAP lines (solid, dashed, or dotted) style.
Day & Swing Trading EMA Clouds with Adaptive LevelsDay & Swing Trading EMA Clouds with Adaptive Levels is a tool designed for traders who need a flexible indicator that adapts to both short-term (day trading) and long-term (swing trading) strategies. The indicator blends EMA clouds and adaptive support/resistance levels, making it suitable for analyzing trend strength and key price zones.
How It Works:
EMA Clouds for Trend Detection:
This indicator uses three EMAs (Fast, Intermediate, Slow) to create two clouds:
Fast Cloud: The area between the fast and Intermediate EMAs.
Slow Cloud: The area between the Intermediate and slow EMAs.
The cloud colors change based on trend direction:
Positive (uptrend): When the fast EMA is above the Intermediate EMA (turquoise) or the Intermediate EMA is above the slow EMA (teal).
Negative (downtrend): When the fast EMA is below the Intermediate EMA (pink) or the Intermediate EMA is below the slow EMA (magenta).
Traders can use these clouds to visually gauge market momentum and trend reversals.
Adaptive EMA Settings Based on Trading Mode:
The EMA lengths adjust automatically depending on whether you're in Day Trading or Swing Trading mode:
Day Trading Mode uses shorter periods to capture quick price movements:
Fast EMA: 5-period
Mid EMA: 13-period
Slow EMA: 21-period
Swing Trading Mode uses longer periods to capture broader trends:
Fast EMA: 12-period
Mid EMA: 26-period
Slow EMA: 50-period
This dynamic adjustment allows you to switch between trading styles seamlessly, with the EMAs reflecting the most relevant timeframes for each strategy.
Adaptive Support and Resistance Levels:
Depending on the selected trading mode, the indicator dynamically plots key levels:
Day Trading Mode: Previous day’s high, low, and midpoint, as well as 2-day levels.
Swing Trading Mode: Previous month’s high, low, and midpoint, as well as 2-month levels.
These levels act as dynamic support and resistance zones, giving traders critical areas to monitor for potential reversals or breakouts.
Buy & Sell Signals:
Visual buy/sell signals are generated when the fast EMA crosses above or below the slow EMA. These signals can help traders identify potential trend reversals.
Customization:
You can fully adjust the transparency and colors of the clouds to fit your personal preferences and trading style.
Why This Combination?
Combining EMA clouds with adaptive levels provides traders with a complete picture. The clouds highlight the underlying market momentum and trend strength, while the adaptive levels offer potential entry/exit points based on historical price action. This unique mashup allows traders to follow trends and plan trades around key support and resistance zones.
analytics_tablesLibrary "analytics_tables"
📝 Description
This library provides the implementation of several performance-related statistics and metrics, presented in the form of tables.
The metrics shown in the afforementioned tables where developed during the past years of my in-depth analalysis of various strategies in an atempt to reason about the performance of each strategy.
The visualization and some statistics where inspired by the existing implementations of the "Seasonality" script, and the performance matrix implementations of @QuantNomad and @ZenAndTheArtOfTrading scripts.
While this library is meant to be used by my strategy framework "Template Trailing Strategy (Backtester)" script, I wrapped it in a library hoping this can be usefull for other community strategy scripts that will be released in the future.
🤔 How to Guide
To use the functionality this library provides in your script you have to import it first!
Copy the import statement of the latest release by pressing the copy button below and then paste it into your script. Give a short name to this library so you can refer to it later on. The import statement should look like this:
import jason5480/analytics_tables/1 as ant
There are three types of tables provided by this library in the initial release. The stats table the metrics table and the seasonality table.
Each one shows different kinds of performance statistics.
The table UDT shall be initialized once using the `init()` method.
They can be updated using the `update()` method where the updated data UDT object shall be passed.
The data UDT can also initialized and get updated on demend depending on the use case
A code example for the StatsTable is the following:
var ant.StatsData statsData = ant.StatsData.new()
statsData.update(SideStats.new(), SideStats.new(), 0)
if (barstate.islastconfirmedhistory or (barstate.isrealtime and barstate.isconfirmed))
var statsTable = ant.StatsTable.new().init(ant.getTablePos('TOP', 'RIGHT'))
statsTable.update(statsData)
A code example for the MetricsTable is the following:
var ant.StatsData statsData = ant.StatsData.new()
statsData.update(ant.SideStats.new(), ant.SideStats.new(), 0)
if (barstate.islastconfirmedhistory or (barstate.isrealtime and barstate.isconfirmed))
var metricsTable = ant.MetricsTable.new().init(ant.getTablePos('BOTTOM', 'RIGHT'))
metricsTable.update(statsData, 10)
A code example for the SeasonalityTable is the following:
var ant.SeasonalData seasonalData = ant.SeasonalData.new().init(Seasonality.monthOfYear)
seasonalData.update()
if (barstate.islastconfirmedhistory or (barstate.isrealtime and barstate.isconfirmed))
var seasonalTable = ant.SeasonalTable.new().init(seasonalData, ant.getTablePos('BOTTOM', 'LEFT'))
seasonalTable.update(seasonalData)
🏋️♂️ Please refer to the "EXAMPLE" regions of the script for more advanced and up to date code examples!
Special thanks to @Mrcrbw for the proposal to develop this library and @DCNeu for the constructive feedback 🏆.
getTablePos(ypos, xpos)
Get table position compatible string
Parameters:
ypos (simple string) : The position on y axise
xpos (simple string) : The position on x axise
Returns: The position to be passed to the table
method init(this, pos, height, width, positiveTxtColor, negativeTxtColor, neutralTxtColor, positiveBgColor, negativeBgColor, neutralBgColor)
Initialize the stats table object with the given colors in the given position
Namespace types: StatsTable
Parameters:
this (StatsTable) : The stats table object
pos (simple string) : The table position string
height (simple float) : The height of the table as a percentage of the charts height. By default, 0 auto-adjusts the height based on the text inside the cells
width (simple float) : The width of the table as a percentage of the charts height. By default, 0 auto-adjusts the width based on the text inside the cells
positiveTxtColor (simple color) : The text color when positive
negativeTxtColor (simple color) : The text color when negative
neutralTxtColor (simple color) : The text color when neutral
positiveBgColor (simple color) : The background color with transparency when positive
negativeBgColor (simple color) : The background color with transparency when negative
neutralBgColor (simple color) : The background color with transparency when neutral
method init(this, pos, height, width, neutralBgColor)
Initialize the metrics table object with the given colors in the given position
Namespace types: MetricsTable
Parameters:
this (MetricsTable) : The metrics table object
pos (simple string) : The table position string
height (simple float) : The height of the table as a percentage of the charts height. By default, 0 auto-adjusts the height based on the text inside the cells
width (simple float) : The width of the table as a percentage of the charts width. By default, 0 auto-adjusts the width based on the text inside the cells
neutralBgColor (simple color) : The background color with transparency when neutral
method init(this, seas)
Initialize the seasonal data
Namespace types: SeasonalData
Parameters:
this (SeasonalData) : The seasonal data object
seas (simple Seasonality) : The seasonality of the matrix data
method init(this, data, pos, maxNumOfYears, height, width, extended, neutralTxtColor, neutralBgColor)
Initialize the seasonal table object with the given colors in the given position
Namespace types: SeasonalTable
Parameters:
this (SeasonalTable) : The seasonal table object
data (SeasonalData) : The seasonality data of the table
pos (simple string) : The table position string
maxNumOfYears (simple int) : The maximum number of years that fit into the table
height (simple float) : The height of the table as a percentage of the charts height. By default, 0 auto-adjusts the height based on the text inside the cells
width (simple float) : The width of the table as a percentage of the charts width. By default, 0 auto-adjusts the width based on the text inside the cells
extended (simple bool) : The seasonal table with extended columns for performance
neutralTxtColor (simple color) : The text color when neutral
neutralBgColor (simple color) : The background color with transparency when neutral
method update(this, wins, losses, numOfInconclusiveExits)
Update the strategy info data of the strategy
Namespace types: StatsData
Parameters:
this (StatsData) : The strategy statistics object
wins (SideStats)
losses (SideStats)
numOfInconclusiveExits (int) : The number of inconclusive trades
method update(this, stats, positiveTxtColor, negativeTxtColor, negativeBgColor, neutralBgColor)
Update the stats table object with the given data
Namespace types: StatsTable
Parameters:
this (StatsTable) : The stats table object
stats (StatsData) : The stats data to update the table
positiveTxtColor (simple color) : The text color when positive
negativeTxtColor (simple color) : The text color when negative
negativeBgColor (simple color) : The background color with transparency when negative
neutralBgColor (simple color) : The background color with transparency when neutral
method update(this, stats, buyAndHoldPerc, positiveTxtColor, negativeTxtColor, positiveBgColor, negativeBgColor)
Update the metrics table object with the given data
Namespace types: MetricsTable
Parameters:
this (MetricsTable) : The metrics table object
stats (StatsData) : The stats data to update the table
buyAndHoldPerc (float) : The buy and hold percetage
positiveTxtColor (simple color) : The text color when positive
negativeTxtColor (simple color) : The text color when negative
positiveBgColor (simple color) : The background color with transparency when positive
negativeBgColor (simple color) : The background color with transparency when negative
method update(this)
Update the seasonal data based on the season and eon timeframe
Namespace types: SeasonalData
Parameters:
this (SeasonalData) : The seasonal data object
method update(this, data, positiveTxtColor, negativeTxtColor, neutralTxtColor, positiveBgColor, negativeBgColor, neutralBgColor, timeBgColor)
Update the seasonal table object with the given data
Namespace types: SeasonalTable
Parameters:
this (SeasonalTable) : The seasonal table object
data (SeasonalData) : The seasonal cell data to update the table
positiveTxtColor (simple color) : The text color when positive
negativeTxtColor (simple color) : The text color when negative
neutralTxtColor (simple color) : The text color when neutral
positiveBgColor (simple color) : The background color with transparency when positive
negativeBgColor (simple color) : The background color with transparency when negative
neutralBgColor (simple color) : The background color with transparency when neutral
timeBgColor (simple color) : The background color of the time gradient
SideStats
Object that represents the strategy statistics data of one side win or lose
Fields:
numOf (series int)
sumFreeProfit (series float)
freeProfitStDev (series float)
sumProfit (series float)
profitStDev (series float)
sumGain (series float)
gainStDev (series float)
avgQuantityPerc (series float)
avgCapitalRiskPerc (series float)
avgTPExecutedCount (series float)
avgRiskRewardRatio (series float)
maxStreak (series int)
StatsTable
Object that represents the stats table
Fields:
table (series table) : The actual table
rows (series int) : The number of rows of the table
columns (series int) : The number of columns of the table
StatsData
Object that represents the statistics data of the strategy
Fields:
wins (SideStats)
losses (SideStats)
numOfInconclusiveExits (series int)
avgFreeProfitStr (series string)
freeProfitStDevStr (series string)
lossFreeProfitStDevStr (series string)
avgProfitStr (series string)
profitStDevStr (series string)
lossProfitStDevStr (series string)
avgQuantityStr (series string)
MetricsTable
Object that represents the metrics table
Fields:
table (series table) : The actual table
rows (series int) : The number of rows of the table
columns (series int) : The number of columns of the table
SeasonalData
Object that represents the seasonal table dynamic data
Fields:
seasonality (series Seasonality)
eonToMatrixRow (map)
numOfEons (series int)
mostRecentMatrixRow (series int)
balances (matrix)
returnPercs (matrix)
maxDDs (matrix)
eonReturnPercs (array)
eonCAGRs (array)
eonMaxDDs (array)
SeasonalTable
Object that represents the seasonal table
Fields:
table (series table) : The actual table
headRows (series int) : The number of head rows of the table
headColumns (series int) : The number of head columns of the table
eonRows (series int) : The number of eon rows of the table
seasonColumns (series int) : The number of season columns of the table
statsRows (series int)
statsColumns (series int) : The number of stats columns of the table
rows (series int) : The number of rows of the table
columns (series int) : The number of columns of the table
extended (series bool) : Whether the table has additional performance statistics
EMA GridThe EMA Grid indicator is a powerful tool that calculates the overall market sentiment by comparing the order of 20 different Exponential Moving Averages (EMAs) over various lengths. The indicator assigns a rating based on how well-ordered the EMAs are relative to each other, representing the strength and direction of the market trend. It also smooths out the macro movements using cumulative calculations and visually represents the market sentiment through color-coded bands.
EMA Calculation:
The indicator uses a series of EMAs with different lengths, starting from 5 and going up to 100. Each EMA is calculated either using the exponential moving averages.
The EMAs form the grid that the indicator uses to measure the order and distance between them.
Rating Calculation:
The indicator computes the relative distance between consecutive EMAs and sums these differences.
The cumulative sum is further smoothed using multiple EMAs with different lengths (from 3 to 21). This smooths out short-term fluctuations and helps identify broader trends.
Market Sentiment Rating:
The overall sentiment is calculated by comparing the values of these smoothing EMAs. If the shorter-term EMA is above the longer-term EMA, it contributes positively to the sentiment; otherwise, it contributes negatively.
The final rating is a normalized value based on the relationship between these EMAs, producing a sentiment score between 1 (bullish) and -1 (bearish).
Color Coding and Bands:
The indicator uses the sentiment rating to color the space between the 100 EMA and 200 EMA, representing the strength of the trend.
If the sentiment is bullish (rating > 0), the band is shaded green. If the sentiment is bearish (rating < 0), the band is shaded red.
The intensity of the color is based on the strength of the sentiment, with stronger trends resulting in more saturated colors.
Utility for Traders:
The EMA Grid is ideal for traders looking to gauge the broader market trend by analyzing the structure and alignment of multiple EMAs. The color-coded band between the 100 and 200 EMAs provides an at-a-glance view of market momentum, helping traders make informed decisions based on the trend's strength and direction.
This indicator can be used to identify bullish or bearish conditions and offers a smoothed perspective on market trends, reducing noise and highlighting significant trend shifts.
3-Bar (Outside Bar) Scanner with Table Display# 3-Bar (Outside Bar) Scanner with Table Display
## Overview
The **3-Bar (Outside Bar) Scanner with Table Display** is a custom TradingView indicator designed for traders who utilize **The Strat** methodology. This indicator scans for **3-bar (Outside Bar)** patterns across multiple symbols and displays the results in a convenient table format directly on your chart.
## Purpose
- **Efficient Multi-Symbol Scanning**: Monitor up to four symbols simultaneously for 3-bar patterns without the need to switch between charts.
- **Real-Time Updates**: The table dynamically updates with new price data, providing immediate insights into potential trading opportunities.
- **Visual Clarity**: Displays whether a 3-bar is bullish ("3 Up") or bearish ("3 Down"), helping you quickly interpret market sentiment.
## How It Works
- **Data Retrieval**: The indicator uses `request.security()` to fetch high, low, open, and close prices for the specified symbols and timeframe.
- **3-Bar Detection**:
- **Outside Bar Criteria**: Checks if the current candle's high is higher than the previous candle's high and the current low is lower than the previous low.
- **Direction Determination**:
- **"3 Up"**: If the candle closes higher than it opens (bullish candle).
- **"3 Down"**: If the candle closes lower than it opens (bearish candle).
- **Table Display**:
- The table shows the **Symbol**, **Timeframe**, and **State** ("3 Up", "3 Down", or blank if no pattern detected).
- Customizable colors and positioning to fit your chart's aesthetics.
## Best Use Cases
- **Rapid Market Analysis**: Ideal for traders needing a quick overview of multiple assets for potential 3-bar setups.
- **Strategic Decision-Making**: Helps identify key reversal or continuation patterns in alignment with **The Strat** principles.
- **Scalable Monitoring**: By utilizing TradingView's multi-chart layouts, you can expand monitoring beyond four symbols.
## Instructions for Use
### Adding the Indicator to Your Chart
1. **Copy the Code**: Use the provided Pine Script code for the indicator.
2. **Create a New Indicator**:
- In TradingView, click on **Pine Editor** at the bottom of the platform.
- Paste the code into the editor.
3. **Save and Add to Chart**:
- Click **Save** and give your indicator a name.
- Click **Add to Chart** to apply it.
### Customizing the Inputs
- **Symbols**:
- **Symbol 1**: Leave blank to use the current chart's symbol or enter a specific symbol (e.g., `AAPL`).
- **Symbol 2 to Symbol 4**: Enter additional symbols or leave them blank.
- **Timeframe**: Select your desired timeframe (e.g., `D` for Daily, `60` for 60-minute).
- **Table Colors**:
- Customize header and data colors for better visibility against your chart background.
### Interpreting the Table
- **Symbol**: Displays the symbol without the exchange prefix for clarity.
- **Timeframe**: Shows the timeframe applied to the analysis.
- **State**:
- **"3 Up"**: A bullish outside bar where the candle closed higher than it opened.
- **"3 Down"**: A bearish outside bar where the candle closed lower than it opened.
- **Blank**: No 3-bar pattern detected on the latest candle.
### Monitoring More Than Four Symbols
- **Multi-Chart Layout**:
- Use TradingView's multi-chart feature to display multiple charts within a single workspace.
- Apply the indicator to each chart. For example:
- **Four-Chart Grid**: Monitor up to 16 symbols by setting up four charts, each with the indicator tracking four symbols.
- **Steps**:
1. Arrange your workspace into a multi-chart layout.
2. Add the indicator to each chart.
3. Input different symbols into the indicator on each chart.
## Example Usage
Suppose you want to monitor the following symbols on a Daily timeframe:
- **Symbol 1**: *(Leave blank to use the current chart's symbol, e.g., `SPY`)*
- **Symbol 2**: `AAPL`
- **Symbol 3**: `TSLA`
- **Symbol 4**: `AMZN`
After adding the indicator and entering these symbols:
- **SPY**: The table shows "3 Up" in the State column, indicating a bullish outside bar.
- **AAPL**: No 3-bar pattern detected; the State column is blank.
- **TSLA**: The table shows "3 Down," indicating a bearish outside bar.
- **AMZN**: The table shows "3 Up," indicating another bullish outside bar.
This setup allows you to quickly assess which symbols are exhibiting significant patterns that may warrant further analysis or action.
## Notes
- **Customization**: Feel free to adjust the table's position and colors to suit your preferences.
- **Limitations**:
- Be aware of TradingView's limitations on `request.security()` calls, which may vary based on your subscription plan.
- The indicator is designed to monitor up to four symbols per instance due to these limitations.
- **Scalability**:
- By using multi-chart layouts, you can effectively monitor more symbols without overloading a single chart.
- This approach allows you to scale up your monitoring capabilities to fit your trading strategy.
## Conclusion
The **3-Bar (Outside Bar) Scanner with Table Display** is a valuable tool for traders who utilize **The Strat** methodology. It streamlines the process of identifying key 3-bar patterns across multiple symbols and timeframes, enhancing your ability to make informed trading decisions quickly.
By integrating this indicator into your trading routine, you can:
- Stay alert to significant market movements.
- Reduce the time spent manually scanning charts.
- Increase efficiency in executing your trading strategy.
---
Feel free to share this indicator with the Strat community. Feedback and suggestions are welcome to further enhance its functionality. Happy trading!
$TUBR: Stop Loss IndicatorATR-Based Stop Loss Indicator for TradingView by The Ultimate Bull Run Community: TUBR
**Overview**
The ATR-Based Stop Loss Indicator is a custom tool designed for traders using TradingView. It helps you determine optimal stop loss levels by leveraging the Average True Range (ATR), a popular measure of market volatility. By adapting to current market conditions, this indicator aims to minimize premature stop-outs and enhance your risk management strategy.
---
**Key Features**
- **Dynamic Stop Loss Levels**: Calculates stop loss prices based on the ATR, providing both long and short stop loss suggestions.
- **Customizable Parameters**: Adjust the ATR period, multiplier, and smoothing method to suit your trading style and the specific instrument you're trading.
- **Visual Aids**: Plots stop loss lines directly on your chart for easy visualization.
- **Alerts and Notifications** (Optional): Set up alerts to notify you when the price approaches or hits your stop loss levels.
---
**Understanding the Indicator**
1. **Average True Range (ATR)**:
- **What It Is**: ATR measures market volatility by calculating the average range between high and low prices over a specified period.
- **Why It's Useful**: A higher ATR indicates higher volatility, which can help you set stop losses that accommodate market fluctuations.
2. **ATR Multiplier**:
- **Purpose**: Determines how far your stop loss is placed from the current price based on the ATR.
- **Example**: An ATR multiplier of 1.5 means the stop loss is set at 1.5 times the ATR away from the current price.
3. **Smoothing Methods**:
- **Options**: Choose from RMA (default), SMA, EMA, WMA, or Hull MA.
- **Effect**: Different smoothing methods can make the ATR more responsive or smoother, affecting where the stop loss is placed.
---
**How the Indicator Works**
- **Long Stop Loss Calculation**:
- **Formula**: `Long Stop Loss = Close Price - (ATR * ATR Multiplier)`
- **Purpose**: For long positions, the stop loss is set below the current price to protect against downside risk.
- **Short Stop Loss Calculation**:
- **Formula**: `Short Stop Loss = Close Price + (ATR * ATR Multiplier)`
- **Purpose**: For short positions, the stop loss is set above the current price to protect against upside risk.
- **Plotting on the Chart**:
- **Green Line**: Represents the suggested stop loss level for long positions.
- **Red Line**: Represents the suggested stop loss level for short positions.
---
**How to Use the Indicator**
1. **Adding the Indicator to Your Chart**:
- **Step 1**: Copy the PineScript code of the indicator.
- **Step 2**: In TradingView, click on **Pine Editor** at the bottom of the platform.
- **Step 3**: Paste the code into the editor and click **Add to Chart**.
- **Step 4**: The indicator will appear on your chart with the default settings.
2. **Adjusting the Settings**:
- **ATR Period**:
- **Definition**: Number of periods over which the ATR is calculated.
- **Adjustment**: Increase for a smoother ATR; decrease for a more responsive ATR.
- **ATR Multiplier**:
- **Definition**: Factor by which the ATR is multiplied to set the stop loss distance.
- **Adjustment**: Increase to widen the stop loss (less likely to be hit); decrease to tighten the stop loss.
- **Smoothing Method**:
- **Options**: RMA, SMA, EMA, WMA, Hull MA.
- **Adjustment**: Experiment to see which method aligns best with your trading strategy.
- **Display Options**:
- **Show Long Stop Loss**: Toggle to display or hide the long stop loss line.
- **Show Short Stop Loss**: Toggle to display or hide the short stop loss line.
3. **Interpreting the Indicator**:
- **Long Positions**:
- **Action**: Set your stop loss at the value indicated by the green line when entering a long trade.
- **Short Positions**:
- **Action**: Set your stop loss at the value indicated by the red line when entering a short trade.
- **Adjusting Stop Losses**:
- **Trailing Stops**: You may choose to adjust your stop loss over time, moving it in the direction of your trade as the ATR-based stop loss levels change.
4. **Implementing in Your Trading Strategy**:
- **Risk Management**:
- **Position Sizing**: Use the stop loss distance to calculate your position size based on your risk tolerance.
- **Consistency**: Apply the same settings consistently to maintain discipline.
- **Combining with Other Indicators**:
- **Enhance Decision-Making**: Use in conjunction with trend indicators, support and resistance levels, or other technical analysis tools.
- **Alerts Setup** (If included in the code):
- **Purpose**: Receive notifications when the price approaches or hits your stop loss level.
- **Configuration**: Set up alerts in TradingView based on the alert conditions defined in the indicator.
---
**Benefits of Using This Indicator**
- **Adaptive Risk Management**: By accounting for current market volatility, the indicator helps prevent setting stop losses that are too tight or too wide.
- **Minimize Premature Stop-Outs**: Reduces the likelihood of being stopped out due to normal price fluctuations.
- **Flexibility**: Customizable settings allow you to tailor the indicator to different trading instruments and timeframes.
- **Visualization**: Clear visual representation of stop loss levels aids in quick decision-making.
---
**Things to Consider**
- **Market Conditions**:
- **High Volatility**: Be cautious as ATR values—and thus stop loss distances—can widen, increasing potential losses.
- **Low Volatility**: Tighter stop losses may increase the chance of being stopped out by minor price movements.
- **Backtesting and Optimization**:
- **Historical Analysis**: Test the indicator on past data to evaluate its effectiveness and adjust settings accordingly.
- **Continuous Improvement**: Regularly reassess and fine-tune the parameters to adapt to changing market conditions.
- **Risk Per Trade**:
- **Alignment with Risk Tolerance**: Ensure the stop loss level keeps potential losses within your acceptable risk per trade (e.g., 1-2% of your trading capital).
- **Emotional Discipline**:
- **Stick to Your Plan**: Avoid making impulsive changes to your stop loss levels based on emotions rather than analysis.
---
**Example Usage Scenario**
1. **Setting Up a Long Trade**:
- **Entry Price**: $100
- **ATR Value**: $2
- **ATR Multiplier**: 1.5
- **Calculated Stop Loss**: $100 - ($2 * 1.5) = $97
- **Action**: Place a stop loss order at $97.
2. **During the Trade**:
- **Price Increases to $105**
- **ATR Remains at $2**
- **New Stop Loss Level**: $105 - ($2 * 1.5) = $102
- **Action**: Move your stop loss up to $102 to lock in profits.
---
**Final Tips**
- **Documentation**: Keep a trading journal to record your trades, stop loss levels, and observations for future reference.
- **Education**: Continuously educate yourself on risk management and technical analysis to enhance your trading skills.
- **Support**: Engage with trading communities or seek professional advice if you're unsure about implementing the indicator effectively.
---
**Conclusion**
The ATR-Based Stop Loss Indicator is a valuable tool for traders looking to enhance their risk management by setting stop losses that adapt to market volatility. By integrating this indicator into your trading routine, you can improve your ability to protect capital and potentially increase profitability. Remember to use it as part of a comprehensive trading strategy, and always adhere to sound risk management principles.
---
**How to Access the Indicator**
To start using the ATR-Based Stop Loss Indicator, follow these steps:
1. **Obtain the Code**: Copy the PineScript code provided for the indicator.
2. **Create a New Indicator in TradingView**:
- Open TradingView and navigate to the **Pine Editor**.
- Paste the code into the editor.
- Click **Save** and give your indicator a name.
3. **Add to Chart**: Click **Add to Chart** to apply the indicator to your current chart.
4. **Customize Settings**: Adjust the input parameters to suit your preferences and start integrating the indicator into your trading strategy.
---
**Disclaimer**
Trading involves significant risk, and it's possible to lose all your capital. The ATR-Based Stop Loss Indicator is a tool to aid in decision-making but does not guarantee profits or prevent losses. Always conduct your own analysis and consider seeking advice from a financial professional before making trading decisions.
3% Above and Below Previous Day Close (Stable)This indictor will mark intraday levels. Levels will be marked by calculating 3% up and 3% down from previous day close.
This indicator calculates 3% levels above and below the previous day's close. These levels can be used to track potential support or resistance levels throughout the trading day.
This script helps plot 3% above and below the previous day's close price. It allows you to toggle historical levels and can be useful for monitoring potential intraday price action around these key levels.
Daksh RSI POINT to ShootHere are the key points and features of the Pine Script provided:
### 1. **Indicator Settings**:
- The indicator is named **"POINT and Shoot"** and is set for non-overlay (`overlay=false`) on the chart.
- `max_bars_back=4000` is defined, indicating the maximum number of bars that the script can reference.
### 2. **Input Parameters**:
- `Src` (Source): The price source, default is `close`.
- `rsilen` (RSI Length): The length for calculating RSI, default is 20.
- `linestylei`: Style for the trend lines (`Solid` or `Dashed`).
- `linewidth`: Width of the plotted lines, between 1 and 4.
- `showbroken`: Option to show broken trend lines.
- `extendlines`: Option to extend trend lines.
- `showpivot`: Show pivot points (highs and lows).
- `showema`: Show a weighted moving average (WMA) line.
- `len`: Length for calculating WMA, default is 9.
### 3. **RSI Calculation**:
- Calculates a custom RSI value using relative moving averages (`ta.rma`), and optionally uses On-Balance Volume (`ta.obv`) if `indi` is set differently.
- Plots RSI values as a green or red line depending on its position relative to the WMA.
### 4. **Pivot Points**:
- Utilizes the `ta.pivothigh` and `ta.pivotlow` functions to detect pivot highs and lows over the defined period.
- Stores up to 10 recent pivot points for highs and lows.
### 5. **Trend Line Drawing**:
- Lines are drawn based on pivot highs and lows.
- Calculates potential trend lines using linear interpolation and validates them by checking if subsequent bars break or respect the trend.
- If the trend is broken, and `showbroken` is enabled, it draws dotted lines to represent these broken trends.
### 6. **Line Management**:
- Initializes multiple lines (`l1` to `l20` and `t1` to `t20`) and uses these lines for drawing uptrend and downtrend lines.
- The maximum number of lines is set to 20 for uptrends and 20 for downtrends, due to a limit on the total number of lines that can be displayed on the chart.
### 7. **Line Style and Color**:
- Defines different colors for uptrend lines (`ulcolor = color.red`) and downtrend lines (`dlcolor = color.blue`).
- Line styles are determined by user input (`linestyle`) and use either solid or dashed patterns.
- Broken lines use a dotted style to indicate invalidated trends.
### 8. **Pivot Point Plotting**:
- Plots labels "H" and "L" for pivot highs and lows, respectively, to visually indicate turning points on the chart.
### 9. **Utility Functions**:
- Uses helper functions to get the values and positions of the last 10 pivot points, such as `getloval`, `getlopos`, `gethival`, and `gethipos`.
- The script uses custom logic for line placement based on whether the pivots are lower lows or higher highs, with lines adjusted dynamically based on price movement.
### 10. **Plotting and Visuals**:
- The main RSI line is plotted using a color gradient based on its position relative to the WMA.
- Horizontal lines (`hline1` and `hline2`) are used for visual reference at RSI levels of 60 and 40.
- Filled regions between these horizontal lines provide visual cues for potential overbought or oversold zones.
These are the main highlights of the script, which focuses on trend detection, visualization of pivot points, and dynamic line plotting based on price action.
ADX Trend Strength Analyzer█ OVERVIEW
This script implements the Average Directional Index (ADX), a powerful tool used to measure the strength of market trends. It works alongside the Directional Movement Index (DMI), which breaks down the directional market pressure into bullish (+DI) and bearish (-DI) components. The purpose of the ADX is to indicate when the market is in a strong trend, without specifying the direction. This indicator can be especially useful for identifying market trends early and validating trading strategies based on trend-following systems.
The ADX component in this script is based on two key parameters:
ADX Smoothing Length (adxlen), which determines the degree of smoothing for the trend strength.
DI Length (dilen), which defines the look-back period for calculating the directional index values.
Additionally, a horizontal line is plotted at the 30 level, providing a widely used threshold that signifies when a trend is considered strong (above 30).
█ CONCEPTS
Directional Movement (DM): The core idea behind this indicator is the calculation of price movement in terms of bullish and bearish forces. By evaluating the change in highs and lows, the script distinguishes between bullish movement (+DM) and bearish movement (-DM). These values are normalized by dividing them by the True Range (TR), creating the +DI and -DI values.
True Range (TR): The True Range is calculated using the Average True Range (ATR) formula, and it serves to smooth out volatility, ensuring that short-term fluctuations don't distort the long-term trend signal.
ADX Calculation: The ADX is derived from the absolute difference between the +DI and -DI. By smoothing this difference and normalizing it, the ADX is able to measure the overall strength of the trend without regard to whether the market is moving up or down. A rising ADX indicates increasing trend strength, while a falling ADX signals weakening trends.
█ METHODOLOGY
Directional Movement Calculation: The script first determines the upward and downward price movement by comparing changes in the high and low prices. If the upward movement is greater than the downward movement, it registers a bullish signal and vice versa for bearish movement.
True Range Adjustment: The script then applies a smoothing function to normalize these movements by dividing them by the True Range (ATR). This ensures that the trend signal is based on relative, rather than absolute, price movements.
ADX Signal Generation: The final step is to calculate the ADX by applying the Relative Moving Average (RMA) to the difference between +DI and -DI. This produces the ADX value, which is plotted in red, making it easy to visualize shifts in market momentum.
Threshold Line: A blue horizontal line is plotted at 30, which serves as a key reference point. When the ADX is above this line, it indicates a strong trend, whether bullish or bearish.
█ HOW TO USE
Trend Strength: Traders typically use the 30 level as a critical threshold. When the ADX is above 30, it signifies a strong trend, making it a favorable environment for trend-following strategies. Conversely, ADX values below 30 suggest a weak or non-trending market.
+DI and -DI Relationship: The indicator also provides insight into whether the trend is bullish or bearish. When +DI is greater than -DI, the market is considered bullish. When -DI is greater than +DI, the market is considered bearish. While this script focuses on the ADX value itself, the underlying +DI and -DI help interpret the trend direction.
Market Conditions: This indicator is effective in trending markets, but not ideal for choppy or sideways conditions. Traders can use it to determine the best entry and exit points when trends are strong, or to avoid trading in periods of low volatility.
Combining with Other Indicators: The ADX is commonly used in conjunction with oscillators like RSI or moving averages, to confirm the trend strength and avoid false signals.
█ METHOD VARIANTS
This script applies the standard approach for calculating the ADX, but could be adapted with the following variants:
Different Timeframes: The script could be modified to calculate ADX values across higher or lower timeframes, depending on the trader's strategy.
Custom Thresholds: Instead of using the default 30 threshold, traders could adjust the horizontal line to suit their own risk tolerance or market conditions.
EMA Regime FilterEMA REGIME FILTER INDICATOR
✦ OVERVIEW
The EMA Regime Filter is a custom indicator, designed to identify and visualize different market regimes based on the relationship between price action and an Exponential Moving Average (EMA).
✦ KEY FEATURES
Identifies four distinct market regimes: Strong Bullish, Weak Bullish, Strong Bearish, and Weak Bearish
Uses a current/higher timeframe for calculations to reduce noise
Incorporates ATR (Average True Range) to determine significant price moves
Includes an inactivity timer to revert to a neutral state after periods of low volatility
Visualizes the regime through bar colors and candle plots
✦ INPUT PARAMETERS
Source Timeframe : The timeframe used for calculations (default is the chart's timeframe)
ATR Threshold For Significant Move : Multiplier for ATR to determine significant price moves (default: 0.5)
Inactive Regime Period : Number of periods of inactivity before reverting to neutral (default: 10)
EMA Length : Period for the Exponential Moving Average calculation (default: 22)
✦ HOW IT WORKS
Higher Timeframe Data: The indicator requests data from a higher timeframe specified by the user.
Significant Move Detection:
Calculates ATR and multiplies it by the user-defined threshold.
Compares the body width of each candle to this threshold to determine if it's a significant move.
EMA Calculation: Computes an EMA based on the user-defined length.
Regime Determination:
Strong Bullish (2): Significant bullish move above EMA
Weak Bullish (1): Transitioning from bearish, but still above EMA
Strong Bearish (-2): Significant bearish move below EMA
Weak Bearish (-1): Transitioning from bullish, but still below EMA
Neutral (0): After a period of inactivity or at the start
Regime Transitions:
The indicator tracks the current regime and updates it based on new significant moves and the price's relation to the EMA.
An inactivity counter reverts the regime to neutral if no significant moves occur for the specified period.
Visualization:
Bar colors change based on the current regime (lime for bullish, red for bearish, white for neutral).
The intensity of the color indicates the strength of the regime.
✦ USING THE INDICATOR
Add the indicator to your TradingView chart.
Adjust the input parameters as needed:
Increase the ATR threshold for fewer but more significant regime changes.
Adjust the inactive period to change how quickly the indicator reverts to neutral.
Modify the EMA length to suit your trading timeframe.
Observe the changing bar colors to identify the current market regime.
Use the regime information to inform your trading decisions, such as:
Looking for long opportunities in bullish regimes
Considering short positions in bearish regimes
Being cautious or staying out of the market during neutral regimes
Double BBW OverlayDouble BBW Overlay Indicator
Overview
The Double BBW (Bollinger Band Width) Overlay indicator is a custom script for TradingView that combines two BBW indicators with adjustable settings. It allows traders to compare the volatility of two different periods of Bollinger Bands on the same chart. By default, the first BBW is calculated with a 10-period center line, and the second BBW with a 20-period center line, but these values can be customized.
How It Works
Bollinger Bands consist of an upper band, a lower band, and a middle band (typically a moving average). The Bollinger Band Width (BBW) measures the distance between the upper and lower bands relative to the center line. The width of these bands indicates market volatility:
Narrow Bands: Low volatility, usually preceding a breakout.
Wide Bands: High volatility, often following a strong price movement.
This indicator plots two BBW values on a non-overlay chart, making it easy to visualize and compare different market conditions over different periods.
Indicator Components
BBW 1 (default period: 10)
Calculates the BBW using a center line based on a 10-period moving average.
The width is plotted in blue by default.
BBW 2 (default period: 20)
Calculates the BBW using a center line based on a 20-period moving average.
The width is plotted in red by default.
Zero Line
A gray horizontal line at the value of 0 for reference, helping to understand the scale of BBW values.
Input Parameters
Center Line Period for BBW 1 (length1)
Default: 10
This controls the length of the moving average for the first BBW calculation. It defines how many periods are used to calculate the middle Bollinger Band for BBW 1.
Center Line Period for BBW 2 (length2)
Default: 20
This controls the length of the moving average for the second BBW calculation. It defines how many periods are used to calculate the middle Bollinger Band for BBW 2.
Standard Deviation Multiplier (mult)
Default: 2.0
This controls how far the upper and lower Bollinger Bands are from the center line. The multiplier affects how sensitive the Bollinger Bands are to price changes, with higher values producing wider bands.
How to Use
Adding the Indicator: Once the script is added to your TradingView account, simply apply the indicator to any chart. It will be displayed as a separate pane below the price chart, showing two BBW lines corresponding to the two different periods.
Customizing Periods: Use the settings panel to adjust the center line periods for BBW 1 and BBW 2 to match your desired trading strategy. For instance, you can analyze short-term versus long-term volatility by adjusting the periods.
Volatility Analysis:
When both BBW lines are narrow, it indicates low volatility across both short-term and long-term periods, which could suggest that a breakout is imminent.
If both BBW lines widen simultaneously, it shows that volatility is increasing in both timeframes, possibly indicating a strong trend.
Use Cases
Breakout Strategy: When the BBW lines contract significantly, it may signal that a low-volatility period is about to end, which is often followed by a price breakout in either direction.
Trend Strength: Comparing short-term and long-term BBW values can help determine if recent price movements are supported by broader market volatility or if they are isolated to the short term.
Chart Display
BBW 1: Blue line, representing the Bollinger Band Width calculated with a center line period of 10 (or your customized value).
BBW 2: Red line, representing the Bollinger Band Width calculated with a center line period of 20 (or your customized value).
Zero Line: A gray line at 0 is provided for reference, although BBW values are always positive.
Advantages of Using Double BBW
Comprehensive View of Volatility: By overlaying two BBW indicators with different timeframes, you can gain insights into both short-term and long-term market volatility trends.
Customizable: You can easily adjust the moving average periods and the standard deviation multiplier to match your preferred trading strategy or the characteristics of the asset you are trading.
Easy Visualization: The separate plots of BBW values make it easier to see shifts in market volatility, allowing you to spot potential trading opportunities.
Entry Weight Indicator(Dual Labels)이 지표는 트레이더가 동적으로 진입 비중을 결정할 수 있도록 도와주는 도구입니다. 이전 캔들의 종가를 기준으로 두 가지 다른 진입 비중을 계산하여 표시합니다.
주요 특징:
1. 두 가지 진입 비중 계산:
- 저점 기준 (EW Long): 이전 캔들 종가와 룩백 기간 내 최저가 사이의 거리를 기준으로 계산
- 고점 기준 (EW Short): 이전 캔들 종가와 룩백 기간 내 최고가 사이의 거리를 기준으로 계산
2. 시각적 표시:
- 초록색 라벨 (EW Long): 캔들 위에 표시
- 빨간색 라벨 (EW Short): 캔들 아래에 표시
- 룩백 기간 내 최고가와 최저가를 녹색과 빨간색 선으로 표시
3. 사용자 정의 파라미터:
- 원하는 손실 비율 (Desired Loss Percentage)
- 레버리지 (Leverage)
- 룩백 기간 (Lookback Period)
4. 추가 정보 표시:
- 차트 우측 상단에 이전 종가, 최고가, 최저가, 손실 비율 등의 정보를 표시
사용 방법:
1. 원하는 손실 비율, 레버리지, 룩백 기간을 설정합니다.
2. 차트에 표시되는 라벨을 통해 각 캔들에 대한 두 가지 진입 비중을 확인합니다.
3. EW Long (초록색)은 Long 진입 시 비중을, EW Short (빨간색)는 Short 진입 시 비중을 나타냅니다.
주의: 이 지표는 투자 시 직접적인 성과를 가져다주는 지표가 아니며, 실제 거래 결정 시에는 다른 분석 도구와 함께 사용하는 것이 좋습니다.
This indicator is a tool that helps traders dynamically determine their entry weight. It calculates and displays two different entry weights based on the closing price of the previous candle.
Key features:
1. Calculation of two entry weights:
- Low-based (EW Long): Calculated based on the distance between the previous candle's close and the lowest price within the lookback period
- High-based (EW Short): Calculated based on the distance between the previous candle's close and the highest price within the lookback period
2. Visual display:
- Green label (EW Long): Displayed above the candle
- Red label (EW Short): Displayed below the candle
- Highest and lowest prices within the lookback period are shown as green and red lines
3. User-defined parameters:
- Desired Loss Percentage
- Leverage
- Lookback Period
4. Additional information display:
- Information such as previous close, highest price, lowest price, and loss percentage is displayed in the upper right corner of the chart
How to use:
1. Set the desired loss percentage, leverage, and lookback period.
2. Check the two entry weights for each candle through the labels displayed on the chart.
3. EW Long (green) represents the entry weight for long positions, while EW Short (red) represents the entry weight for short positions.
Caution: This indicator does not directly lead to investment performance. When making actual trading decisions, it is advisable to use it in conjunction with other analytical tools.
Aurous - Horizontal Rays Define Pip Size:
Since 1 pip for XAUUSD is usually considered as 0.1, the pip Size is set to 0.1. A 50-pip interval is therefore 50 * 0.1 = 5.0.
Nearest Pip Level Calculation:
We find the nearest 50-pip level based on the current price of XAUUSD. The formula nearestPipLevel = round(close / pipInterval) * pipInterval rounds the current price to the nearest multiple of the 50-pip interval.
Loop for Multiple Lines:
We use a loop that runs from -20 to 20 to plot horizontal ray lines 50 pips above and below the current price. The range (-20 to 20) ensures there are enough lines plotted both above and below the price.
Horizontal Ray Lines:
The line.new function is used to draw the horizontal rays, extending to the right.
Plot Current Price:
We also plot the closing price with a blue line to make it easier to track the price against the horizontal rays.
Gann Levels 360
This indicator plots a series of horizontal lines on a chart based on pre-defined levels and the current market price. These levels are believed to be significant for potential support and resistance zones according to the Gann trading methodology.
This code defines a custom indicator that plots a set of Gann levels and dynamically adjusts them based on the current market price. Users can change the line color through the input option.
Monthly Breakout StrategyThis Monthly High/Low Breakout Strategy is designed to take long or short positions based on breakouts from the high or low of the previous month. Users can select whether they want to go long at a breakout above the previous month’s high, short at a breakdown below the previous month’s low, or use the reverse logic. Additionally, it includes a month filter, allowing trades to be executed only during user-specified months.
Breakout strategies, particularly those based on monthly highs and lows, aim to capitalize on price momentum. These systems rely on the assumption that once a significant price level is breached (such as the previous month's high or low), the market is likely to continue moving in the same direction due to increased volatility and trend-following behaviors by traders. Studies have demonstrated the potential effectiveness of breakout strategies in financial markets.
Scientific Evidence Supporting Breakout Strategies:
Momentum in Financial Markets:
Research on momentum-based strategies, which include breakout trading, shows that securities breaking key levels of support or resistance tend to continue their price movement in the direction of the breakout. Jegadeesh and Titman (1993) found that stocks with strong performance over a given period tend to continue performing well in subsequent periods, a principle also applied to breakout strategies.
Behavioral Finance:
The psychological factor of herd behavior is one of the driving forces behind breakout strategies. When prices break out of a key level (such as a monthly high), it triggers increased buying or selling pressure as traders join the trend. Barberis, Shleifer, and Vishny (1998) explained how cognitive biases, such as overconfidence and sentiment, can amplify price trends, which breakout strategies attempt to exploit.
Market Efficiency:
While markets are generally efficient, periods of inefficiency can occur, particularly around the breakouts of significant price levels. These inefficiencies often result in temporary price trends, which breakout strategies can exploit before the market corrects itself (Fama, 1970).
Risk Considerations:
Despite the potential for profit, the Monthly Breakout Strategy comes with several risks:
False Breakouts:
One of the most common risks in breakout strategies is the occurrence of false breakouts. These happen when the price temporarily moves above (or below) a key level but quickly reverses direction, causing losses for traders who entered positions too early. This is particularly risky in low-volatility environments.
Market Volatility:
Monthly breakout strategies rely on momentum, which may not be consistent across different market conditions. During periods of low volatility, price breakouts might lack the follow-through required for the strategy to succeed, leading to poor performance.
Whipsaw Risk:
The strategy is vulnerable to whipsaw markets, where prices oscillate around key levels without establishing a clear direction. This can result in frequent entry and exit signals that lead to losses, especially if trading costs are not managed properly.
Overfitting to Past Data:
If the month-selection filter is overly optimized based on historical data, the strategy may suffer from overfitting—performing well in backtests but poorly in real-time trading. This happens when strategies are tailored to past market conditions that may not repeat.
Conclusion:
While monthly breakout strategies can be effective in markets with strong momentum, they are subject to several risks, including false breakouts, volatility dependency, and whipsaw behavior. It is crucial to backtest this strategy thoroughly and ensure it aligns with your risk tolerance before implementing it in live trading.
References:
Jegadeesh, N., & Titman, S. (1993). Returns to Buying Winners and Selling Losers: Implications for Stock Market Efficiency. Journal of Finance, 48(1), 65-91.
Barberis, N., Shleifer, A., & Vishny, R. (1998). A Model of Investor Sentiment. Journal of Financial Economics, 49(3), 307-343.
Fama, E. F. (1970). Efficient Capital Markets: A Review of Theory and Empirical Work. Journal of Finance, 25(2), 383-417.
Candle Low Offset [QuadzCrypto]==== Candle Low Offset Indicator ====
==== Overview ====
The "Candle Low Offset" indicator offers a method for tracking a price point that sit below the low of each candle by a percentage offset.
It was originally intended to provide a price point with flexibility for setting a stop loss below the entry candle low, however, it could be used for other applications.
==== Definitions ====
- Offset Percentage: The % below the low you wish the trend line to follow configurable to 0.01 increments
==== Plots ====
- Offset: Plots a trend line below the candle lows
==== Style ====
- Offset: Allows users to configure the colour and thickness of the offset plot line
==== Application ====
This has been coded to be used with the Max StopLoss function on the Krown Quant SKX indicator to provide an alternative stop loss location on the entry candle.
==== Disclaimer ====
This indicator is for educational purposes only and should not be construed as financial advice. Trading involves risk, and you should consult with a qualified financial advisor before making any trading decisions.
ToS█ OVERVIEW
Contains methods for conversion to string of simple types int/float/bool/string/line/label/box .
- toS() - For bool/int/float works much the same as str.tostring() with some shorthand formatting options for int/float. For line/label/box displays their text and coordinates automatically formatting x coordinate as time or bar index.
- toShortString() - Converts a number to a short form using "k", "m", "bn" and "T" nominators. (e.g. `12,350` --> `12.4k`).
Supports some shorthand formatting options for int/float and time.
█ HOW TO USE
All toS() methods have the same parameters:
Parameters:
val (int) : A float to be converted to string
format (string) : Format string, which depends on the value type
nz (string) : (string) A string used to represent na (na values are substituted with this string).
For toS(bool/int/float) format parameter works in the same way as `str.format()` (i.e. you can use same format strings as with `str.format()` with `{0}` as a placeholder for the value)
Some shorthand "format" options available:
--- number ---
- "" => "{0}"
- "number" => "{0}"
- "0" => "{0, number, 0 }"
- "0.0" => "{0, number, 0.0 }"
- "0.00" => "{0, number, 0.00 }"
- "0.000" => "{0, number, 0.000 }"
- "0.0000" => "{0, number, 0.0000 }"
- "0.00000" => "{0, number, 0.00000 }"
- "0.000000" => "{0, number, 0.000000 }"
- "0.0000000" => "{0, number, 0.0000000}"
--- date ---
- "... ... " in any place is substituted with "{0, date, dd.MM.YY}"
- "date" => "{0, date, dd.MM.YY}"
- "date : time" => "{0, date, dd.MM.YY} : {0, time, HH.mm.ss}"
- "dd.MM" => "{0, date, dd:MM}"
- "dd" => "{0, date, dd}"
--- time ---
- "... ... " in any place is substituted with "{0, time, HH.mm.ss}"
- "time" => "{0, time, HH:mm:ss}"
- "HH:mm" => "{0, time, HH:mm}"
- "mm:ss" => "{0, time, mm:ss}"
- "date time" => "{0, date, dd.MM.YY\} {0, time, HH.mm.ss}"
- "date, time" => "{0, date, dd.MM.YY\}, {0, time, HH.mm.ss}"
- "date,time" => "{0, date, dd.MM.YY\},{0, time, HH.mm.ss}"
- "date time" => "{0, date, dd.MM.YY\} {0, time, HH.mm.ss}"
For toS(line) :
format (string) : (string) (Optional) Use `x1` as placeholder for `x1` and so on. E.g. default format is `"(x1, y1) - (x2, y2)"`.
For toS(label) :
format (string) : (string) (Optional) Use `x1` as placeholder for `x`, `y1 - for `y` and `txt` for label's text. E.g. default format is `(x1, y1): "txt"` if ptint_text is true and `(x1, y1)` if false.
For toS(box) :
format (string) : (string) (Optional) Use `x1` as placeholder for `x`, `y1 - for `y` etc. E.g. default format is "(x1, y1) - (x2, y2)".
For toS(color) :
format (string) : (string) (Optional) Options are "HEX" (e.g. "#FFFFFF33") or "RGB" (e.g. "rgb(122,122,122,23)"). Default is "HEX".
█ LIST OF FUNCTIONS AND PARAMETERS
method toS(val, format, nz)
Formats the `int/float` in the same way as `str.format()` (i.e. you can use same format strings as with
`str.format()` with `{0}` arg) with some shorthand "format" options:
```
--- number ---
- "" => "{0}"
- "number" => "{0}"
- "0" => "{0, number, 0 }"
- "0.0" => "{0, number, 0.0 }"
- "0.00" => "{0, number, 0.00 }"
- "0.000" => "{0, number, 0.000 }"
- "0.0000" => "{0, number, 0.0000 }"
- "0.00000" => "{0, number, 0.00000 }"
- "0.000000" => "{0, number, 0.000000 }"
- "0.0000000" => "{0, number, 0.0000000}"
--- date ---
- "......" in angular brackets in any place is substituted with "{0, date, dd.MM.YY}"
- "date" => "{0, date, dd.MM.YY}"
- "date : time" => "{0, date, dd.MM.YY} : {0, time, HH.mm.ss}"
- "dd.MM" => "{0, date, dd:MM}"
- "dd" => "{0, date, dd}"
--- time ---
- "......" in angular brackets in any place is substituted with "{0, time, HH.mm.ss}"
- "time" => "{0, time, HH:mm:ss}"
- "HH:mm" => "{0, time, HH:mm}"
- "mm:ss" => "{0, time, mm:ss}"
- "date time" => "{0, date, dd.MM.YY\} {0, time, HH.mm.ss}"
- "date, time" => "{0, date, dd.MM.YY\}, {0, time, HH.mm.ss}"
- "date,time" => "{0, date, dd.MM.YY\},{0, time, HH.mm.ss}"
- "date time" => "{0, date, dd.MM.YY\} {0, time, HH.mm.ss}"
```
Namespace types: series int, simple int, input int, const int
Parameters:
val (int) : A float to be converted to string
format (string) : Format string (e.g. "0.000" or "date : time" or "HH:mm")
nz (string) : (string) A string used to represent na (na values are substituted with this string).
method toS(val, format, nz)
Formats the `int/float` in the same way as `str.format()` (i.e. you can use same format strings as with
`str.format()` with `{0}` arg) with some shorthand "format" options:
```
--- number ---
- "" => "{0}"
- "number" => "{0}"
- "0" => "{0, number, 0 }"
- "0.0" => "{0, number, 0.0 }"
- "0.00" => "{0, number, 0.00 }"
- "0.000" => "{0, number, 0.000 }"
- "0.0000" => "{0, number, 0.0000 }"
- "0.00000" => "{0, number, 0.00000 }"
- "0.000000" => "{0, number, 0.000000 }"
- "0.0000000" => "{0, number, 0.0000000}"
--- date ---
- "......" in angular brackets in any place is substituted with "{0, date, dd.MM.YY}"
- "date" => "{0, date, dd.MM.YY}"
- "date : time" => "{0, date, dd.MM.YY} : {0, time, HH.mm.ss}"
- "dd.MM" => "{0, date, dd:MM}"
- "dd" => "{0, date, dd}"
--- time ---
- "......" in angular brackets in any place is substituted with "{0, time, HH.mm.ss}"
- "time" => "{0, time, HH:mm:ss}"
- "HH:mm" => "{0, time, HH:mm}"
- "mm:ss" => "{0, time, mm:ss}"
- "date time" => "{0, date, dd.MM.YY\} {0, time, HH.mm.ss}"
- "date, time" => "{0, date, dd.MM.YY\}, {0, time, HH.mm.ss}"
- "date,time" => "{0, date, dd.MM.YY\},{0, time, HH.mm.ss}"
- "date time" => "{0, date, dd.MM.YY\} {0, time, HH.mm.ss}"
```
Namespace types: series float, simple float, input float, const float
Parameters:
val (float) : A float to be converted to string
format (string) : Format string (e.g. "0.000" or "date : time" or "HH:mm")
nz (string) : (string) A string used to represent na (na values are substituted with this string).
method toS(val, format, nz)
Formats `bool val` in the same way as `str.format()` (i.e. you can use same format strings as with
`str.format()` with `{0}` placeholder for the `val` argument).
Namespace types: series bool, simple bool, input bool, const bool
Parameters:
val (bool) : (bool) Value to be formatted
format (string)
nz (string) : (string) A string used to represent na (na values are substituted with this string).
method toS(val, format, nz)
Formats `string val` in the same way as `str.format()` (i.e. you can use same format strings as with
`str.format()` with `{0}` placeholder for the `val` argument).
Namespace types: series color, simple color, input color, const color
Parameters:
val (color)
format (string) : (string) "HEX" or "RGB"
nz (string) : (string) A string used to represent na (na values are substituted with this string).
method toS(val, format, nz)
Formats `string val` in the same way as `str.format()` (i.e. you can use same format strings as with
`str.format()` with `{0}` placeholder for the `val` argument).
Namespace types: series string, simple string, input string, const string
Parameters:
val (string)
format (string)
nz (string) : (string) A string used to represent na (na values are substituted with this string).
method toS(ln, format, nz)
Returns line's coordinates as a string (by default in "(x1, y1) - (x2, y2)" format, use `x1`, `y1`, `x2`,`y2` as placeholders in `format` string)). Automatically detects
whether the coordinates are in `xloc.bar_index` or `xloc.bar_time` and displays
accordingly (in _dd.MM.yy HH:mm:ss_ format)
Namespace types: series line
Parameters:
ln (line)
format (string) : (string) (Optional) Use `x1` as placeholder for `x1` and so on. E.g. default format is `"(x1, y1) - (x2, y2)"`.
nz (string) : (string) (Optional) If `val` is `na` and `nz` is not `na` the value of `nz` param is returned instead.
method toS(lbl, format, nz, print_text)
Returns label's coordinates and text as a string (by default in "(x, y): text = ...)" format; use `x1`, `y1`, `txt` as placeholders in `format` string))).
Automatically detects whether the coordinates are in `xloc.bar_index` or `xloc.bar_time` and displays.
accordingly (in _dd.MM.yy HH:mm:ss_ format)
Namespace types: series label
Parameters:
lbl (label)
format (string) : (string) (Optional) Use `x1` as placeholder for `x`, `y1 - for `y` and `txt` for label's text. E.g. default format is `(x1, y1): "txt"`.
nz (string) : (string) A string used to represent na (na values are substituted with this string).
print_text (bool)
method toS(bx, format, nz)
Returns box's coordinates as a string (by default in "(x1, y1) - (x2, y2)" format)
Namespace types: series box
Parameters:
bx (box)
format (string) : (string) (Optional) Use `x1` as placeholder for `x`, `y1 - for `y` etc. E.g. default format is "(x1, y1) - (x2, y2)".
nz (string) : (string) A string used to represent na (na values are substituted with this string).
method toShortString(this, decimals)
Converts number to a short form using "k", "m", "bn" and "T" nominators. (e.g. `12,350` --> `12.4k`).
@this (series float) Number to be converted to short format.
@decimals (series int) Optional argument. Decimal places to which number will be rounded. When no argument
is supplied, rounding is to the nearest integer.
Namespace types: series float, simple float, input float, const float
Parameters:
this (float)
decimals (int)
Mean Reversion Cloud (Ornstein-Uhlenbeck) // AlgoFyreThe Mean Reversion Cloud (Ornstein-Uhlenbeck) indicator detects mean-reversion opportunities by applying the Ornstein-Uhlenbeck process. It calculates a dynamic mean using an Exponential Weighted Moving Average, surrounded by volatility bands, signaling potential buy/sell points when prices deviate.
TABLE OF CONTENTS
🔶 ORIGINALITY
🔸Adaptive Mean Calculation
🔸Volatility-Based Cloud
🔸Speed of Reversion (θ)
🔶 FUNCTIONALITY
🔸Dynamic Mean and Volatility Bands
🞘 How it works
🞘 How to calculate
🞘 Code extract
🔸Visualization via Table and Plotshapes
🞘 Table Overview
🞘 Plotshapes Explanation
🞘 Code extract
🔶 INSTRUCTIONS
🔸Step-by-Step Guidelines
🞘 Setting Up the Indicator
🞘 Understanding What to Look For on the Chart
🞘 Possible Entry Signals
🞘 Possible Take Profit Strategies
🞘 Possible Stop-Loss Levels
🞘 Additional Tips
🔸Customize settings
🔶 CONCLUSION
▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅
🔶 ORIGINALITY The Mean Reversion Cloud (Ornstein-Uhlenbeck) is a unique indicator that applies the Ornstein-Uhlenbeck stochastic process to identify mean-reverting behavior in asset prices. Unlike traditional moving average-based indicators, this model uses an Exponentially Weighted Moving Average (EWMA) to calculate the long-term mean, dynamically adjusting to recent price movements while still considering all historical data. It also incorporates volatility bands, providing a "cloud" that visually highlights overbought or oversold conditions. By calculating the speed of mean reversion (θ) through the autocorrelation of log returns, this indicator offers traders a more nuanced and mathematically robust tool for identifying mean-reversion opportunities. These innovations make it especially useful for markets that exhibit range-bound characteristics, offering timely buy and sell signals based on statistical deviations from the mean.
🔸Adaptive Mean Calculation Traditional MA indicators use fixed lengths, which can lead to lagging signals or over-sensitivity in volatile markets. The Mean Reversion Cloud uses an Exponentially Weighted Moving Average (EWMA), which adapts to price movements by dynamically adjusting its calculation, offering a more responsive mean.
🔸Volatility-Based Cloud Unlike simple moving averages that only plot a single line, the Mean Reversion Cloud surrounds the dynamic mean with volatility bands. These bands, based on standard deviations, provide traders with a visual cue of when prices are statistically likely to revert, highlighting potential reversal zones.
🔸Speed of Reversion (θ) The indicator goes beyond price averages by calculating the speed at which the price reverts to the mean (θ), using the autocorrelation of log returns. This gives traders an additional tool for estimating the likelihood and timing of mean reversion, making the signals more reliable in practice.
🔶 FUNCTIONALITY The Mean Reversion Cloud (Ornstein-Uhlenbeck) indicator is designed to detect potential mean-reversion opportunities in asset prices by applying the Ornstein-Uhlenbeck stochastic process. It calculates a dynamic mean through the Exponentially Weighted Moving Average (EWMA) and plots volatility bands based on the standard deviation of the asset's price over a specified period. These bands create a "cloud" that represents expected price fluctuations, helping traders to identify overbought or oversold conditions. By calculating the speed of reversion (θ) from the autocorrelation of log returns, the indicator offers a more refined way of assessing how quickly prices may revert to the mean. Additionally, the inclusion of volatility provides a comprehensive view of market conditions, allowing for more accurate buy and sell signals.
Let's dive into the details:
🔸Dynamic Mean and Volatility Bands The dynamic mean (μ) is calculated using the EWMA, giving more weight to recent prices but considering all historical data. This process closely resembles the Ornstein-Uhlenbeck (OU) process, which models the tendency of a stochastic variable (such as price) to revert to its mean over time. Volatility bands are plotted around the mean using standard deviation, forming the "cloud" that signals overbought or oversold conditions. The cloud adapts dynamically to price fluctuations and market volatility, making it a versatile tool for mean-reversion strategies. 🞘 How it works Step one: Calculate the dynamic mean (μ) The Ornstein-Uhlenbeck process describes how a variable, such as an asset's price, tends to revert to a long-term mean while subject to random fluctuations. In this indicator, the EWMA is used to compute the dynamic mean (μ), mimicking the mean-reverting behavior of the OU process. Use the EWMA formula to compute a weighted mean that adjusts to recent price movements. Assign exponentially decreasing weights to older data while giving more emphasis to current prices. Step two: Plot volatility bands Calculate the standard deviation of the price over a user-defined period to determine market volatility. Position the upper and lower bands around the mean by adding and subtracting a multiple of the standard deviation. 🞘 How to calculate Exponential Weighted Moving Average (EWMA)
The EWMA dynamically adjusts to recent price movements:
mu_t = lambda * mu_{t-1} + (1 - lambda) * P_t
Where mu_t is the mean at time t, lambda is the decay factor, and P_t is the price at time t. The higher the decay factor, the more weight is given to recent data.
Autocorrelation (ρ) and Standard Deviation (σ)
To measure mean reversion speed and volatility: rho = correlation(log(close), log(close ), length) Where rho is the autocorrelation of log returns over a specified period.
To calculate volatility:
sigma = stdev(close, length)
Where sigma is the standard deviation of the asset's closing price over a specified length.
Upper and Lower Bands
The upper and lower bands are calculated as follows:
upper_band = mu + (threshold * sigma)
lower_band = mu - (threshold * sigma)
Where threshold is a multiplier for the standard deviation, usually set to 2. These bands represent the range within which the price is expected to fluctuate, based on current volatility and the mean.
🞘 Code extract // Calculate Returns
returns = math.log(close / close )
// Calculate Long-Term Mean (μ) using EWMA over the entire dataset
var float ewma_mu = na // Initialize ewma_mu as 'na'
ewma_mu := na(ewma_mu ) ? close : decay_factor * ewma_mu + (1 - decay_factor) * close
mu = ewma_mu
// Calculate Autocorrelation at Lag 1
rho1 = ta.correlation(returns, returns , corr_length)
// Ensure rho1 is within valid range to avoid errors
rho1 := na(rho1) or rho1 <= 0 ? 0.0001 : rho1
// Calculate Speed of Mean Reversion (θ)
theta = -math.log(rho1)
// Calculate Volatility (σ)
sigma = ta.stdev(close, corr_length)
// Calculate Upper and Lower Bands
upper_band = mu + threshold * sigma
lower_band = mu - threshold * sigma
🔸Visualization via Table and Plotshapes
The table shows key statistics such as the current value of the dynamic mean (μ), the number of times the price has crossed the upper or lower bands, and the consecutive number of bars that the price has remained in an overbought or oversold state.
Plotshapes (diamonds) are used to signal buy and sell opportunities. A green diamond below the price suggests a buy signal when the price crosses below the lower band, and a red diamond above the price indicates a sell signal when the price crosses above the upper band.
The table and plotshapes provide a comprehensive visualization, combining both statistical and actionable information to aid decision-making.
🞘 Code extract // Reset consecutive_bars when price crosses the mean
var consecutive_bars = 0
if (close < mu and close >= mu) or (close > mu and close <= mu)
consecutive_bars := 0
else if math.abs(deviation) > 0
consecutive_bars := math.min(consecutive_bars + 1, dev_length)
transparency = math.max(0, math.min(100, 100 - (consecutive_bars * 100 / dev_length)))
🔶 INSTRUCTIONS
The Mean Reversion Cloud (Ornstein-Uhlenbeck) indicator can be set up by adding it to your TradingView chart and configuring parameters such as the decay factor, autocorrelation length, and volatility threshold to suit current market conditions. Look for price crossovers and deviations from the calculated mean for potential entry signals. Use the upper and lower bands as dynamic support/resistance levels for setting take profit and stop-loss orders. Combining this indicator with additional trend-following or momentum-based indicators can improve signal accuracy. Adjust settings for better mean-reversion detection and risk management.
🔸Step-by-Step Guidelines
🞘 Setting Up the Indicator
Adding the Indicator to the Chart:
Go to your TradingView chart.
Click on the "Indicators" button at the top.
Search for "Mean Reversion Cloud (Ornstein-Uhlenbeck)" in the indicators list.
Click on the indicator to add it to your chart.
Configuring the Indicator:
Open the indicator settings by clicking on the gear icon next to its name on the chart.
Decay Factor: Adjust the decay factor (λ) to control the responsiveness of the mean calculation. A higher value prioritizes recent data.
Autocorrelation Length: Set the autocorrelation length (θ) for calculating the speed of mean reversion. Longer lengths consider more historical data.
Threshold: Define the number of standard deviations for the upper and lower bands to determine how far price must deviate to trigger a signal.
Chart Setup:
Select the appropriate timeframe (e.g., 1-hour, daily) based on your trading strategy.
Consider using other indicators such as RSI or MACD to confirm buy and sell signals.
🞘 Understanding What to Look For on the Chart
Indicator Behavior:
Observe how the price interacts with the dynamic mean and volatility bands. The price staying within the bands suggests mean-reverting behavior, while crossing the bands signals potential entry points.
The indicator calculates overbought/oversold conditions based on deviation from the mean, highlighted by color-coded cloud areas on the chart.
Crossovers and Deviation:
Look for crossovers between the price and the mean (μ) or the bands. A bullish crossover occurs when the price crosses below the lower band, signaling a potential buying opportunity.
A bearish crossover occurs when the price crosses above the upper band, suggesting a potential sell signal.
Deviations from the mean indicate market extremes. A large deviation indicates that the price is far from the mean, suggesting a potential reversal.
Slope and Direction:
Pay attention to the slope of the mean (μ). A rising slope suggests bullish market conditions, while a declining slope signals a bearish market.
The steepness of the slope can indicate the strength of the mean-reversion trend.
🞘 Possible Entry Signals
Bullish Entry:
Crossover Entry: Enter a long position when the price crosses below the lower band with a positive deviation from the mean.
Confirmation Entry: Use additional indicators like RSI (above 50) or increasing volume to confirm the bullish signal.
Bearish Entry:
Crossover Entry: Enter a short position when the price crosses above the upper band with a negative deviation from the mean.
Confirmation Entry: Look for RSI (below 50) or decreasing volume to confirm the bearish signal.
Deviation Confirmation:
Enter trades when the deviation from the mean is significant, indicating that the price has strayed far from its expected value and is likely to revert.
🞘 Possible Take Profit Strategies
Static Take Profit Levels:
Set predefined take profit levels based on historical volatility, using the upper and lower bands as guides.
Place take profit orders near recent support/resistance levels, ensuring you're capitalizing on the mean-reversion behavior.
Trailing Stop Loss:
Use a trailing stop based on a percentage of the price deviation from the mean to lock in profits as the trend progresses.
Adjust the trailing stop dynamically along the calculated bands to protect profits as the price returns to the mean.
Deviation-Based Exits:
Exit when the deviation from the mean starts to decrease, signaling that the price is returning to its equilibrium.
🞘 Possible Stop-Loss Levels
Initial Stop Loss:
Place an initial stop loss outside the lower band (for long positions) or above the upper band (for short positions) to protect against excessive deviations.
Use a volatility-based buffer to avoid getting stopped out during normal price fluctuations.
Dynamic Stop Loss:
Move the stop loss closer to the mean as the price converges back towards equilibrium, reducing risk.
Adjust the stop loss dynamically along the bands to account for sudden market movements.
🞘 Additional Tips
Combine with Other Indicators:
Enhance your strategy by combining the Mean Reversion Cloud with momentum indicators like MACD, RSI, or Bollinger Bands to confirm market conditions.
Backtesting and Practice:
Backtest the indicator on historical data to understand how it performs in various market environments.
Practice using the indicator on a demo account before implementing it in live trading.
Market Awareness:
Keep an eye on market news and events that might cause extreme price movements. The indicator reacts to price data and might not account for news-driven events that can cause large deviations.
🔸Customize settings 🞘 Decay Factor (λ): Defines the weight assigned to recent price data in the calculation of the mean. A value closer to 1 places more emphasis on recent prices, while lower values create a smoother, more lagging mean.
🞘 Autocorrelation Length (θ): Sets the period for calculating the speed of mean reversion and volatility. Longer lengths capture more historical data, providing smoother calculations, while shorter lengths make the indicator more responsive.
🞘 Threshold (σ): Specifies the number of standard deviations used to create the upper and lower bands. Higher thresholds widen the bands, producing fewer signals, while lower thresholds tighten the bands for more frequent signals.
🞘 Max Gradient Length (γ): Determines the maximum number of consecutive bars for calculating the deviation gradient. This setting impacts the transparency of the plotted bands based on the length of deviation from the mean.
🔶 CONCLUSION
The Mean Reversion Cloud (Ornstein-Uhlenbeck) indicator offers a sophisticated approach to identifying mean-reversion opportunities by applying the Ornstein-Uhlenbeck stochastic process. This dynamic indicator calculates a responsive mean using an Exponentially Weighted Moving Average (EWMA) and plots volatility-based bands to highlight overbought and oversold conditions. By incorporating advanced statistical measures like autocorrelation and standard deviation, traders can better assess market extremes and potential reversals. The indicator’s ability to adapt to price behavior makes it a versatile tool for traders focused on both short-term price deviations and longer-term mean-reversion strategies. With its unique blend of statistical rigor and visual clarity, the Mean Reversion Cloud provides an invaluable tool for understanding and capitalizing on market inefficiencies.
Periodic Linear Regressions [LuxAlgo]The Periodic Linear Regressions (PLR) indicator calculates linear regressions periodically (similar to the VWAP indicator) based on a user-set period (anchor).
This allows for estimating underlying trends in the price, as well as providing potential supports/resistances.
🔶 USAGE
The Periodic Linear Regressions indicator calculates a linear regression over a user-selected interval determined from the selected "Anchor Period".
The PLR can be visualized as a regular linear regression (Static), with a fit readjusting for new data points until the end of the selected period, or as a moving average (Rolling), with new values obtained from the last point of a linear regression fitted over the calculation interval. While the static method line is prone to repainting, it has value since it can further emphasize the linearity of an underlying trend, as well as suggest future trend directions by extrapolating the fit.
Extremities are included in the indicator, these are obtained from the root mean squared error (RMSE) between the price and calculated linear regression. The Multiple setting allows the users to control how far each extremity is from the other.
Periodic Linear Regressions can be helpful in finding support/resistance areas or even opportunities when ranging in a channel.
The anchor - where a new period starts - can be shown (in this case in the top right corner).
The shown bands can be visualized by enabling Show Extremities in settings ( Rolling or Static method).
The script includes a background gradient color option for the bands, which only applies when using the Rolling method.
The indicator colors can be suggestive of the detected trend and are determined as follows:
Method Rolling: a gradient color between red and green indicates the trend; more green if the output is rising, suggesting an uptrend, and more red if it is decreasing, suggesting a downtrend.
Method Static: green if the slope of the line is positive, suggesting an uptrend, red if negative, suggesting a downtrend.
🔶 DETAILS
🔹 Anchor Type
When the Anchor Type is set to Periodic , the indicator will be reset when the "Anchor Period" changes, after which calculations will start again.
An anchored rolling line set at First Bar won't reset at a new session; it will continue calculating the linear regression from the first bar to the last; in other words, every bar is included in the calculation. This can be useful to detect potential long-term tops/bottoms.
Note that a linear regression needs at least two values for its calculation, which explains why you won't see a static line at the first bar of the session. The rolling linear regression will only show from the 3rd bar of the session since it also needs a previous value.
🔹 Rolling/Static
When Anchor Type is set at Periodic , a linear regression is calculated between the first bar of the chosen session and the current bar, aiming to find the line that best fits the dataset.
The example above shows the lines drawn during the session. The offered script, though, shows the last calculated point connected to the previous point when the Rolling method is chosen, while the Static method shows the latest line.
Note that linear regression needs at least two values, which explains why you won't see a static line at the first bar of the session. The rolling line will only show from the 3rd bar of the session since it also needs a previous value.
🔶 SETTINGS
Method: Indicator method used, with options: "Static" (straight line) / "Rolling" (rolling linear regression).
Anchor Type: "Periodic / First Bar" (the latter works only when "Method" is set to "Rolling").
Anchor Period: Only applicable when "Anchor Type" is set at "Periodic".
Source: open, high, low, close, ...
Multiple: Alters the width of the bands when "Show Extremities" is enabled.
Show Extremities: Display one upper and one lower extremity.
🔹 Color Settings
Mono Color: color when "Bicolor" is disabled
Bicolor: Toggle on/off + Colors
Gradient: Background color when "Show extremities" is enabled + level of gradient
🔹 Dashboard
Show Dashboard
Location of dashboard
Text size
EV Calculator [CHE]EV Calculator with Adjustable Boxes and Custom Colors for TradingView
Introduction:
As a trader, one of the key metrics you need to evaluate is the Expected Value (EV) of your trading strategy. Understanding EV helps you gauge whether your trades will be profitable in the long run. This TradingView script allows you to visualize your EV alongside customizable win rates and risk-to-reward ratios. With adjustable visual components, you can quickly determine whether your trading strategy has a positive or negative EV, and make informed decisions.
Features of the Script:
1. Customizable Inputs:
- Win Rate: Set your win probability (0.0 to 1.0), which represents how often your strategy is successful.
- Risk and Reward: Define how much you're risking and the potential reward for each trade.
2. Visual Representation:
- The script creates colored boxes representing different EV scenarios:
- Green Box: Indicates a good EV (>2), suggesting a highly profitable strategy.
- Yellow Box: Represents a neutral EV (between 0 and 2), where the strategy could work but is not optimal.
- Red Box: Shows a negative EV (<0), signaling that the strategy may lead to losses.
3. Adjustable Box Size:
- You can modify the width and height of the boxes to fit your chart display preferences, giving you better visual clarity based on your screen or chart style.
4. Dynamic Labels:
- Each bar in the chart includes dynamic labels showing:
- Win Rate: Displays the percentage chance of success.
- EV Value: Shows the calculated expected value based on the win rate and risk-reward ratio.
- Guide: Explains what each colored box means so that you can easily interpret the chart.
5. Scalability and Flexibility:
- The script only keeps a maximum of 20 recent entries, ensuring that your chart stays clean and organized.
- Both the number of labels and boxes adjust automatically to match your preferred settings, enhancing usability.
How the EV Calculation Works:
The formula for EV is based on a standard risk-to-reward model:
EV = (Win\ Rate \times Reward) - (Loss\ Probability \times Risk)
For example:
- If your win rate is 60% and your risk-to-reward ratio is 1:3, the script will calculate whether this strategy is expected to yield positive returns or result in long-term losses.
Example Use Case:
Let's say you are trading with a 60% win rate, risking 1 unit to gain 3 units. The script calculates that your EV is positive and represents this with a Green Box, showing you that your strategy has a high likelihood of being profitable. If your strategy slips and the win rate drops, the EV calculation will adjust, and you may see Yellow or Red Boxes, signaling a need for adjustment.
Final Thoughts:
This script is designed for traders who want to take their analysis beyond the basics. By providing real-time visualization of your EV, you can better assess whether your strategy is sound and make adjustments as needed.
How to Use:
- Adjust the input parameters for Win Rate, Risk, and Reward to match your trading strategy.
- Observe the colored boxes and labels to quickly understand if your current strategy is in a healthy EV zone.
- Use this visual feedback to refine your approach and stay on track towards profitability.
This tool simplifies the complex calculations behind EV and turns it into an intuitive and powerful decision-making aid for traders.
Now you're ready to integrate the EV Calculator with Adjustable Boxes and Custom Colors into your trading routine and start optimizing your strategies for long-term success!
Happy Trading and best regards Chervolino