Gomoku_V2I tried to improve the one - step equilibrium table.
Since the original glance consisted of the middle line of the Hiroo band, something is calculated from the upper and lower lines.
Leading span A = Double the width of the HiLo band (Green 2) * (1-75 (≒ 76.4% return)), the central complex clouds only changed the expression at a glance.
It is unified to shift all lines at first glance by 25. The old lagging span was renamed to the preceding price span.
You can use the first line of conversion line and reference line with the combination of the preceding conversion line, the preceding reference line and the preceding price span.
The part surrounded by the preceding conversion line and the preceding reference line is defined as rain cloud.
The leading span B is the interpretation of the rain cloud and the effective value of the cloud.
(the width of the reference line and the leading span A) ÷ The width of the rain cloud is like the intensity of the cloud.
Rain clouds have the same properties as clouds, and the twisted parts are weak.
When the type of cloud and rain cloud are different, it is countervailing and resistance seems to be weak.
Even when the width of the leading span A and the leading reference line is narrow, the resistance seems to be weak.
It seems there are clouds above and below as well because it was the motivation for development so there are two clouds each above and below. The clouds are five (although it is actually six) so it is the fifth grade.
It should normally be bounced back in the green zone.
There is a red zone for abnormal price fluctuations.
It seems that the upper and lower clouds only bounce back toward the center.
If you are not satisfied with price movements overall it seems that you are in the range market, often breaking through for the passage of time.
Update Ver 2.0
integrate MTF amagumo
Devices of color arrangement
The resistance is strong where the cloud color is thin.
It should be weak as the force is canceled as much as it is black.
Batch display option for each part
Specealthanks
Ichimoku kinkou hyou
KazmaxFAN Club # Place for technical discussion
一目均衡表を改良してみました。
元の一目はハイローバンドの中線から構成されていたので、上下の線から何かを算出しています。
先行スパンA=ハイローバンドの幅の2倍(Green2)*(1-75(≒76.4%戻し)) という発見により、中央の複雑な雲は一目の表現を変えるだけにしました。
一目の線は全て25前にずらすのに統一です。旧遅行スパンは先行価格スパンに改名しました。
先行転換線と先行基準線と先行価格スパンの組み合わせで一目の転換線と基準線の使い方が出来ます。
先行転換線と先行基準線で囲まれた部分は雨雲と定義。
先行スパンBは雨雲と雲の実効値という解釈です。
(基準線と先行スパンAの幅)÷雨雲の幅が雲の強度という感じです。
雨雲も雲と同じ性質を持っていて、ねじれた部分は弱いぽいです。
雲と雨雲の種類が異なる時は打ち消しあって抵抗が弱いようです。
先行スパンAと先行基準線の幅が狭い時も抵抗が弱いようです。
上下にも雲があるように思えたのが開発の動機だったので上下に各2本雲があります。雲が5本(本当は6本ですが)だから五目です。
通常はグリーンゾーンで跳ね返されるはずです。
異常な価格変動用にレッドゾーンがあります。
上下の雲は中央に向けて跳ね返すくらいしかしないようです。
全体的に価格移動に困ればレンジ相場になって、時間の経過で強行突破することが多いように見えます。
Update Ver2.0
MTF amagumoを統合
配色を工夫
雲の色が薄い所は抵抗が強いです。
黒い所ほど力が打ち消しあって弱いはずです。
各パーツごとに一括表示オプション
Specealthanks
一目均衡表
KazmaxFAN倶楽部 #テクニカル議論の場
"mtf" için komut dosyalarını ara
1D & 1W Institutional Trend The 1D & 1W Institutional Trend is a multi-timeframe (MTF) trend-following system designed to align traders with major "macro" market moves. Instead of relying on noisy intraday data, this indicator pulls data from the Daily (1D) and Weekly (1W) timeframes to construct a robust trend baseline, regardless of the chart timeframe you are currently viewing.
The core logic is based on the interaction between a Fast Institutional EMA (Daily) and a Slow Institutional EMA (Weekly). When the Daily trend crosses above the Weekly trend, it signals a significant shift in market structure. To ensure signal quality, the script incorporates a "Smart Filter" engine that checks for Momentum (RSI) and Volatility (ATR) before generating entry signals, preventing trades during exhausted or dead markets.
Key Features
Multi-Timeframe Engine: Projects Daily and Weekly moving averages onto lower timeframe charts (e.g., 1H or 4H) to show the "Big Picture."
Non-Repainting Logic: Utilizes closed-bar data to ensure that historical signals match live trading conditions strictly.
Algorithmic Filtering:
Momentum Filter: Rejects Buy signals if RSI is overbought and Sell signals if RSI is oversold.
Volatility Filter: Rejects signals during low-volatility "compression" zones using ATR.
Institutional Dashboard: A data panel tracking the macro trend status, trend strength (Spread %), and filter conditions.
How to Use
1. The Trend Cloud The visual core of the indicator is the "Cloud" formed between the two Moving Averages.
Green Cloud: The Daily Average is above the Weekly Average. The macro trend is Bullish. Look for long positions.
Red Cloud: The Daily Average is below the Weekly Average. The macro trend is Bearish. Look for short positions.
The Midline: The gray line represents the "Fair Value" price between the two timeframes. It often acts as dynamic support or resistance during a trend.
2. Signal Triangles Discrete shapes appear only when a crossover is confirmed AND all filters are met.
Up Triangle: Confirmed Bullish Crossover (Daily crosses over Weekly) + RSI is not overbought + Volatility is active.
Down Triangle: Confirmed Bearish Crossover (Daily crosses under Weekly) + RSI is not oversold + Volatility is active.
3. The Dashboard Located in the bottom right, this table provides a health check of the current trend:
Macro Trend: Displays BULLISH or BEARISH based on the cloud direction.
Trend Spread %: Measures the distance between the two EMAs. A widening percentage indicates a strengthening trend, while a narrowing percentage suggests momentum loss.
RSI Condition: Displays "SAFE" (good to trade) or "EXTENDED" (too risky).
Volatility: Displays "EXPANSION" (good movement) or "COMPRESSION" (flat market).
4. Timeframe Rules Because this indicator uses Daily and Weekly data, your chart timeframe must be lower than the Fast Trend Timeframe.
Correct: Viewing a 1-Hour chart with 1D/1W settings.
Incorrect: Viewing a Weekly chart with 1D/1W settings (this will trigger an error message on the screen).
Disclaimer: This indicator is provided for educational and informational purposes only. It does not constitute financial advice, investment recommendations, or a guarantee of future results.
Multi-Timeframe Supertrend + MACD + MTF Dashboard if you like it click source code and save it in notepad for back up .
The Multi-Timeframe Supertrend Dashboard is a powerful tool designed to give traders a clear view of market trends across multiple timeframes, all from a single dashboard. This indicator leverages the Supertrend method to calculate buy and sell signals based on the direction of price relative to dynamically calculated support and resistance lines. The dashboard is optimized for dark mode and provides easy-to-interpret color-coded signals for each timeframe.
How It Works
The Supertrend indicator is a trend-following indicator that uses the Average True Range (ATR) to set upper and lower bands around the price, adapting dynamically as volatility changes. When the price is above the Supertrend line, the market is considered in an uptrend, triggering a "BUY" signal. Conversely, when the price falls below the Supertrend line, the market is in a downtrend, triggering a "SELL" signal.
This Multi-Timeframe Supertrend Dashboard calculates Supertrend signals for the following timeframes:
1 minute
5 minutes
15 minutes
1 hour
Daily
Weekly
Monthly
For each timeframe, the dashboard shows either a "BUY" or "SELL" signal, allowing traders to assess whether trends align across timeframes. A "BUY" signal displays in green, and a "SELL" signal displays in red, giving a quick visual reference of the overall trend direction for each timeframe.
Customization Options
ATR Period: Defines the period for the Average True Range (ATR) calculation, which determines how responsive the Supertrend lines are to changes in market volatility.
Multiplier: Sets the sensitivity of the Supertrend bands to price movements. Higher values make the bands less sensitive, while lower values increase sensitivity, allowing quicker reactions to changes in price.
How to Interpret the Dashboard
The Multi-Timeframe Supertrend Dashboard allows traders to see at a glance if trends across multiple timeframes are aligned. Here’s how to interpret the signals:
BUY (Green): The current timeframe’s price is in an uptrend based on the Supertrend calculation.
SELL (Red): The current timeframe’s price is in a downtrend based on the Supertrend calculation.
For example:
If all timeframes display "BUY," the asset is in a strong uptrend across multiple time horizons, which may indicate a bullish market.
If all timeframes display "SELL," the asset is likely in a strong downtrend, signaling a bearish market.
Mixed signals across timeframes suggest market consolidation or differing trends across short- and long-term periods.
Use Cases
Trend Confirmation: Use the dashboard to confirm trends across multiple timeframes before entering or exiting a position.
Quick Market Analysis: Get a snapshot of market conditions across timeframes without having to change charts.
Multi-Timeframe Alignment: Identify alignment across timeframes, which is often a strong indicator of market momentum in one direction.
Dark Mode Optimization
The dashboard has been optimized for dark mode, with white text and contrasting background colors to ensure easy readability on darker TradingView themes.
Nov 4, 2024
Release Notes
Multi-Timeframe Supertrend Dashboard with Alerts
Overview
The Multi-Timeframe Supertrend Dashboard with Alerts is a powerful indicator designed to give traders a comprehensive view of market trends across multiple timeframes. This dashboard uses the Supertrend method to calculate buy and sell signals based on the direction of price relative to dynamic support and resistance levels. The indicator is optimized for dark mode and provides a color-coded display of buy and sell signals for each timeframe, along with optional alerts for trend alignment.
How It Works
The Supertrend indicator is a trend-following indicator that uses the Average True Range (ATR) to set upper and lower bands around the price, adjusting dynamically with market volatility. When the price is above the Supertrend line, the market is considered in an uptrend, triggering a "BUY" signal. Conversely, when the price falls below the Supertrend line, the market is in a downtrend, triggering a "SELL" signal.
The Multi-Timeframe Supertrend Dashboard displays Supertrend signals for the following timeframes:
1 minute
5 minutes
15 minutes
1 hour
Daily
Weekly
Monthly
For each timeframe, the dashboard shows either a "BUY" or "SELL" signal, allowing traders to assess trend alignment across multiple timeframes with a single glance. A "BUY" signal displays in green, and a "SELL" signal displays in red.
Alerts for Trend Alignment
This indicator includes built-in alert conditions that allow traders to receive notifications when all timeframes simultaneously align in a "BUY" or "SELL" signal. This is particularly useful for identifying moments of strong trend alignment across short-term and long-term timeframes. The alerts can be set to notify the trader when:
All timeframes display a "BUY" signal, indicating a strong bullish alignment across all time horizons.
All timeframes display a "SELL" signal, signaling a strong bearish alignment.
Customization Options
ATR Period: Defines the period for the Average True Range (ATR) calculation, which determines how responsive the Supertrend lines are to changes in market volatility.
Multiplier: Sets the sensitivity of the Supertrend bands to price movements. Higher values make the bands less sensitive, while lower values increase sensitivity, allowing quicker reactions to changes in price.
How to Interpret the Dashboard
BUY (Green): The price is above the Supertrend line, indicating an uptrend for that timeframe.
SELL (Red): The price is below the Supertrend line, indicating a downtrend for that timeframe.
Examples:
If all timeframes display "BUY," the asset is in a strong uptrend across multiple time horizons, signaling potential buying opportunities.
If all timeframes display "SELL," the asset is likely in a strong downtrend, signaling potential selling opportunities.
Mixed signals suggest a consolidation phase or differing trends across short- and long-term periods.
Use Cases
Trend Confirmation: Use the dashboard to confirm trends across multiple timeframes before entering or exiting a position.
Alert Notifications: Set alerts to receive notifications when all timeframes align in a "BUY" or "SELL" signal.
Quick Market Analysis: Get an instant overview of market conditions without switching between charts.
Multi-Timeframe Alignment: Identify alignment across timeframes, often a strong indicator of market momentum in one direction.
Dark Mode Optimization
The dashboard has been optimized for dark mode, with white text and contrasting background colors to ensure easy readability on darker TradingView themes.
Nov 6, 2024
Release Notes
Multi-Timeframe Supertrend Dashboard with Custom Alerts
Description:
This Multi-Timeframe Supertrend Dashboard indicator provides a powerful tool for traders who want to monitor multiple timeframes simultaneously and receive alerts when all timeframes align on a single trend (either BUY or SELL). The indicator uses the popular Supertrend calculation, with customizable ATR (Average True Range) period and multiplier values to tailor sensitivity to your trading style.
Key Features:
Customizable Timeframes:
Track and display up to six timeframes, fully configurable to meet any trading strategy. The default timeframes include 1 Minute, 5 Minutes, 15 Minutes, 1 Hour, 1 Day, and 1 Week but can be changed to any intervals supported by TradingView.
Selective Display Options:
With a user-friendly display selection, you can choose which timeframes to show on the dashboard. For example, you may choose to view only Timeframe 1 through Timeframe 5 or any combination of the six.
Real-Time Alignment Alerts:
Alerts can be set to trigger when all selected timeframes align on a BUY or SELL signal. This feature enables traders to catch strong trends across timeframes without constant monitoring. Alerts are fully configurable, allowing for sound notifications, email alerts, or even webhook notifications to automated trading systems.
Custom Supertrend Settings:
Adjust the ATR Period and Multiplier values to control the Supertrend's sensitivity. Lower values result in more frequent trend changes, while higher values smooth out the trend and focus on larger market moves.
Intuitive Color-Coded Dashboard:
The dashboard is visually optimized for quick insights:
Green cells indicate a BUY trend.
Red cells indicate a SELL trend.
Background color changes when all selected timeframes align, giving an instant visual cue for strong trends.
How to Use:
Select Timeframes:
Go to the input settings to choose the timeframes you want to monitor. Each timeframe is labeled (e.g., Timeframe 1, Timeframe 2) for easy reference.
Configure Display Preferences:
Enable or disable specific timeframes to customize your dashboard view. This is useful for focusing only on timeframes relevant to your strategy.
Set ATR and Multiplier Values:
Adjust these settings to define the Supertrend calculation's responsiveness. This customization allows adaptation to various markets, including stocks, forex, and cryptocurrencies.
Enable Alerts:
Turn on alerts to receive notifications when all active timeframes align. Customize the alert type and delivery (sound, popup, email, etc.) to ensure you’re notified on time.
Ideal For:
Trend Traders who want confirmation of trends across multiple timeframes.
Scalpers and Day Traders looking for quick trend changes with smaller timeframes.
Swing Traders who want a broader overview of market alignment across hourly and daily frames.
Automated System Developers looking for reliable signals across multiple timeframes to integrate with other strategies.
Naveen Prabhu with EMA//@version=6
indicator('Naveen Prabhu with EMA', overlay = true, max_labels_count = 500, max_lines_count = 500, max_boxes_count = 500)
a = input(2, title = 'Key Vaule. \'This changes the sensitivity\'')
c = input(5, title = 'ATR Period')
h = input(false, title = 'Signals from Heikin Ashi Candles')
BULLISH_LEG = 1
BEARISH_LEG = 0
BULLISH = +1
BEARISH = -1
GREEN = #089981
RED = #F23645
BLUE = #2157f3
GRAY = #878b94
MONO_BULLISH = #b2b5be
MONO_BEARISH = #5d606b
HISTORICAL = 'Historical'
PRESENT = 'Present'
COLORED = 'Colored'
MONOCHROME = 'Monochrome'
ALL = 'All'
BOS = 'BOS'
CHOCH = 'CHoCH'
TINY = size.tiny
SMALL = size.small
NORMAL = size.normal
ATR = 'Atr'
RANGE = 'Cumulative Mean Range'
CLOSE = 'Close'
HIGHLOW = 'High/Low'
SOLID = '⎯⎯⎯'
DASHED = '----'
DOTTED = '····'
SMART_GROUP = 'Smart Money Concepts'
INTERNAL_GROUP = 'Real Time Internal Structure'
SWING_GROUP = 'Real Time Swing Structure'
BLOCKS_GROUP = 'Order Blocks'
EQUAL_GROUP = 'EQH/EQL'
GAPS_GROUP = 'Fair Value Gaps'
LEVELS_GROUP = 'Highs & Lows MTF'
ZONES_GROUP = 'Premium & Discount Zones'
modeTooltip = 'Allows to display historical Structure or only the recent ones'
styleTooltip = 'Indicator color theme'
showTrendTooltip = 'Display additional candles with a color reflecting the current trend detected by structure'
showInternalsTooltip = 'Display internal market structure'
internalFilterConfluenceTooltip = 'Filter non significant internal structure breakouts'
showStructureTooltip = 'Display swing market Structure'
showSwingsTooltip = 'Display swing point as labels on the chart'
showHighLowSwingsTooltip = 'Highlight most recent strong and weak high/low points on the chart'
showInternalOrderBlocksTooltip = 'Display internal order blocks on the chart\n\nNumber of internal order blocks to display on the chart'
showSwingOrderBlocksTooltip = 'Display swing order blocks on the chart\n\nNumber of internal swing blocks to display on the chart'
orderBlockFilterTooltip = 'Method used to filter out volatile order blocks \n\nIt is recommended to use the cumulative mean range method when a low amount of data is available'
orderBlockMitigationTooltip = 'Select what values to use for order block mitigation'
showEqualHighsLowsTooltip = 'Display equal highs and equal lows on the chart'
equalHighsLowsLengthTooltip = 'Number of bars used to confirm equal highs and equal lows'
equalHighsLowsThresholdTooltip = 'Sensitivity threshold in a range (0, 1) used for the detection of equal highs & lows\n\nLower values will return fewer but more pertinent results'
showFairValueGapsTooltip = 'Display fair values gaps on the chart'
fairValueGapsThresholdTooltip = 'Filter out non significant fair value gaps'
fairValueGapsTimeframeTooltip = 'Fair value gaps timeframe'
fairValueGapsExtendTooltip = 'Determine how many bars to extend the Fair Value Gap boxes on chart'
showPremiumDiscountZonesTooltip = 'Display premium, discount, and equilibrium zones on chart'
modeInput = input.string( HISTORICAL, 'Mode', group = SMART_GROUP, tooltip = modeTooltip, options = )
styleInput = input.string( COLORED, 'Style', group = SMART_GROUP, tooltip = styleTooltip,options = )
showTrendInput = input( false, 'Color Candles', group = SMART_GROUP, tooltip = showTrendTooltip)
showInternalsInput = input( false, 'Show Internal Structure', group = INTERNAL_GROUP, tooltip = showInternalsTooltip)
showInternalBullInput = input.string( ALL, 'Bullish Structure', group = INTERNAL_GROUP, inline = 'ibull', options = )
internalBullColorInput = input( GREEN, '', group = INTERNAL_GROUP, inline = 'ibull')
showInternalBearInput = input.string( ALL, 'Bearish Structure' , group = INTERNAL_GROUP, inline = 'ibear', options = )
internalBearColorInput = input( RED, '', group = INTERNAL_GROUP, inline = 'ibear')
internalFilterConfluenceInput = input( false, 'Confluence Filter', group = INTERNAL_GROUP, tooltip = internalFilterConfluenceTooltip)
internalStructureSize = input.string( TINY, 'Internal Label Size', group = INTERNAL_GROUP, options = )
showStructureInput = input( false, 'Show Swing Structure', group = SWING_GROUP, tooltip = showStructureTooltip)
showSwingBullInput = input.string( ALL, 'Bullish Structure', group = SWING_GROUP, inline = 'bull', options = )
swingBullColorInput = input( GREEN, '', group = SWING_GROUP, inline = 'bull')
showSwingBearInput = input.string( ALL, 'Bearish Structure', group = SWING_GROUP, inline = 'bear', options = )
swingBearColorInput = input( RED, '', group = SWING_GROUP, inline = 'bear')
swingStructureSize = input.string( SMALL, 'Swing Label Size', group = SWING_GROUP, options = )
showSwingsInput = input( false, 'Show Swings Points', group = SWING_GROUP, tooltip = showSwingsTooltip,inline = 'swings')
swingsLengthInput = input.int( 50, '', group = SWING_GROUP, minval = 10, inline = 'swings')
showHighLowSwingsInput = input( false, 'Show Strong/Weak High/Low',group = SWING_GROUP, tooltip = showHighLowSwingsTooltip)
showInternalOrderBlocksInput = input( true, 'Internal Order Blocks' , group = BLOCKS_GROUP, tooltip = showInternalOrderBlocksTooltip, inline = 'iob')
internalOrderBlocksSizeInput = input.int( 5, '', group = BLOCKS_GROUP, minval = 1, maxval = 20, inline = 'iob')
showSwingOrderBlocksInput = input( true, 'Swing Order Blocks', group = BLOCKS_GROUP, tooltip = showSwingOrderBlocksTooltip, inline = 'ob')
swingOrderBlocksSizeInput = input.int( 5, '', group = BLOCKS_GROUP, minval = 1, maxval = 20, inline = 'ob')
orderBlockFilterInput = input.string( 'Atr', 'Order Block Filter', group = BLOCKS_GROUP, tooltip = orderBlockFilterTooltip, options = )
orderBlockMitigationInput = input.string( HIGHLOW, 'Order Block Mitigation', group = BLOCKS_GROUP, tooltip = orderBlockMitigationTooltip, options = )
internalBullishOrderBlockColor = input.color(color.new(GREEN, 80), 'Internal Bullish OB', group = BLOCKS_GROUP)
internalBearishOrderBlockColor = input.color(color.new(#f77c80, 80), 'Internal Bearish OB', group = BLOCKS_GROUP)
swingBullishOrderBlockColor = input.color(color.new(GREEN, 80), 'Bullish OB', group = BLOCKS_GROUP)
swingBearishOrderBlockColor = input.color(color.new(#b22833, 80), 'Bearish OB', group = BLOCKS_GROUP)
showEqualHighsLowsInput = input( false, 'Equal High/Low', group = EQUAL_GROUP, tooltip = showEqualHighsLowsTooltip)
equalHighsLowsLengthInput = input.int( 3, 'Bars Confirmation', group = EQUAL_GROUP, tooltip = equalHighsLowsLengthTooltip, minval = 1)
equalHighsLowsThresholdInput = input.float( 0.1, 'Threshold', group = EQUAL_GROUP, tooltip = equalHighsLowsThresholdTooltip, minval = 0, maxval = 0.5, step = 0.1)
equalHighsLowsSizeInput = input.string( TINY, 'Label Size', group = EQUAL_GROUP, options = )
showFairValueGapsInput = input( false, 'Fair Value Gaps', group = GAPS_GROUP, tooltip = showFairValueGapsTooltip)
fairValueGapsThresholdInput = input( true, 'Auto Threshold', group = GAPS_GROUP, tooltip = fairValueGapsThresholdTooltip)
fairValueGapsTimeframeInput = input.timeframe('', 'Timeframe', group = GAPS_GROUP, tooltip = fairValueGapsTimeframeTooltip)
fairValueGapsBullColorInput = input.color(color.new(#00ff68, 70), 'Bullish FVG' , group = GAPS_GROUP)
fairValueGapsBearColorInput = input.color(color.new(#ff0008, 70), 'Bearish FVG' , group = GAPS_GROUP)
fairValueGapsExtendInput = input.int( 1, 'Extend FVG', group = GAPS_GROUP, tooltip = fairValueGapsExtendTooltip, minval = 0)
showDailyLevelsInput = input( false, 'Daily', group = LEVELS_GROUP, inline = 'daily')
dailyLevelsStyleInput = input.string( SOLID, '', group = LEVELS_GROUP, inline = 'daily', options = )
dailyLevelsColorInput = input( BLUE, '', group = LEVELS_GROUP, inline = 'daily')
showWeeklyLevelsInput = input( false, 'Weekly', group = LEVELS_GROUP, inline = 'weekly')
weeklyLevelsStyleInput = input.string( SOLID, '', group = LEVELS_GROUP, inline = 'weekly', options = )
weeklyLevelsColorInput = input( BLUE, '', group = LEVELS_GROUP, inline = 'weekly')
showMonthlyLevelsInput = input( false, 'Monthly', group = LEVELS_GROUP, inline = 'monthly')
monthlyLevelsStyleInput = input.string( SOLID, '', group = LEVELS_GROUP, inline = 'monthly', options = )
monthlyLevelsColorInput = input( BLUE, '', group = LEVELS_GROUP, inline = 'monthly')
showPremiumDiscountZonesInput = input( false, 'Premium/Discount Zones', group = ZONES_GROUP , tooltip = showPremiumDiscountZonesTooltip)
premiumZoneColorInput = input.color( RED, 'Premium Zone', group = ZONES_GROUP)
equilibriumZoneColorInput = input.color( GRAY, 'Equilibrium Zone', group = ZONES_GROUP)
discountZoneColorInput = input.color( GREEN, 'Discount Zone', group = ZONES_GROUP)
type alerts
bool internalBullishBOS = false
bool internalBearishBOS = false
bool internalBullishCHoCH = false
bool internalBearishCHoCH = false
bool swingBullishBOS = false
bool swingBearishBOS = false
bool swingBullishCHoCH = false
bool swingBearishCHoCH = false
bool internalBullishOrderBlock = false
bool internalBearishOrderBlock = false
bool swingBullishOrderBlock = false
bool swingBearishOrderBlock = false
bool equalHighs = false
bool equalLows = false
bool bullishFairValueGap = false
bool bearishFairValueGap = false
type trailingExtremes
float top
float bottom
int barTime
int barIndex
int lastTopTime
int lastBottomTime
type fairValueGap
float top
float bottom
int bias
box topBox
box bottomBox
type trend
int bias
type equalDisplay
line l_ine = na
label l_abel = na
type pivot
float currentLevel
float lastLevel
bool crossed
int barTime = time
int barIndex = bar_index
type orderBlock
float barHigh
float barLow
int barTime
int bias
// @variable current swing pivot high
var pivot swingHigh = pivot.new(na,na,false)
// @variable current swing pivot low
var pivot swingLow = pivot.new(na,na,false)
// @variable current internal pivot high
var pivot internalHigh = pivot.new(na,na,false)
// @variable current internal pivot low
var pivot internalLow = pivot.new(na,na,false)
// @variable current equal high pivot
var pivot equalHigh = pivot.new(na,na,false)
// @variable current equal low pivot
var pivot equalLow = pivot.new(na,na,false)
// @variable swing trend bias
var trend swingTrend = trend.new(0)
// @variable internal trend bias
var trend internalTrend = trend.new(0)
// @variable equal high display
var equalDisplay equalHighDisplay = equalDisplay.new()
// @variable equal low display
var equalDisplay equalLowDisplay = equalDisplay.new()
// @variable storage for fairValueGap UDTs
var array fairValueGaps = array.new()
// @variable storage for parsed highs
var array parsedHighs = array.new()
// @variable storage for parsed lows
var array parsedLows = array.new()
// @variable storage for raw highs
var array highs = array.new()
// @variable storage for raw lows
var array lows = array.new()
// @variable storage for bar time values
var array times = array.new()
// @variable last trailing swing high and low
var trailingExtremes trailing = trailingExtremes.new()
// @variable storage for orderBlock UDTs (swing order blocks)
var array swingOrderBlocks = array.new()
// @variable storage for orderBlock UDTs (internal order blocks)
var array internalOrderBlocks = array.new()
// @variable storage for swing order blocks boxes
var array swingOrderBlocksBoxes = array.new()
// @variable storage for internal order blocks boxes
var array internalOrderBlocksBoxes = array.new()
// @variable color for swing bullish structures
var swingBullishColor = styleInput == MONOCHROME ? MONO_BULLISH : swingBullColorInput
// @variable color for swing bearish structures
var swingBearishColor = styleInput == MONOCHROME ? MONO_BEARISH : swingBearColorInput
// @variable color for bullish fair value gaps
var fairValueGapBullishColor = styleInput == MONOCHROME ? color.new(MONO_BULLISH,70) : fairValueGapsBullColorInput
// @variable color for bearish fair value gaps
var fairValueGapBearishColor = styleInput == MONOCHROME ? color.new(MONO_BEARISH,70) : fairValueGapsBearColorInput
// @variable color for premium zone
var premiumZoneColor = styleInput == MONOCHROME ? MONO_BEARISH : premiumZoneColorInput
// @variable color for discount zone
var discountZoneColor = styleInput == MONOCHROME ? MONO_BULLISH : discountZoneColorInput
// @variable bar index on current script iteration
varip int currentBarIndex = bar_index
// @variable bar index on last script iteration
varip int lastBarIndex = bar_index
// @variable alerts in current bar
alerts currentAlerts = alerts.new()
// @variable time at start of chart
var initialTime = time
// we create the needed boxes for displaying order blocks at the first execution
if barstate.isfirst
if showSwingOrderBlocksInput
for index = 1 to swingOrderBlocksSizeInput
swingOrderBlocksBoxes.push(box.new(na,na,na,na,xloc = xloc.bar_time,extend = extend.right))
if showInternalOrderBlocksInput
for index = 1 to internalOrderBlocksSizeInput
internalOrderBlocksBoxes.push(box.new(na,na,na,na,xloc = xloc.bar_time,extend = extend.right))
// @variable source to use in bearish order blocks mitigation
bearishOrderBlockMitigationSource = orderBlockMitigationInput == CLOSE ? close : high
// @variable source to use in bullish order blocks mitigation
bullishOrderBlockMitigationSource = orderBlockMitigationInput == CLOSE ? close : low
// @variable default volatility measure
atrMeasure = ta.atr(200)
// @variable parsed volatility measure by user settings
volatilityMeasure = orderBlockFilterInput == ATR ? atrMeasure : ta.cum(ta.tr)/bar_index
// @variable true if current bar is a high volatility bar
highVolatilityBar = (high - low) >= (2 * volatilityMeasure)
// @variable parsed high
parsedHigh = highVolatilityBar ? low : high
// @variable parsed low
parsedLow = highVolatilityBar ? high : low
// we store current values into the arrays at each bar
parsedHighs.push(parsedHigh)
parsedLows.push(parsedLow)
highs.push(high)
lows.push(low)
times.push(time)
leg(int size) =>
var leg = 0
newLegHigh = high > ta.highest( size)
newLegLow = low < ta.lowest( size)
if newLegHigh
leg := BEARISH_LEG
else if newLegLow
leg := BULLISH_LEG
leg
startOfNewLeg(int leg) => ta.change(leg) != 0
startOfBearishLeg(int leg) => ta.change(leg) == -1
startOfBullishLeg(int leg) => ta.change(leg) == +1
drawLabel(int labelTime, float labelPrice, string tag, color labelColor, string labelStyle) =>
var label l_abel = na
if modeInput == PRESENT
l_abel.delete()
l_abel := label.new(chart.point.new(labelTime,na,labelPrice),tag,xloc.bar_time,color=color(na),textcolor=labelColor,style = labelStyle,size = size.small)
drawEqualHighLow(pivot p_ivot, float level, int size, bool equalHigh) =>
equalDisplay e_qualDisplay = equalHigh ? equalHighDisplay : equalLowDisplay
string tag = 'EQL'
color equalColor = swingBullishColor
string labelStyle = label.style_label_up
if equalHigh
tag := 'EQH'
equalColor := swingBearishColor
labelStyle := label.style_label_down
if modeInput == PRESENT
line.delete( e_qualDisplay.l_ine)
label.delete( e_qualDisplay.l_abel)
e_qualDisplay.l_ine := line.new(chart.point.new(p_ivot.barTime,na,p_ivot.currentLevel), chart.point.new(time ,na,level), xloc = xloc.bar_time, color = equalColor, style = line.style_dotted)
labelPosition = math.round(0.5*(p_ivot.barIndex + bar_index - size))
e_qualDisplay.l_abel := label.new(chart.point.new(na,labelPosition,level), tag, xloc.bar_index, color = color(na), textcolor = equalColor, style = labelStyle, size = equalHighsLowsSizeInput)
getCurrentStructure(int size,bool equalHighLow = false, bool internal = false) =>
currentLeg = leg(size)
newPivot = startOfNewLeg(currentLeg)
pivotLow = startOfBullishLeg(currentLeg)
pivotHigh = startOfBearishLeg(currentLeg)
if newPivot
if pivotLow
pivot p_ivot = equalHighLow ? equalLow : internal ? internalLow : swingLow
if equalHighLow and math.abs(p_ivot.currentLevel - low ) < equalHighsLowsThresholdInput * atrMeasure
drawEqualHighLow(p_ivot, low , size, false)
p_ivot.lastLevel := p_ivot.currentLevel
p_ivot.currentLevel := low
p_ivot.crossed := false
p_ivot.barTime := time
p_ivot.barIndex := bar_index
if not equalHighLow and not internal
trailing.bottom := p_ivot.currentLevel
trailing.barTime := p_ivot.barTime
trailing.barIndex := p_ivot.barIndex
trailing.lastBottomTime := p_ivot.barTime
if showSwingsInput and not internal and not equalHighLow
drawLabel(time , p_ivot.currentLevel, p_ivot.currentLevel < p_ivot.lastLevel ? 'LL' : 'HL', swingBullishColor, label.style_label_up)
else
pivot p_ivot = equalHighLow ? equalHigh : internal ? internalHigh : swingHigh
if equalHighLow and math.abs(p_ivot.currentLevel - high ) < equalHighsLowsThresholdInput * atrMeasure
drawEqualHighLow(p_ivot,high ,size,true)
p_ivot.lastLevel := p_ivot.currentLevel
p_ivot.currentLevel := high
p_ivot.crossed := false
p_ivot.barTime := time
p_ivot.barIndex := bar_index
if not equalHighLow and not internal
trailing.top := p_ivot.currentLevel
trailing.barTime := p_ivot.barTime
trailing.barIndex := p_ivot.barIndex
trailing.lastTopTime := p_ivot.barTime
if showSwingsInput and not internal and not equalHighLow
drawLabel(time , p_ivot.currentLevel, p_ivot.currentLevel > p_ivot.lastLevel ? 'HH' : 'LH', swingBearishColor, label.style_label_down)
drawStructure(pivot p_ivot, string tag, color structureColor, string lineStyle, string labelStyle, string labelSize) =>
var line l_ine = line.new(na,na,na,na,xloc = xloc.bar_time)
var label l_abel = label.new(na,na)
if modeInput == PRESENT
l_ine.delete()
l_abel.delete()
l_ine := line.new(chart.point.new(p_ivot.barTime,na,p_ivot.currentLevel), chart.point.new(time,na,p_ivot.currentLevel), xloc.bar_time, color=structureColor, style=lineStyle)
l_abel := label.new(chart.point.new(na,math.round(0.5*(p_ivot.barIndex+bar_index)),p_ivot.currentLevel), tag, xloc.bar_index, color=color(na), textcolor=structureColor, style=labelStyle, size = labelSize)
deleteOrderBlocks(bool internal = false) =>
array orderBlocks = internal ? internalOrderBlocks : swingOrderBlocks
for in orderBlocks
bool crossedOderBlock = false
if bearishOrderBlockMitigationSource > eachOrderBlock.barHigh and eachOrderBlock.bias == BEARISH
crossedOderBlock := true
if internal
currentAlerts.internalBearishOrderBlock := true
else
currentAlerts.swingBearishOrderBlock := true
else if bullishOrderBlockMitigationSource < eachOrderBlock.barLow and eachOrderBlock.bias == BULLISH
crossedOderBlock := true
if internal
currentAlerts.internalBullishOrderBlock := true
else
currentAlerts.swingBullishOrderBlock := true
if crossedOderBlock
orderBlocks.remove(index)
storeOrdeBlock(pivot p_ivot,bool internal = false,int bias) =>
if (not internal and showSwingOrderBlocksInput) or (internal and showInternalOrderBlocksInput)
array a_rray = na
int parsedIndex = na
if bias == BEARISH
a_rray := parsedHighs.slice(p_ivot.barIndex,bar_index)
parsedIndex := p_ivot.barIndex + a_rray.indexof(a_rray.max())
else
a_rray := parsedLows.slice(p_ivot.barIndex,bar_index)
parsedIndex := p_ivot.barIndex + a_rray.indexof(a_rray.min())
orderBlock o_rderBlock = orderBlock.new(parsedHighs.get(parsedIndex), parsedLows.get(parsedIndex), times.get(parsedIndex),bias)
array orderBlocks = internal ? internalOrderBlocks : swingOrderBlocks
if orderBlocks.size() >= 100
orderBlocks.pop()
orderBlocks.unshift(o_rderBlock)
drawOrderBlocks(bool internal = false) =>
array orderBlocks = internal ? internalOrderBlocks : swingOrderBlocks
orderBlocksSize = orderBlocks.size()
if orderBlocksSize > 0
maxOrderBlocks = internal ? internalOrderBlocksSizeInput : swingOrderBlocksSizeInput
array parsedOrdeBlocks = orderBlocks.slice(0, math.min(maxOrderBlocks,orderBlocksSize))
array b_oxes = internal ? internalOrderBlocksBoxes : swingOrderBlocksBoxes
for in parsedOrdeBlocks
orderBlockColor = styleInput == MONOCHROME ? (eachOrderBlock.bias == BEARISH ? color.new(MONO_BEARISH,80) : color.new(MONO_BULLISH,80)) : internal ? (eachOrderBlock.bias == BEARISH ? internalBearishOrderBlockColor : internalBullishOrderBlockColor) : (eachOrderBlock.bias == BEARISH ? swingBearishOrderBlockColor : swingBullishOrderBlockColor)
box b_ox = b_oxes.get(index)
b_ox.set_top_left_point( chart.point.new(eachOrderBlock.barTime,na,eachOrderBlock.barHigh))
b_ox.set_bottom_right_point(chart.point.new(last_bar_time,na,eachOrderBlock.barLow))
b_ox.set_border_color( internal ? na : orderBlockColor)
b_ox.set_bgcolor( orderBlockColor)
displayStructure(bool internal = false) =>
var bullishBar = true
var bearishBar = true
if internalFilterConfluenceInput
bullishBar := high - math.max(close, open) > math.min(close, open - low)
bearishBar := high - math.max(close, open) < math.min(close, open - low)
pivot p_ivot = internal ? internalHigh : swingHigh
trend t_rend = internal ? internalTrend : swingTrend
lineStyle = internal ? line.style_dashed : line.style_solid
labelSize = internal ? internalStructureSize : swingStructureSize
extraCondition = internal ? internalHigh.currentLevel != swingHigh.currentLevel and bullishBar : true
bullishColor = styleInput == MONOCHROME ? MONO_BULLISH : internal ? internalBullColorInput : swingBullColorInput
if ta.crossover(close,p_ivot.currentLevel) and not p_ivot.crossed and extraCondition
string tag = t_rend.bias == BEARISH ? CHOCH : BOS
if internal
currentAlerts.internalBullishCHoCH := tag == CHOCH
currentAlerts.internalBullishBOS := tag == BOS
else
currentAlerts.swingBullishCHoCH := tag == CHOCH
currentAlerts.swingBullishBOS := tag == BOS
p_ivot.crossed := true
t_rend.bias := BULLISH
displayCondition = internal ? showInternalsInput and (showInternalBullInput == ALL or (showInternalBullInput == BOS and tag != CHOCH) or (showInternalBullInput == CHOCH and tag == CHOCH)) : showStructureInput and (showSwingBullInput == ALL or (showSwingBullInput == BOS and tag != CHOCH) or (showSwingBullInput == CHOCH and tag == CHOCH))
if displayCondition
drawStructure(p_ivot,tag,bullishColor,lineStyle,label.style_label_down,labelSize)
if (internal and showInternalOrderBlocksInput) or (not internal and showSwingOrderBlocksInput)
storeOrdeBlock(p_ivot,internal,BULLISH)
p_ivot := internal ? internalLow : swingLow
extraCondition := internal ? internalLow.currentLevel != swingLow.currentLevel and bearishBar : true
bearishColor = styleInput == MONOCHROME ? MONO_BEARISH : internal ? internalBearColorInput : swingBearColorInput
if ta.crossunder(close,p_ivot.currentLevel) and not p_ivot.crossed and extraCondition
string tag = t_rend.bias == BULLISH ? CHOCH : BOS
if internal
currentAlerts.internalBearishCHoCH := tag == CHOCH
currentAlerts.internalBearishBOS := tag == BOS
else
currentAlerts.swingBearishCHoCH := tag == CHOCH
currentAlerts.swingBearishBOS := tag == BOS
p_ivot.crossed := true
t_rend.bias := BEARISH
displayCondition = internal ? showInternalsInput and (showInternalBearInput == ALL or (showInternalBearInput == BOS and tag != CHOCH) or (showInternalBearInput == CHOCH and tag == CHOCH)) : showStructureInput and (showSwingBearInput == ALL or (showSwingBearInput == BOS and tag != CHOCH) or (showSwingBearInput == CHOCH and tag == CHOCH))
if displayCondition
drawStructure(p_ivot,tag,bearishColor,lineStyle,label.style_label_up,labelSize)
if (internal and showInternalOrderBlocksInput) or (not internal and showSwingOrderBlocksInput)
storeOrdeBlock(p_ivot,internal,BEARISH)
fairValueGapBox(leftTime,rightTime,topPrice,bottomPrice,boxColor) => box.new(chart.point.new(leftTime,na,topPrice),chart.point.new(rightTime + fairValueGapsExtendInput * (time-time ),na,bottomPrice), xloc=xloc.bar_time, border_color = boxColor, bgcolor = boxColor)
deleteFairValueGaps() =>
for in fairValueGaps
if (low < eachFairValueGap.bottom and eachFairValueGap.bias == BULLISH) or (high > eachFairValueGap.top and eachFairValueGap.bias == BEARISH)
eachFairValueGap.topBox.delete()
eachFairValueGap.bottomBox.delete()
fairValueGaps.remove(index)
// @function draw fair value gaps
// @returns fairValueGap ID
drawFairValueGaps() =>
= request.security(syminfo.tickerid, fairValueGapsTimeframeInput, [close , open , time , high , low , time , high , low ],lookahead = barmerge.lookahead_on)
barDeltaPercent = (lastClose - lastOpen) / (lastOpen * 100)
newTimeframe = timeframe.change(fairValueGapsTimeframeInput)
threshold = fairValueGapsThresholdInput ? ta.cum(math.abs(newTimeframe ? barDeltaPercent : 0)) / bar_index * 2 : 0
bullishFairValueGap = currentLow > last2High and lastClose > last2High and barDeltaPercent > threshold and newTimeframe
bearishFairValueGap = currentHigh < last2Low and lastClose < last2Low and -barDeltaPercent > threshold and newTimeframe
if bullishFairValueGap
currentAlerts.bullishFairValueGap := true
fairValueGaps.unshift(fairValueGap.new(currentLow,last2High,BULLISH,fairValueGapBox(lastTime,currentTime,currentLow,math.avg(currentLow,last2High),fairValueGapBullishColor),fairValueGapBox(lastTime,currentTime,math.avg(currentLow,last2High),last2High,fairValueGapBullishColor)))
if bearishFairValueGap
currentAlerts.bearishFairValueGap := true
fairValueGaps.unshift(fairValueGap.new(currentHigh,last2Low,BEARISH,fairValueGapBox(lastTime,currentTime,currentHigh,math.avg(currentHigh,last2Low),fairValueGapBearishColor),fairValueGapBox(lastTime,currentTime,math.avg(currentHigh,last2Low),last2Low,fairValueGapBearishColor)))
getStyle(string style) =>
switch style
SOLID => line.style_solid
DASHED => line.style_dashed
DOTTED => line.style_dotted
drawLevels(string timeframe, bool sameTimeframe, string style, color levelColor) =>
= request.security(syminfo.tickerid, timeframe, [high , low , time , time],lookahead = barmerge.lookahead_on)
float parsedTop = sameTimeframe ? high : topLevel
float parsedBottom = sameTimeframe ? low : bottomLevel
int parsedLeftTime = sameTimeframe ? time : leftTime
int parsedRightTime = sameTimeframe ? time : rightTime
int parsedTopTime = time
int parsedBottomTime = time
if not sameTimeframe
int leftIndex = times.binary_search_rightmost(parsedLeftTime)
int rightIndex = times.binary_search_rightmost(parsedRightTime)
array timeArray = times.slice(leftIndex,rightIndex)
array topArray = highs.slice(leftIndex,rightIndex)
array bottomArray = lows.slice(leftIndex,rightIndex)
parsedTopTime := timeArray.size() > 0 ? timeArray.get(topArray.indexof(topArray.max())) : initialTime
parsedBottomTime := timeArray.size() > 0 ? timeArray.get(bottomArray.indexof(bottomArray.min())) : initialTime
var line topLine = line.new(na, na, na, na, xloc = xloc.bar_time, color = levelColor, style = getStyle(style))
var line bottomLine = line.new(na, na, na, na, xloc = xloc.bar_time, color = levelColor, style = getStyle(style))
var label topLabel = label.new(na, na, xloc = xloc.bar_time, text = str.format('P{0}H',timeframe), color=color(na), textcolor = levelColor, size = size.small, style = label.style_label_left)
var label bottomLabel = label.new(na, na, xloc = xloc.bar_time, text = str.format('P{0}L',timeframe), color=color(na), textcolor = levelColor, size = size.small, style = label.style_label_left)
topLine.set_first_point( chart.point.new(parsedTopTime,na,parsedTop))
topLine.set_second_point( chart.point.new(last_bar_time + 20 * (time-time ),na,parsedTop))
topLabel.set_point( chart.point.new(last_bar_time + 20 * (time-time ),na,parsedTop))
bottomLine.set_first_point( chart.point.new(parsedBottomTime,na,parsedBottom))
bottomLine.set_second_point(chart.point.new(last_bar_time + 20 * (time-time ),na,parsedBottom))
bottomLabel.set_point( chart.point.new(last_bar_time + 20 * (time-time ),na,parsedBottom))
higherTimeframe(string timeframe) => timeframe.in_seconds() > timeframe.in_seconds(timeframe)
updateTrailingExtremes() =>
trailing.top := math.max(high,trailing.top)
trailing.lastTopTime := trailing.top == high ? time : trailing.lastTopTime
trailing.bottom := math.min(low,trailing.bottom)
trailing.lastBottomTime := trailing.bottom == low ? time : trailing.lastBottomTime
drawHighLowSwings() =>
var line topLine = line.new(na, na, na, na, color = swingBearishColor, xloc = xloc.bar_time)
var line bottomLine = line.new(na, na, na, na, color = swingBullishColor, xloc = xloc.bar_time)
var label topLabel = label.new(na, na, color=color(na), textcolor = swingBearishColor, xloc = xloc.bar_time, style = label.style_label_down, size = size.tiny)
var label bottomLabel = label.new(na, na, color=color(na), textcolor = swingBullishColor, xloc = xloc.bar_time, style = label.style_label_up, size = size.tiny)
rightTimeBar = last_bar_time + 20 * (time - time )
topLine.set_first_point( chart.point.new(trailing.lastTopTime, na, trailing.top))
topLine.set_second_point( chart.point.new(rightTimeBar, na, trailing.top))
topLabel.set_point( chart.point.new(rightTimeBar, na, trailing.top))
topLabel.set_text( swingTrend.bias == BEARISH ? 'Strong High' : 'Weak High')
bottomLine.set_first_point( chart.point.new(trailing.lastBottomTime, na, trailing.bottom))
bottomLine.set_second_point(chart.point.new(rightTimeBar, na, trailing.bottom))
bottomLabel.set_point( chart.point.new(rightTimeBar, na, trailing.bottom))
bottomLabel.set_text( swingTrend.bias == BULLISH ? 'Strong Low' : 'Weak Low')
drawZone(float labelLevel, int labelIndex, float top, float bottom, string tag, color zoneColor, string style) =>
var label l_abel = label.new(na,na,text = tag, color=color(na),textcolor = zoneColor, style = style, size = size.small)
var box b_ox = box.new(na,na,na,na,bgcolor = color.new(zoneColor,80),border_color = color(na), xloc = xloc.bar_time)
b_ox.set_top_left_point( chart.point.new(trailing.barTime,na,top))
b_ox.set_bottom_right_point(chart.point.new(last_bar_time,na,bottom))
l_abel.set_point( chart.point.new(na,labelIndex,labelLevel))
// @function draw premium/discount zones
// @returns void
drawPremiumDiscountZones() =>
drawZone(trailing.top, math.round(0.5*(trailing.barIndex + last_bar_index)), trailing.top, 0.95*trailing.top + 0.05*trailing.bottom, 'Premium', premiumZoneColor, label.style_label_down)
equilibriumLevel = math.avg(trailing.top, trailing.bottom)
drawZone(equilibriumLevel, last_bar_index, 0.525*trailing.top + 0.475*trailing.bottom, 0.525*trailing.bottom + 0.475*trailing.top, 'Equilibrium', equilibriumZoneColorInput, label.style_label_left)
drawZone(trailing.bottom, math.round(0.5*(trailing.barIndex + last_bar_index)), 0.95*trailing.bottom + 0.05*trailing.top, trailing.bottom, 'Discount', discountZoneColor, label.style_label_up)
parsedOpen = showTrendInput ? open : na
candleColor = internalTrend.bias == BULLISH ? swingBullishColor : swingBearishColor
plotcandle(parsedOpen,high,low,close,color = candleColor, wickcolor = candleColor, bordercolor = candleColor)
if showHighLowSwingsInput or showPremiumDiscountZonesInput
updateTrailingExtremes()
if showHighLowSwingsInput
drawHighLowSwings()
if showPremiumDiscountZonesInput
drawPremiumDiscountZones()
if showFairValueGapsInput
deleteFairValueGaps()
getCurrentStructure(swingsLengthInput,false)
getCurrentStructure(5,false,true)
if showEqualHighsLowsInput
getCurrentStructure(equalHighsLowsLengthInput,true)
if showInternalsInput or showInternalOrderBlocksInput or showTrendInput
displayStructure(true)
if showStructureInput or showSwingOrderBlocksInput or showHighLowSwingsInput
displayStructure()
if showInternalOrderBlocksInput
deleteOrderBlocks(true)
if showSwingOrderBlocksInput
deleteOrderBlocks()
if showFairValueGapsInput
drawFairValueGaps()
if barstate.islastconfirmedhistory or barstate.islast
if showInternalOrderBlocksInput
drawOrderBlocks(true)
if showSwingOrderBlocksInput
drawOrderBlocks()
lastBarIndex := currentBarIndex
currentBarIndex := bar_index
newBar = currentBarIndex != lastBarIndex
if barstate.islastconfirmedhistory or (barstate.isrealtime and newBar)
if showDailyLevelsInput and not higherTimeframe('D')
drawLevels('D',timeframe.isdaily,dailyLevelsStyleInput,dailyLevelsColorInput)
if showWeeklyLevelsInput and not higherTimeframe('W')
drawLevels('W',timeframe.isweekly,weeklyLevelsStyleInput,weeklyLevelsColorInput)
if showMonthlyLevelsInput and not higherTimeframe('M')
drawLevels('M',timeframe.ismonthly,monthlyLevelsStyleInput,monthlyLevelsColorInput)
xATR = ta.atr(c)
nLoss = a * xATR
src = h ? request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, close, lookahead = barmerge.lookahead_off) : close
xATRTrailingStop = 0.0
iff_1 = src > nz(xATRTrailingStop , 0) ? src - nLoss : src + nLoss
iff_2 = src < nz(xATRTrailingStop , 0) and src < nz(xATRTrailingStop , 0) ? math.min(nz(xATRTrailingStop ), src + nLoss) : iff_1
xATRTrailingStop := src > nz(xATRTrailingStop , 0) and src > nz(xATRTrailingStop , 0) ? math.max(nz(xATRTrailingStop ), src - nLoss) : iff_2
pos = 0
iff_3 = src > nz(xATRTrailingStop , 0) and src < nz(xATRTrailingStop , 0) ? -1 : nz(pos , 0)
pos := src < nz(xATRTrailingStop , 0) and src > nz(xATRTrailingStop , 0) ? 1 : iff_3
xcolor = pos == -1 ? color.red : pos == 1 ? color.green : color.blue
ema = ta.ema(src, 1)
above = ta.crossover(ema, xATRTrailingStop)
below = ta.crossover(xATRTrailingStop, ema)
buy = src > xATRTrailingStop and above
sell = src < xATRTrailingStop and below
barbuy = src > xATRTrailingStop
barsell = src < xATRTrailingStop
//---------------------------------------------------------------------------------------------------------------------}
//ALERTS
//---------------------------------------------------------------------------------------------------------------------{
alertcondition(currentAlerts.internalBullishBOS, 'Internal Bullish BOS', 'Internal Bullish BOS formed')
alertcondition(currentAlerts.internalBullishCHoCH, 'Internal Bullish CHoCH', 'Internal Bullish CHoCH formed')
alertcondition(currentAlerts.internalBearishBOS, 'Internal Bearish BOS', 'Internal Bearish BOS formed')
alertcondition(currentAlerts.internalBearishCHoCH, 'Internal Bearish CHoCH', 'Internal Bearish CHoCH formed')
alertcondition(currentAlerts.swingBullishBOS, 'Bullish BOS', 'Internal Bullish BOS formed')
alertcondition(currentAlerts.swingBullishCHoCH, 'Bullish CHoCH', 'Internal Bullish CHoCH formed')
alertcondition(currentAlerts.swingBearishBOS, 'Bearish BOS', 'Bearish BOS formed')
alertcondition(currentAlerts.swingBearishCHoCH, 'Bearish CHoCH', 'Bearish CHoCH formed')
alertcondition(currentAlerts.internalBullishOrderBlock, 'Bullish Internal OB Breakout', 'Price broke bullish internal OB')
alertcondition(currentAlerts.internalBearishOrderBlock, 'Bearish Internal OB Breakout', 'Price broke bearish internal OB')
alertcondition(currentAlerts.swingBullishOrderBlock, 'Bullish Swing OB Breakout', 'Price broke bullish swing OB')
alertcondition(currentAlerts.swingBearishOrderBlock, 'Bearish Swing OB Breakout', 'Price broke bearish swing OB')
alertcondition(currentAlerts.equalHighs, 'Equal Highs', 'Equal highs detected')
alertcondition(currentAlerts.equalLows, 'Equal Lows', 'Equal lows detected')
alertcondition(currentAlerts.bullishFairValueGap, 'Bullish FVG', 'Bullish FVG formed')
alertcondition(currentAlerts.bearishFairValueGap, 'Bearish FVG', 'Bearish FVG formed')
alertcondition(buy, 'UT Long', 'UT Long')
alertcondition(sell, 'UT Short', 'UT Short')
plotshape(buy, title = 'Buy', text = 'Buy', style = shape.labelup, location = location.belowbar, color = color.new(color.green, 0), textcolor = color.new(color.white, 0), size = size.tiny)
plotshape(sell, title = 'Sell', text = 'Sell', style = shape.labeldown, location = location.abovebar, color = color.new(color.red, 0), textcolor = color.new(color.white, 0), size = size.tiny)
//--------------------------------------------------------------------------------------
// EMA ADDITIONS (Editable)
//--------------------------------------------------------------------------------------
ema5Len = input.int(5, "5 EMA Length", minval = 1)
ema9Len = input.int(9, "9 EMA Length", minval = 1)
ema5 = ta.ema(src, ema5Len)
ema9 = ta.ema(src, ema9Len)
plot(ema5, "EMA 5", color = color.red, linewidth = 2)
plot(ema9, "EMA 9", color = color.blue, linewidth = 2)
barcolor(barbuy ? color.green : na)
barcolor(barsell ? color.red : na)
Etwas31 Precision zones and trendTitle: Etwas31 Precision zones and trend
Overview: Get a complete market overview at a single glance. This script combines a comprehensive trend/volatility dashboard with automated, high-precision supply and demand zones. It filters out noise and highlights key market structures to improve your trading accuracy.
Key Features:
1. 📊 Advanced MTF Dashboard (5m - 1W)
Trend Monitor: Uses EMA 20 & 50 alignment to accurately detect Bullish, Bearish, or Neutral (Choppy) markets. No more guessing the trend.
Volatility Scanner: Utilizing ATR logic, it signals whether the market is active (High ⚡) or dormant (Low 💤) for each timeframe.
2. 🎯 Precision Support & Resistance Zones
Real Structure: Unlike simple lines, zones are drawn based on candle wicks (High to Body / Low to Body) to reflect the actual "thickness" of market interest.
Visual Hierarchy:
Weak Zones (15m, 30m): Displayed as Hollow/Dashed boxes. Ideal for scalping or short-term targets.
Strong Zones (1H, 4H, 1D, 1W): Displayed as Solid/Filled boxes. These are key levels for reversals and major trend continuation.
Auto-Extension: Zones automatically extend to the current price action for easy tracking.
3. ⚙️ Customizable & Clean
Fully customizable colors and visibility settings.
Optimized to prevent chart clutter while providing maximum information.
How to Use:
Use the Dashboard to align your trades with the higher timeframe trend (e.g., trade with the 4H trend).
Wait for Volatility (⚡) to confirm momentum.
Enter trades when price reacts at Solid Zones (Strong S/R) or use Hollow Zones for intraday scalp targets.
Advanced Linear Regression Pro [PointAlgo]Advanced Linear Regression Pro is an open-source tool designed to visualize market structure using linear regression, volatility bands, and optional volume-weighted calculations.
The indicator expands the concept of regression channels by adding higher-timeframe confluence, slope analysis, imbalance detection, and breakout highlighting.
Key Features
• Volume-Weighted Regression
Weights the regression curve based on volume to highlight periods of strong participation.
• Dynamic Standard-Deviation Bands
Upper and lower bands are derived from volatility to help visualize potential expansion or contraction zones.
• Multi-Timeframe (MTF) Regression
Plots higher-timeframe regression lines and bands for additional trend context.
• Slope Strength Analysis
Helps identify whether the current regression slope is trending upward, downward, or in a neutral range.
• Order Flow Imbalance Detection
Highlights bars where price and volume move unusually fast, which may indicate liquidity voids or imbalance zones.
• Breakout Markers
Shows simple visual markers when the price closes beyond volatility bands with volume confirmation.
These are visual signals only, not trading signals.
How to Use
This indicator is meant for visual market analysis, such as:
Observing trend direction through regression slope
Spotting volatility expansions
Comparing price against higher-timeframe regression structure
Identifying areas where price moves rapidly with volume
It can be used on any market or timeframe.
No part of this script is intended as financial advice or a complete trading system.
90D High % Pullback Lines (Hybrid 10 Lines)90D High % Pullback Lines (Hybrid 10 Lines) visualizes drawdown levels from the 90-day high, with up to 10 fully customizable percentage-based lines.
This tool makes it easy to identify pullbacks, dip-buy zones, trend continuation points, and discount regions in any market.
🔍 Features
✅ Up to 10 customizable pullback levels
Each line has its own % drop setting
Turn any line ON/OFF individually
Example presets: −10%, −20%, −30%, … −95%
✅ Two rendering modes
1. Hybrid Fixed Line Mode (Stable / Anti-Shift)
Prevents line drift caused by chart updates
Keeps horizontal levels synchronized on every bar
Best stability for intraday & real-time use
2. Lightweight plot (stepline) Mode
Ideal for backtesting
Fully compatible with alerts
Clean and fast rendering
✅ Supports daily-based 90-day high
Even on lower timeframes, the indicator can use the daily 90-day high
Ideal for MTF (multi-timeframe) analysis
🎯 Use Cases
Instantly see how far price has pulled back (%) from the 90-day high
Build systematic dip-buy / trend-follow setups
Identify discount zones during volatility
Monitor recovery signals after strong sell-offs
Works great for crypto, FX, indices, and stocks
🚨 Alerts Included
Alerts trigger when closing price crosses any selected pullback line
Useful for automated dip-buy alerts, breakout alerts, etc.
📌 Notes
Due to internal TradingView behavior, public indicators may behave slightly differently from real-time script editing mode.
The Hybrid Line Mode is designed to provide the most stable and drift-free line display.
EMA Trend Alignment (10/20/50) with MTF & SignalsBullish Crossovers 10>20>50 and Bearish Crossover 10<20<50
BG Trix Trend signalovides dynamic long and short signals based on a multi-timeframe candle averaging method. It calculates a four-step average of recent candles to determine the trend and changes candle color accordingly (green for upward, red for downward).
Features:
Multi-Timeframe Candle Analysis: Combines current and previous candle data to smooth price action.
Optional TRIX Filter: Adds a TRIX-based trend filter from a separate timeframe. Only triggers signals when TRIX confirms the trend.
Optional Keltner Channel Filter: Prevents signals when the price is inside the Keltner channel. Long signals only trigger above the upper band; short signals only trigger below the lower band. Separate MTF and MA type can be selected for the channel.
Visual Signals: Long and short signals are displayed as arrows on the chart. Candle color reflects trend direction.
Fully Customizable: Users can enable/disable TRIX and Keltner filters and select MA types and timeframes independently.
This indicator is ideal for traders who want clear trend signals while filtering out trades inside key price channels. No exit management is included—signals are purely for entry visualization.
Multitime ATRMulti-Timeframe Supertrend (Multitime ATR) Indicator Description
This indicator, written in Pine Script v5, is a Multi-Timeframe (MTF) Supertrend tool. It provides a multi-faceted market analysis by simultaneously displaying the Supertrend lines from the current chart timeframe and three higher timeframes: the 1-Hour (1H), 4-Hour (4H), and 1-Day (1D).
📌 Key Features and Characteristics
Multi-Timeframe Display:
It overlays the Supertrend lines from the current timeframe, 1H, 4H, and 1D onto a single chart, totaling four timeframes.
By visualizing the higher timeframe trend lines (uptrends as support, downtrends as resistance), traders can determine where the price action on the current chart stands within the context of the larger, dominant trends.
Supertrend Logic:
The Supertrend calculation utilizes the Average True Range (ATR), based on a user-specified ATR Period and ATR Multiplier.
The Change ATR Calculation Method? input allows switching the ATR calculation between the standard ta.atr (EMA-based/smoothed) and ta.sma(ta.tr, Periods) (SMA-based) methods.
Visual Aids:
Trend Lines: Uptrend lines (support) and downtrend lines (resistance) for each timeframe are plotted with different colors and line weights (e.g., Main: Green/Red, 1H: Blue tones, 4H: Purple tones, 1D: Green/Dark Red tones).
Highlighter: A background coloring feature visually highlights the area between the price and the Supertrend lines according to the trend direction for each timeframe, making the trend immediately obvious. This can be controlled collectively by the Master Highlighter setting.
Trend Change Marks: Small circle plots (●) indicate the exact points of trend reversal for each higher timeframe, clearly signaling a shift.
Warning and Break Signals:
The indicator plots signal labels on the chart when the current price breaks (or nearly breaks) a higher timeframe trend line.
Warning (⚠️): Plotted when the price closes below an uptrend line.
Break (⚡): Plotted when the price closes above a downtrend line.
These signals are designed to reset after a certain period (coded as 3,600,000 milliseconds = 1 hour) to prevent continuous noise from repetitive breaks.
Alert Functionality:
In addition to the current timeframe's Buy/Sell signals, the indicator features robust alerts for the Warning/Break signals across the 1H, 4H, and 1D timeframes, ensuring that critical trend changes are not missed.
🛠️ Customization Options
The indicator's settings allow for detailed customization of the following parameters for each timeframe (Main, 1H, 4H, 1D) individually:
ATR Period (ATR Period)
ATR Multiplier (ATR Multiplier)
Visibility toggles for trend lines, signals, and highlighters.
Furthermore, the Master Control section enables simultaneous control over the display of the Highlighter, Signals, Up Trend Lines, and Down Trend Lines across all timeframes.
This indicator serves as a powerful tool for finding more reliable entry and exit points by integrating multi-timeframe trend analysis, which helps reduce false signals often encountered in single-timeframe trading.
Would you like me to elaborate on a specific section of the code, such as the request.security function or the signal logic?
Multitime ATRMulti-Timeframe Supertrend (Multitime ATR) Indicator Description
This indicator, written in Pine Script v5, is a Multi-Timeframe (MTF) Supertrend tool. It provides a multi-faceted market analysis by simultaneously displaying the Supertrend lines from the current chart timeframe and three higher timeframes: the 1-Hour (1H), 4-Hour (4H), and 1-Day (1D).
📌 Key Features and Characteristics
Multi-Timeframe Display:
It overlays the Supertrend lines from the current timeframe, 1H, 4H, and 1D onto a single chart, totaling four timeframes.
By visualizing the higher timeframe trend lines (uptrends as support, downtrends as resistance), traders can determine where the price action on the current chart stands within the context of the larger, dominant trends.
Supertrend Logic:
The Supertrend calculation utilizes the Average True Range (ATR), based on a user-specified ATR Period and ATR Multiplier.
The Change ATR Calculation Method? input allows switching the ATR calculation between the standard ta.atr (EMA-based/smoothed) and ta.sma(ta.tr, Periods) (SMA-based) methods.
Visual Aids:
Trend Lines: Uptrend lines (support) and downtrend lines (resistance) for each timeframe are plotted with different colors and line weights (e.g., Main: Green/Red, 1H: Blue tones, 4H: Purple tones, 1D: Green/Dark Red tones).
Highlighter: A background coloring feature visually highlights the area between the price and the Supertrend lines according to the trend direction for each timeframe, making the trend immediately obvious. This can be controlled collectively by the Master Highlighter setting.
Trend Change Marks: Small circle plots (●) indicate the exact points of trend reversal for each higher timeframe, clearly signaling a shift.
Warning and Break Signals:
The indicator plots signal labels on the chart when the current price breaks (or nearly breaks) a higher timeframe trend line.
Warning (⚠️): Plotted when the price closes below an uptrend line.
Break (⚡): Plotted when the price closes above a downtrend line.
These signals are designed to reset after a certain period (coded as 3,600,000 milliseconds = 1 hour) to prevent continuous noise from repetitive breaks.
Alert Functionality:
In addition to the current timeframe's Buy/Sell signals, the indicator features robust alerts for the Warning/Break signals across the 1H, 4H, and 1D timeframes, ensuring that critical trend changes are not missed.
🛠️ Customization Options
The indicator's settings allow for detailed customization of the following parameters for each timeframe (Main, 1H, 4H, 1D) individually:
ATR Period (ATR Period)
ATR Multiplier (ATR Multiplier)
Visibility toggles for trend lines, signals, and highlighters.
Furthermore, the Master Control section enables simultaneous control over the display of the Highlighter, Signals, Up Trend Lines, and Down Trend Lines across all timeframes.
This indicator serves as a powerful tool for finding more reliable entry and exit points by integrating multi-timeframe trend analysis, which helps reduce false signals often encountered in single-timeframe trading.
Would you like me to elaborate on a specific section of the code, such as the request.security function or the signal logic?
Buy/Sell/SL/TP + MTF + Candle-close (v6)This indicator provides clean Buy/Sell signals with automatic Stop-Loss and Take-Profit levels, multi-timeframe filtering, and confirmed candle-close alerts to avoid false signals. SL/TP can be calculated using percentage or ATR.
It includes full alertconditions for Buy, Sell, SL hit, and TP hit, plus optional JSON webhook alerts for automation (WhatsApp, Telegram, bots, etc.).
Ideal for intraday and swing traders who want simple entries, clear risk management, and fast automated notifications.
Volume Climax Reversal (VCR) — Catch Exhaustion Tops & BottomsNew! VCR spots exhaustion spikes at highs/lows using volume extremes + price action + VWAP context.
If you trade parabolic runners, indices, or mean-reversion edges, VCR helps you time the backside (shorts) and fade capitulation (longs) with clean, rule-based signals.
What it does
Detects volume climax: current volume > SMA(len) × multiplier and a new volume high in the lookback.
Confirms price context: makes a higher high (for tops) or lower low (for bottoms).
Filters with VWAP (optional): bearish signals only below VWAP, bullish signals only above VWAP.
Optional wick filter: requires an exhaustion wick > body to reduce chop.
Why traders like it
Clear entries: “VCR↓” (bearish) at exhaustion tops, “VCR↑” (bullish) at washout lows.
Fewer false signals: VWAP gating + wick filter focus on true climaxes.
Built-in alerts: set once, get notified on your phone/desktop when a setup appears.
How I trade it (simple playbook)
Bearish reversal (short / puts)
Wait for VCR↓ (exhaustion at/near HH).
Look for a lower high that fails to reclaim the signal candle high.
Enter on the break of that lower-high candle low.
Stop above the signal wick high.
Covers/targets: VWAP first; then 20–30% fade from the local top / prior demand.
Bullish reversal (long / calls)
Wait for VCR↑ (capitulation at/near LL).
Look for a higher low that holds above the signal candle low.
Enter on the break of the HL candle high.
Stop below the signal wick low.
Targets: VWAP first; then prior supply/MA bands.
Tip for small-cap/“Dux” style: VCR pairs perfectly with a gap + high USD-rotation scan. Let them blow off, then use VCR for the timing.
Inputs (tune to your market)
Volume SMA Length (default 20)
Volume Spike Multiplier (default 2.0)
Lookback High / Low (default 10 / 10)
Require VWAP confirmation? (on)
Use wick filter? (on)
Works on stocks, indices, futures, crypto.
Timeframes: 1–15m for day trading; 1h–4h–D for swing.
Alerts
Set one (or both) alerts and forget it:
Bearish Volume Climax — VCR↓
Bullish Volume Climax — VCR↑
You’ll get instant notifications when a qualified top/bottom prints.
Best practices
Don’t countertrend the first front-side ramp—wait for the VCR and a lower-high/higher-low.
Respect VWAP: it’s your first profit-taking and a bias filter.
Size small into volatility; widen stops in fast markets.
Combine with your watchlist filters (gap %, float/O/S, USD rotation, session timing).
What’s included
Clean visual signals (triangles + subtle background shading)
Session-anchored VWAP
Alert conditions that appear in TradingView’s alert menu
Sensible defaults + clear docs (this post)
FAQ
Q: Does it repaint?
No. VCR uses completed-bar data; signals print end-of-bar.
Q: Which markets?
Anything with volume: US equities, futures, crypto, indices.
Q: Can I use it for scalps?
Yes—1–5m with wick filter on and VWAP required works well.
Get more / upgrades
I’m iterating fast (MTF filter, heatmap panel, combined “one-alert” mode).
Want the pro template with dashboard & combined alerts? Message me on TV or DM / email you@domain.com
.
Risk Notice
This is educational research, not financial advice. Markets carry risk—always manage position size and use stops.
If this helped you, smash the 👍 and ⭐ — it really helps!
#volume #vwap #reversal #exhaustion #trendreversal #smallcaps #scalping #daytrading #swingtrading #stocks #futures #crypto #indicator
DAO - Demand Advanced Oscillator# DAO - Demand Advanced Oscillator
## 📊 Overview
DAO (Demand Advanced Oscillator) is a powerful momentum oscillator that measures buying and selling pressure by analyzing consecutive high-low relationships. It helps identify market extremes, divergences, and potential trend reversals.
**Values range from 0 to 1:**
- **Above 0.70** = Overbought (potential reversal down)
- **Below 0.30** = Oversold (potential reversal up)
- **0.30 - 0.70** = Neutral zone
---
## ✨ Key Features
✅ **Automatic Divergence Detection**
- Bullish divergences (price lower low + DAO higher low)
- Bearish divergences (price higher high + DAO lower high)
- Visual lines connecting divergence points
✅ **Multi-Timeframe Analysis**
- View higher timeframe DAO on current chart
- Perfect for trend alignment strategies
✅ **Signal Line (EMA)**
- Customizable EMA for trend confirmation
- Crossover signals for momentum shifts
✅ **Real-Time Statistics Dashboard**
- Current DAO value
- Market status (Overbought/Oversold/Neutral)
- Trend direction indicator
✅ **Complete Alert System**
- Overbought/Oversold signals
- Bullish/Bearish divergences
- Signal line crosses
- Level crosses
✅ **Fully Customizable**
- Adjustable periods and levels
- Customizable colors and zones
- Toggle features on/off
---
## 📈 Trading Signals
### 1. Divergences (Most Powerful)
**Bullish Divergence:**
- Price makes lower low
- DAO makes higher low
- Signal: Strong reversal up likely
**Bearish Divergence:**
- Price makes higher high
- DAO makes lower high
- Signal: Strong reversal down likely
### 2. Overbought/Oversold
**Overbought (>0.70):**
- Market may be overextended
- Consider taking profits or looking for shorts
- Can remain overbought in strong trends
**Oversold (<0.30):**
- Market may be oversold
- Consider buying opportunities
- Can remain oversold in strong downtrends
### 3. Signal Line Crossovers
**Bullish Cross:**
- DAO crosses above signal line
- Momentum turning positive
**Bearish Cross:**
- DAO crosses below signal line
- Momentum turning negative
### 4. Level Crosses
**Cross Above 0.30:** Exiting oversold zone (potential uptrend)
**Cross Below 0.70:** Exiting overbought zone (potential downtrend)
---
## ⚙️ Default Settings
📊 Oscillator Period: 14
Number of bars for calculation
📈 Signal Line Period: 9
EMA period for signal line
🔴 Overbought Level: 0.70
Upper threshold
🟢 Oversold Level: 0.30
Lower threshold
🎯 Divergence Detection: ON
Auto divergence identification
⏰ Multi-Timeframe: OFF
Higher TF overlay (optional)
All parameters are fully customizable!
---
## 🔔 Alerts
Six pre-configured alerts available:
1. DAO Overbought
2. DAO Oversold
3. DAO Bullish Divergence
4. DAO Bearish Divergence
5. DAO Signal Cross Up
6. DAO Signal Cross Down
**Setup:** Right-click indicator → Add Alert → Choose condition
---
## 💡 How to Use
### Best Practices:
✅ Focus on divergences (strongest signals)
✅ Combine with support/resistance levels
✅ Use multiple timeframes for confirmation
✅ Wait for price action confirmation
✅ Practice proper risk management
### Avoid:
❌ Trading on indicator alone
❌ Fighting strong trends
❌ Ignoring market context
❌ Overtrading
### Recommended Settings by Trading Style:
**Day Trading:** Period 7-10, All alerts ON
**Swing Trading:** Period 14-21, Divergence alerts
**Scalping:** Period 5-7, Signal crosses
**Position Trading:** Period 21-30, Weekly/Daily TF
---
## 🌍 Markets & Timeframes
**Works on all markets:**
- Forex (all pairs)
- Stocks (all exchanges)
- Cryptocurrencies
- Commodities
- Indices
- Futures
**Works on all timeframes:** 1m to Monthly
---
## 📊 How It Works
DAO calculates the ratio of buying pressure to total market pressure:
1. **Calculate Buying Pressure (DemandMax):**
- If current high > previous high: DemandMax = difference
- Otherwise: DemandMax = 0
2. **Calculate Selling Pressure (DemandMin):**
- If previous low > current low: DemandMin = difference
- Otherwise: DemandMin = 0
3. **Apply Smoothing:**
- Calculate SMA of DemandMax over N periods
- Calculate SMA of DemandMin over N periods
4. **Final Formula:**
```
DAO = SMA(DemandMax) / (SMA(DemandMax) + SMA(DemandMin))
```
This produces a normalized value (0-1) representing market demand strength.
---
## 🎯 Trading Strategies
### Strategy 1: Divergence Trading
- Wait for divergence label
- Confirm at support/resistance
- Enter on confirming candle
- Stop loss beyond recent swing
- Target: opposite level or 0.50
### Strategy 2: Overbought/Oversold
- Best for ranging markets
- Wait for extreme readings
- Enter on reversal from extremes
- Target: middle line (0.50)
### Strategy 3: Trend Following
- Identify trend direction first
- Use DAO to time entries in trend direction only
- Enter on pullbacks to oversold (uptrend) or overbought (downtrend)
- Trade with the trend
### Strategy 4: Multi-Timeframe
- Enable MTF feature
- Trade only when both timeframes align
- Higher TF = trend direction
- Lower TF = precise entry
---
## 📂 Category
**Primary:** Oscillators
**Secondary:** Statistics, Volatility, Momentum
---
## 🏷️ Tags
dao, oscillator, momentum, overbought-oversold, divergence, reversal, demand-indicator, price-exhaustion, statistics, volatility, forex, stocks, crypto, multi-timeframe, technical-analysis
---
## ⚠️ Disclaimer
**This indicator is for educational purposes only.** It does not constitute financial advice. Trading involves substantial risk of loss. Always conduct your own research, use proper risk management, and consult with financial professionals before making trading decisions. Past performance does not guarantee future results.
---
## 📄 License
Open source - Free to use for personal trading, modify as needed, and share with attribution.
---
**Version:** 1.0
**Status:** Production Ready ✅
**Pine Script:** v5
**Trademark-Free:** 100% Safe to Publish
---
*Made with 💙 for traders worldwide*
Exponential Moving Average + ATR MTF [YSFX]Description:
This indicator is a reupload of a previously published EMA + ATR tool, updated and enhanced after a house rule violation to provide additional features and a cleaner, more versatile experience for traders.
It combines trend analysis and volatility measurement into one intuitive tool, allowing traders to visualize market direction, dynamic support and resistance, and adaptive risk levels—all in a clean, minimal interface.
The indicator calculates a customizable moving average (MA) type—EMA, SMA, WMA, HMA, RMA, DEMA, TEMA, VWMA, LSMA, or KAMA—and surrounds it with ATR-based bands that expand and contract with market volatility. This creates a dynamic envelope around price, helping traders identify potential breakouts, pullbacks, or high-probability entry/exit zones.
Advanced Features:
Multiple MA types: Supports all major moving averages, including advanced options like KAMA, DEMA, and TEMA.
KAMA customization: Adjustable fast and slow lengths for precise tuning.
Dual timeframe support: Optionally use separate timeframes for the MA and ATR, or a global timeframe for both.
Dynamic ATR bands: Automatically adjust to market volatility, useful for setting adaptive stop-loss levels.
Optional fill: Shade the area between upper and lower ATR bands for a clear visual representation of volatility.
Flexible for all markets: Works across any timeframe or asset class.
Who It’s For:
This indicator is ideal for trend-following traders, swing traders, and volatility-focused analysts who want to:
Confirm trend direction while accounting for volatility
Identify high-probability trade entries and exits
Implement dynamic, ATR-based stop-loss strategies
Keep charts clean and uncluttered while still capturing key market information
This reuploaded version ensures compliance with platform rules while offering enhanced flexibility and clarity for modern trading workflows.
Quantum Trend Guardian MTF📊 Descripción de Indicador: “Momentum Clarity”
Resumen:
Momentum Clarity es un indicador diseñado para identificar zonas de alta probabilidad de reversión o continuación de tendencia, combinando análisis de volumen, volatilidad y fuerza relativa. Ideal para traders que buscan claridad en momentos de indecisión del mercado.
Características principales:
• 🔍 Detecta divergencias entre precio y momentum.
• 📈 Señala zonas de sobrecompra y sobreventa con mayor precisión que el RSI tradicional.
• 🟢 Incluye alertas visuales para entradas y salidas potenciales.
• 🧠 Compatible con estrategias de scalping, swing y position trading.
Cómo usarlo:
• Utiliza las señales verdes para considerar entradas en largo y las rojas para cortos.
• Confirma con acción del precio y volumen antes de ejecutar.
• Ajusta la sensibilidad según el marco temporal y tu estilo de trading.
Ventajas:
• Reduce el ruido en mercados laterales.
• Mejora la toma de decisiones en zonas de congestión.
• Aumenta la confianza en escenarios de alta volatilidad
Absolutely! Here's the English version of the indicator description:
📊 Indicator Description: “Momentum Clarity”
Overview:
Momentum Clarity is a custom indicator designed to highlight high-probability zones for trend reversals or continuations by combining volume, volatility, and relative strength analysis. It’s ideal for traders seeking clarity during market indecision.
Key Features:
• 🔍 Detects divergences between price and momentum.
• 📈 Identifies overbought and oversold zones with greater precision than traditional RSI.
• 🟢 Includes visual alerts for potential entry and exit points.
• 🧠 Compatible with scalping, swing trading, and long-term strategies.
How to Use:
• Use green signals to consider long entries and red signals for short positions.
• Confirm with price action and volume before executing trades.
• Adjust sensitivity based on your timeframe and trading style.
Benefits:
• Reduces noise in sideways markets.
• Enhances decision-making in consolidation zones.
• Builds confidence in volatile environments.
If you’d like, I can tailor this description to match your specific indicator’s logic, name, and purpose. Just share a few details and I’ll refine it for publication.
RSI MTF Table - 12 Pairs (1,5,15)
The relative strength index measures the speed and magnitude of an asset's recent price changes. Therefore, it is considered a momentum indicator in technical analysis. Essentially, the RSI is the ratio of the days an asset's value increases to decreases over a given period.
Generally speaking, if the RSI is around 50, we do not expect strong movements. RSI above 65 or below 35 are areas we expect. In this context, this chart and the general momentum in 1-5-15 minutes allow us to quickly determine the parity we will trade. It is useful for intraday trading and scalping.
Final Scalping Strategy - RELAXED ENTRY, jangan gopoh braderEMA Scalping System (MTF) Guide (1HR direction, 15 min entry)
Objective
To capture small, consistent profits by entering trades when 15-minute momentum aligns with the 1-hour trend.
Trades are executed only during high-liquidity London and New York sessions to increase the probability of execution and success.
Strategy Setup
Chart Timeframe (Execution): 15-Minute (M15).
Trend Filter (HTF): 1-Hour (H1) chart data is used for the long-term EMA.
Long-Term Trend Filter: 50-Period EMA (based on H1 data).
Short-Term Momentum Signal: 20-Period EMA (based on M15 data).
Risk
Metric: 14-period ATR for dynamic Stop Loss calculation.
✅ Trading Rules🟢
Long (Buy) Entry Conditions
Session: Must be within the London (0800-1700 GMT) or New York (1300-2200 GMT) sessions.
HTF Trend: Current price must be above the 1-Hour EMA 50.
Momentum Signal: Price crosses above the 15-Minute EMA 20.
Confirmation: The bar immediately following the crossover must close above the 15-Minute EMA 20.
Ent
ry: A market order is executed on the close of the confirmation candle.
🔴 Short (Sell) Entry Conditions
Session: Must be within the London (0800-1700 GMT) or New York (1300-2200 GMT) sessions.
HTF Trend: Current price must be below the 1-Hour EMA 50.
Momentum Signal: Price crosses below the 15-Minute EMA 20.
Confirmation: The bar immediately following the crossover must close below the 15-Minute EMA 20.
Entry: A market order is executed on the close of the confirmation candle.
🛑 Trade Management & Exits
Stop Loss (SL): Placed dynamically at 2.0 times the 14-period ATR distance from the entry candle's low (for Buys) or high (for Sells).
Take Profit (TP): Placed dynamically to achieve a 1.5 Risk-Reward Ratio (RR) (TP distance = 1.5 x SL d
istance).
📊 On-Chart Visuals
Detailed Labels: A box appears on the entry bar showing the action, SL/TP prices, Risk/Reward in Pips, and the exact R:R ratio.
Horizontal Lines: Dashed lines display the calculated SL (Red) and TP (Green) levels while the trade is active.
Background: The chart background is shaded to highlight the active London and New York tradi
ng sessions.
RSI + MACD Multi-Timeframe StrategyThis strategy combines the Relative Strength Index (RSI) from the daily timeframe with the Moving Average Convergence Divergence (MACD) from the 4-hour timeframe to generate precise long entry and exit signals.
The system uses a multi-timeframe approach to align longer-term trend conditions with shorter-term momentum shifts — allowing traders to catch dips with confirmation and exit before reversals.
🧠 Strategy Logic
✅ Long Entry Condition:
- RSI on the daily (1D) timeframe is oversold (below your defined threshold)
- MACD on the 4H timeframe crosses above the signal line
→ A long trade is opened when these two align
✅ Long Exit Condition:
- RSI on the daily timeframe is overbought
- MACD on the 4H timeframe crosses below the signal line
→ The long trade is closed when these two conditions are met
💡 This strategy currently supports long entries only. Short logic can be added if needed.
📊 Indicator Components
🔹 RSI (Relative Strength Index):
- A momentum oscillator that measures the speed and magnitude of price changes.
- Helps identify overbought (potential sell) and oversold (potential buy) conditions.
- Applied on the 1D timeframe (by default) to reflect broader market trend or exhaustion levels.
🔹 MACD (Moving Average Convergence Divergence):
- A trend-following momentum indicator based on moving averages.
- The MACD Line (fast EMA - slow EMA) crossing above the Signal Line indicates bullish momentum.
- Used here on the 4-hour timeframe (by default) for shorter-term momentum confirmation.
🔹 Multi-Timeframe (MTF) Logic:
- Uses request.security() to pull higher timeframe data (1D for RSI, 4H for MACD).
- Ensures no repainting, as it only uses closed candles from the higher timeframe.
- Aligns longer-term signals with shorter-term entries, reducing false signals.
📈 Plotting Options
The script includes a plot selector input allowing you to toggle between:
- RSI Plot (with overbought/oversold lines)
- MACD Plot (MACD line and signal line)
- This helps visualize signal conditions clearly on your chart.
🛠 Customization
- RSI & MACD settings are fully configurable
- RSI and MACD timeframes can be adjusted independently
⚠️ Disclaimer
This strategy is provided for educational and informational purposes only.
It is not financial advice or a recommendation to buy or sell any asset.
Past performance does not guarantee future results. Always test strategies in a simulated environment before live use, and consult with a licensed financial advisor for investment decisions.
Zero Lag Filter Pro MTF Editionit is a very good trading indicator it uses multi timeframe analysis to give trade signals
Dynamic S/R Levels - MTF (1-Week, Strong/Spaced)dynamic support and resistance levels based on timeframe
Gold Master Pro Plus ECONOMIC ENHANCED (H1 London v1.1)Overview
This indicator provides gold trading signals with integrated economic calendar awareness, specifically optimized for H1 timeframe and London session trading.
Methodology
The script analyzes multiple technical factors while monitoring economic event risks:
Technical Analysis Components:
RSI for momentum detection with configurable overbought/oversold levels
EMA crossovers (9, 21, 50 periods) for trend direction
MACD for momentum confirmation
ADX for trend strength measurement
Volume analysis for confirmation of price movements
Support/resistance detection using pivot points
Economic Calendar Integration:
Time-based detection of major economic releases (NFP, CPI, FOMC meetings)
Volatility assessment during event periods
USD stability monitoring through currency pair correlations
Automatic cooldown periods after high-impact events
Risk Management Features:
Multi-timeframe confirmation using daily trends
Session-aware scoring (London/NY overlap focus)
Quality-tiered signal classification
Position size recommendations based on signal strength and risk conditions
How to Use
Initial Setup:
Apply to XAUUSD on H1 timeframe
Configure economic settings in the inputs:
Enable economic event filter
Set ET offset (typically 5 hours for winter, 4 for summer)
Select relevant economic events to monitor
Signal Interpretation:
PLATINUM: All conditions aligned (active session, strong volume, low economic risk, trend confirmation)
HIGH: Most factors aligned with moderate risk
MEDIUM: Some factors aligned with acceptable risk
BLOCKED: High economic risk, cooldown period, or manual block active
Dashboard Metrics:
Economic risk level indicates current market safety
Event status shows timing of economic releases
Position size recommends appropriate trade sizing
Master score combines all technical and economic factors
Configuration Options
Economic Settings:
Economic impact threshold (30-80)
ET offset adjustment for timezone accuracy
Cooldown period configuration (2-24 bars)
Technical Settings:
RSI parameters (length, overbought/oversold levels)
Signal thresholds for different quality tiers
Session timing bonuses/penalties
Risk Management:
Multi-timeframe confirmation enable/disable
Higher timeframe selection (D, W, 4H, 12H)
MTF weight percentage (10-50%)
Important Notes
Economic event timing is approximate and should be verified with official economic calendars
Past performance does not guarantee future results
Trading involves substantial risk of loss
This tool is for educational purposes and should not be considered financial advice
The indicator is designed to assist in identifying potential trading opportunities while managing economic event risks through automated protection mechanisms.
Higher Timeframe Box & Divider - All Candles [GoldnHunt]The Higher Timeframe Box & Divider – All Candles indicator visually maps higher timeframe candles onto lower timeframe charts.
It highlights the open and close range of each higher timeframe candle as a box, along with a vertical divider marking the start of each new period.
This helps traders clearly see higher timeframe structure and momentum flow without switching charts.
Features:
Draws a box showing only the body (open to close) of each higher timeframe candle.
Uses candle color to represent bullish and bearish momentum.
Adds a divider line for each new higher timeframe candle.
Works across all symbols and timeframes.
Lightweight and optimized for performance.
Use case:
Perfect for traders using multi-timeframe (MTF) analysis who want to visualize higher timeframe candle progression while observing lower timeframe price action.






















