RSI Overbought/Oversold + Divergence Indicator (new)//@version=5
indicator('CryptoSignalScanner - RSI Overbought/Oversold + Divergence Indicator (new)',
//---------------------------------------------------------------------------------------------------------------------------------
//--- Define Colors ---------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------
vWhite = #FFFFFF
vViolet = #C77DF3
vIndigo = #8A2BE2
vBlue = #009CDF
vGreen = #5EBD3E
vYellow = #FFB900
vRed = #E23838
longColor = color.green
shortColor = color.red
textColor = color.white
bullishColor = color.rgb(38,166,154,0) //Used in the display table
bearishColor = color.rgb(239,83,79,0) //Used in the display table
nomatchColor = color.silver //Used in the display table
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- Functions--------------------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
TF2txt(TF) =>
switch TF
"S" => "RSI 1s:"
"5S" => "RSI 5s:"
"10S" => "RSI 10s:"
"15S" => "RSI 15s:"
"30S" => "RSI 30s"
"1" => "RSI 1m:"
"3" => "RSI 3m:"
"5" => "RSI 5m:"
"15" => "RSI 15m:"
"30" => "RSI 30m"
"45" => "RSI 45m"
"60" => "RSI 1h:"
"120" => "RSI 2h:"
"180" => "RSI 3h:"
"240" => "RSI 4h:"
"480" => "RSI 8h:"
"D" => "RSI 1D:"
"1D" => "RSI 1D:"
"2D" => "RSI 2D:"
"3D" => "RSI 2D:"
"3D" => "RSI 3W:"
"W" => "RSI 1W:"
"1W" => "RSI 1W:"
"M" => "RSI 1M:"
"1M" => "RSI 1M:"
"3M" => "RSI 3M:"
"6M" => "RSI 6M:"
"12M" => "RSI 12M:"
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- Show/Hide Settings ----------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
rsiShowInput = input(true, title='Show RSI', group='Show/Hide Settings')
maShowInput = input(false, title='Show MA', group='Show/Hide Settings')
showRSIMAInput = input(true, title='Show RSIMA Cloud', group='Show/Hide Settings')
rsiBandShowInput = input(true, title='Show Oversold/Overbought Lines', group='Show/Hide Settings')
rsiBandExtShowInput = input(true, title='Show Oversold/Overbought Extended Lines', group='Show/Hide Settings')
rsiHighlightShowInput = input(true, title='Show Oversold/Overbought Highlight Lines', group='Show/Hide Settings')
DivergenceShowInput = input(true, title='Show RSI Divergence Labels', group='Show/Hide Settings')
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- Table Settings --------------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
rsiShowTable = input(true, title='Show RSI Table Information box', group="RSI Table Settings")
rsiTablePosition = input.string(title='Location', defval='middle_right', options= , group="RSI Table Settings", inline='1')
rsiTextSize = input.string(title=' Size', defval='small', options= , group="RSI Table Settings", inline='1')
rsiShowTF1 = input(true, title='Show TimeFrame1', group="RSI Table Settings", inline='tf1')
rsiTF1 = input.timeframe("15", title=" Time", group="RSI Table Settings", inline='tf1')
rsiShowTF2 = input(true, title='Show TimeFrame2', group="RSI Table Settings", inline='tf2')
rsiTF2 = input.timeframe("60", title=" Time", group="RSI Table Settings", inline='tf2')
rsiShowTF3 = input(true, title='Show TimeFrame3', group="RSI Table Settings", inline='tf3')
rsiTF3 = input.timeframe("240", title=" Time", group="RSI Table Settings", inline='tf3')
rsiShowTF4 = input(true, title='Show TimeFrame4', group="RSI Table Settings", inline='tf4')
rsiTF4 = input.timeframe("D", title=" Time", group="RSI Table Settings", inline='tf4')
rsiShowHist = input(true, title='Show RSI Historical Columns', group="RSI Table Settings", tooltip='Show the information of the 2 previous closed candles')
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- RSI Input Settings ----------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
rsiSourceInput = input.source(close, 'Source', group='RSI Settings')
rsiLengthInput = input.int(14, minval=1, title='RSI Length', group='RSI Settings', tooltip='Here we set the RSI lenght')
rsiColorInput = input.color(#26a69a, title="RSI Color", group='RSI Settings')
rsimaColorInput = input.color(#ef534f, title="RSIMA Color", group='RSI Settings')
rsiBandColorInput = input.color(#787B86, title="RSI Band Color", group='RSI Settings')
rsiUpperBandExtInput = input.int(title='RSI Overbought Extended Line', defval=80, minval=50, maxval=100, group='RSI Settings')
rsiUpperBandInput = input.int(title='RSI Overbought Line', defval=70, minval=50, maxval=100, group='RSI Settings')
rsiLowerBandInput = input.int(title='RSI Oversold Line', defval=30, minval=0, maxval=50, group='RSI Settings')
rsiLowerBandExtInput = input.int(title='RSI Oversold Extended Line', defval=20, minval=0, maxval=50, group='RSI Settings')
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- MA Input Settings -----------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
maTypeInput = input.string("EMA", title="MA Type", options= , group="MA Settings")
maLengthInput = input.int(14, title="MA Length", group="MA Settings")
maColorInput = input.color(color.yellow, title="MA Color", group='MA Settings') //#7E57C2
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- Divergence Input Settings ---------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
lbrInput = input(title="Pivot Lookback Right", defval=2, group='RSI Divergence Settings')
lblInput = input(title="Pivot Lookback Left", defval=2, group='RSI Divergence Settings')
lbRangeMaxInput = input(title="Max of Lookback Range", defval=10, group='RSI Divergence Settings')
lbRangeMinInput = input(title="Min of Lookback Range", defval=2, group='RSI Divergence Settings')
plotBullInput = input(title="Plot Bullish", defval=true, group='RSI Divergence Settings')
plotHiddenBullInput = input(title="Plot Hidden Bullish", defval=true, group='RSI Divergence Settings')
plotBearInput = input(title="Plot Bearish", defval=true, group='RSI Divergence Settings')
plotHiddenBearInput = input(title="Plot Hidden Bearish", defval=true, group='RSI Divergence Settings')
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- RSI Calculation -------------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
rsi = ta.rsi(rsiSourceInput, rsiLengthInput)
rsiprevious = rsi
= request.security(syminfo.tickerid, rsiTF1, [rsi, rsi , rsi ], lookahead=barmerge.lookahead_on)
= request.security(syminfo.tickerid, rsiTF2, [rsi, rsi , rsi ], lookahead=barmerge.lookahead_on)
= request.security(syminfo.tickerid, rsiTF3, [rsi, rsi , rsi ], lookahead=barmerge.lookahead_on)
= request.security(syminfo.tickerid, rsiTF4, [rsi, rsi , rsi ], lookahead=barmerge.lookahead_on)
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- MA Calculation -------------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
ma(source, length, type) =>
switch type
"SMA" => ta.sma(source, length)
"Bollinger Bands" => ta.sma(source, length)
"EMA" => ta.ema(source, length)
"SMMA (RMA)" => ta.rma(source, length)
"WMA" => ta.wma(source, length)
"VWMA" => ta.vwma(source, length)
rsiMA = ma(rsi, maLengthInput, maTypeInput)
rsiMAPrevious = rsiMA
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- Stoch RSI Settings + Calculation --------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
showStochRSI = input(false, title="Show Stochastic RSI", group='Stochastic RSI Settings')
smoothK = input.int(title="Stochastic K", defval=3, minval=1, maxval=10, group='Stochastic RSI Settings')
smoothD = input.int(title="Stochastic D", defval=4, minval=1, maxval=10, group='Stochastic RSI Settings')
lengthRSI = input.int(title="Stochastic RSI Lenght", defval=14, minval=1, group='Stochastic RSI Settings')
lengthStoch = input.int(title="Stochastic Lenght", defval=14, minval=1, group='Stochastic RSI Settings')
colorK = input.color(color.rgb(41,98,255,0), title="K Color", group='Stochastic RSI Settings', inline="1")
colorD = input.color(color.rgb(205,109,0,0), title="D Color", group='Stochastic RSI Settings', inline="1")
StochRSI = ta.rsi(rsiSourceInput, lengthRSI)
k = ta.sma(ta.stoch(StochRSI, StochRSI, StochRSI, lengthStoch), smoothK) //Blue Line
d = ta.sma(k, smoothD) //Red Line
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- Divergence Settings ------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
bearColor = color.red
bullColor = color.green
hiddenBullColor = color.new(color.green, 50)
hiddenBearColor = color.new(color.red, 50)
//textColor = color.white
noneColor = color.new(color.white, 100)
osc = rsi
plFound = na(ta.pivotlow(osc, lblInput, lbrInput)) ? false : true
phFound = na(ta.pivothigh(osc, lblInput, lbrInput)) ? false : true
_inRange(cond) =>
bars = ta.barssince(cond == true)
lbRangeMinInput <= bars and bars <= lbRangeMaxInput
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- Define Plot & Line Colors ---------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
rsiColor = rsi >= rsiMA ? rsiColorInput : rsimaColorInput
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- Plot Lines ------------------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
// Create a horizontal line at a specific price level
myLine = line.new(bar_index , 75, bar_index, 75, color = color.rgb(187, 14, 14), width = 2)
bottom = line.new(bar_index , 50, bar_index, 50, color = color.rgb(223, 226, 28), width = 2)
mymainLine = line.new(bar_index , 60, bar_index, 60, color = color.rgb(13, 154, 10), width = 3)
hline(50, title='RSI Baseline', color=color.new(rsiBandColorInput, 50), linestyle=hline.style_solid, editable=false)
hline(rsiBandExtShowInput ? rsiUpperBandExtInput : na, title='RSI Upper Band', color=color.new(rsiBandColorInput, 10), linestyle=hline.style_dashed, editable=false)
hline(rsiBandShowInput ? rsiUpperBandInput : na, title='RSI Upper Band', color=color.new(rsiBandColorInput, 10), linestyle=hline.style_dashed, editable=false)
hline(rsiBandShowInput ? rsiLowerBandInput : na, title='RSI Upper Band', color=color.new(rsiBandColorInput, 10), linestyle=hline.style_dashed, editable=false)
hline(rsiBandExtShowInput ? rsiLowerBandExtInput : na, title='RSI Upper Band', color=color.new(rsiBandColorInput, 10), linestyle=hline.style_dashed, editable=false)
bgcolor(rsiHighlightShowInput ? rsi >= rsiUpperBandExtInput ? color.new(rsiColorInput, 70) : na : na, title="Show Extended Oversold Highlight", editable=false)
bgcolor(rsiHighlightShowInput ? rsi >= rsiUpperBandInput ? rsi < rsiUpperBandExtInput ? color.new(#64ffda, 90) : na : na: na, title="Show Overbought Highlight", editable=false)
bgcolor(rsiHighlightShowInput ? rsi <= rsiLowerBandInput ? rsi > rsiLowerBandExtInput ? color.new(#F43E32, 90) : na : na : na, title="Show Extended Oversold Highlight", editable=false)
bgcolor(rsiHighlightShowInput ? rsi <= rsiLowerBandInput ? color.new(rsimaColorInput, 70) : na : na, title="Show Oversold Highlight", editable=false)
maPlot = plot(maShowInput ? rsiMA : na, title='MA', color=color.new(maColorInput,0), linewidth=1)
rsiMAPlot = plot(showRSIMAInput ? rsiMA : na, title="RSI EMA", color=color.new(rsimaColorInput,0), editable=false, display=display.none)
rsiPlot = plot(rsiShowInput ? rsi : na, title='RSI', color=color.new(rsiColor,0), linewidth=1)
fill(rsiPlot, rsiMAPlot, color=color.new(rsiColor, 60), title="RSIMA Cloud")
plot(showStochRSI ? k : na, title='Stochastic K', color=colorK, linewidth=1)
plot(showStochRSI ? d : na, title='Stochastic D', color=colorD, linewidth=1)
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- Plot Divergence -------------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
// Regular Bullish
// Osc: Higher Low
oscHL = osc > ta.valuewhen(plFound, osc , 1) and _inRange(plFound )
// Price: Lower Low
priceLL = low < ta.valuewhen(plFound, low , 1)
bullCond = plotBullInput and priceLL and oscHL and plFound
plot(
plFound ? osc : na,
offset=-lbrInput,
title="Regular Bullish",
linewidth=2,
color=(bullCond ? bullColor : noneColor)
)
plotshape(
DivergenceShowInput ? bullCond ? osc : na : na,
offset=-lbrInput,
title="Regular Bullish Label",
text=" Bull ",
style=shape.labelup,
location=location.absolute,
color=bullColor,
textcolor=textColor
)
//------------------------------------------------------------------------------
// Hidden Bullish
// Osc: Lower Low
oscLL = osc < ta.valuewhen(plFound, osc , 1) and _inRange(plFound )
// Price: Higher Low
priceHL = low > ta.valuewhen(plFound, low , 1)
hiddenBullCond = plotHiddenBullInput and priceHL and oscLL and plFound
plot(
plFound ? osc : na,
offset=-lbrInput,
title="Hidden Bullish",
linewidth=2,
color=(hiddenBullCond ? hiddenBullColor : noneColor)
)
plotshape(
DivergenceShowInput ? hiddenBullCond ? osc : na : na,
offset=-lbrInput,
title="Hidden Bullish Label",
text=" H Bull ",
style=shape.labelup,
location=location.absolute,
color=bullColor,
textcolor=textColor
)
//------------------------------------------------------------------------------
// Regular Bearish
// Osc: Lower High
oscLH = osc < ta.valuewhen(phFound, osc , 1) and _inRange(phFound )
// Price: Higher High
priceHH = high > ta.valuewhen(phFound, high , 1)
bearCond = plotBearInput and priceHH and oscLH and phFound
plot(
phFound ? osc : na,
offset=-lbrInput,
title="Regular Bearish",
linewidth=2,
color=(bearCond ? bearColor : noneColor)
)
plotshape(
DivergenceShowInput ? bearCond ? osc : na : na,
offset=-lbrInput,
title="Regular Bearish Label",
text=" Bear ",
style=shape.labeldown,
location=location.absolute,
color=bearColor,
textcolor=textColor
)
//------------------------------------------------------------------------------
// Hidden Bearish
// Osc: Higher High
oscHH = osc > ta.valuewhen(phFound, osc , 1) and _inRange(phFound )
// Price: Lower High
priceLH = high < ta.valuewhen(phFound, high , 1)
hiddenBearCond = plotHiddenBearInput and priceLH and oscHH and phFound
plot(
phFound ? osc : na,
offset=-lbrInput,
title="Hidden Bearish",
linewidth=2,
color=(hiddenBearCond ? hiddenBearColor : noneColor)
)
plotshape(
DivergenceShowInput ? hiddenBearCond ? osc : na : na,
offset=-lbrInput,
title="Hidden Bearish Label",
text=" H Bear ",
style=shape.labeldown,
location=location.absolute,
color=bearColor,
textcolor=textColor
)
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- Check RSI Lineup ------------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
bullTF = rsi > rsi and rsi > rsi
bearTF = rsi < rsi and rsi < rsi
bullTF1 = rsi1 > rsi1_1 and rsi1_1 > rsi1_2
bearTF1 = rsi1 < rsi1_1 and rsi1_1 < rsi1_2
bullTF2 = rsi2 > rsi2_1 and rsi2_1 > rsi2_2
bearTF2 = rsi2 < rsi2_1 and rsi2_1 < rsi2_2
bullTF3 = rsi3 > rsi3_1 and rsi3_1 > rsi3_2
bearTF3 = rsi3 < rsi3_1 and rsi3_1 < rsi3_2
bullTF4 = rsi4 > rsi4_1 and rsi4_1 > rsi4_2
bearTF4 = rsi4 < rsi4_1 and rsi4_1 < rsi4_2
bbTxt(bull,bear) =>
bull ? "BULLISH" : bear ? "BEARISCH" : 'NO LINEUP'
bbColor(bull,bear) =>
bull ? bullishColor : bear ? bearishColor : nomatchColor
newTC(tBox, col, row, txt, width, txtColor, bgColor, txtHA, txtSize) =>
table.cell(table_id=tBox,column=col, row=row, text=txt, width=width,text_color=txtColor,bgcolor=bgColor, text_halign=txtHA, text_size=txtSize)
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- Define RSI Table Setting ----------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
width_c0 = 0
width_c1 = 0
if rsiShowTable
var tBox = table.new(position=rsiTablePosition, columns=5, rows=6, bgcolor=color.rgb(18,22,33,50), frame_color=color.black, frame_width=1, border_color=color.black, border_width=1)
newTC(tBox, 0,1,"RSI Current",width_c0,color.orange,color.rgb(0,0,0,100),'right',rsiTextSize)
newTC(tBox, 1,1,str.format(" {0,number,#.##} ", rsi),width_c0,vWhite,rsi < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
newTC(tBox, 4,1,bbTxt(bullTF, bearTF),width_c0,vWhite,bbColor(bullTF, bearTF),'center',rsiTextSize)
if rsiShowHist
newTC(tBox, 2,1,str.format(" {0,number,#.##} ", rsi ),width_c0,vWhite,rsi < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
newTC(tBox, 3,1,str.format(" {0,number,#.##} ", rsi ),width_c0,vWhite,rsi < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
if rsiShowTF1
newTC(tBox, 0,2,TF2txt(rsiTF1),width_c0,vWhite,color.rgb(0,0,0,100),'right',rsiTextSize)
newTC(tBox, 1,2,str.format(" {0,number,#.##} ", rsi1),width_c0,vWhite,rsi1 < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
newTC(tBox, 4,2,bbTxt(bullTF1, bearTF1),width_c0,vWhite,bbColor(bullTF1,bearTF1),'center',rsiTextSize)
if rsiShowHist
newTC(tBox, 2,2,str.format(" {0,number,#.##} ", rsi1_1),width_c0,vWhite,rsi1_1 < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
newTC(tBox, 3,2,str.format(" {0,number,#.##} ", rsi1_2),width_c0,vWhite,rsi1_2 < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
if rsiShowTF2
newTC(tBox, 0,3,TF2txt(rsiTF2),width_c0,vWhite,color.rgb(0,0,0,100),'right',rsiTextSize)
newTC(tBox, 1,3,str.format(" {0,number,#.##} ", rsi2),width_c0,vWhite,rsi2 < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
newTC(tBox, 4,3,bbTxt(bullTF2, bearTF2),width_c0,vWhite,bbColor(bullTF2,bearTF2),'center',rsiTextSize)
if rsiShowHist
newTC(tBox, 2,3,str.format(" {0,number,#.##} ", rsi2_1),width_c0,vWhite,rsi2_1 < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
newTC(tBox, 3,3,str.format(" {0,number,#.##} ", rsi2_2),width_c0,vWhite,rsi2_2 < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
if rsiShowTF3
newTC(tBox, 0,4,TF2txt(rsiTF3),width_c0,vWhite,color.rgb(0,0,0,100),'right',rsiTextSize)
newTC(tBox, 1,4,str.format(" {0,number,#.##} ", rsi3),width_c0,vWhite,rsi3 < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
newTC(tBox, 4,4,bbTxt(bullTF3, bearTF3),width_c0,vWhite,bbColor(bullTF3,bearTF3),'center',rsiTextSize)
if rsiShowHist
newTC(tBox, 2,4,str.format(" {0,number,#.##} ", rsi3_1),width_c0,vWhite,rsi3_1 < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
newTC(tBox, 3,4,str.format(" {0,number,#.##} ", rsi3_2),width_c0,vWhite,rsi3_2 < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
if rsiShowTF4
newTC(tBox, 0,5,TF2txt(rsiTF4),width_c0,vWhite,color.rgb(0,0,0,100),'right',rsiTextSize)
newTC(tBox, 1,5,str.format(" {0,number,#.##} ", rsi4),width_c0,vWhite,rsi4 < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
newTC(tBox, 4,5,bbTxt(bullTF4, bearTF4),width_c0,vWhite,bbColor(bullTF4,bearTF4),'center',rsiTextSize)
if rsiShowHist
newTC(tBox, 2,5,str.format(" {0,number,#.##} ", rsi4_1),width_c0,vWhite,rsi4_1 < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
newTC(tBox, 3,5,str.format(" {0,number,#.##} ", rsi4_2),width_c0,vWhite,rsi4_2 < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
//------------------------------------------------------
//--- Alerts -------------------------------------------
//------------------------------------------------------
Search in scripts for "bear"
Relative Strength Index Remastered [CHE]Relative Strength Index Remastered — Enhanced RSI with robust divergence detection using price-based pivots and line-of-sight validation to reduce false signals compared to the standard RSI indicator.
Summary
RSI Remastered builds on the classic Relative Strength Index by adding a more reliable divergence detection system that relies on price pivots rather than RSI pivots alone, incorporating a line-of-sight check to ensure the RSI path between points remains clear. This approach filters out many false divergences that occur in the original RSI indicator due to its volatile pivot detection on the RSI line itself. Users benefit from clearer reversal and continuation signals, especially in noisy markets, with optional hidden divergence support for trend confirmation. The core RSI calculation and smoothing options remain familiar, but the divergence logic provides materially fewer alerts while maintaining sensitivity.
Motivation: Why this design?
The standard RSI indicator often generates misleading divergence signals because it detects pivots directly on the RSI values, which can fluctuate erratically in volatile conditions, leading to frequent false positives that confuse traders during ranging or choppy price action. RSI Remastered addresses this by shifting pivot detection to the underlying price highs and lows, which are more stable, and adding a validation step that confirms the RSI line does not cross the direct path between pivot points. This design targets the real problem of over-signaling in the original, promoting more actionable insights without altering the RSI's core momentum measurement.
What’s different vs. standard approaches?
- Reference baseline: The classical TradingView RSI indicator, which uses simple RSI-based pivot detection for divergences.
- Architecture differences:
- Pivot identification on price extremes (highs and lows) instead of RSI values, extracting RSI levels at those points for comparison.
- Addition of a line-of-sight validation that checks the RSI path bar by bar between pivots to prevent signals where the line is interrupted.
- Inclusion of hidden divergence types alongside regular ones, using the same robust framework.
- Configurable drawing of connecting lines between validated pivot RSI points for visual clarity.
- Practical effect: Charts show fewer but higher-quality divergence markers and lines, reducing clutter from the original's frequent RSI pivot triggers; this matters for avoiding whipsaws in intraday trading, where the standard version might flag dozens of invalid setups per session.
Key Comparison Aspects
Aspect: Title/Shorttitle
Original RSI: "Relative Strength Index" / "RSI"
Robust Variant: "Relative Strength Index Remastered " / "RSI RM"
Aspect: Max. Lines/Labels
Original RSI: No specification (Standard: 50/50)
Robust Variant: max_lines_count=200, max_labels_count=200 (for more lines/markers in divergences)
Aspect: RSI Calculation & Plots
Original RSI: Identical: RSI with RMA, Plots (line, bands, gradient fills)
Robust Variant: Identical: RSI with RMA, Plots (line, bands, gradient fills)
Aspect: Smoothing (MA)
Original RSI: Identical: Inputs for MA types (SMA, EMA etc.), Bollinger Bands optional
Robust Variant: Identical: Inputs for MA types (SMA, EMA etc.), Bollinger Bands optional
Aspect: Divergence Activation
Original RSI: input.bool(false, "Calculate Divergence") (disabled by default)
Robust Variant: input.bool(true, "Calculate Divergence") (enabled by default, with tooltip)
Aspect: Pivot Calculation
Original RSI: Pivots on RSI (ta.pivotlow/high on RSI values)
Robust Variant: Pivots on price (ta.pivotlow/high on low/high), RSI values then extracted
Aspect: Lookback Values
Original RSI: Fixed: lookbackLeft=5, lookbackRight=5
Robust Variant: Input: L=5 (Pivot Left), R=5 (Pivot Right), adjustable (min=1, max=50)
Aspect: Range Between Pivots
Original RSI: Fixed: rangeUpper=60, rangeLower=5 (via _inRange function)
Robust Variant: Input: rangeUpper=60 (Max Bars), rangeLower=5 (Min Bars), adjustable (min=1–6, max=100–300)
Aspect: Divergence Types
Original RSI: Only Regular Bullish/Bearish: - Bull: Price LL + RSI HL - Bear: Price HH + RSI LH
Robust Variant: Regular + Hidden (optional via showHidden=true): - Regular Bull: Price LL + RSI HL - Regular Bear: Price HH + RSI LH - Hidden Bull: Price HL + RSI LL - Hidden Bear: Price LH + RSI HH
Aspect: Validation
Original RSI: No additional check (only pivot + range check)
Robust Variant: Line-of-Sight Check: RSI line must not cross the connecting line between pivots (line_clear function with slope calculation and loop for each bar in between)
Aspect: Signals (Plots/Shapes)
Original RSI: - Plot of pivot points (if divergence) - Shapes: "Bull"/"Bear" at RSI value, offset=-5
Robust Variant: - No pivot plots, instead shapes at RSI , offset=-R (adjustable) - Shapes: "Bull"/"Bear" (Regular), "HBull"/"HBear" (Hidden) - Colors: Lime/Red (Regular), Teal/Orange (Hidden)
Aspect: Line Drawing
Original RSI: No lines
Robust Variant: Optional (showLines=true): Lines between RSI pivots (thick for regular, dashed/thin for hidden), extend=none
Aspect: Alerts
Original RSI: Only Regular Bullish/Bearish (with pivot lookback reference)
Robust Variant: Regular Bullish/Bearish + Hidden Bullish/Bearish (specific "at latest pivot low/high")
Aspect: Robustness
Original RSI: Simple, prone to false signals (RSI pivots can be volatile)
Robust Variant: Higher: Price pivots are more stable, line-of-sight filters "broken" divergences, hidden support for trend continuations
Aspect: Code Length/Structure
Original RSI: ~100 lines, simple if-blocks for bull/bear
Robust Variant: ~150 lines, extended helper functions (e.g., inRange, line_clear), var group for inputs
How it works (technical)
The indicator first computes the core RSI value based on recent price changes, separating upward and downward movements over the specified length and smoothing them to derive a momentum reading scaled between zero and one hundred. This value is then plotted in a separate pane with fixed upper and lower reference lines at seventy and thirty, along with optional gradient fills to highlight overbought and oversold zones.
For smoothing, a moving average type is applied to the RSI if enabled, with an option to add bands around it based on the variability of recent RSI values scaled by a multiplier. Divergence detection activates on confirmed price pivots: lows for bullish checks and highs for bearish. At each new pivot, the system retrieves the bar index and values (price and RSI) for the current and prior pivot, ensuring they fall within a configurable bar range to avoid unrelated points.
Comparisons then assess whether the price has made a lower low (or higher high) while the RSI at those points moves in the opposite direction—higher for bullish regular, lower for bearish regular. For hidden types, the directions reverse to capture trend strength. The line-of-sight check calculates the straight path between the two RSI points and verifies that the actual RSI values in between stay entirely above (for bullish) or below (for bearish) that path, breaking the signal if any bar violates it. Valid signals trigger shapes at the RSI level of the new pivot and optional lines connecting the points. Initialization uses built-in functions to track prior occurrences, with states persisting across bars for accurate historical comparisons. No higher timeframe data is used, so confirmation occurs after the right pivot bars close, minimizing live-bar repaints.
Parameter Guide
Length — Controls the period for measuring price momentum changes — Default: 14 — Trade-offs/Tips: Shorter values increase responsiveness but add noise and more false signals; longer smooths trends but delays entries in fast markets.
Source — Selects the price input for RSI calculation — Default: Close — Trade-offs/Tips: Use high or low for volatility focus, but close works best for most assets; mismatches can skew overbought/oversold reads.
Calculate Divergence — Enables the enhanced divergence logic — Default: True — Trade-offs/Tips: Disable for pure RSI view to save computation; essential for signal reliability over the standard method.
Type (Smoothing) — Chooses the moving average applied to RSI — Default: SMA — Trade-offs/Tips: None for raw RSI; EMA for quicker adaptation, but SMA reduces whipsaws; Bollinger Bands option adds volatility context at cost of added lines.
Length (Smoothing) — Period for the smoothing average — Default: 14 — Trade-offs/Tips: Match RSI length for consistency; shorter boosts signal speed but amplifies noise in the smoothed line.
BB StdDev — Multiplier for band width around smoothed RSI — Default: 2.0 — Trade-offs/Tips: Lower narrows bands for tighter signals, risking more touches; higher widens for fewer but stronger breakouts.
Pivot Left — Bars to the left for confirming price pivots — Default: 5 — Trade-offs/Tips: Increase for stricter pivots in noisy data, reducing signals; too high delays confirmation excessively.
Pivot Right — Bars to the right for confirming price pivots — Default: 5 — Trade-offs/Tips: Balances with left for symmetry; longer right ensures maturity but shifts signals backward.
Max Bars Between Pivots — Upper limit on distance for valid pivot pairs — Default: 60 — Trade-offs/Tips: Tighten for short-term trades to focus recent action; widen for swing setups but risks unrelated comparisons.
Min Bars Between Pivots — Lower limit to avoid clustered pivots — Default: 5 — Trade-offs/Tips: Raise to filter micro-moves; too low invites overlapping signals like the original RSI.
Detect Hidden — Includes trend-continuation hidden types — Default: True — Trade-offs/Tips: Enable for full trend analysis; disable simplifies to reversals only, akin to basic RSI.
Draw Lines — Shows connecting lines between valid pivots — Default: True — Trade-offs/Tips: Turn off for cleaner charts; helps visually confirm line-of-sight in backtests.
Reading & Interpretation
The main RSI line oscillates between zero and one hundred, crossing above fifty suggesting building momentum and below indicating weakness; touches near seventy or thirty flag potential extremes. The optional smoothed line and bands provide a filtered view—price above the upper band on the RSI pane hints at overextension. Divergence shapes appear as upward labels for bullish (lime for regular, teal for hidden) and downward for bearish (red regular, orange hidden) at the pivot's RSI level, signaling a mismatch only after validation. Connecting lines, if drawn, slope between points without RSI interference, their color matching the shape type; a dashed style denotes hidden. Fewer shapes overall compared to the standard RSI mean higher conviction, but always confirm with price structure.
Practical Workflows & Combinations
- Trend following: Enter longs on regular bullish shapes near support with higher highs in price; filter hidden bullish for pullback buys in uptrends, pairing with a rising smoothed RSI above fifty.
- Exits/Stops: Use bearish regular as reversal warnings to tighten stops; hidden bearish in downtrends confirms continuation—exit if lines show RSI crossing the path.
- Multi-asset/Multi-TF: Defaults suit forex and stocks on one-hour charts; for crypto volatility, widen pivot ranges to ten; scale min/max bars proportionally on daily for swings, avoiding the original's intraday spam.
Behavior, Constraints & Performance
Signals confirm only after the right pivot bars close, so live bars may show tentative pivots that vanish on close, unlike the standard RSI's immediate RSI-pivot triggers—plan for this delay in automation. No higher timeframe calls, so no security-related repaints. Resources include up to two hundred lines and labels for dense charts, with a loop in validation scanning up to three hundred bars between pivots, which is efficient but could slow on very long histories. Known limits: Slight lag at pivot confirmation in trending markets; volatile RSI might rarely miss fine path violations; not ideal for gap-heavy assets where pivots skip.
Sensible Defaults & Quick Tuning
Start with defaults for balanced momentum and divergence on most timeframes. For too many signals (like the original), raise pivot left/right to eight and min bars to ten to filter noise. If sluggish in trends, shorten RSI length to nine and enable EMA smoothing for faster adaptation. In high-volatility assets, widen max bars to one hundred but disable hidden to focus essentials. For clean reversal hunts, set smoothing to none and lines on.
What this indicator is—and isn’t
RSI Remastered serves as a refined momentum and divergence visualization tool, enhancing the standard RSI for better signal quality in technical analysis setups. It is not a standalone trading system, nor does it predict price moves—pair it with volume, structure breaks, and risk rules for decisions. Use alongside position sizing and broader context, not in isolation.
Disclaimer
The content provided, including all code and materials, is strictly for educational and informational purposes only. It is not intended as, and should not be interpreted as, financial advice, a recommendation to buy or sell any financial instrument, or an offer of any financial product or service. All strategies, tools, and examples discussed are provided for illustrative purposes to demonstrate coding techniques and the functionality of Pine Script within a trading context.
Any results from strategies or tools provided are hypothetical, and past performance is not indicative of future results. Trading and investing involve high risk, including the potential loss of principal, and may not be suitable for all individuals. Before making any trading decisions, please consult with a qualified financial professional to understand the risks involved.
By using this script, you acknowledge and agree that any trading decisions are made solely at your discretion and risk.
Do not use this indicator on Heikin-Ashi, Renko, Kagi, Point-and-Figure, or Range charts, as these chart types can produce unrealistic results for signal markers and alerts.
Best regards and happy trading
Chervolino
MTF Multi EMA - IntradayMTF Multi EMA – Intraday
Purpose:
To quickly analyze trend direction and alignment across multiple timeframes (1m, 3m, 5m, 15m, 30m, and 60m) using fast and slow EMAs for each timeframe — and combine them into a simple “stack score” for easy visual decision-making. The script is tuned for Intraday Trading indicator by default.
Concept
Each timeframe (TF) — like 1m, 3m, 5m, etc. — has two EMAs:
A fast EMA (shorter length)
A slow EMA (longer length)
When the fast EMA > slow EMA, that timeframe is bullish.
When the fast EMA < slow EMA, that timeframe is bearish.
By combining multiple timeframes together, the indicator helps you:
Identify when all trends align bullishly (strong buy bias)
Identify when all trends align bearishly (strong sell bias)
Stay out during mixed or sideways phases
Inputs Explained
Setting Description
1m / 3m / 5m / 15m / 30m / 60m EMA Lengths Controls the EMA period for each timeframe’s fast and slow EMAs.
Fast EMA Color Color for all fast EMAs plotted on chart.
Slow EMA Color Color for all slow EMAs plotted on chart.
Use Smooth Interpolation Ensures smoother plots when merging higher TF data into a smaller chart (recommended ON).
Show Toggle visibility of each timeframe’s EMAs.
Table Position Lets you move the mini dashboard to any chart corner.
Stack Score
The Stack Score measures how many timeframes are bullish vs bearish:
Stack Score Meaning
+6 All timeframes bullish → Strong Uptrend
+3 to +5 Majority bullish → Bullish Bias
0 Neutral / Mixed → Sideways Market
−3 to −5 Majority bearish → Bearish Bias
−6 All timeframes bearish → Strong Downtrend
Table Display
At the chosen chart corner, you’ll see:
TF Direction
1m 🟢 B (Bullish) / 🔴 S (Bearish)
3m 🟢 B (Bullish) / 🔴 S (Bearish)
5m 🟢 B (Bullish) / 🔴 S (Bearish)
15m 🟢 B (Bullish) / 🔴 S (Bearish)
30m 🟢 B (Bullish) / 🔴 S (Bearish)
60m 🟢 B (Bullish) / 🔴 S (Bearish)
Score Final alignment score (color-coded)
Color meanings:
🟢 Green cell = bullish for that TF
🔴 Red cell = bearish for that TF
The Score cell background color changes with strength:
Bright green → strong bull
Yellow → neutral
Red / Maroon → strong bear
How to Use for Trading (Intraday NIFTY 5m)
Recommended Chart: 5-minute timeframe on NIFTY Futures or major index stocks.
🔹 1. Identify Trend Alignment
When Score ≥ +3 → Market bias is bullish.
→ Look for long entries (buy breakouts or EMA retests).
When Score ≤ −3 → Market bias is bearish.
→ Look for short entries (sell breakdowns or retests).
When Score is between −2 and +2 → Trend is mixed.
→ Best to wait — avoid trading in choppy conditions.
🔹 2. Combine with Price Action
Use it with:
Trendline breaks or retests
Candle confirmation (e.g. bullish engulfing or rejection)
Volume surge
Example:
On NIFTY 5m — if score = +5, price breaks above a descending trendline, and 1m–15m EMAs are all rising → strong long signal.
🔹 3. Avoid Conflicts
If lower timeframes (1m/3m/5m) are bullish but higher ones (30m/60m) are bearish,
→ Trend is short-term bullish but larger bias is down — scalps only, not swings.
Optional Alerts
If you add alert conditions (as suggested earlier):
“Strong Bullish Alignment” triggers when score ≥ +5
“Strong Bearish Alignment” triggers when score ≤ −5
This gives you early alerts when full trend alignment occurs — ideal for breakout setups.
Some more Tips
Use 5m or 15m chart as your main view.
Use Stack Score as a trend filter — trade with it, not against it.
Combine with Breakout + Retest strategy or Trendline color-coded system you’re building.
In sideways days (score near 0), reduce risk or skip trades.
Market Energy & Direction DashboardMarket Energy & Direction Dashboard - Daytrading
Overview
A comprehensive real-time market internals dashboard that combines NYSE TICK, NYSE Advance-Decline (ADD) momentum, VIX direction, and relative volume into a single visual traffic light system with intelligent signal synthesis. Designed for active daytraders who need instant confirmation of market direction and energy based on momentum alignment across all major internals.
What It Does
This indicator synthesizes multiple market internals using directional momentum analysis rather than static thresholds to provide clear, actionable signals:
• Traffic Light System: Single glance confirmation of market state
o Bright Green: Maximum bullish - all internals aligned (TICK + ADD rising + VIX falling + volume)
o Bright Red: Maximum bearish - all internals aligned (TICK + ADD falling + VIX rising + volume)
o Yellow: Exhaustion warning - TICK at extremes, potential reversal imminent
o Moderate Colors: Partial alignment - some confirmation but not complete
o Gray: Choppy, neutral, or conflicting signals
• Real-Time Dashboard displays:
o Current TICK value with exhaustion warnings
o Current ADD with directional momentum indicator (↑ rising = breadth improving, ↓ falling = breadth deteriorating, ± compression)
o VIX level with directional indicator (↓ declining = bullish, ↑ rising = bearish, ± compression = neutral)
o Relative volume (current vs 20-period average)
o Composite status message synthesizing all data into clear directional summary
Key Features
✓ Momentum-based analysis - all indicators show direction/change, not just levels ✓ Intelligent signal hierarchy from "Maximum" to "Moderate" based on internal alignment ✓ ADD directional momentum - catches breadth shifts early, works in all market conditions ✓ VIX directional analysis - shows if fear is increasing, decreasing, or stagnant ✓ Color-coded traffic light for instant decision making ✓ Detects TICK/ADD divergences (conflicting signals = caution) ✓ Exhaustion warnings at extreme TICK levels (±1000+) ✓ Composite status messages - "Maximum Bull", "Strong Bull", "Moderate Bull", etc. ✓ Customizable thresholds for all parameters ✓ Moveable dashboard (9 position options) ✓ Built-in alerts for all signal strengths, exhaustion, and divergences
How To Use
Setup:
1. Add indicator to your main trading chart (SPY, ES, NQ, etc.)
2. Default settings work well for most traders, but you can customize:
o TICK Extreme Level (default 1000)
o ADD Compression Threshold (default 100 - detects when breadth is stagnant)
o VIX Elevated Level (default 20)
o VIX Compression Threshold (default 2% - detects low volatility)
o Volume Threshold (default 1.5x average)
3. Position dashboard wherever convenient on your chart
Reading The Signals:
Signal Hierarchy (Strongest to Weakest):
MAXIMUM SIGNALS ⭐ (Brightest colors - All 4 internals aligned)
• "✓ MAXIMUM BULL": TICK bullish + ADD rising (↑) + VIX falling (↓) + Volume elevated
o This is the holy grail setup - all momentum aligned, highest conviction longs
• "✓ MAXIMUM BEAR": TICK bearish + ADD falling (↓) + VIX rising (↑) + Volume elevated
o Perfect storm bearish - all momentum aligned, highest conviction shorts
STRONG SIGNALS (Bright colors - Core internals aligned)
• "✓ STRONG BULL": TICK bullish + ADD rising (↑)
o Strong confirmation even without VIX/volume - breadth supporting the move
• "✓ STRONG BEAR": TICK bearish + ADD falling (↓)
o Strong confirmation - both momentum and breadth deteriorating
MODERATE SIGNALS (Faded colors - Partial confirmation)
• "MODERATE BULL": TICK bullish but ADD not confirming direction
o Proceed with caution - momentum present but breadth questionable
• "MODERATE BEAR": TICK bearish but ADD not confirming direction
o Proceed with caution - selling but breadth not fully participating
WARNING SIGNALS
• "⚠ EXHAUSTION" (Yellow): TICK at ±1000+ extremes
o Potential reversal zone - prepare to fade or take profits
o Often marks blow-off tops or capitulation bottoms
NEUTRAL/AVOID
• "CHOPPY/NEUTRAL" (Gray): Conflicting signals or low conviction
o Stay out or reduce size significantly
Individual Indicator Interpretation:
TICK:
• Green: Bullish momentum (>+300)
• Red: Bearish momentum (<-300)
• Yellow: Exhaustion (±1000+)
• Gray: Neutral
ADD (Advance-Decline):
• Green (↑): Breadth improving - more stocks participating in the move
• Red (↓): Breadth deteriorating - fewer stocks participating
• Gray (±): Breadth stagnant - no clear participation trend
VIX:
• Green (↓): Fear declining - healthy environment for rallies
• Red (↑): Fear rising - risk-off mode, supports downward moves
• Gray (±): Volatility compression - often precedes explosive moves
Volume:
• Green: High conviction (>1.5x average)
• Gray: Low conviction
Trading Strategy:
1. Wait for "MAXIMUM" or "STRONG" signals for highest probability entries
o Maximum signals = go full size with confidence
o Strong signals = good conviction, normal position sizing
2. Confirm directional alignment:
o For longs: Want ADD ↑ (rising) and VIX ↓ (falling)
o For shorts: Want ADD ↓ (falling) and VIX ↑ (rising)
3. Use exhaustion warnings (yellow) to:
o Take profits on existing positions
o Prepare counter-trend entries
o Tighten stops
4. Avoid "MODERATE" signals unless you have strong conviction from other analysis
o These work best as confirmation for existing setups
o Not strong enough to initiate new positions alone
5. Never trade "CHOPPY/NEUTRAL" signals
o Gray means stay out - preserve capital
o Wait for clear alignment
6. Watch for divergences:
o Price making new highs but ADD ↓ (falling) = distribution warning
o Price making new lows but ADD ↑ (rising) = potential bottom
o Divergence alert will notify you
Best Practices:
• Use on 1-5 minute charts for daytrading
• Combine with your price action or technical setup (support/resistance, trendlines, patterns)
• The dashboard confirms when to take your setup, not what setup to take
• Most effective during regular market hours (9:30 AM - 4:00 PM ET) when volume is present
• The strongest edge comes from "MAXIMUM" signals - wait for these for best risk/reward
• Pay special attention to ADD direction - it's the most predictive breadth indicator
• VIX compression (gray ±) often signals upcoming volatility expansion - prepare for bigger moves
Customization Option
All thresholds are adjustable in settings:
• TICK Extreme: Higher = fewer exhaustion warnings (try 1200-1500 for less sensitivity)
• ADD Compression Threshold: Change detection sensitivity
o Default 100 = balanced
o Lower (50) = more sensitive to small breadth changes
o Higher (200-300) = only shows major breadth shifts
• VIX Elevated: Adjust for current volatility regime (15-25 typical range)
• VIX Compression Threshold:
o Default 2% = balanced
o Lower (0.5-1%) = catches subtle VIX changes
o Higher (3-5%) = only shows significant VIX moves
• Volume Threshold: Lower for quieter stocks/times, higher for more confirmation
Alerts Available
• Maximum Bullish: All 4 internals aligned bullish (TICK + ADD↑ + VIX↓ + Volume)
• Maximum Bearish: All 4 internals aligned bearish (TICK + ADD↓ + VIX↑ + Volume)
• Strong Bullish: TICK bullish + ADD rising
• Strong Bearish: TICK bearish + ADD falling
• Exhaustion Warning: TICK at extreme levels
• Divergence Warning: TICK and ADD directions conflicting
Understanding the Signal Synthesis
The indicator uses intelligent logic to combine all internals:
"MAXIMUM" Signals require:
• TICK direction (bullish/bearish)
• ADD momentum (rising/falling) in same direction
• VIX direction (falling for bulls, rising for bears)
• Volume elevated (>1.5x average)
"STRONG" Signals require:
• TICK direction (bullish/bearish)
• ADD momentum (rising/falling) in same direction
• (VIX and volume are bonuses but not required)
"MODERATE" Signals:
• TICK showing direction
• But ADD not confirming or contradicting
• Weakest actionable signal
This hierarchy ensures you know exactly how much conviction the market has behind any move.
Technical Details
• Pulls real-time data from NYSE TICK (USI:TICK), NYSE ADD (USI:ADD), and CBOE VIX
• ADD direction calculated using bar-to-bar change with compression detection
• VIX direction calculated using bar-to-bar percentage change
• Volume calculation uses 20-period simple moving average
• Dashboard updates every bar
• No repainting - all calculations based on closed bar data
Who This Is For
• Active daytraders of stocks, futures (ES/NQ), and options
• Scalpers needing quick directional confirmation with multiple internal alignment
• Swing traders looking to time intraday entries with maximum confluence
• Volatility traders who monitor VIX behavior
• Market makers and professionals who trade based on breadth and internals
• Anyone who monitors market internals but wants intelligent synthesis vs raw data
Tips For Success
Trading Philosophy:
• Quality over quantity - wait for "MAXIMUM" signals for best results
• One "MAXIMUM" signal trade is worth five "MODERATE" signal trades
• Gray/neutral is not a sign of missing opportunity - it's protecting your capital
Signal Confidence Levels:
1. MAXIMUM (95%+ confidence) - Trade these aggressively with full size
2. STRONG (80-85% confidence) - Trade these with normal position sizing
3. MODERATE (60-70% confidence) - Only if confirmed by strong technical setup
4. CHOPPY/NEUTRAL - Do not trade, wait for clarity
Advanced Techniques:
• Breadth divergences: Watch for price making new highs while ADD shows ↓ (falling) = major warning
• VIX/Price divergences: Rallies with rising VIX (↑) are usually false moves
• Volume confirmation: "MAXIMUM" signals with 2x+ volume are the absolute best
• Compression zones: When both ADD and VIX show compression (±), expect explosive breakout soon
• Sequential signals: Back-to-back "MAXIMUM" signals in same direction = strong trending day
Common Patterns:
• Opening surge with "MAXIMUM BULL" that shifts to "EXHAUSTION" (yellow) = fade the high
• Selloff with "MAXIMUM BEAR" followed by ADD ↑ (rising) divergence = potential reversal
• Choppy morning followed by "MAXIMUM" signal afternoon = best trending opportunity
Example Scenarios
Perfect Bull Entry:
• Bright green signal box
• TICK: +650
• ADD: +1200 (↑)
• VIX: 18.30 (↓)
• Volume: 2.3x
• Status: "✓ MAXIMUM BULL" → ALL SYSTEMS GO - Take aggressive long positions
Strong Bull (Good Confidence):
• Green signal box (slightly less bright)
• TICK: +500
• ADD: +800 (↑)
• VIX: 19.50 (±)
• Volume: 1.2x
• Status: "✓ STRONG BULL" → Good long setup - breadth confirming even without VIX/volume
Caution Bull (Moderate):
• Faded green signal box
• TICK: +400
• ADD: +900 (↓)
• VIX: 20.10 (↑)
• Volume: 0.9x
• Status: "MODERATE BULL" → CAUTION - TICK bullish but breadth deteriorating and VIX rising = weak rally
Exhaustion Warning:
• Yellow signal box
• TICK: +1350 ⚠
• ADD: +2100 (↑)
• VIX: 17.20 (↓)
• Volume: 1.8x
• Status: "⚠ EXHAUSTION" → Take profits or prepare to fade - TICK overextended despite good internals
Divergence Setup (Potential Reversal):
• Faded green signal
• TICK: +300
• ADD: +1800 (↓)
• VIX: 21.50 (↑)
• Volume: 1.6x
• Status: "MODERATE BULL" → WARNING - Price rallying but breadth collapsing and fear rising = distribution
Perfect Bear Entry:
• Bright red signal box
• TICK: -780
• ADD: -1600 (↓)
• VIX: 24.80 (↑)
• Volume: 2.5x
• Status: "✓ MAXIMUM BEAR" → Perfect short setup - all momentum bearish with conviction
Compression (Wait Mode):
• Gray signal box
• TICK: +50
• ADD: -200 (±)
• VIX: 16.40 (±)
• Volume: 0.7x
• Status: "CHOPPY/NEUTRAL" → STAY OUT - Volatility compression, no conviction, await breakout
Performance Optimization
Best Market Conditions:
• Works excellent in trending markets (up or down)
• Particularly powerful during high-volume sessions (first/last hours)
• "MAXIMUM" signals most reliable during 9:45-11:00 AM and 2:00-3:30 PM ET
Less Effective During:
• Lunch period (11:30 AM - 1:30 PM) - lower volume reduces signal quality
• Low-volatility environments - compression signals dominate
• Major news events in first 5 minutes - wait for internals to stabilize
Recommended Use Cases:
• Scalping: Trade only "MAXIMUM" signals for quick 5-15 minute moves
• Daytrading: Use "MAXIMUM" and "STRONG" signals for position entries
• Swing entries: Use "MAXIMUM" signals for optimal intraday entry timing
• Exit timing: Use "EXHAUSTION" (yellow) warnings to take profits
________________________________________
Pro Tip: Create a dedicated workspace with this indicator on SPY/ES/NQ charts. Set alerts for "MAXIMUM BULL", "MAXIMUM BEAR", and "EXHAUSTION" signals. Most professional traders only trade the "MAXIMUM" setups and ignore everything else - this alone can dramatically improve win rates.
MACD HTF Hardcoded (A/B Presets) + Regimes [CHE] MACD HTF Hardcoded (A/B Presets) + Regimes — Higher-timeframe MACD emulation with acceptance-based regime filter and on-chart diagnostics
Summary
This indicator emulates a higher-timeframe MACD directly on the current chart using two hardcoded preset families and a time-bucket mapping, avoiding cross-timeframe requests. It classifies four MACD regimes and applies an acceptance filter that requires several consecutive bars before a state is considered valid. A small dead-band around zero reduces noise near the axis. An on-chart table reports the active preset, the inferred time bucket, the resolved lengths, and the current regime.
Pine version: v6
Overlay: false
Primary outputs: MACD line, Signal line, Histogram columns, zero line, regime-change alert, info table
Motivation: Why this design?
Cross-timeframe indicators often rely on external timeframe requests, which can introduce repaint paths and added latency. This design provides a deterministic alternative: it maps the current chart’s timeframe to coarse higher-timeframe buckets and uses fixed EMA lengths that approximate those views. The dead-band suppresses flip-flops around zero, and the acceptance counter reduces whipsaw by requiring sustained agreement across bars before acknowledging a regime.
What’s different vs. standard approaches?
Baseline: Classical MACD with user-selected lengths on the same timeframe, or higher-timeframe MACD via cross-timeframe requests.
Architecture differences:
Hardcoded A and B length families with a bucket map derived from the chart timeframe.
No `request.security`; all calculations occur on the current series.
Regime classification from MACD and Histogram sign, gated by an acceptance count and a small zero dead-band.
Diagnostics table for transparency.
Practical effect: The MACD behaves like a slower, higher-timeframe variant without external requests. Regimes switch less often due to the dead-band and acceptance logic, which can improve stability in choppy sessions.
How it works (technical)
The script derives a coarse bucket from the chart timeframe using `timeframe.in_seconds` and maps it to preset-specific EMA lengths. EMAs of the source build MACD and Signal; their difference is the Histogram. Signs of MACD and Histogram define four regimes: strong bull, weak bull, strong bear, and weak bear. A small, user-defined band around zero treats values near the axis as neutral. An acceptance counter checks whether the same regime persisted for a given number of consecutive bars before it is emitted as the filtered regime. A single alert condition fires when the filtered regime changes. The histogram columns change shade based on position relative to zero and whether they are rising or falling. A persistent table object shows preset, bucket tag, resolved lengths, and the filtered regime. No cross-timeframe requests are used, so repaint risk is limited to normal live-bar movement; values stabilize on close.
Parameter Guide
Source — Input series for MACD — Default: Close — Using a smoother source increases stability but adds lag.
Preset — A or B length family — Default: “3,10,16” — Switch to “12,26,9” for the classic family mapped to buckets.
Table Position — Anchor for the info table — Default: Top right — Choose a corner that avoids covering price action.
Table Size — Table text size — Default: Normal — Use small on dense charts, large for presentations.
Dark Mode — Table theme — Default: Enabled — Match your chart background for readability.
Show Table — Toggle diagnostics table — Default: Enabled — Disable for a cleaner pane.
Zero dead-band (epsilon) — Noise gate around zero — Default: Zero — Increase slightly when you see frequent flips near zero.
Acceptance bars (n) — Bars required to confirm a regime — Default: Three — Raise to reduce whipsaw; lower to react faster.
Reading & Interpretation
Histogram columns: Above zero indicates bullish pressure; below zero indicates bearish pressure. Darker shade implies the histogram increased compared with the prior bar; lighter shade implies it decreased.
MACD vs. Signal lines: The spread corresponds to histogram height.
Regimes:
Strong bull: MACD above zero and Histogram above zero.
Weak bull: MACD above zero and Histogram below zero.
Strong bear: MACD below zero and Histogram below zero.
Weak bear: MACD below zero and Histogram above zero.
Table: Inspect active preset, bucket tag, resolved lengths, and the filtered regime number with its description.
Practical Workflows & Combinations
Trend following: Use strong bull to favor long exposure and strong bear to favor short exposure. Use weak states as pullback or transition context. Combine with structure tools such as swing highs and lows or a baseline moving average for confirmation.
Exits and risk: In strong trends, consider exiting partial size on a regime downgrade to a weak state. In choppy sessions, increase the acceptance bars to reduce churn.
Multi-asset / Multi-timeframe: Works on time-based charts across liquid futures, indices, currencies, and large-cap equities. Bucket mapping helps retain a consistent feel when moving from lower to higher timeframes.
Behavior, Constraints & Performance
Repaint/confirmation: No cross-timeframe requests; values can evolve intrabar and settle on close. Alerts follow your TradingView alert timing settings.
Resources: `max_bars_back` is set to five thousand. Very large resolved lengths require sufficient history to seed EMAs; expect a warm-up period on first load or after switching symbols.
Known limits: Dead-band and acceptance can delay recognition at sharp turns. Extremely thin markets or large gaps may still cause brief regime reversals.
Sensible Defaults & Quick Tuning
Start with preset “3,10,16”, dead-band near zero, and acceptance of three bars.
Too many flips near zero: increase the dead-band slightly or raise the acceptance bars.
Too sluggish in clean trends: reduce the acceptance bars by one.
Too sensitive on fast lower timeframes: switch to the “12,26,9” preset family or raise the acceptance bars.
Want less clutter: hide the table and keep the alert.
What this indicator is—and isn’t
This is a visualization and regime layer for MACD using higher-timeframe emulation and stability gates. It is not a complete trading system and does not generate position sizing or risk management. Use it with market structure, execution rules, and protective stops.
Disclaimer
The content provided, including all code and materials, is strictly for educational and informational purposes only. It is not intended as, and should not be interpreted as, financial advice, a recommendation to buy or sell any financial instrument, or an offer of any financial product or service. All strategies, tools, and examples discussed are provided for illustrative purposes to demonstrate coding techniques and the functionality of Pine Script within a trading context.
Any results from strategies or tools provided are hypothetical, and past performance is not indicative of future results. Trading and investing involve high risk, including the potential loss of principal, and may not be suitable for all individuals. Before making any trading decisions, please consult with a qualified financial professional to understand the risks involved.
By using this script, you acknowledge and agree that any trading decisions are made solely at your discretion and risk.
Do not use this indicator on Heikin-Ashi, Renko, Kagi, Point-and-Figure, or Range charts, as these chart types can produce unrealistic results for signal markers and alerts.
Best regards and happy trading
Chervolino
Cnagda Pure Price ActionCnagda Pure Price Action (CPPA) indicator is a pure price action-based system designed to provide traders with real-time, dynamic analysis of the market. It automatically identifies key candles, support and resistance zones, and potential buy/sell signals by combining price, volume, and multiple popular trend indicators.
How Price Action & Volume Analysis Works
Silver Zone – Logic, Reason, and Trade Planning
Logic & Visualization:
The Silver Zone is created when the closing price is the lowest in the chosen window and volume is the highest in that window.
Visually, a large silver-colored box/rectangle appears on the chart.
Thick horizontal lines (top and bottom) are drawn at the high and low of that candle/bar, extending to the right.
Reasoning:
This combination typically occurs at strong “accumulation” or support areas:
Sellers push the price down to the lowest point, but aggressive buyers step in with high volume, absorbing supply.
Indicates potential exhaustion of selling and likely shift in market control to buyers.
How to Plan Trades Using Silver Zone:
Watch if price returns to the Silver Zone in the future: It often acts as powerful support.
Bullish entries (buys) can be planned when price tests or slightly pierces this zone, especially if new buy signals occur (like yellow/green candle labels).
Place your stop-loss below the bottom line of the Silver Zone.
Target: Look for the nearest resistance or opposing zone, or use indicator’s bullish label as confirmation.
Extra Tip:
Multiple touches of the Silver Zone reinforce its importance, but if price closes deeply below it with high volume, that’s a caution signal—support may be breaking.
Black Zone – Logic, Reason, and Trade Planning (as CPPA):
Logic & Visualization:
The Black Zone is created when the closing price is the highest in the chosen window and volume is the lowest in that window.
Visually, a large black-colored box/rectangle appears on the chart, along with thick horizontal lines at the top (high) and bottom (low) of the candle, extending to the right.
Reasoning:
This combination signals a strong “distribution” or resistance area:
Buyers push the price up to a local high, but low volume means there is not much follow-through or conviction in the move.
Often marks exhaustion where uptrend may pause or reverse, as sellers can soon step in.
How to Plan Trades Using Black Zone:
If price revisits the Black Zone in the future, it often acts as major resistance.
Bearish entries (sells) are considered when price is near, testing, or slightly above the Black Zone—especially if new sell signals appear (like blue/red candle labels).
Place your stop-loss just above the top line of the Black Zone.
Target: Nearest support zone (such as a Silver Zone) or next indicator’s bearish label.
Extra Tip:
Multiple touches of the Black Zone make it stronger, but if price closes far above with rising volume, be cautious—resistance might be breaking.
Support Line – Logic, Reason, and Trade Planning (as Cppa):
Logic & Visualization:
The Support Line is a dynamically drawn dashed line (usually blue) that marks key price levels where the market has previously shown significant buying interest.
The line is generated whenever a candle forms a high price with high volume (orange logic).
The script checks for historical pivot lows, past support zones, and even higher timeframe (HTF) supports, and then extends a blue dashed line from that price level to the right, labeling it (sometimes as “Prev Support Orange, HTF”).
Reasoning:
This line helps you visually identify where demand has been strong enough to hold price from falling further—essentially a floor in the market used by professional traders.
If price approaches or re-tests this line, there’s a good chance buyers will defend it again.
How to Plan Trades Using Support Line:
Watch for price to approach the Support Line during down moves. If you see a bullish candlestick pattern, buy labels (yellow/green), or other indicators aligning, this can be a high-probability entry zone.
Great for planning stop-loss for long trades: place stops just below this line.
Target: Next resistance zone, Black Zone, or the top of the last swing.
Extra Tip:
Multiple confirmations (support line + Silver Zone + bullish label) provide powerful entry signals.
If price closes strongly below the Support Line with volume, be cautious—support may be breaking, and a trend reversal or deeper correction could follow.
Resistance Line – Logic, Reason, and Trade Planning (from CPPA):
Logic & Visualization:
The Resistance Line is a dynamically drawn dashed line (usually purple or red) that identifies price levels where the market has previously faced significant selling pressure.
This line is created when a candle reaches a high price combined with high volume (orange logic), or from a historical pivot high/resistance,
The script also tracks higher timeframe (HTF) resistance lines, labeled as “Prev Resistance Orange, HTF,” and extends these dashed lines to the right across the chart.
Reasoning:
Resistance Lines are visual markers of “supply zones,” where buyers previously failed, and sellers took control.
If the price returns to this line later, sellers may get active again to defend this level, halting the uptrend.
How to Plan Trades Using Resistance Line:
Watch for price to approach the Resistance Line during up moves. If you see bearish candlestick patterns, sell labels (blue/red), or bearish indicator confirmation, this becomes a strong shorting opportunity.
Perfect for placing stop-loss in short trades—put your stop just above the Resistance Line.
Target: Next support zone (Silver Zone) or bottom of the last swing.
If the price breaks above with high volume, avoid shorting—resistance may be failing.
Extra Tip:
Multiple resistances (Resistance Line + Black Zone + bearish label) make short signals stronger.
Choppy movement around this line often signals indecision; wait for a clear rejection before entering trades.
Bullish / Bearish Label – Logic, Reason, and Trade Planning:
Logic & Visualization:
The indicator constantly calculates a "Bull Score" and a "Bear Score" based on several factors:
Trend direction from price slope
Confirmation by popular indicators (RSI, ADX, SAR, CMF, OBV, CCI, Bollinger Bands, TWAP)
Adaptive scoring (higher score for each bullish/bearish condition met)
If Bull Score > Bear Score, the chart displays a green "BULLISH" label (usually below the bar).
If Bear Score > Bull Score, the chart displays a red "BEARISH" label (usually above the bar).
If neither dominates, a "NEUTRAL" label appears.
Reasoning:
The labels summarize complex price action and indicator analysis into a simple, actionable sentiment cue:
Bullish: Majority of conditions indicate buying strength; trend is up.
Bearish: Majority signals show selling pressure; trend is down.
How to Use in Trade Planning:
Use the Bullish label as confirmation to enter or hold long (buy) positions, especially if near support/Silver Zone.
Use the Bearish label to enter/hold short (sell) positions, especially if near resistance/Black Zone.
For best results, combine with candle color, volume analysis, or other labels (yellow/green for buys, blue/red for sells).
Avoid trading against these labels unless you have strong confluence from zones/support levels.
Yellow Label (Buy Signal) – Logic, Reason & Trade Planning:
Logic & Visualization:
The yellow label appears below a candle (label.style_label_up, yloc.belowbar) and marks a potential buy signal.
Script conditions:
The candle must be a “yellow candle” (which means it’s at the local lowest close, not a high, with normal volume).
Volume is decreasing for 2 consecutive candles (current volume < previous volume, previous volume < second previous).
When these conditions are met, a yellow label is plotted below the candle.
Reasoning:
This scenario often marks the end of selling pressure and start of possible accumulation—buyers may be stepping in as sellers exhaust.
Decreasing volume during a local price low means selling is slowing, possibly hinting at a reversal.
How to Trade Using Yellow Label:
Entry: Consider buying at/just above the yellow-labeled candle’s close.
Stop-loss: A bit below the candle’s low (or Silver Zone line, if present).
Target: Next resistance level, Black Zone, or chart’s bullish label.
Extra Tip:
If the yellow label is found at/near a Silver Zone or Support Line, and trend is “Bullish,” the setup gets even stronger.
Avoid trading if overall indicator shows “Bearish.”
Green Label (Buy with Increasing Volume) – Logic, Reason & Trade Planning:
Logic & Visualization:
The green label is plotted below a candle (label.style_label_up, yloc.belowbar) and marks a strong buy signal.
Script conditions:
The candle must be a “yellow candle” (at the local lowest close, normal volume).
Volume is increasing for 2 consecutive candles (current volume > previous volume, previous volume > second previous).
When these conditions are met, a green label is plotted below the candle.
Reasoning:
This scenario signals that buyers are stepping in aggressively at a local price low—the end of a downtrend with strong, rising activity.
Increasing volume at a price low is a classic sign of accumulation, where institutions or large players may be buying.
How to Trade Using Green Label:
Entry: Consider buying at/just above the green-labeled candle’s close for a momentum-based reversal.
Stop-loss: Slightly below the candle’s low, or the Silver Zone/support line if present.
Target: Nearest resistance zone/Black Zone, indicator’s bullish label, or next swing high.
Extra Tip:
If the green label is near other supports (Silver Zone, Support Line), the setup is extra strong.
Use confirmation from Bullish labels or trend signals for best results.
Green label setups are suitable for quick, high momentum trades due to increasing volume
Blue Label (Sell Signal on Decreasing Volume) – Logic, Reason & Trade Planning:
Logic & Visualization:
The blue label is plotted above a candle (label.style_label_down, yloc.abovebar) as a potential sell signal.
Script conditions:
The candle is a “blue candle” (local highest close, but not also lowest, and volume is neither highest nor lowest).
Volume is decreasing over 2 consecutive candles (current volume < previous, previous < two ago).
When these match, a blue label appears above the candle.
Reasoning:
This typically signals buyer exhaustion at a local high: price has gone up, but volume is dropping, suggesting big players may not be buying any more at these levels.
The trend is losing strength, and a reversal or pullback is likely.
How to Trade Using Blue Label:
Entry: Look to sell at/just below the candle with the blue label.
Stop-loss: Just above the candle’s high (or above the Black Zone/resistance if present).
Target: Nearest support, Silver Zone, or a swing low.
Extra Tip:
Blue label signals are stronger if they appear near Black Zones or Resistance Lines, or when the general market label is "Bearish."
As with buy setups, always check for confirmation from trend or volume before trading aggressively.
Blue Label (Sell Signal on Decreasing Volume) – Logic, Reason & Trade Planning:
Logic & Visualization:
The blue label is plotted above a candle (label.style_label_down, yloc.abovebar) as a potential sell signal.
Script conditions:
The candle is a “blue candle” (local highest close, but not also lowest, and volume is neither highest nor lowest).
Volume is decreasing over 2 consecutive candles (current volume < previous, previous < two ago).
When these match, a blue label appears above the candle.
Reasoning:
This typically signals buyer exhaustion at a local high: price has gone up, but volume is dropping, suggesting big players may not be buying any more at these levels.
The trend is losing strength, and a reversal or pullback is likely.
How to Trade Using Blue Label:
Entry: Look to sell at/just below the candle with the blue label.
Stop-loss: Just above the candle’s high (or above the Black Zone/resistance if present).
Target: Nearest support, Silver Zone, or a swing low.
Extra Tip:
Blue label signals are stronger if they appear near Black Zones or Resistance Lines, or when the general market label is "Bearish."
As with buy setups, always check for confirmation from trend or volume before trading aggressively.
Here’s a summary of all key chart labels, zones, and trading logic of your Price Action script:
Silver Zone: Powerful support zone. Created at lowest close + highest volume. Best for buy entries near its lines.
Black Zone: Strong resistance zone. Created at highest close + lowest volume. Ideal for short trades near its levels.
Support Line: Blue dashed line at historical demand; buyers defend here. Look for bullish setups when price approaches.
Resistance Line: Purple/red dashed line at supply; sellers defend here. Great for bearish setups when price nears.
Bullish/Bearish Labels: Summarize trend direction using price action + multiple indicator confirmations. Plan buys, holds on bullish; sells, shorts on bearish.
Yellow Label: Buy signal on decreasing volume and local price low. Entry above candle, stop below, target next resistance.
Green Label: Strong buy on increasing volume at a price low. Entry for momentum trade, stop below, target next zone.
Blue Label: Sell signal on dropping volume and local price high. Entry below candle, stop above, target next support.
Best Practices:
Always combine zone/label signals for higher probability trades.
Use stop-loss near zones/lines for risk management.
Prefer trading in the trend direction (bullish/bearish label agrees with your entry).
if Any Question, Suggestion Feel free to ask
Disclaimer:
All information provided by this indicator is for educational and analysis purposes only, and should not be considered financial advice.
Trend Fib Zone Bounce (TFZB) [KedArc Quant]Description:
Trend Fib Zone Bounce (TFZB) trades with the latest confirmed Supply/Demand zone using a single, configurable Fib pullback (0.3/0.5/0.6). Trade only in the direction of the most recent zone and use a single, configurable fib level for pullback entries.
• Detects market structure via confirmed swing highs/lows using a rolling window.
• Draws Supply/Demand zones (bearish/bullish rectangles) from the latest MSS (CHOCH or BOS) event.
• Computes intra zone Fib guide rails and keeps them extended in real time.
• Triggers BUY only inside bullish zones and SELL only inside bearish zones when price touches the selected fib and closes back beyond it (bounce confirmation).
• Optional labels print BULL/BEAR + fib next to the triangle markers.
What it does
Finds structure using confirmed swing highs/lows (you choose the confirmation length).
Builds the latest zone (bullish = demand, bearish = supply) after a CHOCH/BOS event.
Draws intra-zone “guide rails” (Fib lines) and extends them live.
Signals only with the trend of that zone:
BUY inside a bullish zone when price tags the selected Fib and closes back above it.
SELL inside a bearish zone when price tags the selected Fib and closes back below it.
Optional labels print BULL/BEAR + Fib next to triangles for quick context
Why this is different
Most “zone + fib + signal” tools bolt together several indicators, or fire counter-trend signals because they don’t fully respect structure. TFZB is intentionally minimal:
Single bias source: the latest confirmed zone defines direction; nothing else overrides it.
Single entry rule: one Fib bounce (0.3/0.5/0.6 selectable) inside that zone—no counter-trend trades by design.
Clean visuals: you can show only the most recent zone, clamp overlap, and keep just the rails that matter.
Deterministic & transparent: every plot/label comes from the code you see—no external series or hidden smoothing
How it helps traders
Cuts decision noise: you always know the bias and the only entry that matters right now.
Forces discipline: if price isn’t inside the active zone, you don’t trade.
Adapts to volatility: pick 0.3 in strong trends, 0.5 as the default, 0.6 in chop.
Non-repainting zones: swings are confirmed after Structure Length bars, then used to build zones that extend forward (they don’t “teleport” later)
How it works (details)
*Structure confirmation
A swing high/low is only confirmed after Structure Length bars have elapsed; the dot is plotted back on the original bar using offset. Expect a confirmation delay of about Structure Length × timeframe.
*Zone creation
After a CHOCH/BOS (momentum shift / break of prior swing), TFZB draws the new Supply/Demand zone from the swing anchors and sets it active.
*Fib guide rails
Inside the active zone TFZB projects up to five Fib lines (defaults: 0.3 / 0.5 / 0.7) and extends them as time passes.
*Entry logic (with-trend only)
BUY: bar’s low ≤ fib and close > fib inside a bullish zone.
SELL: bar’s high ≥ fib and close < fib inside a bearish zone.
*Optionally restrict to one signal per zone to avoid over-trading.
(Optional) Aggressive confirm-bar entry
When do the swing dots print?
* The code confirms a swing only after `structureLen` bars have elapsed since that candidate high/low.
* On a 5-min chart with `structureLen = 10`, that’s about 50 minutes later.
* When the swing confirms, the script plots the dot back on the original bar (via `offset = -structureLen`). So you *see* the dot on the old bar, but it only appears on the chart once the confirming bar arrives.
> Practical takeaway: expect swing markers to appear roughly `structureLen × timeframe` later. Zones and signals are built from those confirmed swings.
Best timeframe for this Indicator
Use the timeframe that matches your holding period and the noise level of the instrument:
* Intraday :
* 5m or 15m are the sweet spots.
* Suggested `structureLen`:
* 5m: 10–14 (confirmation delay \~50–70 min)
* 15m: 8–10 (confirmation delay \~2–2.5 hours)
* Keep Entry Fib at 0.5 to start; try 0.3 in strong trends, 0.6 in chop.
* Tip: avoid the first 10–15 minutes after the open; let the initial volatility set the early structure.
* Swing/overnight:
* 1h or 4h.
* `structureLen`:
* 1h: 6–10 (6–10 hours confirmation)
* 4h: 5–8 (20–32 hours confirmation)
* 1m scalping: not recommended here—the confirmation lag relative to the noise makes zones less reliable.
Inputs (all groups)
Structure
• Show Swing Points (structureTog)
o Plots small dots on the bar where a swing point is confirmed (offset back by Structure Length).
• Structure Length (structureLen)
o Lookback used to confirm swing highs/lows and determine local structure. Higher = fewer, stronger swings; lower = more reactive.
Zones
• Show Last (zoneDispNum)
o Maximum number of zones kept on the chart when Display All Zones is off.
• Display All Zones (dispAll)
o If on, ignores Show Last and keeps all zones/levels.
• Zone Display (zoneFilter): Bullish Only / Bearish Only / Both
o Filters which zone types are drawn and eligible for signals.
• Clean Up Level Overlap (noOverlap)
o Prevents fib lines from overlapping when a new zone starts near the previous one (clamps line start/end times for readability).
Fib Levels
Each row controls whether a fib is drawn and how it looks:
• Toggle (f1Tog…f5Tog): Show/hide a given fib line.
• Level (f1Lvl…f5Lvl): Numeric ratio in . Defaults active: 0.3, 0.5, 0.7 (0 and 1 off by default).
• Line Style (f1Style…f5Style): Solid / Dashed / Dotted.
• Bull/Bear Colors (f#BullColor, f#BearColor): Per-fib color in bullish vs bearish zones.
Style
• Structure Color: Dot color for confirmed swing points.
• Bullish Zone Color / Bearish Zone Color: Rectangle fills (transparent by default).
Signals
• Entry Fib for Signals (entryFibSel): Choose 0.3, 0.5 (default), or 0.6 as the trigger line.
• Show Buy/Sell Signals (showSignals): Toggles triangle markers on/off.
• One Signal Per Zone (oneSignalPerZone): If on, suppresses additional entries within the same zone after the first trigger.
• Show Signal Text Labels (Bull/Bear + Fib) (showSignalLabels): Adds a small label next to each triangle showing zone bias and the fib used (e.g., BULL 0.5 or BEAR 0.3).
How TFZB decides signals
With trend only:
• BUY
1. Latest active zone is bullish.
2. Current bar’s close is inside the zone (between top and bottom).
3. The bar’s low ≤ selected fib and it closes > selected fib (bounce).
• SELL
1. Latest active zone is bearish.
2. Current bar’s close is inside the zone.
3. The bar’s high ≥ selected fib and it closes < selected fib.
Markers & labels
• BUY: triangle up below the bar; optional label “BULL 0.x” above it.
• SELL: triangle down above the bar; optional label “BEAR 0.x” below it.
Right-Panel Swing Log (Table)
What it is
A compact, auto-updating log of the most recent Swing High/Low events, printed in the top-right of the chart.
It helps you see when a pivot formed, when it was confirmed, and at what price—so you know the earliest bar a zone-based signal could have appeared.
Columns
Type – Swing High or Swing Low.
Date – Calendar date of the swing bar (follows the chart’s timezone).
Swing @ – Time of the original swing bar (where the dot is drawn).
Confirm @ – Time of the bar that confirmed that swing (≈ Structure Length × timeframe after the swing). This is also the earliest moment a new zone/entry can be considered.
Price – The swing price (high for SH, low for SL).
Why it’s useful
Clarity on repaint/confirmation: shows the natural delay between a swing forming and being usable—no guessing.
Planning & journaling: quick reference of today’s pivots and prices for notes/backtesting.
Scanning intraday: glance to see if you already have a confirmed zone (and therefore valid fib-bounce entries), or if you’re still waiting.
Context for signals: if a fib-bounce triangle appears before the time listed in Confirm @, it’s not a valid trade (you were too early).
Settings (Inputs → Logging)
Log swing times / Show table – turn the table on/off.
Rows to keep – how many recent entries to display.
Show labels on swing bar – optional tags on the chart (“Swing High 11:45”, “Confirm SH 14:15”) that match the table.
Recommended defaults
• Structure Length: 10–20 for intraday; 20–40 for swing.
• Entry Fib for Signals: 0.5 to start; try 0.3 in stronger trends and 0.6 in choppier markets.
• One Signal Per Zone: ON (prevents over trading).
• Zone Display: Both.
• Fib Lines: Keep 0.3/0.5/0.7 on; turn on 0 and 1 only if you need anchors.
Alerts
Two alert conditions are available:
• BUY signal – fires when a with trend bullish bounce at the selected fib occurs inside a bullish zone.
• SELL signal – fires when a with trend bearish bounce at the selected fib occurs inside a bearish zone.
Create alerts from the chart’s Alerts panel and select the desired condition. Use Once Per Bar Close to avoid intrabar flicker.
Notes & tips
• Swing dots are confirmed only after Structure Length bars, so they plot back in time; zones built from these confirmed swings do not repaint (though they extend as new bars form).
• If you don’t see a BUY where you expect one, check: (1) Is the active zone bullish? (2) Did the candle’s low actually pierce the selected fib and close above it? (3) Is One Signal Per Zone suppressing a second entry?
• You can hide visual clutter by reducing Show Last to 1–3 while keeping Display All Zones off.
Glossary
• CHOCH (Change of Character): A shift where price breaks beyond the last opposite swing while local momentum flips.
• BOS (Break of Structure): A cleaner break beyond the prior swing level in the current momentum direction.
• MSS: Either CHOCH or BOS – any event that spawns a new zone.
Extension ideas (optional)
• Add fib extensions (1.272 / 1.618) for target lines.
• Zone quality score using ATR normalization to filter weak impulses.
• HTF filter to only accept zones aligned with a higher timeframe trend.
⚠️ Disclaimer This script is provided for educational purposes only.
Past performance does not guarantee future results.
Trading involves risk, and users should exercise caution and use proper risk management when applying this strategy.
Market Zone Analyzer[BullByte]Understanding the Market Zone Analyzer
---
1. Purpose of the Indicator
The Market Zone Analyzer is a Pine Script™ (version 6) indicator designed to streamline market analysis on TradingView. Rather than scanning multiple separate tools, it unifies four core dimensions—trend strength, momentum, price action, and market activity—into a single, consolidated view. By doing so, it helps traders:
• Save time by avoiding manual cross-referencing of disparate signals.
• Reduce decision-making errors that can arise from juggling multiple indicators.
• Gain a clear, reliable read on whether the market is in a bullish, bearish, or sideways phase, so they can more confidently decide to enter, exit, or hold a position.
---
2. Why a Trader Should Use It
• Unified View: Combines all essential market dimensions into one easy-to-read score and dashboard, eliminating the need to piece together signals manually.
• Adaptability: Automatically adjusts its internal weighting for trend, momentum, and price action based on current volatility. Whether markets are choppy or calm, the indicator remains relevant.
• Ease of Interpretation: Outputs a simple “BULLISH,” “BEARISH,” or “SIDEWAYS” label, supplemented by an intuitive on-chart dashboard and an oscillator plot that visually highlights market direction.
• Reliability Features: Built-in smoothing of the net score and hysteresis logic (requiring consecutive confirmations before flips) minimize false signals during noisy or range-bound phases.
---
3. Why These Specific Indicators?
This script relies on a curated set of well-established technical tools, each chosen for its particular strength in measuring one of the four core dimensions:
1. Trend Strength:
• ADX/DMI (Average Directional Index / Directional Movement Index): Measures how strong a trend is, and whether the +DI line is above the –DI line (bullish) or vice versa (bearish).
• Moving Average Slope (Fast MA vs. Slow MA): Compares a shorter-period SMA to a longer-period SMA; if the fast MA sits above the slow MA, it confirms an uptrend, and vice versa for a downtrend.
• Ichimoku Cloud Differential (Senkou A vs. Senkou B): Provides a forward-looking view of trend direction; Senkou A above Senkou B signals bullishness, and the opposite signals bearishness.
2. Momentum:
• Relative Strength Index (RSI): Identifies overbought (above its dynamically calculated upper bound) or oversold (below its lower bound) conditions; changes in RSI often precede price reversals.
• Stochastic %K: Highlights shifts in short-term momentum by comparing closing price to the recent high/low range; values above its upper band signal bullish momentum, below its lower band signal bearish momentum.
• MACD Histogram: Measures the difference between the MACD line and its signal line; a positive histogram indicates upward momentum, a negative histogram indicates downward momentum.
3. Price Action:
• Highest High / Lowest Low (HH/LL) Range: Over a defined lookback period, this captures breakout or breakdown levels. A closing price near the recent highs (with a positive MA slope) yields a bullish score, and near the lows (with a negative MA slope) yields a bearish score.
• Heikin-Ashi Doji Detection: Uses Heikin-Ashi candles to identify indecision or continuation patterns. A small Heikin-Ashi body (doji) relative to recent volatility is scored as neutral; a larger body in the direction of the MA slope is scored bullish or bearish.
• Candle Range Measurement: Compares each candle’s high-low range against its own dynamic band (average range ± standard deviation). Large candles aligning with the prevailing trend score bullish or bearish accordingly; unusually small candles can indicate exhaustion or consolidation.
4. Market Activity:
• Bollinger Bands Width (BBW): Measures the distance between BB upper and lower bands; wide bands indicate high volatility, narrow bands indicate low volatility.
• Average True Range (ATR): Quantifies average price movement (volatility). A sudden spike in ATR suggests a volatile environment, while a contraction suggests calm.
• Keltner Channels Width (KCW): Similar to BBW but uses ATR around an EMA. Provides a second layer of volatility context, confirming or contrasting BBW readings.
• Volume (with Moving Average): Compares current volume to its moving average ± standard deviation. High volume validates strong moves; low volume signals potential lack of conviction.
By combining these tools, the indicator captures trend direction, momentum strength, price-action nuances, and overall market energy, yielding a more balanced and comprehensive assessment than any single tool alone.
---
4. What Makes This Indicator Stand Out
• Multi-Dimensional Analysis: Rather than relying on a lone oscillator or moving average crossover, it simultaneously evaluates trend, momentum, price action, and activity.
• Dynamic Weighting: The relative importance of trend, momentum, and price action adjusts automatically based on real-time volatility (Market Activity State). For example, in highly volatile conditions, trend and momentum signals carry more weight; in calm markets, price action signals are prioritized.
• Stability Mechanisms:
• Smoothing: The net score is passed through a short moving average, filtering out noise, especially on lower timeframes.
• Hysteresis: Both Market Activity State and the final bullish/bearish/sideways zone require two consecutive confirmations before flipping, reducing whipsaw.
• Visual Interpretation: A fully customizable on-chart dashboard displays each sub-indicator’s value, regime, score, and comment, all color-coded. The oscillator plot changes color to reflect the current market zone (green for bullish, red for bearish, gray for sideways) and shows horizontal threshold lines at +2, 0, and –2.
---
5. Recommended Timeframes
• Short-Term (5 min, 15 min): Day traders and scalpers can benefit from rapid signals, but should enable smoothing (and possibly disable hysteresis) to reduce false whipsaws.
• Medium-Term (1 h, 4 h): Swing traders find a balance between responsiveness and reliability. Less smoothing is required here, and the default parameters (e.g., ADX length = 14, RSI length = 14) perform well.
• Long-Term (Daily, Weekly): Position traders tracking major trends can disable smoothing for immediate raw readings, since higher-timeframe noise is minimal. Adjust lookback lengths (e.g., increase adxLength, rsiLength) if desired for slower signals.
Tip: If you keep smoothing off, stick to timeframes of 1 h or higher to avoid excessive signal “chatter.”
---
6. How Scoring Works
A. Individual Indicator Scores
Each sub-indicator is assigned one of three discrete scores:
• +1 if it indicates a bullish condition (e.g., RSI above its dynamically calculated upper bound).
• 0 if it is neutral (e.g., RSI between upper and lower bounds).
• –1 if it indicates a bearish condition (e.g., RSI below its dynamically calculated lower bound).
Examples of individual score assignments:
• ADX/DMI:
• +1 if ADX ≥ adxThreshold and +DI > –DI (strong bullish trend)
• –1 if ADX ≥ adxThreshold and –DI > +DI (strong bearish trend)
• 0 if ADX < adxThreshold (trend strength below threshold)
• RSI:
• +1 if RSI > RSI_upperBound
• –1 if RSI < RSI_lowerBound
• 0 otherwise
• ATR (as part of Market Activity):
• +1 if ATR > (ATR_MA + stdev(ATR))
• –1 if ATR < (ATR_MA – stdev(ATR))
• 0 otherwise
Each of the four main categories shares this same +1/0/–1 logic across their sub-components.
B. Category Scores
Once each sub-indicator reports +1, 0, or –1, these are summed within their categories as follows:
• Trend Score = (ADX score) + (MA slope score) + (Ichimoku differential score)
• Momentum Score = (RSI score) + (Stochastic %K score) + (MACD histogram score)
• Price Action Score = (Highest-High/Lowest-Low score) + (Heikin-Ashi doji score) + (Candle range score)
• Market Activity Raw Score = (BBW score) + (ATR score) + (KC width score) + (Volume score)
Each category’s summed value can range between –3 and +3 (for Trend, Momentum, and Price Action), and between –4 and +4 for Market Activity raw.
C. Market Activity State and Dynamic Weight Adjustments
Rather than contributing directly to the netScore like the other three categories, Market Activity determines how much weight to assign to Trend, Momentum, and Price Action:
1. Compute Market Activity Raw Score by summing BBW, ATR, KCW, and Volume individual scores (each +1/0/–1).
2. Bucket into High, Medium, or Low Activity:
• High if raw Score ≥ 2 (volatile market).
• Low if raw Score ≤ –2 (calm market).
• Medium otherwise.
3. Apply Hysteresis (if enabled): The state only flips after two consecutive bars register the same high/low/medium label.
4. Set Category Weights:
• High Activity: Trend = 50 %, Momentum = 35 %, Price Action = 15 %.
• Low Activity: Trend = 25 %, Momentum = 20 %, Price Action = 55 %.
• Medium Activity: Use the trader’s base weight inputs (e.g., Trend = 40 %, Momentum = 30 %, Price Action = 30 % by default).
D. Calculating the Net Score
5. Normalize Base Weights (so that the sum of Trend + Momentum + Price Action always equals 100 %).
6. Determine Current Weights based on the Market Activity State (High/Medium/Low).
7. Compute Each Category’s Contribution: Multiply (categoryScore) × (currentWeight).
8. Sum Contributions to get the raw netScore (a floating-point value that can exceed ±3 when scores are strong).
9. Smooth the netScore over two bars (if smoothing is enabled) to reduce noise.
10. Apply Hysteresis to the Final Zone:
• If the smoothed netScore ≥ +2, the bar is classified as “Bullish.”
• If the smoothed netScore ≤ –2, the bar is classified as “Bearish.”
• Otherwise, it is “Sideways.”
• To prevent rapid flips, the script requires two consecutive bars in the new zone before officially changing the displayed zone (if hysteresis is on).
E. Thresholds for Zone Classification
• BULLISH: netScore ≥ +2
• BEARISH: netScore ≤ –2
• SIDEWAYS: –2 < netScore < +2
---
7. Role of Volatility (Market Activity State) in Scoring
Volatility acts as a dynamic switch that shifts which category carries the most influence:
1. High Activity (Volatile):
• Detected when at least two sub-scores out of BBW, ATR, KCW, and Volume equal +1.
• The script sets Trend weight = 50 % and Momentum weight = 35 %. Price Action weight is minimized at 15 %.
• Rationale: In volatile markets, strong trending moves and momentum surges dominate, so those signals are more reliable than nuanced candle patterns.
2. Low Activity (Calm):
• Detected when at least two sub-scores out of BBW, ATR, KCW, and Volume equal –1.
• The script sets Price Action weight = 55 %, Trend = 25 %, and Momentum = 20 %.
• Rationale: In quiet, sideways markets, subtle price-action signals (breakouts, doji patterns, small-range candles) are often the best early indicators of a new move.
3. Medium Activity (Balanced):
• Raw Score between –1 and +1 from the four volatility metrics.
• Uses whatever base weights the trader has specified (e.g., Trend = 40 %, Momentum = 30 %, Price Action = 30 %).
Because volatility can fluctuate rapidly, the script employs hysteresis on Market Activity State: a new High or Low state must occur on two consecutive bars before weights actually shift. This avoids constant back-and-forth weight changes and provides more stability.
---
8. Scoring Example (Hypothetical Scenario)
• Symbol: Bitcoin on a 1-hour chart.
• Market Activity: Raw volatility sub-scores show BBW (+1), ATR (+1), KCW (0), Volume (+1) → Total raw Score = +3 → High Activity.
• Weights Selected: Trend = 50 %, Momentum = 35 %, Price Action = 15 %.
• Trend Signals:
• ADX strong and +DI > –DI → +1
• Fast MA above Slow MA → +1
• Ichimoku Senkou A > Senkou B → +1
→ Trend Score = +3
• Momentum Signals:
• RSI above upper bound → +1
• MACD histogram positive → +1
• Stochastic %K within neutral zone → 0
→ Momentum Score = +2
• Price Action Signals:
• Highest High/Lowest Low check yields 0 (close not near extremes)
• Heikin-Ashi doji reading is neutral → 0
• Candle range slightly above upper bound but trend is strong, so → +1
→ Price Action Score = +1
• Compute Net Score (before smoothing):
• Trend contribution = 3 × 0.50 = 1.50
• Momentum contribution = 2 × 0.35 = 0.70
• Price Action contribution = 1 × 0.15 = 0.15
• Raw netScore = 1.50 + 0.70 + 0.15 = 2.35
• Since 2.35 ≥ +2 and hysteresis is met, the final zone is “Bullish.”
Although the netScore lands at 2.35 (Bullish), smoothing might bring it slightly below 2.00 on the first bar (e.g., 1.90), in which case the script would wait for a second consecutive reading above +2 before officially classifying the zone as Bullish (if hysteresis is enabled).
---
9. Correlation Between Categories
The four categories—Trend Strength, Momentum, Price Action, and Market Activity—often reinforce or offset one another. The script takes advantage of these natural correlations:
• Bullish Alignment: If ADX is strong and pointed upward, fast MA is above slow MA, and Ichimoku is positive, that usually coincides with RSI climbing above its upper bound and the MACD histogram turning positive. In such cases, both Trend and Momentum categories generate +1 or +2. Because the Market Activity State is likely High (given the accompanying volatility), Trend and Momentum weights are at their peak, so the netScore quickly crosses into Bullish territory.
• Sideways/Consolidation: During a low-volatility, sideways phase, ADX may fall below its threshold, MAs may flatten, and RSI might hover in the neutral band. However, subtle price-action signals (like a small breakout candle or a Heikin-Ashi candle with a slight bias) can still produce a +1 in the Price Action category. If Market Activity is Low, Price Action’s weight (55 %) can carry enough influence—even if Trend and Momentum are neutral—to push the netScore out of “Sideways” into a mild bullish or bearish bias.
• Opposing Signals: When Trend is bullish but Momentum turns negative (for example, price continues up but RSI rolls over), the two scores can partially cancel. Market Activity may remain Medium, in which case the netScore lingers near zero (Sideways). The trader can then wait for either a clearer momentum shift or a fresh price-action breakout before committing.
By dynamically recognizing these correlations and adjusting weights, the indicator ensures that:
• When Trend and Momentum align (and volatility supports it), the netScore leaps strongly into Bullish or Bearish.
• When Trend is neutral but Price Action shows an early move in a low-volatility environment, Price Action’s extra weight in the Low Activity State can still produce actionable signals.
---
10. Market Activity State & Its Role (Detailed)
The Market Activity State is not a direct category score—it is an overarching context setter for how heavily to trust Trend, Momentum, or Price Action. Here’s how it is derived and applied:
1. Calculate Four Volatility Sub-Scores:
• BBW: Compare the current band width to its own moving average ± standard deviation. If BBW > (BBW_MA + stdev), assign +1 (high volatility); if BBW < (BBW_MA × 0.5), assign –1 (low volatility); else 0.
• ATR: Compare ATR to its moving average ± standard deviation. A spike above the upper threshold is +1; a contraction below the lower threshold is –1; otherwise 0.
• KCW: Same logic as ATR but around the KCW mean.
• Volume: Compare current volume to its volume MA ± standard deviation. Above the upper threshold is +1; below the lower threshold is –1; else 0.
2. Sum Sub-Scores → Raw Market Activity Score: Range between –4 and +4.
3. Assign Market Activity State:
• High Activity: Raw Score ≥ +2 (at least two volatility metrics are strongly spiking).
• Low Activity: Raw Score ≤ –2 (at least two metrics signal unusually low volatility or thin volume).
• Medium Activity: Raw Score is between –1 and +1 inclusive.
4. Hysteresis for Stability:
• If hysteresis is enabled, a new state only takes hold after two consecutive bars confirm the same High, Medium, or Low label.
• This prevents the Market Activity State from bouncing around when volatility is on the fence.
5. Set Category Weights Based on Activity State:
• High Activity: Trend = 50 %, Momentum = 35 %, Price Action = 15 %.
• Low Activity: Trend = 25 %, Momentum = 20 %, Price Action = 55 %.
• Medium Activity: Use trader’s base weights (e.g., Trend = 40 %, Momentum = 30 %, Price Action = 30 %).
6. Impact on netScore: Because category scores (–3 to +3) multiply by these weights, High Activity amplifies the effect of strong Trend and Momentum scores; Low Activity amplifies the effect of Price Action.
7. Market Context Tooltip: The dashboard includes a tooltip summarizing the current state—e.g., “High activity, trend and momentum prioritized,” “Low activity, price action prioritized,” or “Balanced market, all categories considered.”
---
11. Category Weights: Base vs. Dynamic
Traders begin by specifying base weights for Trend Strength, Momentum, and Price Action that sum to 100 %. These apply only when volatility is in the Medium band. Once volatility shifts:
• High Volatility Overrides:
• Trend jumps from its base (e.g., 40 %) to 50 %.
• Momentum jumps from its base (e.g., 30 %) to 35 %.
• Price Action is reduced to 15 %.
Example: If base weights were Trend = 40 %, Momentum = 30 %, Price Action = 30 %, then in High Activity they become 50/35/15. A Trend score of +3 now contributes 3 × 0.50 = +1.50 to netScore; a Momentum +2 contributes 2 × 0.35 = +0.70. In total, Trend + Momentum can easily push netScore above the +2 threshold on its own.
• Low Volatility Overrides:
• Price Action leaps from its base (30 %) to 55 %.
• Trend falls to 25 %, Momentum falls to 20 %.
Why? When markets are quiet, subtle candle breakouts, doji patterns, and small-range expansions tend to foreshadow the next swing more effectively than raw trend readings. A Price Action score of +3 in this state contributes 3 × 0.55 = +1.65, which can carry the netScore toward +2—even if Trend and Momentum are neutral or only mildly positive.
Because these weight shifts happen only after two consecutive bars confirm a High or Low state (if hysteresis is on), the indicator avoids constantly flipping its emphasis during borderline volatility phases.
---
12. Dominant Category Explained
Within the dashboard, a label such as “Trend Dominant,” “Momentum Dominant,” or “Price Action Dominant” appears when one category’s absolute weighted contribution to netScore is the largest. Concretely:
• Compute each category’s weighted contribution = (raw category score) × (current weight).
• Compare the absolute values of those three contributions.
• The category with the highest absolute value is flagged as Dominant for that bar.
Why It Matters:
• Momentum Dominant: Indicates that the combined force of RSI, Stochastic, and MACD (after weighting) is pushing netScore farther than either Trend or Price Action. In practice, it means that short-term sentiment and speed of change are the primary drivers right now, so traders should watch for continued momentum signals before committing to a trade.
• Trend Dominant: Means ADX, MA slope, and Ichimoku (once weighted) outweigh the other categories. This suggests a strong directional move is in place; trend-following entries or confirming pullbacks are likely to succeed.
• Price Action Dominant: Occurs when breakout/breakdown patterns, Heikin-Ashi candle readings, and range expansions (after weighting) are the most influential. This often happens in calmer markets, where subtle shifts in candle structure can foreshadow bigger moves.
By explicitly calling out which category is carrying the most weight at any moment, the dashboard gives traders immediate insight into why the netScore is tilting toward bullish, bearish, or sideways.
---
13. Oscillator Plot: How to Read It
The “Net Score” oscillator sits below the dashboard and visually displays the smoothed netScore as a line graph. Key features:
1. Value Range: In normal conditions it oscillates roughly between –3 and +3, but extreme confluences can push it outside that range.
2. Horizontal Threshold Lines:
• +2 Line (Bullish threshold)
• 0 Line (Neutral midline)
• –2 Line (Bearish threshold)
3. Zone Coloring:
• Green Background (Bullish Zone): When netScore ≥ +2.
• Red Background (Bearish Zone): When netScore ≤ –2.
• Gray Background (Sideways Zone): When –2 < netScore < +2.
4. Dynamic Line Color:
• The plotted netScore line itself is colored green in a Bullish Zone, red in a Bearish Zone, or gray in a Sideways Zone, creating an immediate visual cue.
Interpretation Tips:
• Crossing Above +2: Signals a strong enough combined trend/momentum/price-action reading to classify as Bullish. Many traders wait for a clear crossing plus a confirmation candle before entering a long position.
• Crossing Below –2: Indicates a strong Bearish signal. Traders may consider short or exit strategies.
• Rising Slope, Even Below +2: If netScore climbs steadily from neutral toward +2, it demonstrates building bullish momentum.
• Divergence: If price makes a higher high but the oscillator fails to reach a new high, it can warn of weakening momentum and a potential reversal.
---
14. Comments and Their Necessity
Every sub-indicator (ADX, MA slope, Ichimoku, RSI, Stochastic, MACD, HH/LL, Heikin-Ashi, Candle Range, BBW, ATR, KCW, Volume) generates a short comment that appears in the detailed dashboard. Examples:
• “Strong bullish trend” or “Strong bearish trend” for ADX/DMI
• “Fast MA above slow MA” or “Fast MA below slow MA” for MA slope
• “RSI above dynamic threshold” or “RSI below dynamic threshold” for RSI
• “MACD histogram positive” or “MACD histogram negative” for MACD Hist
• “Price near highs” or “Price near lows” for HH/LL checks
• “Bullish Heikin Ashi” or “Bearish Heikin Ashi” for HA Doji scoring
• “Large range, trend confirmed” or “Small range, trend contradicted” for Candle Range
Additionally, the top-row comment for each category is:
• Trend: “Highly Bullish,” “Highly Bearish,” or “Neutral Trend.”
• Momentum: “Strong Momentum,” “Weak Momentum,” or “Neutral Momentum.”
• Price Action: “Bullish Action,” “Bearish Action,” or “Neutral Action.”
• Market Activity: “Volatile Market,” “Calm Market,” or “Stable Market.”
Reasons for These Comments:
• Transparency: Shows exactly how each sub-indicator contributed to its category score.
• Education: Helps traders learn why a category is labeled bullish, bearish, or neutral, building intuition over time.
• Customization: If, for example, the RSI comment says “RSI neutral” despite an impending trend shift, a trader might choose to adjust RSI length or thresholds.
In the detailed dashboard, hovering over each comment cell also reveals a tooltip with additional context (e.g., “Fast MA above slow MA” or “Senkou A above Senkou B”), helping traders understand the precise rule behind that +1, 0, or –1 assignment.
---
15. Real-Life Example (Consolidated)
• Instrument & Timeframe: Bitcoin (BTCUSD), 1-hour chart.
• Current Market Activity: BBW and ATR both spike (+1 each), KCW is moderately high (+1), but volume is only neutral (0) → Raw Market Activity Score = +2 → State = High Activity (after two bars, if hysteresis is on).
• Category Weights Applied: Trend = 50 %, Momentum = 35 %, Price Action = 15 %.
• Trend Sub-Scores:
1. ADX = 25 (above threshold 20) with +DI > –DI → +1.
2. Fast MA (20-period) sits above Slow MA (50-period) → +1.
3. Ichimoku: Senkou A > Senkou B → +1.
→ Trend Score = +3.
• Momentum Sub-Scores:
4. RSI = 75 (above its moving average +1 stdev) → +1.
5. MACD histogram = +0.15 → +1.
6. Stochastic %K = 50 (mid-range) → 0.
→ Momentum Score = +2.
• Price Action Sub-Scores:
7. Price is not within 1 % of the 20-period high/low and slope = positive → 0.
8. Heikin-Ashi body is slightly larger than stdev over last 5 bars with haClose > haOpen → +1.
9. Candle range is just above its dynamic upper bound but trend is already captured, so → +1.
→ Price Action Score = +2.
• Calculate netScore (before smoothing):
• Trend contribution = 3 × 0.50 = 1.50
• Momentum contribution = 2 × 0.35 = 0.70
• Price Action contribution = 2 × 0.15 = 0.30
• Raw netScore = 1.50 + 0.70 + 0.30 = 2.50 → Immediately classified as Bullish.
• Oscillator & Dashboard Output:
• The oscillator line crosses above +2 and turns green.
• Dashboard displays:
• Trend Regime “BULLISH,” Trend Score = 3, Comment = “Highly Bullish.”
• Momentum Regime “BULLISH,” Momentum Score = 2, Comment = “Strong Momentum.”
• Price Action Regime “BULLISH,” Price Action Score = 2, Comment = “Bullish Action.”
• Market Activity State “High,” Comment = “Volatile Market.”
• Weights: Trend 50 %, Momentum 35 %, Price Action 15 %.
• Dominant Category: Trend (because 1.50 > 0.70 > 0.30).
• Overall Score: 2.50, posCount = (three +1s in Trend) + (two +1s in Momentum) + (two +1s in Price Action) = 7 bullish signals, negCount = 0.
• Final Zone = “BULLISH.”
• The trader sees that both Trend and Momentum are reinforcing each other under high volatility. They might wait one more candle for confirmation but already have strong evidence to consider a long.
---
• .
---
Disclaimer
This indicator is strictly a technical analysis tool and does not constitute financial advice. All trading involves risk, including potential loss of capital. Past performance is not indicative of future results. Traders should:
• Always backtest the “Market Zone Analyzer ” on their chosen symbols and timeframes before committing real capital.
• Combine this tool with sound risk management, position sizing, and, if possible, fundamental analysis.
• Understand that no indicator is foolproof; always be prepared for unexpected market moves.
Goodluck
-BullByte!
---
BTC Markup/Markdown Zones by Koenigsegg📈 BTC Markup/Markdown Zones
A handcrafted indicator designed to mark Bitcoin's most critical High Time Frame (HTF) structure shifts. This tool overlays true institutional-level Markup and Markdown Zones, selected manually after deep market review. Whether you're testing strategies or actively trading, this tool gives you the bigger picture at all times.
🔍 Key Features:
✅ HTF Markup & Markdown Zones
Every zone is manually selected — no indicators, no repainting. Just raw market history and real structure.
✅ Two Display Modes
• Background Zones — soft overlays with low opacity for visual context — with the option to increase opacity manually if desired.
• Start Candle Highlight — sharply highlighted candle marking the final pivot before a macro reversal.
✅ Custom Color Controls (Style Tab)
All visual styling lives in the Style tab, with clearly labeled fields:
• Markup Zone
• Markdown Zone
• Start Candle Highlight Markup
• Start Candle Highlight Markdown
✅ Minimal Input Section
Just one toggle: display mode. Everything else is kept clean and intuitive.
🧠 Purpose:
This script is made for any timeframe:
• Zoom into lower timeframes to know whether you're trading inside a Markup or Markdown
• Use it during strategy testing for true structural awareness
📅 Handpicked Macro Turning Points:
Each zone originates from a manually confirmed candle — the last meaningful candle before a shift in control between bulls and bears:
• FRI 19 AUG 2011 12PM – MARK DOWN
• THU 20 OCT 2011 12AM – MARK UP
• WED 10 APR 2013 12PM – MARK DOWN
• FRI 12 APR 2013 12PM – MARK UP
• SAT 30 NOV 2013 12AM – MARK DOWN
• WED 14 JAN 2015 12PM – MARK UP
• SUN 17 DEC 2017 12PM – MARK DOWN
• SAT 15 DEC 2018 12PM – MARK UP
• WED 14 APR 2021 4AM – MARK DOWN
• TUE 22 JUN 2021 12PM – MARK UP
• WED 10 NOV 2021 12PM – MARK DOWN
• MON 21 NOV 2022 8PM – MARK UP
• THU 14 MAR 2024 4AM – MARK DOWN
• MON 5 AUG 2024 12PM – MARK UP
• MON 20 JAN 2025 4AM – MARK DOWN
💡 Zones are manually updated by me after each new confirmed Markup or Markdown.
🧬 Fractal Structure for MTF Systems
Price is fractal — meaning the same principles of structure repeat across all timeframes. In Version 2, this tool evolves by introducing manually selected sub-zones inside each High Time Frame (HTF) Markup or Markdown. These sub-zones reflect Medium Timeframe (MTF) structure shifts, offering precision for traders who operate on both intraday and swing levels.
This makes the indicator ideal for low timeframe (LTF) Markup/Markdown awareness — whether you're managing 15m entries or building multi-timeframe confluence systems.
No auto-zones. No guesswork. Just clean, intentional structure division within the broader trend, handpicked for maximum clarity and edge.
💡 Pro Tip:
When price is inside a Markup Zone, shorting becomes riskier — you're trading against a macro bullish structure.
When inside a Markdown Zone, longing becomes riskier — you're fighting against confirmed bearish momentum.
Use this tool to stay aligned with the broader move, especially when zoomed into smaller timeframes or managing entries/exits during intraday setups.
📈 Markup Phase – Bullish Sentiment
Definition: A period where price makes higher highs and higher lows — the uptrend is in full force.
Why sentiment is bullish:
- Institutions and smart money are already positioned long.
- Public/institutional demand drives prices up.
- Momentum is supported by positive news, breakouts, and FOMO.
- Higher highs confirm buyers are in control.
📉 Markdown Phase – Bearish Sentiment
Definition: A period where price makes lower lows and lower highs — clear downtrend.
Why sentiment is bearish:
- Distribution has already occurred, and supply outweighs demand.
- Smart money is short or sidelined, waiting for deeper prices.
- Panic selling or trend-following traders add downside momentum.
- Lower lows confirm sellers are in control.
❌ Trading Against the Trend — Consequences:
-Reduced Probability of Success
-You’re fighting the dominant flow. Most participants are pushing in the opposite direction.
-Drawdowns & Stop-Outs
-Countertrend trades often get wicked or flushed before any meaningful move, especially without structure-based entries.
-Low Risk-Reward Ratio
-Trends offer sustained moves. Countertrend trades may have small take-profit zones or chop.
-Mental Drain & Doubt
-Fighting momentum causes anxiety, second-guessing, and emotional reactions.
-Missed Opportunities
-Focusing on fighting the trend makes you blind to the high-probability setups with the trend.
-Increased Transaction Costs
-More stop-outs and re-entries mean more fees, more friction.
-FOMO from Watching the Trend Run
-Entering countertrend means you might watch the trend explode without you.
-Confirmation Bias & Stubbornness
-Countertrend traders often look for reasons to justify staying in the wrong direction — leading to bigger losses.
🧠 Summary
In markup = bulls dominate → you swim with the current.
In markdown = bears dominate → going long is like pushing a rock uphill.
Trading with the trend is not just safer, it's smarter. The edge lives in momentum — not ego.
⚠️ Disclaimer
This indicator is for educational and analytical use only. It is not financial advice and should not be relied on for decision-making without personal analysis.
This is not a predictive tool. No indicator can forecast upcoming price movements.
What you see here is based purely on past market behavior — specifically, historical tops and bottoms that marked the start of confirmed reversals.
This script does not know where the next reversal begins, nor can it determine where a new Markup or Markdown starts or ends. It is designed to provide context, not prediction.
Always trade with responsibility and perform your own due diligence.
Turbo Oscillator [RunRox]Introducing Turbo Oscillator by RunRox, our new indicator that combines a multitude of useful and unique features, which we will detail in this post.
List of Advanced Technologies:
Real-Time Divergences: Detects discrepancies between price movements and oscillator indicators to forecast potential price reversals.
Real-Time Hidden Divergences: We identify hidden divergences in real-time. These are not the standard type of divergences; they are opposite to regular divergences, providing unique insights into potential market movements.
Overbought and Oversold Zones: Identifies areas where the market is potentially overextended, suggesting possible entry and exit points.
Signal Line: Indicates the market direction, helping traders to quickly understand current trends.
Money Flow Histogram: Shows the flow of money into and out of the market, providing insights into buying and selling pressure.
Predicted Reversal Zones: Pinpoints areas where the market might experience reversals, aiding in strategic planning and risk management. These zones also serve as potential areas for taking profits, enhancing their utility for exit strategy planning.
Customizable Alerts: You can flexibly set up alerts for any events detected by our indicator, ensuring you stay informed about critical market movements.
To begin with, I would like to describe the difference between classic divergences and hidden divergences.
As you can see, these are opposite situations. Our oscillator identifies both types of divergences and displays them in real-time.
Divergences can serve as points where the price might reverse in the opposite direction, making both classic and hidden divergences powerful tools for spotting reversal points. I'll show a few examples of how divergences are used in our oscillator.
Classic Divergences - which we identify in real-time. As you can see, the price often reacts strongly to the formation of these divergences, frequently changing its direction.
Hidden Divergences - we also observe frequent movement in the opposite direction on the chart. The advantage of our indicator is that we show divergences in real-time without delays, allowing you to react immediately to trend changes.
Overbought and Oversold Zones - These zones allow you to see trend changes when the price is clearly overbought or oversold. When the color changes from a contrasting shade to a neutral one, you can observe the trend shift. The lines work by combining the positivity/negativity of the histogram, the positivity/negativity of the signal line, and the direction of the signal line (red/green). This sophisticated interaction provides precise insights into market conditions, making it an invaluable tool for traders.
Signal Line - This provides insights into trend changes and price reversals. The points on the line better indicate the beginning of a trend shift. These points can vary in size, offering a clearer understanding of the strength of the emerging trend. This feature works in combination with RSI, Stochastic, and MFI. RSI and MFI are top-tier indicators, while Stochastic adds responsiveness and sensitivity to trend changes, ensuring you capture every market movement accurately and promptly.
Money Flow Histogram - As shown in the example, our histogram displays the divergence between money flow and the actual price. You can see that while the price is rising, the money flow is decreasing, indicating insufficient demand for the asset and an imminent trend change. This feature uses MFI with an extended period, providing a more comprehensive and accurate analysis of market conditions. The extended period enhances the reliability of the Money Flow Index, making it an essential tool for identifying subtle shifts in market dynamics.
Predicted Reversal Zones - We automatically identify potential price reversal zones and display them above our overbought and oversold zones. In cases of strong overbought or oversold conditions, we detect potential price pullbacks and mark the beginning of a trend change. This helps you better identify trend shifts. We recommend considering these zones as potential take profit points for your trades.
Customizable Alerts - Our flexible alert system allows you to receive notifications only for the events you are interested in. These can include:
1. Classic Divergences
2. Hidden Divergences
3. Overbought or Oversold conditions on the status line
4. Strong Overbought or Oversold conditions on the status line
5. Signals from the signal line
6. Reversal zones in any direction
Our oscillator is a unique indicator that provides a comprehensive understanding of price movements. It can be used as a standalone tool for analyzing price action.
Here are a few examples of using our Oscillator in practice:
In the example above, you can see three conditions that have formed for a potential trade:
1. Clear overbought condition with a formed reversal point.
2. Decreasing Money Flow Index diverging from the rising price.
3. Formed classic divergence.
The entry point could be the formed divergence, while the exit point could be the overbought condition at the bottom of the oscillator along with the reversal points.
Here's another example of using hidden divergence, where you can see three conditions for a potential trade:
1. Overbought zone
2. Formed hidden divergence
3. Start of bearish movement indicated by the signal line
You can enter the trade either when the hidden divergence forms or wait for confirmation of the trend change by the signal line and enter the trade when the corresponding signal forms on the signal line. The exit point could be the opposite reversal point or the formation of a new hidden divergence.
We have demonstrated a few examples of how you can use our indicator, but we are confident that you will find many more applications in your own strategies.
Oscillator offers a variety of customizable parameters to tailor the indicator to your trading preferences. Here’s what our settings include:
Signal Line
Turn On/Off: Enable or disable the signal line.
Length: Set the length period for the signal line calculation.
Smooth: Adjust the smoothing level of the signal line for more accurate display.
Histogram
Turn On/Off: Enable or disable the histogram.
Length: Set the length period for the histogram calculation.
Smooth: Adjust the smoothing level of the histogram.
Other
Show Divergence Line: Display divergence lines on the chart.
Show Hidden Divergence: Display hidden divergences.
Show Status Line: Show the status line indicating overbought or oversold conditions.
Show TP Signal: Display signals for take profit.
Show Reversal Points: Display potential trend reversal points.
Delete Broken Divergence Lines: Remove broken divergence lines from the chart.
Alerts Customization
Signal Line Bull/Bear: Set alerts for bullish or bearish signals from the signal line.
TP Bull/Bear: Set alerts for take profit signals.
Status Bull/Bear: Set alerts for bullish or bearish status conditions.
Status Bull+/Bear+: Set enhanced alerts for stronger bullish or bearish status conditions.
Divergence Bull/Bear: Set alerts for bullish or bearish divergences.
Hidden Divergence Bull/Bear: Set alerts for hidden bullish or bearish divergences.
With these comprehensive settings, you can fine-tune the Oscillator to perfectly fit your trading strategy and preferences.
Our indicator utilizes technologies such as RSI, Stochastic, and Money Flow Index, with numerous enhancements from our team. It includes exclusive features such as real-time detection of hidden and classic divergences, identification of reversal points using our unique methodology, and much more.
Disclaimer:
While we consider our Turbo Oscillator to be an excellent tool, it is important to understand that past performance is not indicative of future results. We recommend approaching market analysis comprehensively, using a combination of tools and techniques to make well-informed trading decisions. Always consider the full range of market data and risks when using any trading indicator.
MTF_DrawingsLibrary 'MTF_Drawings'
This library helps with drawing indicators and candle charts on all timeframes.
FEATURES
CHART DRAWING : Library provides functions for drawing High Time Frame (HTF) and Low Time Frame (LTF) candles.
INDICATOR DRAWING : Library provides functions for drawing various types of HTF and LTF indicators.
CUSTOM COLOR DRAWING : Library allows to color candles and indicators based on specific conditions.
LINEFILLS : Library provides functions for drawing linefills.
CATEGORIES
The functions are named in a way that indicates they purpose:
{Ind} : Function is meant only for indicators.
{Hist} : Function is meant only for histograms.
{Candle} : Function is meant only for candles.
{Draw} : Function draws indicators, histograms and candle charts.
{Populate} : Function generates necessary arrays required by drawing functions.
{LTF} : Function is meant only for lower timeframes.
{HTF} : Function is meant only for higher timeframes.
{D} : Function draws indicators that are composed of two lines.
{CC} : Function draws custom colored indicators.
USAGE
Import the library into your script.
Before using any {Draw} function it is necessary to use a {Populate} function.
Choose the appropriate one based on the category, provide the necessary arguments, and then use the {Draw} function, forwarding the arrays generated by the {Populate} function.
This doesn't apply to {Draw_Lines}, {LineFill}, or {Barcolor} functions.
EXAMPLE
import Spacex_trader/MTF_Drawings/1 as tf
//Request lower timeframe data.
Security(simple string Ticker, simple string New_LTF, float Ind) =>
float Value = request.security_lower_tf(Ticker, New_LTF, Ind)
Value
Timeframe = input.timeframe('1', 'Timeframe: ')
tf.Draw_Ind(tf.Populate_LTF_Ind(Security(syminfo.tickerid, Timeframe, ta.rsi(close, 14)), 498, color.purple), 1, true)
FUNCTION LIST
HTF_Candle(BarsBack, BodyBear, BodyBull, BordersBear, BordersBull, WickBear, WickBull, LineStyle, BoxStyle, LineWidth, HTF_Open, HTF_High, HTF_Low, HTF_Close, HTF_Bar_Index)
Populates two arrays with drawing data of the HTF candles.
Parameters:
BarsBack (int) : Bars number to display.
BodyBear (color) : Candle body bear color.
BodyBull (color) : Candle body bull color.
BordersBear (color) : Candle border bear color.
BordersBull (color) : Candle border bull color.
WickBear (color) : Candle wick bear color.
WickBull (color) : Candle wick bull color.
LineStyle (string) : Wick style (Solid-Dotted-Dashed).
BoxStyle (string) : Border style (Solid-Dotted-Dashed).
LineWidth (int) : Wick width.
HTF_Open (float) : HTF open price.
HTF_High (float) : HTF high price.
HTF_Low (float) : HTF low price.
HTF_Close (float) : HTF close price.
HTF_Bar_Index (int) : HTF bar_index.
Returns: Two arrays with drawing data of the HTF candles.
LTF_Candle(BarsBack, BodyBear, BodyBull, BordersBear, BordersBull, WickBear, WickBull, LineStyle, BoxStyle, LineWidth, LTF_Open, LTF_High, LTF_Low, LTF_Close)
Populates two arrays with drawing data of the LTF candles.
Parameters:
BarsBack (int) : Bars number to display.
BodyBear (color) : Candle body bear color.
BodyBull (color) : Candle body bull color.
BordersBear (color) : Candle border bear color.
BordersBull (color) : Candle border bull color.
WickBear (color) : Candle wick bear color.
WickBull (color) : Candle wick bull color.
LineStyle (string) : Wick style (Solid-Dotted-Dashed).
BoxStyle (string) : Border style (Solid-Dotted-Dashed).
LineWidth (int) : Wick width.
LTF_Open (float ) : LTF open price.
LTF_High (float ) : LTF high price.
LTF_Low (float ) : LTF low price.
LTF_Close (float ) : LTF close price.
Returns: Two arrays with drawing data of the LTF candles.
Draw_Candle(Box, Line, Offset)
Draws HTF or LTF candles.
Parameters:
Box (box ) : Box array with drawing data.
Line (line ) : Line array with drawing data.
Offset (int) : Offset of the candles.
Returns: Drawing of the candles.
Populate_HTF_Ind(IndValue, BarsBack, IndColor, HTF_Bar_Index)
Populates one array with drawing data of the HTF indicator.
Parameters:
IndValue (float) : Indicator value.
BarsBack (int) : Indicator lines to display.
IndColor (color) : Indicator color.
HTF_Bar_Index (int) : HTF bar_index.
Returns: An array with drawing data of the HTF indicator.
Populate_LTF_Ind(IndValue, BarsBack, IndColor)
Populates one array with drawing data of the LTF indicator.
Parameters:
IndValue (float ) : Indicator value.
BarsBack (int) : Indicator lines to display.
IndColor (color) : Indicator color.
Returns: An array with drawing data of the LTF indicator.
Draw_Ind(Line, Mult, Exe)
Draws one HTF or LTF indicator.
Parameters:
Line (line ) : Line array with drawing data.
Mult (int) : Coordinates multiplier.
Exe (bool) : Display the indicator.
Returns: Drawing of the indicator.
Populate_HTF_Ind_D(IndValue_1, IndValue_2, BarsBack, IndColor_1, IndColor_2, HTF_Bar_Index)
Populates two arrays with drawing data of the HTF indicators.
Parameters:
IndValue_1 (float) : First indicator value.
IndValue_2 (float) : Second indicator value.
BarsBack (int) : Indicator lines to display.
IndColor_1 (color) : First indicator color.
IndColor_2 (color) : Second indicator color.
HTF_Bar_Index (int) : HTF bar_index.
Returns: Two arrays with drawing data of the HTF indicators.
Populate_LTF_Ind_D(IndValue_1, IndValue_2, BarsBack, IndColor_1, IndColor_2)
Populates two arrays with drawing data of the LTF indicators.
Parameters:
IndValue_1 (float ) : First indicator value.
IndValue_2 (float ) : Second indicator value.
BarsBack (int) : Indicator lines to display.
IndColor_1 (color) : First indicator color.
IndColor_2 (color) : Second indicator color.
Returns: Two arrays with drawing data of the LTF indicators.
Draw_Ind_D(Line_1, Line_2, Mult, Exe_1, Exe_2)
Draws two LTF or HTF indicators.
Parameters:
Line_1 (line ) : First line array with drawing data.
Line_2 (line ) : Second line array with drawing data.
Mult (int) : Coordinates multiplier.
Exe_1 (bool) : Display the first indicator.
Exe_2 (bool) : Display the second indicator.
Returns: Drawings of the indicators.
Barcolor(Box, Line, BarColor)
Colors the candles based on indicators output.
Parameters:
Box (box ) : Candle box array.
Line (line ) : Candle line array.
BarColor (color ) : Indicator color array.
Returns: Colored candles.
Populate_HTF_Ind_D_CC(IndValue_1, IndValue_2, BarsBack, BullColor, BearColor, IndColor_1, HTF_Bar_Index)
Populates two array with drawing data of the HTF indicators with color based on: IndValue_1 >= IndValue_2 ? BullColor : BearColor.
Parameters:
IndValue_1 (float) : First indicator value.
IndValue_2 (float) : Second indicator value.
BarsBack (int) : Indicator lines to display.
BullColor (color) : Bull color.
BearColor (color) : Bear color.
IndColor_1 (color) : First indicator color.
HTF_Bar_Index (int) : HTF bar_index.
Returns: Three arrays with drawing and color data of the HTF indicators.
Populate_LTF_Ind_D_CC(IndValue_1, IndValue_2, BarsBack, BullColor, BearColor, IndColor_1)
Populates two arrays with drawing data of the LTF indicators with color based on: IndValue_1 >= IndValue_2 ? BullColor : BearColor.
Parameters:
IndValue_1 (float ) : First indicator value.
IndValue_2 (float ) : Second indicator value.
BarsBack (int) : Indicator lines to display.
BullColor (color) : Bull color.
BearColor (color) : Bearcolor.
IndColor_1 (color) : First indicator color.
Returns: Three arrays with drawing and color data of the LTF indicators.
Populate_HTF_Hist_CC(HistValue, IndValue_1, IndValue_2, BarsBack, BullColor, BearColor, HTF_Bar_Index)
Populates one array with drawing data of the HTF histogram with color based on: IndValue_1 >= IndValue_2 ? BullColor : BearColor.
Parameters:
HistValue (float) : Indicator value.
IndValue_1 (float) : First indicator value.
IndValue_2 (float) : Second indicator value.
BarsBack (int) : Indicator lines to display.
BullColor (color) : Bull color.
BearColor (color) : Bearcolor.
HTF_Bar_Index (int) : HTF bar_index
Returns: Two arrays with drawing and color data of the HTF histogram.
Populate_LTF_Hist_CC(HistValue, IndValue_1, IndValue_2, BarsBack, BullColor, BearColor)
Populates one array with drawing data of the LTF histogram with color based on: IndValue_1 >= IndValue_2 ? BullColor : BearColor.
Parameters:
HistValue (float ) : Indicator value.
IndValue_1 (float ) : First indicator value.
IndValue_2 (float ) : Second indicator value.
BarsBack (int) : Indicator lines to display.
BullColor (color) : Bull color.
BearColor (color) : Bearcolor.
Returns: Two array with drawing and color data of the LTF histogram.
Populate_LTF_Hist_CC_VA(HistValue, Value, BarsBack, BullColor, BearColor)
Populates one array with drawing data of the LTF histogram with color based on: HistValue >= Value ? BullColor : BearColor.
Parameters:
HistValue (float ) : Indicator value.
Value (float) : First indicator value.
BarsBack (int) : Indicator lines to display.
BullColor (color) : Bull color.
BearColor (color) : Bearcolor.
Returns: Two array with drawing and color data of the LTF histogram.
Populate_HTF_Ind_CC(IndValue, IndValue_1, BarsBack, BullColor, BearColor, HTF_Bar_Index)
Populates one array with drawing data of the HTF indicator with color based on: IndValue >= IndValue_1 ? BullColor : BearColor.
Parameters:
IndValue (float) : Indicator value.
IndValue_1 (float) : Second indicator value.
BarsBack (int) : Indicator lines to display.
BullColor (color) : Bull color.
BearColor (color) : Bearcolor.
HTF_Bar_Index (int) : HTF bar_index
Returns: Two arrays with drawing and color data of the HTF indicator.
Populate_LTF_Ind_CC(IndValue, IndValue_1, BarsBack, BullColor, BearColor)
Populates one array with drawing data of the LTF indicator with color based on: IndValue >= IndValue_1 ? BullColor : BearColor.
Parameters:
IndValue (float ) : Indicator value.
IndValue_1 (float ) : Second indicator value.
BarsBack (int) : Indicator lines to display.
BullColor (color) : Bull color.
BearColor (color) : Bearcolor.
Returns: Two arrays with drawing and color data of the LTF indicator.
Draw_Lines(BarsBack, y1, y2, LineType, Fill)
Draws price lines on indicators.
Parameters:
BarsBack (int) : Indicator lines to display.
y1 (float) : Coordinates of the first line.
y2 (float) : Coordinates of the second line.
LineType (string) : Line type.
Fill (color) : Fill color.
Returns: Drawing of the lines.
LineFill(Upper, Lower, BarsBack, FillColor)
Fills two lines with linefill HTF or LTF.
Parameters:
Upper (line ) : Upper line.
Lower (line ) : Lower line.
BarsBack (int) : Indicator lines to display.
FillColor (color) : Fill color.
Returns: Linefill of the lines.
Populate_LTF_Hist(HistValue, BarsBack, HistColor)
Populates one array with drawing data of the LTF histogram.
Parameters:
HistValue (float ) : Indicator value.
BarsBack (int) : Indicator lines to display.
HistColor (color) : Indicator color.
Returns: One array with drawing data of the LTF histogram.
Populate_HTF_Hist(HistValue, BarsBack, HistColor, HTF_Bar_Index)
Populates one array with drawing data of the HTF histogram.
Parameters:
HistValue (float) : Indicator value.
BarsBack (int) : Indicator lines to display.
HistColor (color) : Indicator color.
HTF_Bar_Index (int) : HTF bar_index.
Returns: One array with drawing data of the HTF histogram.
Draw_Hist(Box, Mult, Exe)
Draws HTF or LTF histogram.
Parameters:
Box (box ) : Box Array.
Mult (int) : Coordinates multiplier.
Exe (bool) : Display the histogram.
Returns: Drawing of the histogram.
Kịch bản của tôi//@version=6
indicator(title="Relative Strength Index", shorttitle="Gấu Trọc RSI", format=format.price, precision=2, timeframe="", timeframe_gaps=true)
rsiLengthInput = input.int(14, minval=1, title="RSI Length", group="RSI Settings")
rsiSourceInput = input.source(close, "Source", group="RSI Settings")
calculateDivergence = input.bool(false, title="Calculate Divergence", group="RSI Settings", display = display.data_window, tooltip = "Calculating divergences is needed in order for divergence alerts to fire.")
change = ta.change(rsiSourceInput)
up = ta.rma(math.max(change, 0), rsiLengthInput)
down = ta.rma(-math.min(change, 0), rsiLengthInput)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
rsiPlot = plot(rsi, "RSI", color=#7E57C2)
rsiUpperBand1 = hline(98, "RSI Upper Band1", color=#787B86)
rsiUpperBand = hline(70, "RSI Upper Band", color=#787B86)
midline = hline(50, "RSI Middle Band", color=color.new(#787B86, 50))
rsiLowerBand = hline(30, "RSI Lower Band", color=#787B86)
rsiLowerBand2 = hline(14, "RSI Lower Band2", color=#787B86)
fill(rsiUpperBand, rsiLowerBand, color=color.rgb(126, 87, 194, 90), title="RSI Background Fill")
midLinePlot = plot(50, color = na, editable = false, display = display.none)
fill(rsiPlot, midLinePlot, 100, 70, top_color = color.new(color.green, 0), bottom_color = color.new(color.green, 100), title = "Overbought Gradient Fill")
fill(rsiPlot, midLinePlot, 30, 0, top_color = color.new(color.red, 100), bottom_color = color.new(color.red, 0), title = "Oversold Gradient Fill")
// Smoothing MA inputs
GRP = "Smoothing"
TT_BB = "Only applies when 'SMA + Bollinger Bands' is selected. Determines the distance between the SMA and the bands."
maTypeInput = input.string("SMA", "Type", options = , group = GRP, display = display.data_window)
var isBB = maTypeInput == "SMA + Bollinger Bands"
maLengthInput = input.int(14, "Length", group = GRP, display = display.data_window, active = maTypeInput != "None")
bbMultInput = input.float(2.0, "BB StdDev", minval = 0.001, maxval = 50, step = 0.5, tooltip = TT_BB, group = GRP, display = display.data_window, active = isBB)
var enableMA = maTypeInput != "None"
// Smoothing MA Calculation
ma(source, length, MAtype) =>
switch MAtype
"SMA" => ta.sma(source, length)
"SMA + Bollinger Bands" => ta.sma(source, length)
"EMA" => ta.ema(source, length)
"SMMA (RMA)" => ta.rma(source, length)
"WMA" => ta.wma(source, length)
"VWMA" => ta.vwma(source, length)
// Smoothing MA plots
smoothingMA = enableMA ? ma(rsi, maLengthInput, maTypeInput) : na
smoothingStDev = isBB ? ta.stdev(rsi, maLengthInput) * bbMultInput : na
plot(smoothingMA, "RSI-based MA", color=color.yellow, display = enableMA ? display.all : display.none, editable = enableMA)
bbUpperBand = plot(smoothingMA + smoothingStDev, title = "Upper Bollinger Band", color=color.green, display = isBB ? display.all : display.none, editable = isBB)
bbLowerBand = plot(smoothingMA - smoothingStDev, title = "Lower Bollinger Band", color=color.green, display = isBB ? display.all : display.none, editable = isBB)
fill(bbUpperBand, bbLowerBand, color= isBB ? color.new(color.green, 90) : na, title="Bollinger Bands Background Fill", display = isBB ? display.all : display.none, editable = isBB)
// Divergence
lookbackRight = 5
lookbackLeft = 5
rangeUpper = 60
rangeLower = 5
bearColor = color.red
bullColor = color.green
textColor = color.white
noneColor = color.new(color.white, 100)
_inRange(bool cond) =>
bars = ta.barssince(cond)
rangeLower <= bars and bars <= rangeUpper
plFound = false
phFound = false
bullCond = false
bearCond = false
rsiLBR = rsi
if calculateDivergence
//------------------------------------------------------------------------------
// Regular Bullish
// rsi: Higher Low
plFound := not na(ta.pivotlow(rsi, lookbackLeft, lookbackRight))
rsiHL = rsiLBR > ta.valuewhen(plFound, rsiLBR, 1) and _inRange(plFound )
// Price: Lower Low
lowLBR = low
priceLL = lowLBR < ta.valuewhen(plFound, lowLBR, 1)
bullCond := priceLL and rsiHL and plFound
//------------------------------------------------------------------------------
// Regular Bearish
// rsi: Lower High
phFound := not na(ta.pivothigh(rsi, lookbackLeft, lookbackRight))
rsiLH = rsiLBR < ta.valuewhen(phFound, rsiLBR, 1) and _inRange(phFound )
// Price: Higher High
highLBR = high
priceHH = highLBR > ta.valuewhen(phFound, highLBR, 1)
bearCond := priceHH and rsiLH and phFound
plot(
plFound ? rsiLBR : na,
offset = -lookbackRight,
title = "Regular Bullish",
linewidth = 2,
color = (bullCond ? bullColor : noneColor),
display = display.pane,
editable = calculateDivergence)
plotshape(
bullCond ? rsiLBR : na,
offset = -lookbackRight,
title = "Regular Bullish Label",
text = " Bull ",
style = shape.labelup,
location = location.absolute,
color = bullColor,
textcolor = textColor,
display = display.pane,
editable = calculateDivergence)
plot(
phFound ? rsiLBR : na,
offset = -lookbackRight,
title = "Regular Bearish",
linewidth = 2,
color = (bearCond ? bearColor : noneColor),
display = display.pane,
editable = calculateDivergence)
plotshape(
bearCond ? rsiLBR : na,
offset = -lookbackRight,
title = "Regular Bearish Label",
text = " Bear ",
style = shape.labeldown,
location = location.absolute,
color = bearColor,
textcolor = textColor,
display = display.pane,
editable = calculateDivergence)
alertcondition(bullCond, title='Regular Bullish Divergence', message="Found a new Regular Bullish Divergence, `Pivot Lookback Right` number of bars to the left of the current bar.")
alertcondition(bearCond, title='Regular Bearish Divergence', message='Found a new Regular Bearish Divergence, `Pivot Lookback Right` number of bars to the left of the current bar.')
Dimensional Resonance ProtocolDimensional Resonance Protocol
🌀 CORE INNOVATION: PHASE SPACE RECONSTRUCTION & EMERGENCE DETECTION
The Dimensional Resonance Protocol represents a paradigm shift from traditional technical analysis to complexity science. Rather than measuring price levels or indicator crossovers, DRP reconstructs the hidden attractor governing market dynamics using Takens' embedding theorem, then detects emergence —the rare moments when multiple dimensions of market behavior spontaneously synchronize into coherent, predictable states.
The Complexity Hypothesis:
Markets are not simple oscillators or random walks—they are complex adaptive systems existing in high-dimensional phase space. Traditional indicators see only shadows (one-dimensional projections) of this higher-dimensional reality. DRP reconstructs the full phase space using time-delay embedding, revealing the true structure of market dynamics.
Takens' Embedding Theorem (1981):
A profound mathematical result from dynamical systems theory: Given a time series from a complex system, we can reconstruct its full phase space by creating delayed copies of the observation.
Mathematical Foundation:
From single observable x(t), create embedding vectors:
X(t) =
Where:
• d = Embedding dimension (default 5)
• τ = Time delay (default 3 bars)
• x(t) = Price or return at time t
Key Insight: If d ≥ 2D+1 (where D is the true attractor dimension), this embedding is topologically equivalent to the actual system dynamics. We've reconstructed the hidden attractor from a single price series.
Why This Matters:
Markets appear random in one dimension (price chart). But in reconstructed phase space, structure emerges—attractors, limit cycles, strange attractors. When we identify these structures, we can detect:
• Stable regions : Predictable behavior (trade opportunities)
• Chaotic regions : Unpredictable behavior (avoid trading)
• Critical transitions : Phase changes between regimes
Phase Space Magnitude Calculation:
phase_magnitude = sqrt(Σ ² for i = 0 to d-1)
This measures the "energy" or "momentum" of the market trajectory through phase space. High magnitude = strong directional move. Low magnitude = consolidation.
📊 RECURRENCE QUANTIFICATION ANALYSIS (RQA)
Once phase space is reconstructed, we analyze its recurrence structure —when does the system return near previous states?
Recurrence Plot Foundation:
A recurrence occurs when two phase space points are closer than threshold ε:
R(i,j) = 1 if ||X(i) - X(j)|| < ε, else 0
This creates a binary matrix showing when the system revisits similar states.
Key RQA Metrics:
1. Recurrence Rate (RR):
RR = (Number of recurrent points) / (Total possible pairs)
• RR near 0: System never repeats (highly stochastic)
• RR = 0.1-0.3: Moderate recurrence (tradeable patterns)
• RR > 0.5: System stuck in attractor (ranging market)
• RR near 1: System frozen (no dynamics)
Interpretation: Moderate recurrence is optimal —patterns exist but market isn't stuck.
2. Determinism (DET):
Measures what fraction of recurrences form diagonal structures in the recurrence plot. Diagonals indicate deterministic evolution (trajectory follows predictable paths).
DET = (Recurrence points on diagonals) / (Total recurrence points)
• DET < 0.3: Random dynamics
• DET = 0.3-0.7: Moderate determinism (patterns with noise)
• DET > 0.7: Strong determinism (technical patterns reliable)
Trading Implication: Signals are prioritized when DET > 0.3 (deterministic state) and RR is moderate (not stuck).
Threshold Selection (ε):
Default ε = 0.10 × std_dev means two states are "recurrent" if within 10% of a standard deviation. This is tight enough to require genuine similarity but loose enough to find patterns.
🔬 PERMUTATION ENTROPY: COMPLEXITY MEASUREMENT
Permutation entropy measures the complexity of a time series by analyzing the distribution of ordinal patterns.
Algorithm (Bandt & Pompe, 2002):
1. Take overlapping windows of length n (default n=4)
2. For each window, record the rank order pattern
Example: → pattern (ranks from lowest to highest)
3. Count frequency of each possible pattern
4. Calculate Shannon entropy of pattern distribution
Mathematical Formula:
H_perm = -Σ p(π) · ln(p(π))
Where π ranges over all n! possible permutations, p(π) is the probability of pattern π.
Normalized to :
H_norm = H_perm / ln(n!)
Interpretation:
• H < 0.3 : Very ordered, crystalline structure (strong trending)
• H = 0.3-0.5 : Ordered regime (tradeable with patterns)
• H = 0.5-0.7 : Moderate complexity (mixed conditions)
• H = 0.7-0.85 : Complex dynamics (challenging to trade)
• H > 0.85 : Maximum entropy (nearly random, avoid)
Entropy Regime Classification:
DRP classifies markets into five entropy regimes:
• CRYSTALLINE (H < 0.3): Maximum order, persistent trends
• ORDERED (H < 0.5): Clear patterns, momentum strategies work
• MODERATE (H < 0.7): Mixed dynamics, adaptive required
• COMPLEX (H < 0.85): High entropy, mean reversion better
• CHAOTIC (H ≥ 0.85): Near-random, minimize trading
Why Permutation Entropy?
Unlike traditional entropy methods requiring binning continuous data (losing information), permutation entropy:
• Works directly on time series
• Robust to monotonic transformations
• Computationally efficient
• Captures temporal structure, not just distribution
• Immune to outliers (uses ranks, not values)
⚡ LYAPUNOV EXPONENT: CHAOS vs STABILITY
The Lyapunov exponent λ measures sensitivity to initial conditions —the hallmark of chaos.
Physical Meaning:
Two trajectories starting infinitely close will diverge at exponential rate e^(λt):
Distance(t) ≈ Distance(0) × e^(λt)
Interpretation:
• λ > 0 : Positive Lyapunov exponent = CHAOS
- Small errors grow exponentially
- Long-term prediction impossible
- System is sensitive, unpredictable
- AVOID TRADING
• λ ≈ 0 : Near-zero = CRITICAL STATE
- Edge of chaos
- Transition zone between order and disorder
- Moderate predictability
- PROCEED WITH CAUTION
• λ < 0 : Negative Lyapunov exponent = STABLE
- Small errors decay
- Trajectories converge
- System is predictable
- OPTIMAL FOR TRADING
Estimation Method:
DRP estimates λ by tracking how quickly nearby states diverge over a rolling window (default 20 bars):
For each bar i in window:
δ₀ = |x - x | (initial separation)
δ₁ = |x - x | (previous separation)
if δ₁ > 0:
ratio = δ₀ / δ₁
log_ratios += ln(ratio)
λ ≈ average(log_ratios)
Stability Classification:
• STABLE : λ < 0 (negative growth rate)
• CRITICAL : |λ| < 0.1 (near neutral)
• CHAOTIC : λ > 0.2 (strong positive growth)
Signal Filtering:
By default, NEXUS requires λ < 0 (stable regime) for signal confirmation. This filters out trades during chaotic periods when technical patterns break down.
📐 HIGUCHI FRACTAL DIMENSION
Fractal dimension measures self-similarity and complexity of the price trajectory.
Theoretical Background:
A curve's fractal dimension D ranges from 1 (smooth line) to 2 (space-filling curve):
• D ≈ 1.0 : Smooth, persistent trending
• D ≈ 1.5 : Random walk (Brownian motion)
• D ≈ 2.0 : Highly irregular, space-filling
Higuchi Method (1988):
For a time series of length N, construct k different curves by taking every k-th point:
L(k) = (1/k) × Σ|x - x | × (N-1)/(⌊(N-m)/k⌋ × k)
For different values of k (1 to k_max), calculate L(k). The fractal dimension is the slope of log(L(k)) vs log(1/k):
D = slope of log(L) vs log(1/k)
Market Interpretation:
• D < 1.35 : Strong trending, persistent (Hurst > 0.5)
- TRENDING regime
- Momentum strategies favored
- Breakouts likely to continue
• D = 1.35-1.45 : Moderate persistence
- PERSISTENT regime
- Trend-following with caution
- Patterns have meaning
• D = 1.45-1.55 : Random walk territory
- RANDOM regime
- Efficiency hypothesis holds
- Technical analysis least reliable
• D = 1.55-1.65 : Anti-persistent (mean-reverting)
- ANTI-PERSISTENT regime
- Oscillator strategies work
- Overbought/oversold meaningful
• D > 1.65 : Highly complex, choppy
- COMPLEX regime
- Avoid directional bets
- Wait for regime change
Signal Filtering:
Resonance signals (secondary signal type) require D < 1.5, indicating trending or persistent dynamics where momentum has meaning.
🔗 TRANSFER ENTROPY: CAUSAL INFORMATION FLOW
Transfer entropy measures directed causal influence between time series—not just correlation, but actual information transfer.
Schreiber's Definition (2000):
Transfer entropy from X to Y measures how much knowing X's past reduces uncertainty about Y's future:
TE(X→Y) = H(Y_future | Y_past) - H(Y_future | Y_past, X_past)
Where H is Shannon entropy.
Key Properties:
1. Directional : TE(X→Y) ≠ TE(Y→X) in general
2. Non-linear : Detects complex causal relationships
3. Model-free : No assumptions about functional form
4. Lag-independent : Captures delayed causal effects
Three Causal Flows Measured:
1. Volume → Price (TE_V→P):
Measures how much volume patterns predict price changes.
• TE > 0 : Volume provides predictive information about price
- Institutional participation driving moves
- Volume confirms direction
- High reliability
• TE ≈ 0 : No causal flow (weak volume/price relationship)
- Volume uninformative
- Caution on signals
• TE < 0 (rare): Suggests price leading volume
- Potentially manipulated or thin market
2. Volatility → Momentum (TE_σ→M):
Does volatility expansion predict momentum changes?
• Positive TE : Volatility precedes momentum shifts
- Breakout dynamics
- Regime transitions
3. Structure → Price (TE_S→P):
Do support/resistance patterns causally influence price?
• Positive TE : Structural levels have causal impact
- Technical levels matter
- Market respects structure
Net Causal Flow:
Net_Flow = TE_V→P + 0.5·TE_σ→M + TE_S→P
• Net > +0.1 : Bullish causal structure
• Net < -0.1 : Bearish causal structure
• |Net| < 0.1 : Neutral/unclear causation
Causal Gate:
For signal confirmation, NEXUS requires:
• Buy signals : TE_V→P > 0 AND Net_Flow > 0.05
• Sell signals : TE_V→P > 0 AND Net_Flow < -0.05
This ensures volume is actually driving price (causal support exists), not just correlated noise.
Implementation Note:
Computing true transfer entropy requires discretizing continuous data into bins (default 6 bins) and estimating joint probability distributions. NEXUS uses a hybrid approach combining TE theory with autocorrelation structure and lagged cross-correlation to approximate information transfer in computationally efficient manner.
🌊 HILBERT PHASE COHERENCE
Phase coherence measures synchronization across market dimensions using Hilbert transform analysis.
Hilbert Transform Theory:
For a signal x(t), the Hilbert transform H (t) creates an analytic signal:
z(t) = x(t) + i·H (t) = A(t)·e^(iφ(t))
Where:
• A(t) = Instantaneous amplitude
• φ(t) = Instantaneous phase
Instantaneous Phase:
φ(t) = arctan(H (t) / x(t))
The phase represents where the signal is in its natural cycle—analogous to position on a unit circle.
Four Dimensions Analyzed:
1. Momentum Phase : Phase of price rate-of-change
2. Volume Phase : Phase of volume intensity
3. Volatility Phase : Phase of ATR cycles
4. Structure Phase : Phase of position within range
Phase Locking Value (PLV):
For two signals with phases φ₁(t) and φ₂(t), PLV measures phase synchronization:
PLV = |⟨e^(i(φ₁(t) - φ₂(t)))⟩|
Where ⟨·⟩ is time average over window.
Interpretation:
• PLV = 0 : Completely random phase relationship (no synchronization)
• PLV = 0.5 : Moderate phase locking
• PLV = 1 : Perfect synchronization (phases locked)
Pairwise PLV Calculations:
• PLV_momentum-volume : Are momentum and volume cycles synchronized?
• PLV_momentum-structure : Are momentum cycles aligned with structure?
• PLV_volume-structure : Are volume and structural patterns in phase?
Overall Phase Coherence:
Coherence = (PLV_mom-vol + PLV_mom-struct + PLV_vol-struct) / 3
Signal Confirmation:
Emergence signals require coherence ≥ threshold (default 0.70):
• Below 0.70: Dimensions not synchronized, no coherent market state
• Above 0.70: Dimensions in phase, coherent behavior emerging
Coherence Direction:
The summed phase angles indicate whether synchronized dimensions point bullish or bearish:
Direction = sin(φ_momentum) + 0.5·sin(φ_volume) + 0.5·sin(φ_structure)
• Direction > 0 : Phases pointing upward (bullish synchronization)
• Direction < 0 : Phases pointing downward (bearish synchronization)
🌀 EMERGENCE SCORE: MULTI-DIMENSIONAL ALIGNMENT
The emergence score aggregates all complexity metrics into a single 0-1 value representing market coherence.
Eight Components with Weights:
1. Phase Coherence (20%):
Direct contribution: coherence × 0.20
Measures dimensional synchronization.
2. Entropy Regime (15%):
Contribution: (0.6 - H_perm) / 0.6 × 0.15 if H < 0.6, else 0
Rewards low entropy (ordered, predictable states).
3. Lyapunov Stability (12%):
• λ < 0 (stable): +0.12
• |λ| < 0.1 (critical): +0.08
• λ > 0.2 (chaotic): +0.0
Requires stable, predictable dynamics.
4. Fractal Dimension Trending (12%):
Contribution: (1.45 - D) / 0.45 × 0.12 if D < 1.45, else 0
Rewards trending fractal structure (D < 1.45).
5. Dimensional Resonance (12%):
Contribution: |dimensional_resonance| × 0.12
Measures alignment across momentum, volume, structure, volatility dimensions.
6. Causal Flow Strength (9%):
Contribution: |net_causal_flow| × 0.09
Rewards strong causal relationships.
7. Phase Space Embedding (10%):
Contribution: min(|phase_magnitude_norm|, 3.0) / 3.0 × 0.10 if |magnitude| > 1.0
Rewards strong trajectory in reconstructed phase space.
8. Recurrence Quality (10%):
Contribution: determinism × 0.10 if DET > 0.3 AND 0.1 < RR < 0.8
Rewards deterministic patterns with moderate recurrence.
Total Emergence Score:
E = Σ(components) ∈
Capped at 1.0 maximum.
Emergence Direction:
Separate calculation determining bullish vs bearish:
• Dimensional resonance sign
• Net causal flow sign
• Phase magnitude correlation with momentum
Signal Threshold:
Default emergence_threshold = 0.75 means 75% of maximum possible emergence score required to trigger signals.
Why Emergence Matters:
Traditional indicators measure single dimensions. Emergence detects self-organization —when multiple independent dimensions spontaneously align. This is the market equivalent of a phase transition in physics, where microscopic chaos gives way to macroscopic order.
These are the highest-probability trade opportunities because the entire system is resonating in the same direction.
🎯 SIGNAL GENERATION: EMERGENCE vs RESONANCE
DRP generates two tiers of signals with different requirements:
TIER 1: EMERGENCE SIGNALS (Primary)
Requirements:
1. Emergence score ≥ threshold (default 0.75)
2. Phase coherence ≥ threshold (default 0.70)
3. Emergence direction > 0.2 (bullish) or < -0.2 (bearish)
4. Causal gate passed (if enabled): TE_V→P > 0 and net_flow confirms direction
5. Stability zone (if enabled): λ < 0 or |λ| < 0.1
6. Price confirmation: Close > open (bulls) or close < open (bears)
7. Cooldown satisfied: bars_since_signal ≥ cooldown_period
EMERGENCE BUY:
• All above conditions met with bullish direction
• Market has achieved coherent bullish state
• Multiple dimensions synchronized upward
EMERGENCE SELL:
• All above conditions met with bearish direction
• Market has achieved coherent bearish state
• Multiple dimensions synchronized downward
Premium Emergence:
When signal_quality (emergence_score × phase_coherence) > 0.7:
• Displayed as ★ star symbol
• Highest conviction trades
• Maximum dimensional alignment
Standard Emergence:
When signal_quality 0.5-0.7:
• Displayed as ◆ diamond symbol
• Strong signals but not perfect alignment
TIER 2: RESONANCE SIGNALS (Secondary)
Requirements:
1. Dimensional resonance > +0.6 (bullish) or < -0.6 (bearish)
2. Fractal dimension < 1.5 (trending/persistent regime)
3. Price confirmation matches direction
4. NOT in chaotic regime (λ < 0.2)
5. Cooldown satisfied
6. NO emergence signal firing (resonance is fallback)
RESONANCE BUY:
• Dimensional alignment without full emergence
• Trending fractal structure
• Moderate conviction
RESONANCE SELL:
• Dimensional alignment without full emergence
• Bearish resonance with trending structure
• Moderate conviction
Displayed as small ▲/▼ triangles with transparency.
Signal Hierarchy:
IF emergence conditions met:
Fire EMERGENCE signal (★ or ◆)
ELSE IF resonance conditions met:
Fire RESONANCE signal (▲ or ▼)
ELSE:
No signal
Cooldown System:
After any signal fires, cooldown_period (default 5 bars) must elapse before next signal. This prevents signal clustering during persistent conditions.
Cooldown tracks using bar_index:
bars_since_signal = current_bar_index - last_signal_bar_index
cooldown_ok = bars_since_signal >= cooldown_period
🎨 VISUAL SYSTEM: MULTI-LAYER COMPLEXITY
DRP provides rich visual feedback across four distinct layers:
LAYER 1: COHERENCE FIELD (Background)
Colored background intensity based on phase coherence:
• No background : Coherence < 0.5 (incoherent state)
• Faint glow : Coherence 0.5-0.7 (building coherence)
• Stronger glow : Coherence > 0.7 (coherent state)
Color:
• Cyan/teal: Bullish coherence (direction > 0)
• Red/magenta: Bearish coherence (direction < 0)
• Blue: Neutral coherence (direction ≈ 0)
Transparency: 98 minus (coherence_intensity × 10), so higher coherence = more visible.
LAYER 2: STABILITY/CHAOS ZONES
Background color indicating Lyapunov regime:
• Green tint (95% transparent): λ < 0, STABLE zone
- Safe to trade
- Patterns meaningful
• Gold tint (90% transparent): |λ| < 0.1, CRITICAL zone
- Edge of chaos
- Moderate risk
• Red tint (85% transparent): λ > 0.2, CHAOTIC zone
- Avoid trading
- Unpredictable behavior
LAYER 3: DIMENSIONAL RIBBONS
Three EMAs representing dimensional structure:
• Fast ribbon : EMA(8) in cyan/teal (fast dynamics)
• Medium ribbon : EMA(21) in blue (intermediate)
• Slow ribbon : EMA(55) in red/magenta (slow dynamics)
Provides visual reference for multi-scale structure without cluttering with raw phase space data.
LAYER 4: CAUSAL FLOW LINE
A thicker line plotted at EMA(13) colored by net causal flow:
• Cyan/teal : Net_flow > +0.1 (bullish causation)
• Red/magenta : Net_flow < -0.1 (bearish causation)
• Gray : |Net_flow| < 0.1 (neutral causation)
Shows real-time direction of information flow.
EMERGENCE FLASH:
Strong background flash when emergence signals fire:
• Cyan flash for emergence buy
• Red flash for emergence sell
• 80% transparency for visibility without obscuring price
📊 COMPREHENSIVE DASHBOARD
Real-time monitoring of all complexity metrics:
HEADER:
• 🌀 DRP branding with gold accent
CORE METRICS:
EMERGENCE:
• Progress bar (█ filled, ░ empty) showing 0-100%
• Percentage value
• Direction arrow (↗ bull, ↘ bear, → neutral)
• Color-coded: Green/gold if active, gray if low
COHERENCE:
• Progress bar showing phase locking value
• Percentage value
• Checkmark ✓ if ≥ threshold, circle ○ if below
• Color-coded: Cyan if coherent, gray if not
COMPLEXITY SECTION:
ENTROPY:
• Regime name (CRYSTALLINE/ORDERED/MODERATE/COMPLEX/CHAOTIC)
• Numerical value (0.00-1.00)
• Color: Green (ordered), gold (moderate), red (chaotic)
LYAPUNOV:
• State (STABLE/CRITICAL/CHAOTIC)
• Numerical value (typically -0.5 to +0.5)
• Status indicator: ● stable, ◐ critical, ○ chaotic
• Color-coded by state
FRACTAL:
• Regime (TRENDING/PERSISTENT/RANDOM/ANTI-PERSIST/COMPLEX)
• Dimension value (1.0-2.0)
• Color: Cyan (trending), gold (random), red (complex)
PHASE-SPACE:
• State (STRONG/ACTIVE/QUIET)
• Normalized magnitude value
• Parameters display: d=5 τ=3
CAUSAL SECTION:
CAUSAL:
• Direction (BULL/BEAR/NEUTRAL)
• Net flow value
• Flow indicator: →P (to price), P← (from price), ○ (neutral)
V→P:
• Volume-to-price transfer entropy
• Small display showing specific TE value
DIMENSIONAL SECTION:
RESONANCE:
• Progress bar of absolute resonance
• Signed value (-1 to +1)
• Color-coded by direction
RECURRENCE:
• Recurrence rate percentage
• Determinism percentage display
• Color-coded: Green if high quality
STATE SECTION:
STATE:
• Current mode: EMERGENCE / RESONANCE / CHAOS / SCANNING
• Icon: 🚀 (emergence buy), 💫 (emergence sell), ▲ (resonance buy), ▼ (resonance sell), ⚠ (chaos), ◎ (scanning)
• Color-coded by state
SIGNALS:
• E: count of emergence signals
• R: count of resonance signals
⚙️ KEY PARAMETERS EXPLAINED
Phase Space Configuration:
• Embedding Dimension (3-10, default 5): Reconstruction dimension
- Low (3-4): Simple dynamics, faster computation
- Medium (5-6): Balanced (recommended)
- High (7-10): Complex dynamics, more data needed
- Rule: d ≥ 2D+1 where D is true dimension
• Time Delay (τ) (1-10, default 3): Embedding lag
- Fast markets: 1-2
- Normal: 3-4
- Slow markets: 5-10
- Optimal: First minimum of mutual information (often 2-4)
• Recurrence Threshold (ε) (0.01-0.5, default 0.10): Phase space proximity
- Tight (0.01-0.05): Very similar states only
- Medium (0.08-0.15): Balanced
- Loose (0.20-0.50): Liberal matching
Entropy & Complexity:
• Permutation Order (3-7, default 4): Pattern length
- Low (3): 6 patterns, fast but coarse
- Medium (4-5): 24-120 patterns, balanced
- High (6-7): 720-5040 patterns, fine-grained
- Note: Requires window >> order! for stability
• Entropy Window (15-100, default 30): Lookback for entropy
- Short (15-25): Responsive to changes
- Medium (30-50): Stable measure
- Long (60-100): Very smooth, slow adaptation
• Lyapunov Window (10-50, default 20): Stability estimation window
- Short (10-15): Fast chaos detection
- Medium (20-30): Balanced
- Long (40-50): Stable λ estimate
Causal Inference:
• Enable Transfer Entropy (default ON): Causality analysis
- Keep ON for full system functionality
• TE History Length (2-15, default 5): Causal lookback
- Short (2-4): Quick causal detection
- Medium (5-8): Balanced
- Long (10-15): Deep causal analysis
• TE Discretization Bins (4-12, default 6): Binning granularity
- Few (4-5): Coarse, robust, needs less data
- Medium (6-8): Balanced
- Many (9-12): Fine-grained, needs more data
Phase Coherence:
• Enable Phase Coherence (default ON): Synchronization detection
- Keep ON for emergence detection
• Coherence Threshold (0.3-0.95, default 0.70): PLV requirement
- Loose (0.3-0.5): More signals, lower quality
- Balanced (0.6-0.75): Recommended
- Strict (0.8-0.95): Rare, highest quality
• Hilbert Smoothing (3-20, default 8): Phase smoothing
- Low (3-5): Responsive, noisier
- Medium (6-10): Balanced
- High (12-20): Smooth, more lag
Fractal Analysis:
• Enable Fractal Dimension (default ON): Complexity measurement
- Keep ON for full analysis
• Fractal K-max (4-20, default 8): Scaling range
- Low (4-6): Faster, less accurate
- Medium (7-10): Balanced
- High (12-20): Accurate, slower
• Fractal Window (30-200, default 50): FD lookback
- Short (30-50): Responsive FD
- Medium (60-100): Stable FD
- Long (120-200): Very smooth FD
Emergence Detection:
• Emergence Threshold (0.5-0.95, default 0.75): Minimum coherence
- Sensitive (0.5-0.65): More signals
- Balanced (0.7-0.8): Recommended
- Strict (0.85-0.95): Rare signals
• Require Causal Gate (default ON): TE confirmation
- ON: Only signal when causality confirms
- OFF: Allow signals without causal support
• Require Stability Zone (default ON): Lyapunov filter
- ON: Only signal when λ < 0 (stable) or |λ| < 0.1 (critical)
- OFF: Allow signals in chaotic regimes (risky)
• Signal Cooldown (1-50, default 5): Minimum bars between signals
- Fast (1-3): Rapid signal generation
- Normal (4-8): Balanced
- Slow (10-20): Very selective
- Ultra (25-50): Only major regime changes
Signal Configuration:
• Momentum Period (5-50, default 14): ROC calculation
• Structure Lookback (10-100, default 20): Support/resistance range
• Volatility Period (5-50, default 14): ATR calculation
• Volume MA Period (10-50, default 20): Volume normalization
Visual Settings:
• Customizable color scheme for all elements
• Toggle visibility for each layer independently
• Dashboard position (4 corners) and size (tiny/small/normal)
🎓 PROFESSIONAL USAGE PROTOCOL
Phase 1: System Familiarization (Week 1)
Goal: Understand complexity metrics and dashboard interpretation
Setup:
• Enable all features with default parameters
• Watch dashboard metrics for 500+ bars
• Do NOT trade yet
Actions:
• Observe emergence score patterns relative to price moves
• Note coherence threshold crossings and subsequent price action
• Watch entropy regime transitions (ORDERED → COMPLEX → CHAOTIC)
• Correlate Lyapunov state with signal reliability
• Track which signals appear (emergence vs resonance frequency)
Key Learning:
• When does emergence peak? (usually before major moves)
• What entropy regime produces best signals? (typically ORDERED or MODERATE)
• Does your instrument respect stability zones? (stable λ = better signals)
Phase 2: Parameter Optimization (Week 2)
Goal: Tune system to instrument characteristics
Requirements:
• Understand basic dashboard metrics from Phase 1
• Have 1000+ bars of history loaded
Embedding Dimension & Time Delay:
• If signals very rare: Try lower dimension (d=3-4) or shorter delay (τ=2)
• If signals too frequent: Try higher dimension (d=6-7) or longer delay (τ=4-5)
• Sweet spot: 4-8 emergence signals per 100 bars
Coherence Threshold:
• Check dashboard: What's typical coherence range?
• If coherence rarely exceeds 0.70: Lower threshold to 0.60-0.65
• If coherence often >0.80: Can raise threshold to 0.75-0.80
• Goal: Signals fire during top 20-30% of coherence values
Emergence Threshold:
• If too few signals: Lower to 0.65-0.70
• If too many signals: Raise to 0.80-0.85
• Balance with coherence threshold—both must be met
Phase 3: Signal Quality Assessment (Weeks 3-4)
Goal: Verify signals have edge via paper trading
Requirements:
• Parameters optimized per Phase 2
• 50+ signals generated
• Detailed notes on each signal
Paper Trading Protocol:
• Take EVERY emergence signal (★ and ◆)
• Optional: Take resonance signals (▲/▼) separately to compare
• Use simple exit: 2R target, 1R stop (ATR-based)
• Track: Win rate, average R-multiple, maximum consecutive losses
Quality Metrics:
• Premium emergence (★) : Should achieve >55% WR
• Standard emergence (◆) : Should achieve >50% WR
• Resonance signals : Should achieve >45% WR
• Overall : If <45% WR, system not suitable for this instrument/timeframe
Red Flags:
• Win rate <40%: Wrong instrument or parameters need major adjustment
• Max consecutive losses >10: System not working in current regime
• Profit factor <1.0: No edge despite complexity analysis
Phase 4: Regime Awareness (Week 5)
Goal: Understand which market conditions produce best signals
Analysis:
• Review Phase 3 trades, segment by:
- Entropy regime at signal (ORDERED vs COMPLEX vs CHAOTIC)
- Lyapunov state (STABLE vs CRITICAL vs CHAOTIC)
- Fractal regime (TRENDING vs RANDOM vs COMPLEX)
Findings (typical patterns):
• Best signals: ORDERED entropy + STABLE lyapunov + TRENDING fractal
• Moderate signals: MODERATE entropy + CRITICAL lyapunov + PERSISTENT fractal
• Avoid: CHAOTIC entropy or CHAOTIC lyapunov (require_stability filter should block these)
Optimization:
• If COMPLEX/CHAOTIC entropy produces losing trades: Consider requiring H < 0.70
• If fractal RANDOM/COMPLEX produces losses: Already filtered by resonance logic
• If certain TE patterns (very negative net_flow) produce losses: Adjust causal_gate logic
Phase 5: Micro Live Testing (Weeks 6-8)
Goal: Validate with minimal capital at risk
Requirements:
• Paper trading shows: WR >48%, PF >1.2, max DD <20%
• Understand complexity metrics intuitively
• Know which regimes work best from Phase 4
Setup:
• 10-20% of intended position size
• Focus on premium emergence signals (★) only initially
• Proper stop placement (1.5-2.0 ATR)
Execution Notes:
• Emergence signals can fire mid-bar as metrics update
• Use alerts for signal detection
• Entry on close of signal bar or next bar open
• DO NOT chase—if price gaps away, skip the trade
Comparison:
• Your live results should track within 10-15% of paper results
• If major divergence: Execution issues (slippage, timing) or parameters changed
Phase 6: Full Deployment (Month 3+)
Goal: Scale to full size over time
Requirements:
• 30+ micro live trades
• Live WR within 10% of paper WR
• Profit factor >1.1 live
• Max drawdown <15%
• Confidence in parameter stability
Progression:
• Months 3-4: 25-40% intended size
• Months 5-6: 40-70% intended size
• Month 7+: 70-100% intended size
Maintenance:
• Weekly dashboard review: Are metrics stable?
• Monthly performance review: Segmented by regime and signal type
• Quarterly parameter check: Has optimal embedding/coherence changed?
Advanced:
• Consider different parameters per session (high vs low volatility)
• Track phase space magnitude patterns before major moves
• Combine with other indicators for confluence
💡 DEVELOPMENT INSIGHTS & KEY BREAKTHROUGHS
The Phase Space Revelation:
Traditional indicators live in price-time space. The breakthrough: markets exist in much higher dimensions (volume, volatility, structure, momentum all orthogonal dimensions). Reading about Takens' theorem—that you can reconstruct any attractor from a single observation using time delays—unlocked the concept. Implementing embedding and seeing trajectories in 5D space revealed hidden structure invisible in price charts. Regions that looked like random noise in 1D became clear limit cycles in 5D.
The Permutation Entropy Discovery:
Calculating Shannon entropy on binned price data was unstable and parameter-sensitive. Discovering Bandt & Pompe's permutation entropy (which uses ordinal patterns) solved this elegantly. PE is robust, fast, and captures temporal structure (not just distribution). Testing showed PE < 0.5 periods had 18% higher signal win rate than PE > 0.7 periods. Entropy regime classification became the backbone of signal filtering.
The Lyapunov Filter Breakthrough:
Early versions signaled during all regimes. Win rate hovered at 42%—barely better than random. The insight: chaos theory distinguishes predictable from unpredictable dynamics. Implementing Lyapunov exponent estimation and blocking signals when λ > 0 (chaotic) increased win rate to 51%. Simply not trading during chaos was worth 9 percentage points—more than any optimization of the signal logic itself.
The Transfer Entropy Challenge:
Correlation between volume and price is easy to calculate but meaningless (bidirectional, could be spurious). Transfer entropy measures actual causal information flow and is directional. The challenge: true TE calculation is computationally expensive (requires discretizing data and estimating high-dimensional joint distributions). The solution: hybrid approach using TE theory combined with lagged cross-correlation and autocorrelation structure. Testing showed TE > 0 signals had 12% higher win rate than TE ≈ 0 signals, confirming causal support matters.
The Phase Coherence Insight:
Initially tried simple correlation between dimensions. Not predictive. Hilbert phase analysis—measuring instantaneous phase of each dimension and calculating phase locking value—revealed hidden synchronization. When PLV > 0.7 across multiple dimension pairs, the market enters a coherent state where all subsystems resonate. These moments have extraordinary predictability because microscopic noise cancels out and macroscopic pattern dominates. Emergence signals require high PLV for this reason.
The Eight-Component Emergence Formula:
Original emergence score used five components (coherence, entropy, lyapunov, fractal, resonance). Performance was good but not exceptional. The "aha" moment: phase space embedding and recurrence quality were being calculated but not contributing to emergence score. Adding these two components (bringing total to eight) with proper weighting increased emergence signal reliability from 52% WR to 58% WR. All calculated metrics must contribute to the final score. If you compute something, use it.
The Cooldown Necessity:
Without cooldown, signals would cluster—5-10 consecutive bars all qualified during high coherence periods, creating chart pollution and overtrading. Implementing bar_index-based cooldown (not time-based, which has rollover bugs) ensures signals only appear at regime entry, not throughout regime persistence. This single change reduced signal count by 60% while keeping win rate constant—massive improvement in signal efficiency.
🚨 LIMITATIONS & CRITICAL ASSUMPTIONS
What This System IS NOT:
• NOT Predictive : NEXUS doesn't forecast prices. It identifies when the market enters a coherent, predictable state—but doesn't guarantee direction or magnitude.
• NOT Holy Grail : Typical performance is 50-58% win rate with 1.5-2.0 avg R-multiple. This is probabilistic edge from complexity analysis, not certainty.
• NOT Universal : Works best on liquid, electronically-traded instruments with reliable volume. Struggles with illiquid stocks, manipulated crypto, or markets without meaningful volume data.
• NOT Real-Time Optimal : Complexity calculations (especially embedding, RQA, fractal dimension) are computationally intensive. Dashboard updates may lag by 1-2 seconds on slower connections.
• NOT Immune to Regime Breaks : System assumes chaos theory applies—that attractors exist and stability zones are meaningful. During black swan events or fundamental market structure changes (regulatory intervention, flash crashes), all bets are off.
Core Assumptions:
1. Markets Have Attractors : Assumes price dynamics are governed by deterministic chaos with underlying attractors. Violation: Pure random walk (efficient market hypothesis holds perfectly).
2. Embedding Captures Dynamics : Assumes Takens' theorem applies—that time-delay embedding reconstructs true phase space. Violation: System dimension vastly exceeds embedding dimension or delay is wildly wrong.
3. Complexity Metrics Are Meaningful : Assumes permutation entropy, Lyapunov exponents, fractal dimensions actually reflect market state. Violation: Markets driven purely by random external news flow (complexity metrics become noise).
4. Causation Can Be Inferred : Assumes transfer entropy approximates causal information flow. Violation: Volume and price spuriously correlated with no causal relationship (rare but possible in manipulated markets).
5. Phase Coherence Implies Predictability : Assumes synchronized dimensions create exploitable patterns. Violation: Coherence by chance during random period (false positive).
6. Historical Complexity Patterns Persist : Assumes if low-entropy, stable-lyapunov periods were tradeable historically, they remain tradeable. Violation: Fundamental regime change (market structure shifts, e.g., transition from floor trading to HFT).
Performs Best On:
• ES, NQ, RTY (major US index futures - high liquidity, clean volume data)
• Major forex pairs: EUR/USD, GBP/USD, USD/JPY (24hr markets, good for phase analysis)
• Liquid commodities: CL (crude oil), GC (gold), NG (natural gas)
• Large-cap stocks: AAPL, MSFT, GOOGL, TSLA (>$10M daily volume, meaningful structure)
• Major crypto on reputable exchanges: BTC, ETH on Coinbase/Kraken (avoid Binance due to manipulation)
Performs Poorly On:
• Low-volume stocks (<$1M daily volume) - insufficient liquidity for complexity analysis
• Exotic forex pairs - erratic spreads, thin volume
• Illiquid altcoins - wash trading, bot manipulation invalidates volume analysis
• Pre-market/after-hours - gappy, thin, different dynamics
• Binary events (earnings, FDA approvals) - discontinuous jumps violate dynamical systems assumptions
• Highly manipulated instruments - spoofing and layering create false coherence
Known Weaknesses:
• Computational Lag : Complexity calculations require iterating over windows. On slow connections, dashboard may update 1-2 seconds after bar close. Signals may appear delayed.
• Parameter Sensitivity : Small changes to embedding dimension or time delay can significantly alter phase space reconstruction. Requires careful calibration per instrument.
• Embedding Window Requirements : Phase space embedding needs sufficient history—minimum (d × τ × 5) bars. If embedding_dimension=5 and time_delay=3, need 75+ bars. Early bars will be unreliable.
• Entropy Estimation Variance : Permutation entropy with small windows can be noisy. Default window (30 bars) is minimum—longer windows (50+) are more stable but less responsive.
• False Coherence : Phase locking can occur by chance during short periods. Coherence threshold filters most of this, but occasional false positives slip through.
• Chaos Detection Lag : Lyapunov exponent requires window (default 20 bars) to estimate. Market can enter chaos and produce bad signal before λ > 0 is detected. Stability filter helps but doesn't eliminate this.
• Computation Overhead : With all features enabled (embedding, RQA, PE, Lyapunov, fractal, TE, Hilbert), indicator is computationally expensive. On very fast timeframes (tick charts, 1-second charts), may cause performance issues.
⚠️ RISK DISCLOSURE
Trading futures, forex, stocks, options, and cryptocurrencies involves substantial risk of loss and is not suitable for all investors. Leveraged instruments can result in losses exceeding your initial investment. Past performance, whether backtested or live, is not indicative of future results.
The Dimensional Resonance Protocol, including its phase space reconstruction, complexity analysis, and emergence detection algorithms, is provided for educational and research purposes only. It is not financial advice, investment advice, or a recommendation to buy or sell any security or instrument.
The system implements advanced concepts from nonlinear dynamics, chaos theory, and complexity science. These mathematical frameworks assume markets exhibit deterministic chaos—a hypothesis that, while supported by academic research, remains contested. Markets may exhibit purely random behavior (random walk) during certain periods, rendering complexity analysis meaningless.
Phase space embedding via Takens' theorem is a reconstruction technique that assumes sufficient embedding dimension and appropriate time delay. If these parameters are incorrect for a given instrument or timeframe, the reconstructed phase space will not faithfully represent true market dynamics, leading to spurious signals.
Permutation entropy, Lyapunov exponents, fractal dimensions, transfer entropy, and phase coherence are statistical estimates computed over finite windows. All have inherent estimation error. Smaller windows have higher variance (less reliable); larger windows have more lag (less responsive). There is no universally optimal window size.
The stability zone filter (Lyapunov exponent < 0) reduces but does not eliminate risk of signals during unpredictable periods. Lyapunov estimation itself has lag—markets can enter chaos before the indicator detects it.
Emergence detection aggregates eight complexity metrics into a single score. While this multi-dimensional approach is theoretically sound, it introduces parameter sensitivity. Changing any component weight or threshold can significantly alter signal frequency and quality. Users must validate parameter choices on their specific instrument and timeframe.
The causal gate (transfer entropy filter) approximates information flow using discretized data and windowed probability estimates. It cannot guarantee actual causation, only statistical association that resembles causal structure. Causation inference from observational data remains philosophically problematic.
Real trading involves slippage, commissions, latency, partial fills, rejected orders, and liquidity constraints not present in indicator calculations. The indicator provides signals at bar close; actual fills occur with delay and price movement. Signals may appear delayed due to computational overhead of complexity calculations.
Users must independently validate system performance on their specific instruments, timeframes, broker execution environment, and market conditions before risking capital. Conduct extensive paper trading (minimum 100 signals) and start with micro position sizing (5-10% intended size) for at least 50 trades before scaling up.
Never risk more capital than you can afford to lose completely. Use proper position sizing (0.5-2% risk per trade maximum). Implement stop losses on every trade. Maintain adequate margin/capital reserves. Understand that most retail traders lose money. Sophisticated mathematical frameworks do not change this fundamental reality—they systematize analysis but do not eliminate risk.
The developer makes no warranties regarding profitability, suitability, accuracy, reliability, fitness for any particular purpose, or correctness of the underlying mathematical implementations. Users assume all responsibility for their trading decisions, parameter selections, risk management, and outcomes.
By using this indicator, you acknowledge that you have read, understood, and accepted these risk disclosures and limitations, and you accept full responsibility for all trading activity and potential losses.
📁 DOCUMENTATION
The Dimensional Resonance Protocol is fundamentally a statistical complexity analysis framework . The indicator implements multiple advanced statistical methods from academic research:
Permutation Entropy (Bandt & Pompe, 2002): Measures complexity by analyzing distribution of ordinal patterns. Pure statistical concept from information theory.
Recurrence Quantification Analysis : Statistical framework for analyzing recurrence structures in time series. Computes recurrence rate, determinism, and diagonal line statistics.
Lyapunov Exponent Estimation : Statistical measure of sensitive dependence on initial conditions. Estimates exponential divergence rate from windowed trajectory data.
Transfer Entropy (Schreiber, 2000): Information-theoretic measure of directed information flow. Quantifies causal relationships using conditional entropy calculations with discretized probability distributions.
Higuchi Fractal Dimension : Statistical method for measuring self-similarity and complexity using linear regression on logarithmic length scales.
Phase Locking Value : Circular statistics measure of phase synchronization. Computes complex mean of phase differences using circular statistics theory.
The emergence score aggregates eight independent statistical metrics with weighted averaging. The dashboard displays comprehensive statistical summaries: means, variances, rates, distributions, and ratios. Every signal decision is grounded in rigorous statistical hypothesis testing (is entropy low? is lyapunov negative? is coherence above threshold?).
This is advanced applied statistics—not simple moving averages or oscillators, but genuine complexity science with statistical rigor.
Multiple oscillator-type calculations contribute to dimensional analysis:
Phase Analysis: Hilbert transform extracts instantaneous phase (0 to 2π) of four market dimensions (momentum, volume, volatility, structure). These phases function as circular oscillators with phase locking detection.
Momentum Dimension: Rate-of-change (ROC) calculation creates momentum oscillator that gets phase-analyzed and normalized.
Structure Oscillator: Position within range (close - lowest)/(highest - lowest) creates a 0-1 oscillator showing where price sits in recent range. This gets embedded and phase-analyzed.
Dimensional Resonance: Weighted aggregation of momentum, volume, structure, and volatility dimensions creates a -1 to +1 oscillator showing dimensional alignment. Similar to traditional oscillators but multi-dimensional.
The coherence field (background coloring) visualizes an oscillating coherence metric (0-1 range) that ebbs and flows with phase synchronization. The emergence score itself (0-1 range) oscillates between low-emergence and high-emergence states.
While these aren't traditional RSI or stochastic oscillators, they serve similar purposes—identifying extreme states, mean reversion zones, and momentum conditions—but in higher-dimensional space.
Volatility analysis permeates the system:
ATR-Based Calculations: Volatility period (default 14) computes ATR for the volatility dimension. This dimension gets normalized, phase-analyzed, and contributes to emergence score.
Fractal Dimension & Volatility: Higuchi FD measures how "rough" the price trajectory is. Higher FD (>1.6) correlates with higher volatility/choppiness. FD < 1.4 indicates smooth trends (lower effective volatility).
Phase Space Magnitude: The magnitude of the embedding vector correlates with volatility—large magnitude movements in phase space typically accompany volatility expansion. This is the "energy" of the market trajectory.
Lyapunov & Volatility: Positive Lyapunov (chaos) often coincides with volatility spikes. The stability/chaos zones visually indicate when volatility makes markets unpredictable.
Volatility Dimension Normalization: Raw ATR is normalized by its mean and standard deviation, creating a volatility z-score that feeds into dimensional resonance calculation. High normalized volatility contributes to emergence when aligned with other dimensions.
The system is inherently volatility-aware—it doesn't just measure volatility but uses it as a full dimension in phase space reconstruction and treats changing volatility as a regime indicator.
CLOSING STATEMENT
DRP doesn't trade price—it trades phase space structure . It doesn't chase patterns—it detects emergence . It doesn't guess at trends—it measures coherence .
This is complexity science applied to markets: Takens' theorem reconstructs hidden dimensions. Permutation entropy measures order. Lyapunov exponents detect chaos. Transfer entropy reveals causation. Hilbert phases find synchronization. Fractal dimensions quantify self-similarity.
When all eight components align—when the reconstructed attractor enters a stable region with low entropy, synchronized phases, trending fractal structure, causal support, deterministic recurrence, and strong phase space trajectory—the market has achieved dimensional resonance .
These are the highest-probability moments. Not because an indicator said so. Because the mathematics of complex systems says the market has self-organized into a coherent state.
Most indicators see shadows on the wall. DRP reconstructs the cave.
"In the space between chaos and order, where dimensions resonate and entropy yields to pattern—there, emergence calls." DRP
Taking you to school. — Dskyz, Trade with insight. Trade with anticipation.
Market Structure Trailing Stop MTF [Inspired by LuxAlgo]# Market Structure Trailing Stop MTF
**OPEN-SOURCE SCRIPT**
*208k+ views on original · Modified for MTF Support*
This indicator is a direct adaptation of the renowned **Market Structure Trailing Stop** by **LuxAlgo** (original script: [Market Structure Trailing Stop ]()). The core logic remains untouched, providing dynamic trailing stops based on market structure breaks (CHoCH/BOS). The **only modification** is the addition of **Multi-Timeframe (MTF) support**, allowing users to apply the trailing stops and structures from **higher timeframes (HTF)** directly on their current chart. This enhances usability for traders analyzing cross-timeframe confluence without switching charts.
**Special thanks to LuxAlgo** for releasing this powerful open-source tool under CC BY-NC-SA 4.0. Your contributions to the TradingView community have inspired countless traders—grateful for the solid foundation!
## 🔶 How the Script Works: A Deep Dive
At its heart, this indicator detects **market structure shifts** (bullish or bearish breaks of swing highs/lows) and uses them to generate **adaptive trailing stops**. These stops trail the price while protecting profits and acting as dynamic support/resistance levels. The MTF enhancement pulls this logic from user-specified higher timeframes, overlaying HTF structures and stops on the lower timeframe chart for seamless multi-timeframe analysis.
### Core Logic (Unchanged from LuxAlgo's Original)
1. **Pivot Detection**:
- Uses `ta.pivothigh()` and `ta.pivotlow()` with a user-defined lookback (`length`) to identify swing highs (PH) and lows (PL).
- Coordinates (price `y` and bar index/time `x`) are stored in persistent variables (`var`) for tracking recent pivots.
2. **Market Structure Detection**:
- **Bullish Structure (BOS/CHoCH)**: Triggers when `close > recent PH` (break above swing high).
- If `resetOn = 'CHoCH'`, resets only on major shifts (Change of Character); otherwise, on all breaks.
- Sets trend state `os = 1` (bullish) and highlights the break with a horizontal line (dashed for CHoCH, dotted for BOS).
- Initializes trailing stop at the local minimum (lowest low since the pivot) using a backward loop: `btm = math.min(low , btm)`.
- **Bearish Structure**: Triggers when `close < recent PL`, mirroring the bullish logic (`os = -1`, local maximum for stop).
- Structure state `ms` tracks the break type (1 for bull, -1 for bear, 0 neutral), resetting based on user settings.
3. **Trailing Stop Calculation**:
- Tracks **trailing max/min**:
- On new bull structure: Reset `max = close`.
- On new bear: Reset `min = close`.
- Otherwise: `max = math.max(close, max)` / `min = math.min(close, min)`.
- **Stop Adjustment** (the "trailing" magic):
- On fresh structure: `ts = btm` (bull) or `top` (bear).
- In ongoing trend: Increment/decrement by a percentage of the max/min change:
- Bull: `ts += (max - max ) * (incr / 100)`
- Bear: `ts += (min - min ) * (incr / 100)`
- This creates a **ratcheting effect**: Stops move favorably with the trend but never against it, converging toward price at a controlled rate.
- **Visuals**:
- Plots `ts` line colored by trend (teal for bull, red for bear).
- Fills area between `close` and `ts` (orange on retracements).
- Draws structure lines from pivot to break point.
4. **Edge Cases**:
- Variables like `ph_cross`/`pl_cross` prevent multiple triggers on the same pivot.
- Neutral state (`ms = 0`) preserves prior `max/min` until a new structure.
### MTF Enhancement (Our Addition)
- **request.security() Integration**:
- Wraps the entire core function `f()` in a security call for each timeframe (`tf1`, `tf2`).
- Returns HTF values (e.g., `ts1`, `os1`, structure times/prices) to the chart's context.
- Uses `lookahead=barmerge.lookahead_off` for accurate historical repainting-free data.
- Structures are drawn using `xloc.bar_time` to align HTF lines precisely on the LTF chart.
- **Multi-Output Handling**:
- Separate plots/fills/lines for each TF (e.g., `plot_ts1`, `plot_ts2`).
- Colors and toggles per TF to distinguish HTF1 (e.g., teal/red) from HTF2 (e.g., blue/maroon).
- **Benefits**: Spot HTF bias on LTF entries, e.g., enter longs only if both TF1 (1H) and TF2 (4H) show bullish `os=1`.
This keeps the script lightweight—**no repainting, max 500 lines**, and fully compatible with LuxAlgo's original behavior when TFs are set to the chart's timeframe.
## 🔶 SETTINGS
### Core Parameters
- **Pivot Lookback** (`length = 14`): Bars left/right for pivot detection. Higher = smoother structures, fewer signals; lower = more noise.
- **Increment Factor %** (`incr = 100`): Speed of stop convergence (0-∞). 100% = full ratchet (mirrors max/min exactly); <100% = slower trail, reduces whipsaws.
- **Reset Stop On** (`'CHoCH'`): `'CHoCH'` = Reset only on major reversals (dashed lines); `'All'` = Reset on every BOS/CHoCH (tighter stops).
### MTF Support
- **Timeframe 1** (`tf1 = ""`): HTF for first set (e.g., "1H"). Empty = current chart.
- **Timeframe 2** (`tf2 = ""`): Second HTF (e.g., "4H"). Enables dual confluence.
### Display Toggles
- **Show Structures** (`true`): Draws horizontal lines for breaks (per TF colors).
- **Show Trailing Stop TF1/TF2** (`true`): Plots the stop line.
- **Show Fill TF1/TF2** (`true`): Area fill between close and stop.
### Candle Coloring (Optional)
- **Color Candles** (`false`): Enables custom `plotcandle` for body/wick/border.
- **Candle Color Based On TF** (`"None"`): `"TF1"`, `"TF2"`, or none. Colors bull trend green, bear red.
- **Candle Colors**: Separate inputs for bull/bear body, wick, border (e.g., solid green body, transparent wick).
### Alerts
- **Enable MS Break Alerts** (`false`): Notifies on structure breaks (bull/bear per TF) **only on bar close** (`barstate.isconfirmed` + `alert.freq_once_per_bar_close`).
- **Enable Stop Hit Alerts** (`false`): Triggers on stop breaches (long/short per TF), using `ta.crossunder/crossover`.
### Colors
- **TF1 Colors**: Bullish (teal), Bearish (red), Retracement (orange).
- **TF2 Colors**: Bullish (blue), Bearish (maroon), Retracement (orange).
- **Area Transparency** (`80`): Fill opacity (0-100).
## 🔶 USAGE
Trailing stops shine in **trend-following strategies**:
- **Entries**: Use structure breaks as signals (e.g., long on bullish BOS from HTF1).
- **Exits**: Trail stops for profit-locking; alert on hits for automation.
- **Confluence**: Overlay HTF1 (e.g., 1H) for bias, HTF2 (e.g., Daily) for major levels—enter LTF only on alignment.
- **Risk Management**: Lower `incr` avoids early stops in chop; reset on `'All'` for aggressive trailing.
! (i.imgur.com)
*HTF1 shows bullish structure (teal line), trailing stop ratchets up—long entry confirmed on LTF pullback.*
! (i.imgur.com)
*TF1 (blue) bearish, TF2 (red) neutral—avoid shorts until alignment.*
! (i.imgur.com)
*Colored based on TF1 trend: Green bodies on bull `os=1`.*
Pro Tip: Test on demo—pair with LuxAlgo's other tools like Smart Money Concepts for full structure ecosystem.
## 🔶 DETAILS: Mathematical Breakdown
On bullish break:
- Local min: `btm = ta.lowest(n - ph_x)` (optimized loop equivalent).
- Stop init: `ts = btm`.
- Update: `Δmax = max - max `, `ts_new = ts + Δmax * (incr/100)`.
Bearish mirrors with `Δmin` (negative, so decrements `ts`).
In MTF: HTF `time` aligns lines via `line.new(htf_time, level, current_time, level, xloc.bar_time)`.
No logs/math libs needed—pure Pine v5 efficiency.
## Disclaimer
This is for educational purposes. Not financial advice. Backtest thoroughly. Original by LuxAlgo—modify at your risk. See TradingView's (www.tradingview.com). Licensed under CC BY-NC-SA 4.0 (attribution to LuxAlgo required).
Velocity Pressure Index | AlphaNattVelocity Pressure Index (VPI) | AlphaNatt
A sophisticated momentum oscillator that combines price velocity analysis with volume pressure dynamics to identify high-probability trading opportunities.
📊 KEY FEATURES
Dual Analysis System: Merges price velocity measurement with volume pressure analysis for comprehensive market momentum assessment
Dynamic Normalization: Automatically scales values between -100 and +100 for consistent readings across all market conditions
Adaptive Zones: Self-adjusting overbought/oversold levels based on recent price history
Multi-Layer Confirmation: Combines momentum, acceleration, and crossover signals for robust trade identification
Volume-Weighted Pressure: Differentiates between bullish and bearish volume to gauge true market sentiment
📈 HOW IT WORKS
The VPI calculates price velocity using linear regression of price changes, then weights this velocity by the difference between bullish and bearish volume pressure. This creates a momentum reading that accounts for both price movement speed and the volume conviction behind it.
Signal Generation:
Price velocity is measured over the specified period
Volume is separated into bullish (close > open) and bearish (close < open) pressure
Velocity is amplified or dampened based on volume pressure differential
The resulting index is normalized to oscillate between -100 and +100
A signal line smooths the oscillator for crossover detection
🎯 TRADING SIGNALS
Long Signals (Cyan #00F1FF):
Strong Bull: VPI > Signal with positive momentum and acceleration
Crossover Bull: VPI crosses above signal while above oversold zone
Divergence: Price makes lower low while VPI makes higher low
Short Signals (Magenta #FF019A):
Strong Bear: VPI < Signal with negative momentum and deceleration
Crossover Bear: VPI crosses below signal while below overbought zone
Divergence: Price makes higher high while VPI makes lower high
⚙️ CUSTOMIZABLE PARAMETERS
Velocity Settings:
Velocity Period (14): Lookback for price velocity calculation
Pressure Period (21): Volume analysis window
Smoothing Factor (3): Final oscillator smoothing
Signal Configuration:
Signal Type: Choose between SMA, EMA, or DEMA
Signal Length (9): Signal line smoothing period
Normalization Period (50): Range calculation window
Dynamic Zones:
Zone Lookback (100): Period for adaptive overbought/oversold calculation
Percentiles: 80th/20th percentiles for dynamic zones
📐 VISUAL COMPONENTS
Main Oscillator: Color-coded line showing current momentum state
Signal Line: White line for crossover detection
Momentum Histogram: Shows velocity differential at 50% scale
Dynamic Zones: Self-adjusting overbought/oversold bands
Extreme Levels: ±50 dotted lines marking extreme conditions
Background Shading: Subtle highlighting of overbought/oversold regions
💡 USAGE TIPS
Trend Trading: Use strong bull/bear signals in trending markets for continuation entries
Range Trading: Focus on crossovers near extreme zones for reversal trades
Divergence Trading: Watch for price/oscillator divergences at market extremes
Multi-Timeframe: Combine with higher timeframe VPI for directional bias
Volume Confirmation: Stronger signals occur with aligned volume pressure
⚠️ BEST PRACTICES
The VPI works best in liquid markets with reliable volume data. For optimal results, combine with price action analysis and use appropriate risk management. The indicator is most effective during trending conditions but can identify reversals when divergences occur at extremes.
🔔 ALERTS AVAILABLE
VPI Long/Short Signals
Bullish/Bearish Crossovers
Extreme Overbought/Oversold Conditions
Version 6 | Pine Script™ | © AlphaNatt
Smart Money Precision Structure [BullByte]Smart Money Precision Structure
Advanced Market Structure Analysis Using Institutional Order Flow Concepts
---
OVERVIEW
Smart Money Precision Structure (SMPS) is a comprehensive market analysis indicator that combines six analytical frameworks to identify high-probability market structure patterns. The indicator uses multi-dimensional scoring algorithms to evaluate market conditions through institutional order flow concepts, providing traders with professional-grade market analysis.
---
PURPOSE AND ORIGINALITY
Why This Indicator Was Developed
• Addresses the gap between retail and institutional analysis methods
• Consolidates multiple analysis techniques that professionals use separately
• Automates complex market structure evaluation into actionable insights
• Eliminates the need for multiple indicators by providing comprehensive analysis
What Makes SMPS Original
• Six-Layer Confluence System - Unique combination of market regime, structure, volume flow, momentum, price action, and adaptive filtering
• Institutional Pattern Recognition - Identifies smart money accumulation and distribution patterns
• Adaptive Intelligence - Parameters automatically adjust based on detected market conditions
• Real-Time Market Scoring - Proprietary algorithm rates market quality from 0-100%
• Structure Break Detection - Advanced pivot analysis identifies trend reversals early
---
HOW IT WORKS - TECHNICAL METHODOLOGY
1. Market Regime Analysis Engine
The indicator evaluates five core market dimensions:
• Volatility Score - Measures current volatility against 50-period historical baseline
• Trend Score - Analyzes alignment between 8, 21, and 50-period EMAs
• Momentum Score - Combines RSI divergence with MACD signal alignment
• Structure Score - Evaluates pivot point formation clarity
• Efficiency Score - Calculates directional movement efficiency ratio
These scores combine to classify markets into five regimes:
• TRENDING - Strong directional movement with aligned indicators
• RANGING - Sideways movement with mixed directional signals
• VOLATILE - Elevated volatility with unpredictable price swings
• QUIET - Low volatility consolidation periods
• TRANSITIONAL - Market shifting between different regimes
2. Market Structure Analysis
Advanced pivot point analysis identifies:
• Higher Highs and Higher Lows for bullish structure
• Lower Highs and Lower Lows for bearish structure
• Structure breaks when established patterns fail
• Dynamic support and resistance from recent pivot points
• Key level proximity detection using ATR-based buffers
3. Volume Flow Decoding
Institutional activity detection through:
• Volume surge identification when volume exceeds 2x average
• Buy versus sell pressure analysis using price-volume correlation
• Flow strength measurement through directional volume consistency
• Divergence detection between volume and price movements
• Institutional threshold alerts when unusual volume patterns emerge
4. Multi-Period Momentum Synthesis
Weighted momentum calculation across four timeframes:
• 1-period momentum weighted at 40%
• 3-period momentum weighted at 30%
• 5-period momentum weighted at 20%
• 8-period momentum weighted at 10%
Result smoothed with 6-period EMA for noise reduction.
5. Price Action Quality Assessment
Each bar evaluated for:
• Range quality relative to 20-period average
• Body-to-range ratio for directional conviction
• Wick analysis for rejection pattern identification
• Pattern recognition including engulfing and hammer formations
• Sequential price movement analysis
6. Adaptive Parameter System
Parameters automatically adjust based on detected regime:
• Trending markets reduce sensitivity and confirmation requirements
• Volatile markets increase filtering and require additional confirmations
• Ranging markets maintain neutral settings
• Transitional markets use moderate adjustments
---
COMPLETE SETTINGS GUIDE
Section 1: Core Analysis Settings
Analysis Sensitivity (0.3-2.0)
• Default: 1.0
• Lower values require stronger price movements
• Higher values detect more subtle patterns
• Scalpers use 0.8-1.2, swing traders use 1.5-2.0
Noise Reduction Level (2-7)
• Default: 4
• Controls filtering of false patterns
• Higher values reduce pattern frequency
• Increase in volatile markets
Minimum Move % (0.05-0.50)
• Default: 0.15%
• Sets minimum price movement threshold
• Adjust based on instrument volatility
• Forex: 0.05-0.10%, Stocks: 0.15-0.25%, Crypto: 0.20-0.50%
High Confirmation Mode
• Default: True (Enabled)
• Requires all technical conditions to align
• Reduces frequency but increases reliability
• Disable for more aggressive pattern detection
Section 2: Market Regime Detection
Enable Regime Analysis
• Default: True (Enabled)
• Activates market environment evaluation
• Essential for adaptive features
• Keep enabled for best results
Regime Analysis Period (20-100)
• Default: 50 bars
• Determines regime calculation lookback
• Shorter for responsive, longer for stable
• Scalping: 20-30, Swing: 75-100
Minimum Market Clarity (0.2-0.8)
• Default: 0.4
• Quality threshold for pattern generation
• Higher values require clearer conditions
• Lower for more patterns, higher for quality
Adaptive Parameter Adjustment
• Default: True (Enabled)
• Enables automatic parameter optimization
• Adjusts based on market regime
• Highly recommended to keep enabled
Section 3: Market Structure Analysis
Enable Structure Validation
• Default: True (Enabled)
• Validates patterns against support/resistance
• Confirms trend structure alignment
• Essential for reliability
Structure Analysis Period (15-50)
• Default: 30 bars
• Period for structure pattern analysis
• Affects support/resistance calculation
• Match to your trading timeframe
Minimum Structure Alignment (0.3-0.8)
• Default: 0.5
• Required structure score for valid patterns
• Higher values need stronger structure
• Balance with desired frequency
Section 4: Analysis Configuration
Minimum Strength Level (3-5)
• Default: 4
• Minimum confirmations for pattern display
• 5 = Maximum reliability, 3 = More patterns
• Beginners should use 4-5
Required Technical Confirmations (4-6)
• Default: 5
• Number of aligned technical factors
• Higher = fewer but better patterns
• Works with High Confirmation Mode
Pattern Separation (3-20 bars)
• Default: 8 bars
• Minimum bars between patterns
• Prevents clustering and overtrading
• Increase for cleaner charts
Section 5: Technical Filters
Momentum Validation
• Default: True (Enabled)
• Requires momentum alignment
• Filters counter-trend patterns
• Essential for trend following
Volume Confluence Analysis
• Default: True (Enabled)
• Requires volume confirmation
• Identifies institutional participation
• Critical for reliability
Trend Direction Filter
• Default: True (Enabled)
• Only shows patterns with trend
• Reduces counter-trend signals
• Disable for reversal hunting
Section 6: Volume Flow Analysis
Institutional Activity Threshold (1.2-3.5)
• Default: 2.0
• Multiplier for unusual volume detection
• Lower finds more institutional activity
• Stock: 2.0-2.5, Forex: 1.5-2.0, Crypto: 2.5-3.5
Volume Surge Multiplier (1.8-4.5)
• Default: 2.5
• Defines significant volume increases
• Adjust per instrument characteristics
• Higher for stocks, lower for forex
Volume Flow Period (12-35)
• Default: 18 bars
• Smoothing for volume analysis
• Shorter = responsive, longer = smooth
• Match to timeframe used
Section 7: Analysis Frequency Control
Maximum Analysis Points Per Hour (1-5)
• Default: 3
• Limits pattern frequency
• Prevents overtrading
• Scalpers: 4-5, Swing traders: 1-2
Section 8: Target Level Configuration
Target Calculation Method
• Default: Market Adaptive
• Three modes available:
- Fixed: Uses set point distances
- Dynamic: ATR-based calculations
- Market Adaptive: Structure-based levels
Minimum Target/Risk Ratio (1.0-3.0)
• Default: 1.5
• Minimum acceptable reward vs risk
• Higher filters lower probability setups
• Professional standard: 1.5-2.0
Fixed Mode Settings:
• Fixed Target Distance: 50 points default
• Fixed Invalidation Distance: 30 points default
• Use for consistent instruments
Dynamic Mode Settings:
• Dynamic Target Multiplier: 1.8x ATR default
• Dynamic Invalidation Multiplier: 1.0x ATR default
• Adapts to volatility automatically
Market Adaptive Settings:
• Use Structure Levels: True (default)
• Structure Level Buffer: 0.1% default
• Places levels at actual support/resistance
Section 9: Visual Display Settings
Color Theme Options
• Professional (Teal/Red)
- Bullish: Teal (#26a69a)
- Bearish: Red (#ef5350)
- Neutral: Gray (#78909c)
- Best for: Traditional traders, clean appearance
• Dark (Neon Green/Pink)
- Bullish: Neon Green (#00ff88)
- Bearish: Hot Pink (#ff0044)
- Neutral: Dark Gray (#333333)
- Best for: Dark theme users, high contrast
• Light (Green/Red Classic)
- Bullish: Green (#4caf50)
- Bearish: Red (#f44336)
- Neutral: Light Gray (#9e9e9e)
- Best for: Light backgrounds, traditional colors
• Vibrant (Cyan/Magenta)
- Bullish: Cyan (#00ffff)
- Bearish: Magenta (#ff00ff)
- Neutral: Medium Gray (#888888)
- Best for: High visibility, modern appearance
Dashboard Position
• Options: Top Left, Top Right, Bottom Left, Bottom Right, Middle Left, Middle Right
• Default: Top Right
• Choose based on chart layout preference
Dashboard Size
• Full: Complete information display (desktop)
• Mobile: Compact view for small screens
• Default: Full
Analysis Display Style
• Arrows : Simple directional markers
• Labels : Detailed text information
• Zones : Colored areas showing pattern regions
• Default: Labels (most informative)
Display Options:
• Display Analysis Strength: Shows star rating
• Display Target Levels: Shows target/invalidation lines
• Display Market Regime: Shows regime in pattern labels
---
HOW TO USE SMPS - DETAILED GUIDE
Understanding the Dashboard
Top Row - Header
• SMPS Dashboard title
• VALUE column: Current readings
• STATUS column: Condition assessments
Market Regime Row
• Shows: TRENDING, RANGING, VOLATILE, QUIET, or TRANSITIONAL
• Color coding: Green = Favorable, Red = Caution
• Status: FAVORABLE or CAUTION trading conditions
Market Score Row
• Percentage from 0-100%
• Above 60% = Strong conditions
• 40-60% = Moderate conditions
• Below 40% = Weak conditions
Structure Row
• Direction: BULLISH, BEARISH, or NEUTRAL
• Status: INTACT or BREAK
• Orange BREAK indicates structure failure
Volume Flow Row
• Direction: BUYING or SELLING
• Intensity: STRONG or WEAK
• Color indicates dominant pressure
Momentum Row
• Numerical momentum value
• Positive = Upward pressure
• Negative = Downward pressure
Volume Status Row
• INST = Institutional activity detected
• HIGH = Above average volume
• NORM = Normal volume levels
Adaptive Mode Row
• ACTIVE = Parameters adjusting
• STATIC = Fixed parameters
• Shows required confirmations
Analysis Level Row
• Minimum strength level setting
• Pattern separation in bars
Market State Row
• Current analysis: BULLISH, BEARISH, NEUTRAL
• Shows analysis price level when active
T:R Ratio Row
• Current target to risk ratio
• GOOD = Meets minimum requirement
• LOW = Below minimum threshold
Strength Row
• BULL or BEAR dominance
• Numerical strength value 0-100
Price Row
• Current price
• Percentage change
Last Analysis Row
• Previous pattern direction
• Bars since last pattern
Reading Pattern Signals
Bullish Structure Pattern
• Upward triangle or "Bullish Structure" label
• Star rating shows strength (★★★★★ = strongest)
• Green line = potential target level
• Red dashed line = invalidation level
• Appears below price bars
Bearish Structure Pattern
• Downward triangle or "Bearish Structure" label
• Star rating indicates reliability
• Green line = potential target level
• Red dashed line = invalidation level
• Appears above price bars
Pattern Strength Interpretation
• ★★★★★ = 6 confirmations (exceptional)
• ★★★★☆ = 5 confirmations (strong)
• ★★★☆☆ = 4 confirmations (moderate)
• ★★☆☆☆ = 3 confirmations (minimum)
• Below minimum = filtered out
Visual Elements on Chart
Lines and Levels:
• Gray Line = 21 EMA trend reference
• Green Stepline = Dynamic support level
• Red Stepline = Dynamic resistance level
• Green Solid Line = Active target level
• Red Dashed Line = Active invalidation level
Pattern Markers:
• Triangles = Arrow display mode
• Text Labels = Label display mode
• Colored Boxes = Zone display mode
Target Completion Labels:
• "Target" = Price reached target level
• "Invalid" = Pattern invalidated by price
---
RECOMMENDED USAGE BY TIMEFRAME
1-Minute Charts (Scalping)
• Sensitivity: 0.8-1.2
• Noise Reduction: 3-4
• Pattern Separation: 3-5 bars
• High Confirmation: Optional
• Best for: Quick intraday moves
5-Minute Charts (Precision Intraday)
• Sensitivity: 1.0 (default)
• Noise Reduction: 4 (default)
• Pattern Separation: 8 bars
• High Confirmation: Enabled
• Best for: Day trading
15-Minute Charts (Short Swing)
• Sensitivity: 1.0-1.5
• Noise Reduction: 4-5
• Pattern Separation: 10-12 bars
• High Confirmation: Enabled
• Best for: Intraday swings
30-Minute to 1-Hour (Position Trading)
• Sensitivity: 1.5-2.0
• Noise Reduction: 5-7
• Pattern Separation: 15-20 bars
• Regime Period: 75-100
• Best for: Multi-day positions
Daily Charts (Swing Trading)
• Sensitivity: 1.8-2.0
• Noise Reduction: 6-7
• Pattern Separation: 20 bars
• All filters enabled
• Best for: Long-term analysis
---
MARKET-SPECIFIC SETTINGS
Forex Pairs
• Minimum Move: 0.05-0.10%
• Institutional Threshold: 1.5-2.0
• Volume Surge: 1.8-2.2
• Target Mode: Dynamic or Market Adaptive
Stock Indices (ES, NQ, YM)
• Minimum Move: 0.10-0.15%
• Institutional Threshold: 2.0-2.5
• Volume Surge: 2.5-3.0
• Target Mode: Market Adaptive
Individual Stocks
• Minimum Move: 0.15-0.25%
• Institutional Threshold: 2.0-2.5
• Volume Surge: 2.5-3.5
• Target Mode: Dynamic
Cryptocurrency
• Minimum Move: 0.20-0.50%
• Institutional Threshold: 2.5-3.5
• Volume Surge: 3.0-4.5
• Target Mode: Dynamic
• Increase noise reduction
---
PRACTICAL APPLICATION EXAMPLES
Example 1: Strong Trending Market
Dashboard Reading:
• Market Regime: TRENDING
• Market Score: 75%
• Structure: BULLISH, INTACT
• Volume Flow: BUYING, STRONG
• Momentum: +0.45
Interpretation:
• Strong uptrend environment
• Institutional buying present
• Look for bullish patterns as continuation
• Higher probability of success
• Consider using lower sensitivity
Example 2: Range-Bound Conditions
Dashboard Reading:
• Market Regime: RANGING
• Market Score: 35%
• Structure: NEUTRAL
• Volume Flow: SELLING, WEAK
• Momentum: -0.05
Interpretation:
• No clear direction
• Low opportunity environment
• Patterns are less reliable
• Consider waiting for regime change
• Or switch to a range-trading approach
Example 3: Structure Break Alert
Dashboard Reading:
• Previous: BULLISH structure
• Current: Structure BREAK
• Volume: INST flag active
• Momentum: Shifting negative
Interpretation:
• Trend reversal potentially beginning
• Institutional participation detected
• Watch for bearish pattern confirmation
• Adjust bias accordingly
• Increase caution on long positions
Example 4: Volatile Market
Dashboard Reading:
• Market Regime: VOLATILE
• Market Score: 45%
• Adaptive Mode: ACTIVE
• Confirmations: Increased to 6
Interpretation:
• Choppy conditions
• Parameters auto-adjusted
• Fewer but higher quality patterns
• Wider stops may be needed
• Consider reducing position size
Below are a few chart examples of the Smart Money Precision Structure (SMPS) indicator in action.
• Example 1 – Bullish Structure Detection on SOLUSD 5m
• Example 2 – Bearish Structure Detected with Strong Confluence on SOLUSD 5m
---
TROUBLESHOOTING GUIDE
No Patterns Appearing
Check these settings:
• High Confirmation Mode may be too restrictive
• Minimum Strength Level may be too high
• Market Clarity threshold may be too high
• Regime filter may be blocking patterns
• Try increasing sensitivity
Too Many Patterns
Adjust these settings:
• Enable High Confirmation Mode
• Increase Minimum Strength Level to 5
• Increase Pattern Separation
• Reduce Sensitivity below 1.0
• Enable all technical filters
Dashboard Shows "CAUTION"
This indicates:
• Market conditions are unfavorable
• Regime is RANGING or QUIET
• Market score is low
• Consider waiting for better conditions
• Or adjust expectations accordingly
Patterns Not Reaching Targets
Consider:
• Market may be choppy
• Volatility may have changed
• Try Dynamic target mode
• Reduce target/risk ratio requirement
• Check if regime is VOLATILE
---
ALERTS CONFIGURATION
Alert Message Format
Alerts include:
• Pattern type (Bullish/Bearish)
• Strength rating
• Market regime
• Analysis price level
• Target and invalidation levels
• Strength percentage
• Target/Risk ratio
• Educational disclaimer
Setting Up Alerts
• Click Alert button on TradingView
• Select SMPS indicator
• Choose alert frequency
• Customize message if desired
• Alerts fire on pattern detection
---
DATA WINDOW INFORMATION
The Data Window displays:
• Market Regime Score (0-100)
• Market Structure Bias (-1 to +1)
• Bullish Strength (0-100)
• Bearish Strength (0-100)
• Bull Target/Risk Ratio
• Bear Target/Risk Ratio
• Relative Volume
• Momentum Value
• Volume Flow Strength
• Bull Confirmations Count
• Bear Confirmations Count
---
BEST PRACTICES AND TIPS
For Beginners
• Start with default settings
• Use High Confirmation Mode
• Focus on TRENDING regime only
• Paper trade first
• Learn one timeframe thoroughly
For Intermediate Users
• Experiment with sensitivity settings
• Try different target modes
• Use multiple timeframes
• Combine with price action analysis
• Track pattern success rate
For Advanced Users
• Customize per instrument
• Create setting templates
• Use regime information for bias
• Combine with other indicators
• Develop systematic rules
---
IMPORTANT DISCLAIMERS
• This indicator is for educational and informational purposes only
• Not financial advice or a trading system
• Past performance does not guarantee future results
• Trading involves substantial risk of loss
• Always use appropriate risk management
• Verify patterns with additional analysis
• The author is not a registered investment advisor
• No liability accepted for trading losses
---
VERSION NOTES
Version 1.0.0 - Initial Release
• Six-layer confluence system
• Adaptive parameter technology
• Institutional volume detection
• Market regime classification
• Structure break identification
• Real-time dashboard
• Multiple display modes
• Comprehensive settings
## My Final Thoughts
Smart Money Precision Structure represents an advanced approach to market analysis, bringing institutional-grade techniques to retail traders through intelligent automation and multi-dimensional evaluation. By combining six analytical frameworks with adaptive parameter adjustment, SMPS provides comprehensive market intelligence that single indicators cannot achieve.
The indicator serves as an educational tool for understanding how professional traders analyze markets, while providing practical pattern detection for those seeking to improve their technical analysis. Remember that all trading involves risk, and this tool should be used as part of a complete analysis approach, not as a standalone trading system.
- BullByte
Six Meridian Divine Swords [theUltimator5]The Six Meridian Divine Sword is a legendary martial arts technique in the classic wuxia novel “Demi-Gods and Semi-Devils” (天龙八部) by Jin Yong (金庸). The technique uses powerful internal energy (qi) to shoot invisible sword-like energy beams from the six meridians of the hand. Each of the six fingers/meridians corresponds to a “sword,” giving six different sword energies.
The Six Meridian Divine Swords indicator is a compact “signal dashboard” that fuses six classic indicators (fingers)—MACD, KDJ, RSI, LWR (Williams %R), BBI, and MTM—into one pane. Each row is a traffic-light dot (green/bullish, red/bearish, gray/neutral). When all six align, the script draws a confirmation line (“All Bullish” or “All Bearish”). It’s designed for quick consensus reads across trend, momentum, and overbought/oversold conditions.
How to Read the Dashboard
The pane has 6 horizontal rows (explained in depth later):
MACD
KDJ
RSI
LWR (Larry Williams %R)
BBI (Bull & Bear Index)
MTM (Momentum)
Each tick in the row is a dot, with sentiment identified by a color.
Green = bullish condition met
Red = bearish condition met
Gray = inside a neutral band (filtering chop), shown when Use Neutral (Gray) Colors is ON
There are two lines that track the dots on the top or bottom of the pane.
All Bullish Signal Line: appears only if all 6 are strongly bullish (default color = white)
All Bearish Signal Line: appears only if all 6 are strongly bearish (default color = fuchsia)
The Six Meridians (Indicators) — What They Mean:
1) MACD — Trend & Momentum
What it is: A trend-following momentum indicator based on the relationship between two moving averages (typically 12-EMA and 26-EMA)
Logic used: Classic MACD line (EMA12−EMA26) vs its 9-EMA signal.
Bullish: MACD > Signal and |MACD−Signal| > Neutral Threshold
Bearish: MACD < Signal and |diff| > threshold
Neutral: |diff| ≤ threshold
Why: Small crosses can whipsaw. The neutral band ignores tiny separations to reduce noise.
Inputs: Fast/Slow/Signal lengths, Neutral Threshold.
2) KDJ — Stochastic with J-line boost
What it is: A variation of the stochastic oscillator popular in Chinese trading systems
Logic used: K = SMA(Stochastic, smooth), D = SMA(K, smooth), J = 3K − 2D.
Bullish: K > D and |K−D| > 2
Bearish: K < D and |K−D| > 2
Neutral: |K−D| ≤ 2
Why: K–D separation filters tiny wiggles; J offers an “extreme” early-warning context in the value label.
Inputs: Length, Smoothing.
3) RSI — Momentum balance (0–100)
What it is: A momentum oscillator measuring speed and magnitude of price changes (0–100)
Logic used: RSI(N).
Bullish: RSI > 50 + Neutral Zone
Bearish: RSI < 50 − Neutral Zone
Neutral: Between those bands
Why: Centerline/adaptive bands (around 50) give a directional bias without relying on fixed 70/30.
Inputs: Length, Neutral Zone (± around 50).
4) LWR (Williams %R) — Overbought/Oversold
What it is: An oscillator similar to stochastic, measuring how close the close is to the high-low range over N periods
Logic used: %R over N bars (0 to −100).
Bullish: %R > −50 + Neutral Zone
Bearish: %R < −50 − Neutral Zone
Neutral: Between those bands
Why: Uses a centered band around −50 instead of only −20/−80, making it act like a directional filter.
Inputs: Length, Neutral Zone (± around −50).
5) BBI (Bull & Bear Index) — Smoothed trend bias
What it is: A composite moving average, essentially the average of several different moving averages (often 3, 6, 12, 24 periods)
Logic used: Average of 4 SMAs (3/6/12/24 by default):
BBI = (MA3 + MA6 + MA12 + MA24) / 4
Bullish: Close > BBI and |Close−BBI| > 0.2% of BBI
Bearish: Close < BBI and |diff| > threshold
Neutral: |diff| ≤ threshold
Why: Multiple MAs blended together reduce single-MA whipsaw. A dynamic 0.2% band ignores tiny drift.
Inputs: 4 lengths (default 3/6/12/24). Threshold is auto-scaled at 0.2% of BBI.
6) MTM (Momentum) — Rate of change in price
What it is: A simple measure of rate of change
Logic used: MTM = Close − Close
Bullish: MTM > 0.5% of Close
Bearish: MTM < −0.5% of Close
Neutral: |MTM| ≤ threshold
Why: A percent-based gate adapts across prices (e.g., $5 vs $500) and mutes insignificant moves.
Inputs: Length. Threshold auto-scaled to 0.5% of current Close.
Display & Inputs You Can Tweak
🎨 Use Neutral (Gray) Colors
ON (default): 3-color mode with clear “no-trade”/“weak” states.
OFF: classic binary (green/red) without neutral filtering.
BVB dominance bars
Hello everyone, this is my first indicator. these candles shows you who's in control. I like to think its some what close to heikin ashi candles as it shows you the Trend but doesn't average it out. also shows you when there is indecision. please read the instructions on how it works. its not a stand alone strategy. but adds value to your own strategy.
📖 How It Works
The BvB Dominance Bars indicator is a visual tool that colors candles based on market control—whether bulls or bears are in charge. It uses a custom metric comparing the price's relationship to a smoothed moving average (EMA), then normalizes that difference over time to express relative bullish or bearish pressure.
Here’s the breakdown:
Bulls vs Bears Logic:
A short-term EMA (default: 14-period) is used to establish a midpoint reference.
Bull Pressure is calculated as how far the high is above this EMA.
Bear Pressure is how far the low is below this EMA.
These are normalized over a lookback period (default: 120 bars) to produce percentile scores (0–100) for both bulls and bears.
Dominance & Color Coding:
The indicator compares normalized bull and bear scores.
Candles are color-coded based on:
Bright Lime: Strong Bull Dominance (with high confidence)
Soft Lime/Yellow: Moderate Bull Control
Bright Red: Strong Bear Dominance
Soft Red/Yellow: Moderate Bear Control
Gray: Neutral/Low conviction
Optional Live Label:
A small floating label shows who has control: “Bull Control,” “Bear Control,” or “Neutral.”
🧠 How to Use It (Example Strategy)
The BvB Dominance Bars indicator is not a standalone buy/sell signal but a market sentiment overlay. It’s most effective when combined with your own strategy, like price action or trend-following tools.
Here’s an example use case:
🧪 Reversal Confirmation Strategy
Objective: Catch high-probability reversals during key kill zones or supply/demand levels.
Setup:
Mark your key support/resistance zones using your standard method (e.g., FVGs, liquidity sweeps, or ICT PD arrays).
Wait for price to reach one of these zones.
Watch candle colors from the BvB Dominance Bars:
If you expect a bullish reversal, wait for a transition from red/gray candles to lime green or bright lime (bullish dominance taking over).
If you expect a bearish reversal, look for a change from green/gray to red or bright red.
Entry Filter:
Only enter if the dominant color holds for 2+ candles.
Avoid trades when candles are gray or yellow (indecision/neutral).
Exit Option:
Exit if dominance shifts against you (e.g., from lime to red), or use structure-based stops.
⚙️ Settings You Can Adjust:
BvB Period: Controls how fast EMA responds.
Bars Back: Determines how long the normalization looks back.
Thresholds: Influence how strong the dominance must be to change candle color.
✅ Best Used When:
You already have a bias and just want a confirmation of sentiment.
You're trading intraday and want a feel for shifting momentum without relying on noisy indicators.
You want a clean, color-coded overlay to help filter out fakeouts and indecision.
Multiple (12) Strong Buy/Sell Signals + Momentum
Indicator Manual: "Multiple (12) Strong Buy/Sell Signals + Momentum"
This indicator is designed to identify strong buy and sell signals based on 12 configurable conditions, which include a variety of technical analysis methods such as trend-following indicators, pattern recognition, volume analysis, and momentum oscillators. It allows for customizable alerts and visual cues on the chart. The indicator helps traders spot potential entry and exit points by displaying buy and sell signals based on the selected conditions.
Key Observations:
• The script integrates multiple indicators and pattern recognition methods to provide comprehensive buy/sell signals.
• Trend-based indicators like EMAs and MACD are combined with pattern recognition (flags, triangles) and momentum-based signals (RSI, ADX, and volume analysis).
• User customization is a core feature, allowing adjustments to the conditions and thresholds for more tailored signals.
• The script is designed to be responsive to market conditions, with multiple conditions filtering out noise to generate reliable signals.
________________________________________
Key Features:
1. 12 Combined Buy/Sell Signal Conditions: This indicator incorporates a diverse set of conditions based on trend analysis, momentum, and price patterns.
2. Minimum Conditions Input: You can adjust the threshold of conditions that need to be met for the buy/sell signals to appear.
3. Alert Customization: Set alert thresholds for both buy and sell signals.
4. Dynamic Visualization: Buy and sell signals are shown as triangles on the chart, with momentum signals highlighted as circles.
________________________________________
Detailed Description of the 12 Conditions:
1. Exponential Moving Averages (EMA):
o Conditions: The indicator uses EMAs with periods 3, 8, and 13 for quick trend-following signals.
o Bullish Signal: EMA3 > EMA8 > EMA13 (Bullish stack).
o Bearish Signal: EMA3 < EMA8 < EMA13 (Bearish stack).
o Reversal Signal: The crossing over or under of these EMAs can signify trend reversals.
2. MACD (Moving Average Convergence Divergence):
o Fast MACD (2, 7, 3) is used to confirm trends quickly.
o Bullish Signal: When the MACD line crosses above the signal line.
o Bearish Signal: When the MACD line crosses below the signal line.
3. Donchian Channel:
o Tracks the highest high and lowest low over a given period (default 20).
o Breakout Signal: Price breaking above the upper band is bullish; breaking below the lower band is bearish.
4. VWAP (Volume-Weighted Average Price):
o Above VWAP: Bullish condition (price above VWAP).
o Below VWAP: Bearish condition (price below VWAP).
5. EMA Stacking & Reversal:
o Tracks the order of EMAs (3, 8, 13) to confirm strong trends and reversals.
o Bullish Reversal: EMA3 < EMA8 < EMA13 followed by a crossing to bullish.
o Bearish Reversal: EMA3 > EMA8 > EMA13 followed by a crossing to bearish.
6. Bull/Bear Flags:
o Bull Flag: Characterized by a strong price movement (flagpole) followed by a pullback and breakout.
o Bear Flag: Similar to Bull Flag but in the opposite direction.
7. Triangle Patterns (Ascending and Descending):
o Detects ascending and descending triangles using pivot highs and lows.
o Ascending Triangle: Higher lows and flat resistance.
o Descending Triangle: Lower highs and flat support.
8. Volume Sensitivity:
o Identifies price moves with significant volume increases.
o High Volume: When current volume is significantly above the moving average volume (set to 1.2x of the average).
9. Momentum Indicators:
o RSI (Relative Strength Index): Confirms overbought and oversold levels with thresholds set at 65 (overbought) and 35 (oversold).
o ADX (Average Directional Index): Confirms strong trends when ADX > 28.
o Momentum Up: Momentum is upward with strong volume and bullish RSI/ADX conditions.
o Momentum Down: Momentum is downward with strong volume and bearish RSI/ADX conditions.
10. Bollinger & Keltner Squeeze:
o Squeeze Condition: A contraction in both Bollinger Bands and Keltner Channels indicates low volatility, signaling a potential breakout.
o Squeeze Breakout: Price breaking above or below the squeeze bands.
11. 3 Consecutive Candles Condition:
o Bullish: Price rises for three consecutive candles with higher highs and lows.
o Bearish: Price falls for three consecutive candles with lower highs and lows.
12. Williams %R and Stochastic RSI:
o Williams %R: A momentum oscillator with signals when the line crosses certain levels.
o Stochastic RSI: Provides overbought/oversold levels with smoother signals.
o Combined Signals: You can choose whether to require both WPR and StochRSI to signal a buy/sell.
________________________________________
User Inputs (Inputs Tab):
1. Minimum Conditions for Buy/Sell:
o min_conditions: Number of conditions required to trigger a buy/sell signal on the chart (1 to 12).
o Alert_min_conditions: User-defined alert threshold (how many conditions must be met before an alert is triggered).
2. Donchian Channel Settings:
o Show Donchian: Toggle visibility of the Donchian channel.
o Donchian Length: The length of the Donchian Channel (default 20).
3. Bull/Bear Flag Settings:
o Bull Flag Flagpole Strength: ATR multiplier to define the strength of the flagpole.
o Bull Flag Pullback Length: Length of pullback for the bull flag pattern.
o Bull Flag EMA Length: EMA length used to confirm trend during bull flag pattern.
Similar settings exist for Bear Flag patterns.
4. Momentum Indicators:
o RSI Length: Period for calculating the RSI (default 9).
o RSI Overbought: Overbought threshold for the RSI (default 65).
o RSI Oversold: Oversold threshold for the RSI (default 35).
5. Bollinger/Keltner Squeeze Settings:
o Squeeze Width Threshold: The maximum width of the Bollinger and Keltner Bands for squeeze conditions.
6. Stochastic RSI Settings:
o Stochastic RSI Length: The period for calculating the Stochastic RSI.
7. WPR Settings:
o WPR Length: Period for calculating Williams %R (default 14).
________________________________________
User Inputs (Style Tab):
1. Signal Plotting:
o Control the display and colors of the buy/sell signals, momentum indicators, and pattern signals on the chart.
o Buy/Sell Signals: Can be customized with different colors and shapes (triangle up for buys, triangle down for sells).
o Momentum Signals: Custom circle placement for momentum-up or momentum-down signals.
2. Donchian Channel:
o Show Donchian: Toggle visibility of the Donchian upper, lower, and middle bands.
o Band Colors: Choose the color for each band (upper, lower, middle).
________________________________________
How to Use the Indicator:
1. Adjust Minimum Conditions: Set the minimum number of conditions that must be met for a signal to appear. For example, set it to 5 if you want only stronger signals.
2. Set Alert Threshold: Define the number of conditions needed to trigger an alert. This can be different from the minimum conditions for visual signals.
3. Customize Appearance: Modify the colors and styles of the signals to match your preferences.
________________________________________
Conclusion:
This comprehensive trading indicator uses a combination of trend-following, pattern recognition, and momentum-based conditions to help you spot potential buy and sell opportunities. By adjusting the input settings, you can fine-tune it to match your specific trading strategy, making it a versatile tool for different market conditions.
Signal Reliability Based on Condition Count
The reliability of the buy/sell signals increases as more conditions are met. Here's a breakdown of the probabilities:
1. 1-3 Conditions Met: Lower Probability
o Signals that meet only 1-3 conditions tend to have lower reliability and are considered less probable. These signals may represent false positives or weaker market movements, and traders should approach them with caution.
2. 4 Conditions Met: More Reliable Signal
o When 4 conditions are met, the signal becomes more reliable. This indicates that multiple indicators or market patterns are aligning, increasing the likelihood of a valid buy/sell opportunity. While not foolproof, it's a stronger indication that the market may be moving in a particular direction.
3. 5-6 Conditions Met: Strong Signal
o A signal meeting 5-6 conditions is considered a strong signal. This indicates a well-confirmed move, with several technical indicators and market factors aligning to suggest a higher probability of success. These are the signals that traders often prioritize.
4. 7+ Conditions Met: Rare and High-Confidence Signal
o Signals that meet 7 or more conditions are rare and should be considered high-confidence signals. These represent a significant alignment of multiple factors, and while they are less frequent, they are highly reliable when they do occur. Traders can be more confident in acting on these signals, but they should still monitor market conditions for confirmation.
________________________________________
You can adjust the number of conditions as needed, but this breakdown should give a clear structure on how the signal strength correlates with the number of conditions met!
AI Momentum [YinYang]Overview:
AI Momentum is a kernel function based momentum Indicator. It uses Rational Quadratics to help smooth out the Moving Averages, this may give them a more accurate result. This Indicator has 2 main uses, first it displays ‘Zones’ that help you visualize the potential movement areas and when the price is out of bounds (Overvalued or Undervalued). Secondly it creates signals that display the momentum of the current trend.
The Zones are composed of the Highest Highs and Lowest lows turned into a Rational Quadratic over varying lengths. These create our Rational High and Low zones. There is however a second zone. The second zone is composed of the avg of the Inner High and Inner Low zones (yellow line) and the Rational Quadratic of the current Close. This helps to create a second zone that is within the High and Low bounds that may represent momentum changes within these zones. When the Rationalized Close crosses above the High and Low Zone Average it may signify a bullish momentum change and vice versa when it crosses below.
There are 3 different signals created to display momentum:
Bullish and Bearish Momentum. These signals display when there is current bullish or bearish momentum happening within the trend. When the momentum changes there will likely be a lull where there are neither Bullish or Bearish momentum signals. These signals may be useful to help visualize when the momentum has started and stopped for both the bulls and the bears. Bullish Momentum is calculated by checking if the Rational Quadratic Close > Rational Quadratic of the Highest OHLC4 smoothed over a VWMA. The Bearish Momentum is calculated by checking the opposite.
Overly Bullish and Bearish Momentum. These signals occur when the bar has Bullish or Bearish Momentum and also has an Rationalized RSI greater or less than a certain level. Bullish is >= 57 and Bearish is <= 43. There is also the option to ‘Factor Volume’ into these signals. This means, the Overly Bullish and Bearish Signals will only occur when the Rationalized Volume > VWMA Rationalized Volume as well as the previously mentioned factors above. This can be useful for removing ‘clutter’ as volume may dictate when these momentum changes will occur, but it can also remove some of the useful signals and you may miss the swing too if the volume just was low. Overly Bullish and Bearish Momentum may dictate when a momentum change will occur. Remember, they are OVERLY Bullish and Bearish, meaning there is a chance a correction may occur around these signals.
Bull and Bear Crosses. These signals occur when the Rationalized Close crosses the Gaussian Close that is 2 bars back. These signals may show when there is a strong change in momentum, but be careful as more often than not they’re predicting that the momentum may change in the opposite direction.
Tutorial:
As we can see in the example above, generally what happens is we get the regular Bullish or Bearish momentum, followed by the Rationalized Close crossing the Zone average and finally the Overly Bullish or Bearish signals. This is normally the order of operations but isn’t always how it happens as sometimes momentum changes don’t make it that far; also the Rationalized Close and Zone Average don’t follow any of the same math as the Signals which can result in differing appearances. The Bull and Bear Crosses are also quite sporadic in appearance and don’t generally follow any sort of order of operations. However, they may occur as a Predictor between Bullish and Bearish momentum, signifying the beginning of the momentum change.
The Bull and Bear crosses may be a Predictor of momentum change. They generally happen when there is no Bullish or Bearish momentum happening; and this helps to add strength to their prediction. When they occur during momentum (orange circle) there is a less likely chance that it will happen, and may instead signify the exact opposite; it may help predict a large spike in momentum in the direction of the Bullish or Bearish momentum. In the case of the orange circle, there is currently Bearish Momentum and therefore the Bull Cross may help predict a large momentum movement is about to occur in favor of the Bears.
We have disabled signals here to properly display and talk about the zones. As you can see, Rationalizing the Highest Highs and Lowest Lows over 2 different lengths creates inner and outer bounds that help to predict where parabolic movement and momentum may move to. Our Inner and Outer zones are great for seeing potential Support and Resistance locations.
The secondary zone, which can cross over and change from Green to Red is also a very important zone. Let's zoom in and talk about it specifically.
The Middle Zone Crosses may help deduce where parabolic movement and strong momentum changes may occur. Generally what may happen is when the cross occurs, you will see parabolic movement to the High / Low zones. This may be the Inner zone but can sometimes be the outer zone too. The hard part is sometimes it can be a Fakeout, like displayed with the Blue Circle. The Cross doesn’t mean it may move to the opposing side, sometimes it may just be predicting Parabolic movement in a general sense.
When we turn the Momentum Signals back on, we can see where the Fakeout occurred that it not only almost hit the Inner Low Zone but it also exhibited 2 Overly Bearish Signals. Remember, Overly bearish signals mean a momentum change in favor of the Bulls may occur soon and overly Bullish signals mean a momentum change in favor of the Bears may occur soon.
You may be wondering, well what does “may occur soon” mean and how do we tell?
The purpose of the momentum signals is not only to let you know when Momentum has occurred and when it is still prevalent. It also matters A LOT when it has STOPPED!
In this example above, we look at when the Overly Bullish and Bearish Momentum has STOPPED. As you can see, when the Overly Bullish or Bearish Momentum stopped may be a strong predictor of potential momentum change in the opposing direction.
We will conclude our Tutorial here, hopefully this Indicator has been helpful for showing you where momentum is occurring and help predict how far it may move. We have been dabbling with and are planning on releasing a Strategy based on this Indicator shortly.
Settings:
1. Momentum:
Show Signals: Sometimes it can be difficult to visualize the zones with signals enabled.
Factor Volume: Factor Volume only applies to Overly Bullish and Bearish Signals. It's when the Volume is > VWMA Volume over the Smoothing Length.
Zone Inside Length: The Zone Inside is the Inner zone of the High and Low. This is the length used to create it.
Zone Outside Length: The Zone Outside is the Outer zone of the High and Low. This is the length used to create it.
Smoothing length: Smoothing length is the length used to smooth out our Bullish and Bearish signals, along with our Overly Bullish and Overly Bearish Signals.
2. Kernel Settings:
Lookback Window: The number of bars used for the estimation. This is a sliding value that represents the most recent historical bars. Recommended range: 3-50.
Relative Weighting: Relative weighting of time frames. As this value approaches zero, the longer time frames will exert more influence on the estimation. As this value approaches infinity, the behavior of the Rational Quadratic Kernel will become identical to the Gaussian kernel. Recommended range: 0.25-25.
Start Regression at Bar: Bar index on which to start regression. The first bars of a chart are often highly volatile, and omission of these initial bars often leads to a better overall fit. Recommended range: 5-25.
If you have any questions, comments, ideas or concerns please don't hesitate to contact us.
HAPPY TRADING!
Dee_MeterHere's how you can effectively use the Dee Meter indicator:
1. **Understanding the Basics**:
- Dee Meter evaluates the market sentiment across various sectors.
- It calculates the overall market trend and presents it in percentage form through a line graph.
2. **Indicator Results**:
- When you add the Dee Meter indicator to your chart, you'll notice two key results: Bull and Bear percentages, along with a line graph.
- The Bull percentage reflects the strength of bullish (positive) sentiment, while the Bear percentage indicates bearish (negative) sentiment.
- For example, if the Bull percentage is 55% and the Bear percentage is 45%, it signifies that the bulls currently have a stronger influence in the market.
3. **Interpreting Percentages**:
- Utilize the Bull and Bear percentages to craft your analysis strategy.
- A high Bull percentage in a bullish market suggests strong bullish momentum.
- In the case of a bullish trend showing signs of weakening (e.g., a double top pattern), monitor the Bull and Bear percentages for early reversal indications.
- A decrease in the Bull percentage and an increase in the Bear percentage could hint at a potential market reversal.
4. **Line Graph Analysis**:
- The line graph visually depicts the strength of bulls (green line) and bears (red line) over time.
- During a bullish trend, the green line rises while the red line remains lower, indicating bullish strength.
- Conversely, during a bearish trend, the red line climbs higher, indicating bearish dominance.
5. **Cross Over and Cross Under**:
- Cross-over and cross-under scenarios occur when the market abruptly reverses direction.
- For instance, in a bullish market that suddenly turns bearish, the red line could cross above the green line, indicating increased bearish power.
- In a bearish market that experiences a sudden influx of buying activity, the green line might cross above the red line, signifying strong buying interest.
6. **Applying the Indicator**:
- Use the Dee Meter to build your own trading strategies and make informed decisions.
- Keep an eye on changes in Bull and Bear percentages to identify shifts in market sentiment.
- Monitor line graph movements to assess the relative strength of bulls and bears.
In summary, the Dee Meter indicator is a valuable tool for assessing market sentiment and confirming trends in the Indian market. By understanding and utilizing the Bull and Bear percentages, line graph analysis, and cross-over/cross-under scenarios, you can develop effective trading strategies and trade with greater confidence.
RedK EVEREX - Effort Versus Results ExplorerRedK EVEREX is an experimental indicator that explores "Volume Price Analysis" basic concepts and Wyckoff law "Effort versus Result" - by inspecting the relative volume (effort) and the associated (relative) price action (result) for each bar - showing the analysis as an easy to read "stacked bands" visual. From that analysis, we calculate a "Relative Rate of Flow" - an easy to use +100/-100 oscilator that can be used to trigger a signal when a bullish or bearish mode is detected for a certain user-selected length of bars.
Basic Concepts of VPA
-------------------------------
(The topics of VPA & Wyckoff Effort vs Results law are too comprehensive to cover here - So here's just a very basic summary - please review these topics in detail in various sources available here in TradingView or on the web)
* Volume Price Analysis (VPA) is the examination of the number of shares or contracts of a security that have been traded in a given period, and the associated price movement. By analyzing trends in volume in conjunction with price movements, traders can determine the significance of changes in price and what may unfold in the near future.
* Oftentimes, high volumes of trading can infer a lot about investors’ outlook on a market or security. A significant price increase along with a significant volume increase, for example, could be a credible sign of a continued bullish trend or a bullish reversal. Adversely, a significant price decrease with a significant volume increase can point to a continued bearish trend or a bearish trend reversal.
* Incorporating volume into a trading decision can help an investor to have a more balanced view of all the broad market factors that could be influencing a security’s price, which helps an investor to make a more informed decision.
* Wyckoff's law "Effort versus results" dictates that large effort is expected to be accompanied with big results - which means that we should expect to see a big price move (result) associated with a large relative volume (effort) for a certain trading period (bar).
* The way traders use this concept in chart analysis is to mainly look for imbalances or invalidation. for example, when we observe a large relative volume that is associated with very limited price change - that should trigger an early flag/warning sign that the current price trend is facing challenges and may be an early sign of "reversal" - this applies in both bearish and bullish conditions. on the other hand, when price starts to trend in a certain direction and that's associated with increasing volume, that can act as kind of validation, or a confirmation that the market supports that move.
How does EVEREX work
---------------------------------
* EVEREX inspects each bar and calculates a relative value for volume (effort) and "strength of price movement" (result) compared to a specified lookback period. The results are then visualized as stacked bands - the lower band represents the relative volume, the upper band represents the relative price strength - with clear color coding for easier analysis.
* The scale of the band is initially set to 100 (each band can occupy up to 50) - and that can be changed in the settings to 200 or 400 - mainly to allow a "zoom in" on the bands.
* Reading the resulting stacked bands makes it easier to see "balanced" volume/price action (where both bands are either equally strong, or equally weak), or when there's imbalance between volume and price (for example, a compression bar will show with high volume band and very small/tiny price action band) - another favorite pattern in VPA is the "Ease of Move", which will show as a relatively small volume band associated with a large "price action band" (either bullish or bearish) .. and so on.
* a bit of a techie piece: why the use of a custom "Normalize()" function to calculate "relative" values in EVEREX?
When we evaluate a certain value against an average (for example, volume) we need a mechanism to deal with "super high" values that largely exceed that average - I also needed a mechanism that mimics how a trader looks at a volume bar and decides that this volume value is super low, low, average, above average, high or super high -- the issue with using a stoch() function, which is the usual technique for comparing a data point against a lookback average, is that this function will produce a "zero" for low values, and cause a large distortion of the next few "ratios" when super large values occur in the data series - i researched multiple techniques here and decided to use the custom Normalize() function - and what i found is, as long as we're applying the same formula consistently to the data series, since it's all relative to itself, we can confidently use the result. Please feel free to play around with this part further if you like - the code is commented for those who would like to research this further.
* Overall, the hope is to make the bar-by-bar analysis easier and faster for traders who apply VPA concepts in their trading
What is RROF?
--------------------------
* Once we have the values of relative volume and relative price strength, it's easy from there to combine these values into a moving index that can be used to track overall strength and detect reversals in market direction - if you think about it this a very similar concept to a volume-weighted RSI. I call that index the "Relative Rate of Flow" - or RROF (cause we're not using the direct volume and price values in the calculation, but rather relative values that we calculated with the proprietary "Normalize" function in the script.
* You can show RROF as a single or double-period - and you can customize it in terms of smoothing, and signal line - and also utilize the basic alerts to get notified when a change in strength from one side to the other (bullish vs bearish) is detected
* In the chart above, you can see how the RROF was able to detect change in market condition from Bearsh to Bullish - then from Bullish to Bearish for TSLA with good accuracy.
Other Usage Options in EVEREX
------------------------------------
* I wrote EVEREX with a lot of flexibility and utilization in mind, while focusing on a clean and easy to use visual - EVEREX should work with any time frame and any instrument - in instruments with no volume data, only price data will be used.
* You can completely hide the "EVEREX bands" and use EVEREX as a single or dual period strength indicator (by exposing the Bias/Sentiment plot which is hidden by default) -
here's how this setup would look like - in this mode, you will basically be using EVEREX the same way you're using a volume-weighted RSI
* or you can hide the bias/sentiment, and expose the Bulls & Bears plots (using the indicator's "Style" tab), and trade it like a Bull/Bear Pressure Index like this
* you can choose Moving Average type for most plot elements in EVEREX, including how to deal with the Lookback averaging
* you can set EVEREX to a different time frame than the chart
* did i mention basic alerts in this v1.0 ?? There's room to add more VPA-specific alerts in future version (for example, when Ease-of-Move or Compression bars are detected...etc) - let me know if the comments what you want to see
Final Thoughts
--------------------
* EVEREX can be used for bar-by-bar VPA analysis - There are so much literature out there about VPA and it's highly recommended that traders read more about what VPA is and how it works - as it adds an interesting (and critical) dimension to technical analysis and will improve decision making
* RROF is a "strength indicator" - it does not track price values (levels) or momentum - as you will see when you use it, the price can be moving up, while the RROF signal line starts moving down, reflecting decreasing strength (or otherwise, increasing bear strength) - So if you incorporate EVEREX in your trading you will need to use it alongside other momentum and price value indicators (like MACD, MA's, Trend Channels, Support & Resistance Lines, Fib / Donchian..etc) - to use for trade confirmation
Bar metrics / quantifytools— Overview
Rather than eyeball evaluating bullishness/bearishness in any given bar, bar metrics allow a quantified approach using three basic fundamental data points: relative close, relative volatility and relative volume. These data points are visualized in a discreet data dashboard form, next to all real-time bars. Each value also has a dot in front, representing color coded extremes in the values.
Relative close represents position of bar's close relative to high and low, high of bar being 100% and low of bar being 0%. Relative close indicates strength of bulls/bears in a given bar, the higher the better for bulls, the lower the better for bears. Relative volatility (bar range, high - low) and relative volume are presented in a form of a multiplier, relative to their respective moving averages (SMA 20). A value of 1x indicates volume/volatility being on par with moving average, 2x indicates volume/volatility being twice as much as moving average and so on. Relative volume and volatility can be used for measuring general market participant interest, the "weight of the bar" as it were.
— Features
Users can gauge past bar metrics using lookback via input menu. Past bars, especially recent ones, are helpful for giving context for current bar metrics. Lookback bars are highlighted on the chart using a yellow box and metrics presented on the data dashboard with lookback symbols:
To inspect bar metric data and its implications, users can highlight bars with specified bracket values for each metric:
When bar highlighter is toggled on and desired bar metric values set, alert for the specified combination can be toggled on via alert menu. Note that bar highlighter must be enabled in order for alerts to function.
— Visuals
Bar metric dots are gradient colored the following way:
Relative volatility & volume
0x -> 1x / Neutral (white) -> Light (yellow)
1x -> 1.7x / Light (yellow) -> Medium (orange)
1.7x -> 2.4x / Medium (orange) -> Heavy (red)
Relative close
0% -> 25% / Heavy bearish (red) -> Light bearish (dark red)
25% -> 45% / Light bearish (dark red) -> Neutral (white)
45% - 55% / Neutral (white)
55% -> 75% / Neutral (white) -> Light bullish (dark green)
75% -> 100% / Light bullish (dark green) -> Heavy bullish (green)
All colors can be adjusted via input menu. Label size, label distance from bar (offset) and text format (regular/stealth) can be adjusted via input menu as well:
— Practical guide
As interpretation of bar metrics is highly contextual, it is especially important to use other means in conjunction with the metrics. Levels, oscillators, moving averages, whatever you have found useful for your process. In short, relative close indicates directional bias and relative volume/volatility indicates "weight" of directional bias.
General interpretation
High relative close, low relative volume/volatility = mildly bullish, bias up/consolidation
High relative close, medium relative volume/volatility = bullish, bias up
High relative close, high relative volume/volatility = exuberantly bullish, bias up/down depending on context
Medium relative close, low relative volume/volatility = noise, no bias
Medium relative close, medium to high relative volume/volatility = indecision, further evidence needed to evaluate bias
Low relative close, low relative volume/volatility = mildly bearish, bias down/consolidation
Low relative close, medium relative volume/volatility = bearish, bias down
Low relative close, high relative volume/volatility = exuberantly bearish, bias down/up depending on context
Nuances & considerations
As to relative close, it's important to note that each bar is a trading range when viewed on a lower timeframe, ES 1W vs. ES 4H:
When relative close is high, bulls were able to push price to range high by the time of close. When relative close is low, bears were able to push price to range low by the time of close. In other words, bulls/bears were able to gain the upper hand over a given trading range, hinting strength for the side that made the final push. When relative close is around middle range (40-60%), it can be said neither side is clearly dominating the range, hinting neutral/indecision bias from a relative close perspective.
As to relative volume/volatility, low values (less than ~0.7x) imply bar has low market participant interest and therefore is likely insignificant, as it is "lacking weight". Values close to or above 1x imply meaningful market participant interest, whereas values well above 1x (greater than ~1.3x) imply exuberance. This exuberance can manifest as initiation (beginning of a trend) or as exhaustion (end of a trend):






















