This indicator plots buy and sell signals on the price chart overlay using Supertrend as the primary trend filter combined with multiple moving average crossover strategies.
//@version=6
indicator("Quantum Queen X + Supertrend Signal", overlay=true)
// =============================================================================
// 1. SUPERTREND SETTINGS (REPLACING TIME FILTER AS MAIN TREND)
// =============================================================================
atrPeriod = input.int(10, "Supertrend ATR Period", group="1. Supertrend (Main Trend Filter)")
atrMultiplier = input.float(3.0, "Supertrend Multiplier", step=0.1, group="1. Supertrend (Main Trend Filter)")
useSupertrend = input.bool(true, "Enable Supertrend Filter", group="1. Supertrend (Main Trend Filter)")
// =============================================================================
// 2. DIRECTION & PRESET MODES
// =============================================================================
presetMode = input.string("IC/VT Markets High Risk", "Preset Selection", options=["IC/VT Markets High Risk", "IC/VT Markets Medium Risk", "IC/VT Markets Low Risk", "RoboForex ECN", "Fusion Markets Zero", "All 12 Strategies", "Custom"], group="2. Presets & Direction")
dirMode = input.string("Both Directions (Per Strategy Bias)", "Direction Mode", options=["Both Directions (Per Strategy Bias)", "Dynamic (Trend Follows Supertrend)", "Buy Only", "Sell Only"], group="2. Presets & Direction")
minBarsCooldown = input.int(5, "Min Bars Cooldown Between Signals", minval=1, group="2. Presets & Direction")
// =============================================================================
// 3. STRATEGY SELECTION TOGGLES (FOR CUSTOM PRESET)
// =============================================================================
s01_on = input.bool(true, "S01: M6(18) + M15(16) [BUY]", group="3. Strategy Selection (Custom)")
s02_on = input.bool(true, "S02: M15(14) + M20(20) [BUY]", group="3. Strategy Selection (Custom)")
s03_on = input.bool(true, "S03: M15(26) + M15(24) [BUY]", group="3. Strategy Selection (Custom)")
s04_on = input.bool(true, "S04: M15(20) + M20(22) [BUY]", group="3. Strategy Selection (Custom)")
s05_on = input.bool(true, "S05: M1(18) + M15(18) [SELL]", group="3. Strategy Selection (Custom)")
s06_on = input.bool(true, "S06: M10(30) + M30(28) [SELL]", group="3. Strategy Selection (Custom)")
s07_on = input.bool(false, "S07: M1(20) + M20(16) [BUY]", group="3. Strategy Selection (Custom)")
s08_on = input.bool(true, "S08: M1(12) + H1(20) [BUY]", group="3. Strategy Selection (Custom)")
s09_on = input.bool(true, "S09: M12(18) + M15(12) [BUY]", group="3. Strategy Selection (Custom)")
s10_on = input.bool(true, "S10: M10(20) + M15(10) [BUY]", group="3. Strategy Selection (Custom)")
s11_on = input.bool(false, "S11: M10(30) + M30(28) [SELL]", group="3. Strategy Selection (Custom)")
s12_on = input.bool(true, "S12: M12(10) + M15(20) [SELL]", group="3. Strategy Selection (Custom)")
// =============================================================================
// 4. RISK & TARGET VISUALIZATION
// =============================================================================
showTPSL = input.bool(true, "Show TP/SL Level on Signal", group="4. TP/SL Targets")
tpPoints = input.float(50.0, "Take Profit Distance (Pips / Gold $0.1)", step=5.0, group="4. TP/SL Targets")
slPoints = input.float(30.0, "Stop Loss Distance (Pips / Gold $0.1)", step=5.0, group="4. TP/SL Targets")
showDashboard = input.bool(true, "Show Quantum Status Dashboard", group="5. Dashboard")
// =============================================================================
// 5. SUPERTREND CALCULATION
// =============================================================================
[stValue, stDirection] = ta.supertrend(atrMultiplier, atrPeriod)
isUptrend = stDirection < 0
isDowntrend = stDirection > 0
// =============================================================================
// 6. MULTI-TIMEFRAME DEMARKER ENGINE
// =============================================================================
f_demarker(int len) =>
float deMax = high > high[1] ? high - high[1] : 0.0
float deMin = low < low[1] ? low[1] - low : 0.0
float avgDeMax = ta.sma(deMax, len)
float avgDeMin = ta.sma(deMin, len)
float denom = avgDeMax + avgDeMin
denom != 0 ? avgDeMax / denom : 0.5
// Fetch Multi-Timeframe DeMarker values
dem_m1_12 = request.security(syminfo.tickerid, "1", f_demarker(12), gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_off)
dem_m1_18 = request.security(syminfo.tickerid, "1", f_demarker(18), gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_off)
dem_m1_20 = request.security(syminfo.tickerid, "1", f_demarker(20), gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_off)
dem_m6_18 = request.security(syminfo.tickerid, "6", f_demarker(18), gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_off)
dem_m10_20 = request.security(syminfo.tickerid, "10", f_demarker(20), gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_off)
dem_m10_30 = request.security(syminfo.tickerid, "10", f_demarker(30), gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_off)
dem_m12_10 = request.security(syminfo.tickerid, "12", f_demarker(10), gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_off)
dem_m12_18 = request.security(syminfo.tickerid, "12", f_demarker(18), gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_off)
dem_m15_10 = request.security(syminfo.tickerid, "15", f_demarker(10), gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_off)
dem_m15_12 = request.security(syminfo.tickerid, "15", f_demarker(12), gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_off)
dem_m15_14 = request.security(syminfo.tickerid, "15", f_demarker(14), gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_off)
dem_m15_16 = request.security(syminfo.tickerid, "15", f_demarker(16), gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_off)
dem_m15_18 = request.security(syminfo.tickerid, "15", f_demarker(18), gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_off)
dem_m15_20 = request.security(syminfo.tickerid, "15", f_demarker(20), gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_off)
dem_m15_24 = request.security(syminfo.tickerid, "15", f_demarker(24), gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_off)
dem_m15_26 = request.security(syminfo.tickerid, "15", f_demarker(26), gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_off)
dem_m20_16 = request.security(syminfo.tickerid, "20", f_demarker(16), gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_off)
dem_m20_20 = request.security(syminfo.tickerid, "20", f_demarker(20), gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_off)
dem_m20_22 = request.security(syminfo.tickerid, "20", f_demarker(22), gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_off)
dem_m30_28 = request.security(syminfo.tickerid, "30", f_demarker(28), gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_off)
dem_h1_20 = request.security(syminfo.tickerid, "60", f_demarker(20), gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_off)
// Helper: Direction evaluator
f_demDir(float val, float upper, float lower) =>
val > upper ? 1 : (val < lower ? -1 : 0)
// =============================================================================
// 7. PRESET ACTIVE STATUS LOGIC
// =============================================================================
f_isStratActive(int idx) =>
bool active = false
if presetMode == "Custom"
active := (idx == 0 and s01_on) or (idx == 1 and s02_on) or (idx == 2 and s03_on) or (idx == 3 and s04_on) or (idx == 4 and s05_on) or (idx == 5 and s06_on) or (idx == 6 and s07_on) or (idx == 7 and s08_on) or (idx == 8 and s09_on) or (idx == 9 and s10_on) or (idx == 10 and s11_on) or (idx == 11 and s12_on)
else if presetMode == "IC/VT Markets High Risk"
active := idx == 0 or idx == 1 or idx == 2 or idx == 4 or idx == 5 or idx == 7 or idx == 8 or idx == 9 or idx == 11
else if presetMode == "IC/VT Markets Medium Risk"
active := idx == 0 or idx == 1 or idx == 2 or idx == 4 or idx == 5 or idx == 7 or idx == 8 or idx == 11
else if presetMode == "IC/VT Markets Low Risk"
active := idx == 0 or idx == 1 or idx == 2 or idx == 4 or idx == 7 or idx == 8 or idx == 11
else if presetMode == "RoboForex ECN"
active := idx == 0 or idx == 1 or idx == 2 or idx == 4 or idx == 5 or idx == 7 or idx == 8 or idx == 9 or idx == 11
else if presetMode == "Fusion Markets Zero"
active := idx == 0 or idx == 2 or idx == 3 or idx == 4 or idx == 7 or idx == 8 or idx == 11
else if presetMode == "All 12 Strategies"
active := true
active
// =============================================================================
// 8. 12 STRATEGIES EVALUATION
// =============================================================================
// Calculate dual DeMarker signals for each strategy
s01_sig = f_demDir(dem_m6_18, 0.7, 0.3) == f_demDir(dem_m15_16, 0.7, 0.3) ? f_demDir(dem_m6_18, 0.7, 0.3) : 0
s02_sig = f_demDir(dem_m15_14, 0.7, 0.3) == f_demDir(dem_m20_20, 0.7, 0.3) ? f_demDir(dem_m15_14, 0.7, 0.3) : 0
s03_sig = f_demDir(dem_m15_26, 0.7, 0.3) == f_demDir(dem_m15_24, 0.7, 0.3) ? f_demDir(dem_m15_26, 0.7, 0.3) : 0
s04_sig = f_demDir(dem_m15_20, 0.7, 0.3) == f_demDir(dem_m20_22, 0.7, 0.3) ? f_demDir(dem_m15_20, 0.7, 0.3) : 0
s05_sig = f_demDir(dem_m1_18, 0.7, 0.3) == f_demDir(dem_m15_18, 0.7, 0.3) ? f_demDir(dem_m1_18, 0.7, 0.3) : 0
s06_sig = f_demDir(dem_m10_30, 0.7, 0.3) == f_demDir(dem_m30_28, 0.7, 0.3) ? f_demDir(dem_m10_30, 0.7, 0.3) : 0
s07_sig = f_demDir(dem_m1_20, 0.9, 0.3) == f_demDir(dem_m20_16, 0.7, 0.3) ? f_demDir(dem_m1_20, 0.9, 0.3) : 0
s08_sig = f_demDir(dem_m1_12, 0.5, 0.3) == f_demDir(dem_h1_20, 0.9, 0.3) ? f_demDir(dem_m1_12, 0.5, 0.3) : 0
s09_sig = f_demDir(dem_m12_18, 0.9, 0.3) == f_demDir(dem_m15_12, 0.9, 0.3) ? f_demDir(dem_m12_18, 0.9, 0.3) : 0
s10_sig = f_demDir(dem_m10_20, 0.7, 0.3) == f_demDir(dem_m15_10, 0.9, 0.3) ? f_demDir(dem_m10_20, 0.7, 0.3) : 0
s11_sig = f_demDir(dem_m10_30, 0.7, 0.3) == f_demDir(dem_m30_28, 0.7, 0.3) ? f_demDir(dem_m10_30, 0.7, 0.3) : 0
s12_sig = f_demDir(dem_m12_10, 0.7, 0.1) == f_demDir(dem_m15_20, 0.7, 0.3) ? f_demDir(dem_m12_10, 0.7, 0.1) : 0
// Strategy Direction Bias (Original QQ: S1-S4, S7-S10 = Buy; S5, S6, S11, S12 = Sell)
f_allowedDir(int idx) =>
if dirMode == "Buy Only"
1
else if dirMode == "Sell Only"
-1
else if dirMode == "Dynamic (Trend Follows Supertrend)"
isUptrend ? 1 : (isDowntrend ? -1 : 0)
else // Both Directions (Per Strategy Bias)
(idx == 4 or idx == 5 or idx == 10 or idx == 11) ? -1 : 1
// Check triggering for each strategy
bool buyTriggered = false
bool sellTriggered = false
string trigTag = ""
if f_isStratActive(0) and s01_sig != 0 and s01_sig == f_allowedDir(0)
if s01_sig == 1 and (not useSupertrend or isUptrend)
buyTriggered := true
trigTag := trigTag + "[S1] "
if s01_sig == -1 and (not useSupertrend or isDowntrend)
sellTriggered := true
trigTag := trigTag + "[S1] "
if f_isStratActive(1) and s02_sig != 0 and s02_sig == f_allowedDir(1)
if s02_sig == 1 and (not useSupertrend or isUptrend)
buyTriggered := true
trigTag := trigTag + "[S2] "
if s02_sig == -1 and (not useSupertrend or isDowntrend)
sellTriggered := true
trigTag := trigTag + "[S2] "
if f_isStratActive(2) and s03_sig != 0 and s03_sig == f_allowedDir(2)
if s03_sig == 1 and (not useSupertrend or isUptrend)
buyTriggered := true
trigTag := trigTag + "[S3] "
if s03_sig == -1 and (not useSupertrend or isDowntrend)
sellTriggered := true
trigTag := trigTag + "[S3] "
if f_isStratActive(3) and s04_sig != 0 and s04_sig == f_allowedDir(3)
if s04_sig == 1 and (not useSupertrend or isUptrend)
buyTriggered := true
trigTag := trigTag + "[S4] "
if s04_sig == -1 and (not useSupertrend or isDowntrend)
sellTriggered := true
trigTag := trigTag + "[S4] "
if f_isStratActive(4) and s05_sig != 0 and s05_sig == f_allowedDir(4)
if s05_sig == 1 and (not useSupertrend or isUptrend)
buyTriggered := true
trigTag := trigTag + "[S5] "
if s05_sig == -1 and (not useSupertrend or isDowntrend)
sellTriggered := true
trigTag := trigTag + "[S5] "
if f_isStratActive(5) and s06_sig != 0 and s06_sig == f_allowedDir(5)
if s06_sig == 1 and (not useSupertrend or isUptrend)
buyTriggered := true
trigTag := trigTag + "[S6] "
if s06_sig == -1 and (not useSupertrend or isDowntrend)
sellTriggered := true
trigTag := trigTag + "[S6] "
if f_isStratActive(6) and s07_sig != 0 and s07_sig == f_allowedDir(6)
if s07_sig == 1 and (not useSupertrend or isUptrend)
buyTriggered := true
trigTag := trigTag + "[S7] "
if s07_sig == -1 and (not useSupertrend or isDowntrend)
sellTriggered := true
trigTag := trigTag + "[S7] "
if f_isStratActive(7) and s08_sig != 0 and s08_sig == f_allowedDir(7)
if s08_sig == 1 and (not useSupertrend or isUptrend)
buyTriggered := true
trigTag := trigTag + "[S8] "
if s08_sig == -1 and (not useSupertrend or isDowntrend)
sellTriggered := true
trigTag := trigTag + "[S8] "
if f_isStratActive(8) and s09_sig != 0 and s09_sig == f_allowedDir(8)
if s09_sig == 1 and (not useSupertrend or isUptrend)
buyTriggered := true
trigTag := trigTag + "[S9] "
if s09_sig == -1 and (not useSupertrend or isDowntrend)
sellTriggered := true
trigTag := trigTag + "[S9] "
if f_isStratActive(9) and s10_sig != 0 and s10_sig == f_allowedDir(9)
if s10_sig == 1 and (not useSupertrend or isUptrend)
buyTriggered := true
trigTag := trigTag + "[S10] "
if s10_sig == -1 and (not useSupertrend or isDowntrend)
sellTriggered := true
trigTag := trigTag + "[S10] "
if f_isStratActive(10) and s11_sig != 0 and s11_sig == f_allowedDir(10)
if s11_sig == 1 and (not useSupertrend or isUptrend)
buyTriggered := true
trigTag := trigTag + "[S11] "
if s11_sig == -1 and (not useSupertrend or isDowntrend)
sellTriggered := true
trigTag := trigTag + "[S11] "
if f_isStratActive(11) and s12_sig != 0 and s12_sig == f_allowedDir(11)
if s12_sig == 1 and (not useSupertrend or isUptrend)
buyTriggered := true
trigTag := trigTag + "[S12] "
if s12_sig == -1 and (not useSupertrend or isDowntrend)
sellTriggered := true
trigTag := trigTag + "[S12] "
// =============================================================================
// 9. COOLDOWN & FINAL SIGNAL GENERATION
// =============================================================================
var int lastSignalBar = -100
barsSinceLast = bar_index - lastSignalBar
validBuy = buyTriggered and (barsSinceLast >= minBarsCooldown)
validSell = sellTriggered and (barsSinceLast >= minBarsCooldown)
var string persistentTrigTag = "None"
if validBuy or validSell
lastSignalBar := bar_index
persistentTrigTag := trigTag
// Calculate TP/SL prices
var float entryPrice = na
var float tpPrice = na
var float slPrice = na
if validBuy
entryPrice := close
tpPrice := close + tpPoints * syminfo.mintick * 10
slPrice := close - slPoints * syminfo.mintick * 10
else if validSell
entryPrice := close
tpPrice := close - tpPoints * syminfo.mintick * 10
slPrice := close + slPoints * syminfo.mintick * 10
// =============================================================================
// 10. PLOTTING & ALERTS
// =============================================================================
// Supertrend Line
plot(isUptrend ? stValue : na, "Supertrend Bullish", color=color.new(color.green, 0), linewidth=2, style=plot.style_linebr)
plot(isDowntrend ? stValue : na, "Supertrend Bearish", color=color.new(color.red, 0), linewidth=2, style=plot.style_linebr)
// Buy & Sell Markers
plotshape(validBuy, title="QQ BUY Signal", style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, text="QQ BUY", textcolor=color.white)
plotshape(validSell, title="QQ SELL Signal", style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small, text="QQ SELL", textcolor=color.white)
// Plot Dynamic TP/SL
plot(showTPSL and not na(tpPrice) ? tpPrice : na, "Take Profit Target", color=color.teal, linewidth=1, style=plot.style_circles)
plot(showTPSL and not na(slPrice) ? slPrice : na, "Stop Loss Target", color=color.maroon, linewidth=1, style=plot.style_circles)
// Alerts
alertcondition(validBuy, title="Quantum Queen BUY Alert", message="[QQ BUY] Signal on {{ticker}} at {{close}}")
alertcondition(validSell, title="Quantum Queen SELL Alert", message="[QQ SELL] Signal on {{ticker}} at {{close}}")
// =============================================================================
// 11. QUANTUM QUEEN LIVE DASHBOARD
// =============================================================================
var table dash = table.new(position.top_right, 2, 7, bgcolor=color.new(color.black, 20), border_width=1, border_color=color.gray)
if barstate.islast and showDashboard
table.cell(dash, 0, 0, "Quantum Queen X", bgcolor=color.purple, text_color=color.white, text_size=size.small)
table.cell(dash, 1, 0, "Status", bgcolor=color.purple, text_color=color.white, text_size=size.small)
table.cell(dash, 0, 1, "Main Supertrend", text_color=color.white, text_size=size.small)
table.cell(dash, 1, 1, isUptrend ? "BULLISH" : "BEARISH", bgcolor=isUptrend ? color.green : color.red, text_color=color.white, text_size=size.small)
table.cell(dash, 0, 2, "Active Preset", text_color=color.white, text_size=size.small)
table.cell(dash, 1, 2, presetMode, bgcolor=color.navy, text_color=color.white, text_size=size.small)
table.cell(dash, 0, 3, "Direction Mode", text_color=color.white, text_size=size.small)
table.cell(dash, 1, 3, dirMode == "Both Directions (Per Strategy Bias)" ? "Per Strategy" : (dirMode == "Dynamic (Trend Follows Supertrend)" ? "Dynamic ST" : dirMode), bgcolor=color.rgb(70, 70, 70), text_color=color.white, text_size=size.small)
table.cell(dash, 0, 4, "Active Modules", text_color=color.white, text_size=size.small)
int activeCount = 0
for i = 0 to 11
if f_isStratActive(i)
activeCount += 1
table.cell(dash, 1, 4, str.tostring(activeCount) + " / 12 Active", bgcolor=color.teal, text_color=color.white, text_size=size.small)
table.cell(dash, 0, 5, "Cooldown State", text_color=color.white, text_size=size.small)
table.cell(dash, 1, 5, barsSinceLast >= minBarsCooldown ? "READY" : ("WAIT " + str.tostring(minBarsCooldown - barsSinceLast) + "b"), bgcolor=barsSinceLast >= minBarsCooldown ? color.green : color.orange, text_color=color.white, text_size=size.small)
table.cell(dash, 0, 6, "Latest Signal", text_color=color.white, text_size=size.small)
table.cell(dash, 1, 6, persistentTrigTag != "" ? persistentTrigTag : "No Trigger", bgcolor=persistentTrigTag != "None" ? color.blue : color.gray, text_color=color.white, text_size=size.small)
Overview
Users select from preset modes or enable custom combinations via toggles for 12 different MA pairs with specified timeframes. Direction can be set to both directions, dynamic trend following, buy only, or sell only, with a minimum cooldown bars setting to control signal frequency. It displays take profit and stop loss distance targets on signals and optionally shows a status dashboard. Main settings adjust Supertrend ATR period and multiplier, strategy visibility, TP and SL values, and dashboard visibility.
The inputs you can change from the gear icon on the chart. Defaults are the author's.
Setting
Type
Default
Variable
Supertrend ATR Period
int
10
atrPeriod
Supertrend Multiplier
float
3.0
atrMultiplier
Enable Supertrend Filter
bool
true
useSupertrend
Preset Selection
string
IC/VT Markets High Risk
presetMode
Direction Mode
string
Both Directions (Per Strategy Bias)
dirMode
Min Bars Cooldown Between Signals
int
5
minBarsCooldown
S01: M6(18) + M15(16) [BUY]
bool
true
s01_on
S02: M15(14) + M20(20) [BUY]
bool
true
s02_on
S03: M15(26) + M15(24) [BUY]
bool
true
s03_on
S04: M15(20) + M20(22) [BUY]
bool
true
s04_on
S05: M1(18) + M15(18) [SELL]
bool
true
s05_on
S06: M10(30) + M30(28) [SELL]
bool
true
s06_on
Show all 22 settings
Setting
Type
Default
Variable
S07: M1(20) + M20(16) [BUY]
bool
false
s07_on
S08: M1(12) + H1(20) [BUY]
bool
true
s08_on
S09: M12(18) + M15(12) [BUY]
bool
true
s09_on
S10: M10(20) + M15(10) [BUY]
bool
true
s10_on
S11: M10(30) + M30(28) [SELL]
bool
false
s11_on
S12: M12(10) + M15(20) [SELL]
bool
true
s12_on
Show TP/SL Level on Signal
bool
true
showTPSL
Take Profit Distance (Pips / Gold $0.1)
float
50.0
tpPoints
Stop Loss Distance (Pips / Gold $0.1)
float
30.0
slPoints
Show Quantum Status Dashboard
bool
true
showDashboard
Third-party code. ForexR did not write, test or endorse this script, and the summary above was generated automatically from its code and README. Indicators describe the past, and a strategy's backtest can look better than live trading, especially when a script repaints. Check it in the Strategy Tester and on a demo account before you rely on it.
This indicator analyzes short-term price action on index futures and options charts by applying Rational Quadratic kernel smoothing to detect sideways consolidation ranges and potential breakouts. It processes pivot highs and lows over customizable loopback pe
This indicator plots Ichimoku Cloud elements on the price chart, including Tenkan-sen, Kijun-sen, Senkou Span A and B lines with optional Chikou Span. It signals trend changes via Tenkan-sen and Kijun-sen crosses and places arrows at Kijun-sen direction shifts
This indicator overlays trend-following Supertrend bands on the price chart using Average True Range calculations. It plots trailing stop lines, highlights active trend directions, and prints buy or sell shape labels when price closes across band thresholds. I
This indicator plots two Hull moving averages on the price chart, one of the selected price and one of close, and optionally smooths both with a Kahlman filter. It fills the space between them and marks buy and sell labels when they cross, provided scaled volu
The MA Envelope indicator calculates upper and lower channel bands shifted by a user-defined percentage around a baseline moving average. It supports Simple Moving Average, Exponential Moving Average, and Weighted Moving Average calculation types. The script p
This indicator calculates an Exponential Moving Average and a Zero-Lag Moving Average to identify market trends on the price chart. It plots both moving averages and fills the space between them with color to highlight trend direction. Upon a crossover or cros