DIMA SETUP | 4 Candle Streak4 candles trade in 3 min time frame
session 20:00-22:00 israel time zone
Pattern grafici
Seasonality (Prev Month Close Expected)Seasonality Indicator
This indicator shows how an asset has historically behaved during each calendar month. It highlights the typical price direction and strength for the current month based on long-term seasonal patterns.
The projected zone on the chart represents the average historical outcome for the ongoing month, allowing traders to quickly see whether current price action is developing in line with, above, or below its usual seasonal behavior. A heatmap summarizes monthly performance across years, making recurring strong and weak periods easy to identify.
Vladimir Popdimitrov
NY 16:00 Close Overview
This indicator is designed for traders active in Pre-market, Post-market, and Blue Ocean (Overnight) sessions. It identifies the exact closing price of the financial instrument at 16:00 New York Time (the end of the Regular Trading Hours - RTH) and anchors a continuous horizontal line to this level.
The 16:00 Close is a critical psychological and institutional level. This script helps you visualize how the price deviates from the official daily close during extended hours and subsequent trading days.
Key Features
Smart NY Close Detection: Automatically identifies the 16:00 NY bar. For instruments with early closures (like certain Futures or Commodities ending at 13:45), the script automatically anchors the line to the final available closing price of the session.
Workday-Only Logic: The script respects the traditional trading week. For assets that trade 24/7 (like Crypto), the line remains fixed at Friday's 16:00 close throughout the weekend and only updates on Monday.
Real-Time Price Label: Displays the exact anchor price on the right axis for quick reference.
Dynamic Performance Tracker: A floating dashboard in the top-right corner shows the current percentage change relative to the 16:00 Close.
Green Background: Price is above the anchor.
Red Background: Price is below the anchor.
Formatted Accuracy: Displays with leading zeros (e.g., -0.60%) for professional-grade readability.
Infinite Extension: The anchor line extends indefinitely into the future, providing a clean "waterline" for your charts.
Built-in Alerts: Includes a "Cross" alert that triggers whenever the price touches or crosses the 16:00 Close level.
Settings
Line Color/Width: Customize the visual appearance of the anchor line.
Show Label: Toggle the price tag on the right side.
Label Offset: Adjust the distance of the label from the bars to prevent overlap.
How to Use
Gap Analysis: Use the percentage box to instantly see the "Overnight Gap" during Blue Ocean or Pre-market sessions.
Support/Resistance: Watch how price reacts to the previous 16:00 close; it often acts as a significant "magnet" or pivot point during low-liquidity hours.
Trend Confirmation: If the price stays consistently above the blue line during the pre-market, it may indicate bullish sentiment for the upcoming RTH open.
ATR Volatility ChannelATR Volatility Channel
This indicator plots adaptive upper and lower volatility bands using EMA-smoothed highs and lows, expanded by ATR. Unlike Bollinger Bands, it uses true range instead of standard deviation, so the bands expand smoothly and predictably with actual price volatility.
It highlights dynamic support, resistance, and fair value, and can be used for ATR level bounces and trend structure analysis.
Settings:
EMA Length: Smooths the highs and lows to calculate the channel (default: 10)
ATR Length: Period used for the Average True Range (default: 14)
ATR Multiplier: Scales the channel width (default: 2)
Show Upper / Lower / Median
Swing IA Cockpit [v2]//@version=5
indicator("Swing IA Cockpit ", overlay=true, max_bars_back=500)
// === INPUTS ===
mode = input.string("Pullback", title="Entry Mode", options= )
corrLen = input.int(60, "Correlation Window Length")
scoreWeightBias = input.float(0.6, title="Weight: Bias", minval=0, maxval=1)
scoreWeightTiming = 1.0 - scoreWeightBias
// === INDICATEURS H1 ===
ema200_H1 = ta.ema(close, 200)
ema50_H1 = ta.ema(close, 50)
rsi_H1 = ta.rsi(close, 14)
donchianHigh = ta.highest(high, 20)
donchianLow = ta.lowest(low, 20)
atr_H1 = ta.atr(14)
avgATR_H1 = ta.sma(atr_H1, 50)
body = math.abs(close - open)
avgBody = ta.sma(body, 20)
// === H4 / D1 ===
close_H4 = request.security(syminfo.tickerid, "240", close)
ema200_H4 = request.security(syminfo.tickerid, "240", ta.ema(close, 200))
rsi_H4 = request.security(syminfo.tickerid, "240", ta.rsi(close, 14))
atr_H4 = request.security(syminfo.tickerid, "240", ta.atr(14))
avgATR_H4 = request.security(syminfo.tickerid, "240", ta.sma(ta.atr(14), 50))
close_D1 = request.security(syminfo.tickerid, "D", close)
ema200_D1 = request.security(syminfo.tickerid, "D", ta.ema(close, 200))
// === CORRÉLATIONS ===
dxy = request.security("TVC:DXY", "60", close)
spx = request.security("SP:SPX", "60", close)
gold = request.security("OANDA:XAUUSD", "60", close)
corrDXY = ta.correlation(close, dxy, corrLen)
corrSPX = ta.correlation(close, spx, corrLen)
corrGold = ta.correlation(close, gold, corrLen)
// === LOGIQUE BIAIS ===
biasLong = close_D1 > ema200_D1 and close_H4 > ema200_H4 and rsi_H4 >= 55
biasShort = close_D1 < ema200_D1 and close_H4 < ema200_H4 and rsi_H4 <= 45
bias = biasLong ? "LONG" : biasShort ? "SHORT" : "NEUTRAL"
// === LOGIQUE TIMING ===
isBreakoutLong = mode == "Breakout" and high > donchianHigh and close > ema200_H1 and rsi_H1 > 50
isBreakoutShort = mode == "Breakout" and low < donchianLow and close < ema200_H1 and rsi_H1 < 50
var float breakoutPrice = na
var int breakoutBar = na
if isBreakoutLong or isBreakoutShort
breakoutPrice := close
breakoutBar := bar_index
validPullbackLong = mode == "Pullback" and not na(breakoutBar) and bar_index <= breakoutBar + 3 and close > ema50_H1 and low <= ema50_H1
validPullbackShort = mode == "Pullback" and not na(breakoutBar) and bar_index <= breakoutBar + 3 and close < ema50_H1 and high >= ema50_H1
timingLong = isBreakoutLong or validPullbackLong
timingShort = isBreakoutShort or validPullbackShort
// === SCORES ===
scoreTrend = (close_D1 > ema200_D1 ? 20 : 0) + (close_H4 > ema200_H4 ? 20 : 0)
scoreMomentumBias = (rsi_H4 >= 55 or rsi_H4 <= 45) ? 20 : 10
scoreCorr = 0
scoreCorr += biasLong and corrDXY < 0 ? 10 : 0
scoreCorr += biasLong and corrSPX > 0 ? 10 : 0
scoreCorr += biasLong and corrGold >= 0 ? 10 : 0
scoreCorr += biasShort and corrDXY > 0 ? 10 : 0
scoreCorr += biasShort and corrSPX < 0 ? 10 : 0
scoreCorr += biasShort and corrGold <= 0 ? 10 : 0
scoreCorr := math.min(scoreCorr, 30)
scoreVolBias = atr_H4 > avgATR_H4 ? 10 : 0
scoreBias = scoreTrend + scoreMomentumBias + scoreCorr + scoreVolBias
scoreStruct = (timingLong or timingShort) ? 40 : 0
scoreMomentumTiming = rsi_H1 > 50 or rsi_H1 < 50 ? 25 : 10
scoreTrendH1 = (close > ema50_H1 and ema50_H1 > ema200_H1) or (close < ema50_H1 and ema50_H1 < ema200_H1) ? 20 : 10
scoreVolTiming = atr_H1 > avgATR_H1 ? 15 : 5
scoreTiming = scoreStruct + scoreMomentumTiming + scoreTrendH1 + scoreVolTiming
scoreTotal = scoreBias * scoreWeightBias + scoreTiming * scoreWeightTiming
scoreLong = biasLong ? scoreTotal : 0
scoreShort = biasShort ? scoreTotal : 0
delta = scoreLong - scoreShort
scoreExtMomentum = (rsi_H4 > 55 ? 10 : 0)
scoreExtVol = atr_H4 > avgATR_H4 ? 10 : 0
scoreExtStructure = body > avgBody ? 10 : 5
scoreExtCorr = (scoreCorr > 15 ? 10 : 5)
scoreExtension = scoreExtMomentum + scoreExtVol + scoreExtStructure + scoreExtCorr
// === VERDICT FINAL ===
verdict = "NO TRADE"
verdict := bias == "NEUTRAL" or math.abs(delta) < 10 or scoreTotal < 70 ? "NO TRADE" :
scoreTotal < 80 ? "WAIT" :
scoreTotal >= 85 and math.abs(delta) >= 20 and scoreExtension >= 60 ? "TRADE A+" :
"TRADE"
// === TABLE COCKPIT ===
var table cockpit = table.new(position.top_right, 2, 9, border_width=1)
if bar_index % 5 == 0
table.cell(cockpit, 0, 0, "Bias", bgcolor=color.gray)
table.cell(cockpit, 1, 0, bias)
table.cell(cockpit, 0, 1, "ScoreBias", bgcolor=color.gray)
table.cell(cockpit, 1, 1, str.tostring(scoreBias))
table.cell(cockpit, 0, 2, "ScoreTiming", bgcolor=color.gray)
table.cell(cockpit, 1, 2, str.tostring(scoreTiming))
table.cell(cockpit, 0, 3, "ScoreTotal", bgcolor=color.gray)
table.cell(cockpit, 1, 3, str.tostring(scoreTotal))
table.cell(cockpit, 0, 4, "ScoreLong", bgcolor=color.gray)
table.cell(cockpit, 1, 4, str.tostring(scoreLong))
table.cell(cockpit, 0, 5, "ScoreShort", bgcolor=color.gray)
table.cell(cockpit, 1, 5, str.tostring(scoreShort))
table.cell(cockpit, 0, 6, "Delta", bgcolor=color.gray)
table.cell(cockpit, 1, 6, str.tostring(delta))
table.cell(cockpit, 0, 7, "Extension", bgcolor=color.gray)
table.cell(cockpit, 1, 7, str.tostring(scoreExtension))
table.cell(cockpit, 0, 8, "Verdict", bgcolor=color.gray)
table.cell(cockpit, 1, 8, verdict, bgcolor=verdict == "TRADE A+" ? color.green : verdict == "TRADE" ? color.lime : verdict == "WAIT" ? color.orange : color.red)
// === ALERTS ===
alertcondition(verdict == "TRADE A+" and bias == "LONG", title="TRADE A+ LONG", message="TRADE A+ signal long")
alertcondition(verdict == "TRADE A+" and bias == "SHORT", title="TRADE A+ SHORT", message="TRADE A+ signal short")
alertcondition(verdict == "NO TRADE", title="NO TRADE / RANGE", message="Marché confus ou neutre — pas de trade")
Gartley + RSI Div + CDC ActionZone Alert//@version=5
indicator("Gartley + RSI Div + CDC ActionZone Alert", overlay=true)
// --- 1. CDC Action Zone Logic ---
ema12 = ta.ema(close, 12)
ema26 = ta.ema(close, 26)
isBlue = close > ema12 and ema12 < ema26
isGreen = ema12 > ema26
cdcSignal = isBlue or isGreen
// --- 2. RSI Bullish Divergence Logic ---
rsiVal = ta.rsi(close, 14)
lbR = 5 // Lookback Left
rbR = 5 // Lookback Right
minLow = ta.pivotlow(rsiVal, lbR, rbR)
isDiv = false
if not na(minLow)
prevLow = ta.valuewhen(not na(minLow), minLow , 0)
prevPrice = ta.valuewhen(not na(minLow), low , 0)
if rsiVal > prevLow and low < prevPrice
isDiv := true
// --- 3. Gartley Approximation (D-Point Focus) ---
// ส่วนนี้ใช้ ZigZag พื้นฐานเพื่อหาจุดกลับตัว (Simplified for Alert)
sz = input.int(10, "ZigZag Sensitivity")
ph = ta.pivothigh(high, sz, sz)
pl = ta.pivotlow(low, sz, sz)
// เงื่อนไขรวม (Combo Strategy)
// ราคาอยู่ที่จุดต่ำสุดใหม่ (Potential D) + RSI ขัดแย้ง + CDC เริ่มเปลี่ยนสี
buyAlert = isDiv and cdcSignal and not na(pl)
// --- การแสดงผลบนกราฟ ---
plotshape(buyAlert, title="Gartley-CDC Buy", style=shape.labelup, location=location.belowbar, color=color.green, text="BUY SETUP", textcolor=color.white, size=size.small)
// วาดเส้น EMA สำหรับ CDC
plot(ema12, color=color.red, linewidth=1)
plot(ema26, color=color.blue, linewidth=1)
// --- ระบบการแจ้งเตือน (Alerts) ---
if buyAlert
alert("SPA Style Setup Found: Gartley D-Point + RSI Div + CDC Signal!", alert.freq_once_per_bar)
Reliable 4H EST Candle Marker (All Timeframes)plots out 4 hour candle if you trying to mark out 2am, 6am, 10am etc
Drawdown MDD desde ATH (close)Drawdown indicator from ATH wtih maximum drawdown.
Indicates the current percentage of both
kalp 2trPeriodPrimary = input.int(18, 'Primary ST ATR Period', group="SuperTrend")
multiplierPrimary = input.float(4.0, 'Primary ST Multiplier', group="SuperTrend")
atrPeriodSecondary = input.int(9, 'Secondary ST ATR Period', group="SuperTrend")
multiplierSecondary = input.float(2.0, 'Secondary ST Multiplier', group="SuperTrend")
atrPeriodTertiary = input.int(12, 'Tertiary ST ATR Period', group="SuperTrend")
multiplierTertiary = input.float(3.0, 'Tertiary ST Multiplier', group="SuperTrend")
// MACD Group
fastLength = input.int(24, 'MACD Fast Length', group="MACD")
slowLength = input.int(52, 'MACD Slow Length', group="MACD")
signalLength = input.int(9, 'MACD Signal Smoothing', group="MACD")
// EMA Group
tfEMA = input.timeframe("60", "EMA Timeframe (Global)", group="EMAs")
ema1Len = input.int(9, 'EMA 1 Length', group="EMAs")
ema2Len = input.int(21, 'EMA 2 Length', group="EMAs")
ema3Len = input.int(27, 'EMA 3 Length', group="EMAs")
ema4Len = input.int(50, 'EMA 4 Length', group="EMAs")
ema5Len = input.int(100, 'EMA 5 Length', group="EMAs")
ema6Len = input.int(150, 'EMA 6 Length', group="EMAs")
ema7Len = input.int(200, 'EMA 7 Length', group="EMAs")
// Visuals & ORB Group
showVwap = input.bool(true, 'Show VWAP?', group="Visuals")
showORB = input.bool(true, "Show ORB (Current Day Only)", group="ORB Settings")
orbTime = input.string("0930-1000", "ORB Time Range", group="ORB Settings")
orbTargetMult1 = input.float(1.0, "Target 1 Mult", group="ORB Settings")
Triple ST + MACD + 7x MTF EMA + VWAP + ORB + Lux Pivots + AMA//@version=6
indicator('Triple ST + MACD + 7x MTF EMA + VWAP + ORB + Lux Pivots + AMA', overlay = true, max_labels_count = 500)
//━━━━━━━━━━━━━━━━━━━
// INPUTS
//━━━━━━━━━━━━━━━━━━━
// AMA Signals Group (Zeiierman Style)
showAMA = input.bool(true, "Show AMA Signals", group="AMA Signals")
amaLength = input.int(10, "AMA Length", group="AMA Signals")
amaFast = input.int(2, "AMA Fast Period", group="AMA Signals")
amaSlow = input.int(30, "AMA Slow Period", group="AMA Signals")
// SuperTrend Group
atrPeriodPrimary = input.int(18, 'Primary ST ATR Period', group="SuperTrend")
multiplierPrimary = input.float(4.0, 'Primary ST Multiplier', group="SuperTrend")
// MACD Group
fastLength = input.int(24, 'MACD Fast Length', group="MACD")
slowLength = input.int(52, 'MACD Slow Length', group="MACD")
signalLength = input.int(9, 'MACD Signal Smoothing', group="MACD")
// EMA Group
tfEMA = input.timeframe("60", "EMA Timeframe (Global)", group="EMAs")
ema1Len = input.int(9, 'EMA 1 Length', group="EMAs"), ema2Len = input.int(21, 'EMA 2 Length', group="EMAs")
ema3Len = input.int(27, 'EMA 3 Length', group="EMAs"), ema4Len = input.int(50, 'EMA 4 Length', group="EMAs")
ema5Len = input.int(100, 'EMA 5 Length', group="EMAs"), ema6Len = input.int(150, 'EMA 6 Length', group="EMAs")
ema7Len = input.int(200, 'EMA 7 Length', group="EMAs")
// LuxAlgo Style Pivots (50 Lookback)
showPivots = input.bool(true, "Show Pivot High/Low", group="LuxAlgo Pivots")
pivotLen = input.int(50, "Pivot Lookback", group="LuxAlgo Pivots")
showMissed = input.bool(true, "Show Missed Reversal Levels", group="LuxAlgo Pivots")
// Previous OHLC Group
showPrevOHLC = input.bool(true, "Show Previous Day OHLC?", group="Previous OHLC")
// Visuals & ORB Group
showVwap = input.bool(true, 'Show VWAP?', group="Visuals")
showORB = input.bool(true, "Show ORB", group="ORB Settings")
orbTime = input.string("0930-1000", "ORB Time Range", group="ORB Settings")
//━━━━━━━━━━━━━━━━━━━
// CALCULATIONS
//━━━━━━━━━━━━━━━━━━━
// 1. AMA Calculation (Zeiierman Logic)
fastAlpha = 2.0 / (amaFast + 1)
slowAlpha = 2.0 / (amaSlow + 1)
efficiencyRatio = math.sum(math.abs(close - close ), amaLength) != 0 ? math.abs(close - close ) / math.sum(math.abs(close - close ), amaLength) : 0
scaledAlpha = math.pow(efficiencyRatio * (fastAlpha - slowAlpha) + slowAlpha, 2)
var float amaValue = na
amaValue := na(amaValue ) ? close : amaValue + scaledAlpha * (close - amaValue )
// 2. Pivot Points & Missed Reversals (RECTIFIED: Bool Fix)
ph = ta.pivothigh(high, pivotLen, pivotLen)
pl = ta.pivotlow(low, pivotLen, pivotLen)
var float lastMissedHigh = na
var float lastMissedLow = na
if not na(ph)
lastMissedHigh := ph
if not na(pl)
lastMissedLow := pl
// 3. Custom SuperTrend Function (RECTIFIED: Parenthesis Fix)
f_supertrend(_atrLen, _mult) =>
atr_ = ta.atr(_atrLen)
upperBasic = hl2 + _mult * atr_
lowerBasic = hl2 - _mult * atr_
var float upperFinal = na
var float lowerFinal = na
upperFinal := na(upperFinal ) ? upperBasic : (upperBasic < upperFinal or close > upperFinal ? upperBasic : upperFinal )
lowerFinal := na(lowerFinal ) ? lowerBasic : (lowerBasic > lowerFinal or close < lowerFinal ? lowerBasic : lowerFinal )
var int dir = 1
if not barstate.isfirst
dir := dir
if dir == 1 and close < lowerFinal
dir := -1
else if dir == -1 and close > upperFinal
dir := 1
= f_supertrend(atrPeriodPrimary, multiplierPrimary)
// 4. MACD & 7 MTF EMAs
macdLine = ta.ema(close, fastLength) - ta.ema(close, slowLength)
signal = ta.ema(macdLine, signalLength)
ema1 = request.security(syminfo.tickerid, tfEMA, ta.ema(close, ema1Len), gaps = barmerge.gaps_on)
ema2 = request.security(syminfo.tickerid, tfEMA, ta.ema(close, ema2Len), gaps = barmerge.gaps_on)
ema3 = request.security(syminfo.tickerid, tfEMA, ta.ema(close, ema3Len), gaps = barmerge.gaps_on)
ema4 = request.security(syminfo.tickerid, tfEMA, ta.ema(close, ema4Len), gaps = barmerge.gaps_on)
ema5 = request.security(syminfo.tickerid, tfEMA, ta.ema(close, ema5Len), gaps = barmerge.gaps_on)
ema6 = request.security(syminfo.tickerid, tfEMA, ta.ema(close, ema6Len), gaps = barmerge.gaps_on)
ema7 = request.security(syminfo.tickerid, tfEMA, ta.ema(close, ema7Len), gaps = barmerge.gaps_on)
// 5. ORB Logic
is_new_day = ta.change(time("D")) != 0
in_orb = not na(time(timeframe.period, orbTime))
var float orbHigh = na, var float orbLow = na
if is_new_day
orbHigh := na, orbLow := na
if in_orb
orbHigh := na(orbHigh) ? high : math.max(high, orbHigh)
orbLow := na(orbLow) ? low : math.min(low, orbLow)
//━━━━━━━━━━━━━━━━━━━
// PLOTTING
//━━━━━━━━━━━━━━━━━━━
// AMA Plots
plot(showAMA ? amaValue : na, "AMA Line", color=amaValue > amaValue ? color.lime : color.red, linewidth=2)
plotshape(showAMA and ta.crossover(amaValue, amaValue ), "AMA BUY", shape.labelup, location.belowbar, color.lime, 0, "BUY", color.black, size=size.small)
plotshape(showAMA and ta.crossunder(amaValue, amaValue ), "AMA SELL", shape.labeldown, location.abovebar, color.red, 0, "SELL", color.white, size=size.small)
// Pivots
plotshape(showPivots ? ph : na, "PH", shape.labeldown, location.abovebar, color.red, -pivotLen, "PH", color.white)
plotshape(showPivots ? pl : na, "PL", shape.labelup, location.belowbar, color.green, -pivotLen, "PL", color.white)
// Missed Reversal Lines
var line hLine = na, var line lLine = na
if showMissed and barstate.islast
line.delete(hLine), line.delete(lLine)
hLine := line.new(bar_index - pivotLen, lastMissedHigh, bar_index + 10, lastMissedHigh, color=color.new(color.red, 50), style=line.style_dashed)
lLine := line.new(bar_index - pivotLen, lastMissedLow, bar_index + 10, lastMissedLow, color=color.new(color.green, 50), style=line.style_dashed)
// Previous Day OHLC
= request.security(syminfo.tickerid, "D", [high , low ], lookahead=barmerge.lookahead_on)
plot(showPrevOHLC ? pdH : na, "PDH", color.gray, style=plot.style_stepline)
plot(showPrevOHLC ? pdL : na, "PDL", color.gray, style=plot.style_stepline)
// 7 EMAs & VWAP
plot(ema1, "E1", color.new(color.white, 50)), plot(ema7, "E7", color.new(color.gray, 50))
plot(showVwap ? ta.vwap : na, "VWAP", color.orange, 2)
plot(stPrimary, 'Primary ST', dirPrimary == 1 ? color.green : color.red, 2)
// MACD (RECTIFIED: Named arguments)
plotshape(ta.crossover(macdLine, signal), title="MACD+", style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small)
plotshape(ta.crossunder(macdLine, signal), title="MACD-", style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small)
// Global Trend Background
bgcolor(dirPrimary == 1 ? color.new(color.green, 97) : color.new(color.red, 97))
EMA 5/9/21/50/200 + VWAP + Supertrend singhsinnerBest for Intraday and positional. no need to add other indicators. extremely strong trend price move with 5ema, for rentry see 21ema as support. 9 & 21 cross above for fresh entry n cross down for exit. 5ema for early entry
Triple ST + MACD + 7x MTF EMA + VWAP + ORB//@version=6
indicator('Triple ST + MACD + 7x MTF EMA + VWAP + ORB', overlay = true, max_labels_count = 500)
//━━━━━━━━━━━━━━━━━━━
// INPUTS
//━━━━━━━━━━━━━━━━━━━
// SuperTrend Group
atrPeriodPrimary = input.int(18, 'Primary ST ATR Period', group="SuperTrend")
multiplierPrimary = input.float(4.0, 'Primary ST Multiplier', group="SuperTrend")
atrPeriodSecondary = input.int(9, 'Secondary ST ATR Period', group="SuperTrend")
multiplierSecondary = input.float(2.0, 'Secondary ST Multiplier', group="SuperTrend")
atrPeriodTertiary = input.int(12, 'Tertiary ST ATR Period', group="SuperTrend")
multiplierTertiary = input.float(3.0, 'Tertiary ST Multiplier', group="SuperTrend")
// MACD Group
fastLength = input.int(24, 'MACD Fast Length', group="MACD")
slowLength = input.int(52, 'MACD Slow Length', group="MACD")
signalLength = input.int(9, 'MACD Signal Smoothing', group="MACD")
// EMA Group
tfEMA = input.timeframe("60", "EMA Timeframe (Global)", group="EMAs")
ema1Len = input.int(9, 'EMA 1 Length', group="EMAs")
ema2Len = input.int(21, 'EMA 2 Length', group="EMAs")
ema3Len = input.int(27, 'EMA 3 Length', group="EMAs")
ema4Len = input.int(50, 'EMA 4 Length', group="EMAs")
ema5Len = input.int(100, 'EMA 5 Length', group="EMAs")
ema6Len = input.int(150, 'EMA 6 Length', group="EMAs")
ema7Len = input.int(200, 'EMA 7 Length', group="EMAs")
// Visuals & ORB Group
showVwap = input.bool(true, 'Show VWAP?', group="Visuals")
showORB = input.bool(true, "Show ORB (Current Day Only)", group="ORB Settings")
orbTime = input.string("0930-1000", "ORB Time Range", group="ORB Settings")
orbTargetMult1 = input.float(1.0, "Target 1 Mult", group="ORB Settings")
//━━━━━━━━━━━━━━━━━━━
// CALCULATIONS
//━━━━━━━━━━━━━━━━━━━
// 1. Custom SuperTrend Function
f_supertrend(_atrLen, _mult) =>
atr_ = ta.atr(_atrLen)
upperBasic = hl2 + _mult * atr_
lowerBasic = hl2 - _mult * atr_
var float upperFinal = na
var float lowerFinal = na
upperFinal := na(upperFinal ) ? upperBasic : (upperBasic < upperFinal or close > upperFinal ? upperBasic : upperFinal )
lowerFinal := na(lowerFinal ) ? lowerBasic : (lowerBasic > lowerFinal or close < lowerFinal ? lowerBasic : lowerFinal )
var int dir = 1
if not barstate.isfirst
dir := dir
if dir == 1 and close < lowerFinal
dir := -1
else if dir == -1 and close > upperFinal
dir := 1
super = dir == 1 ? lowerFinal : upperFinal
= f_supertrend(atrPeriodPrimary, multiplierPrimary)
= f_supertrend(atrPeriodSecondary, multiplierSecondary)
= f_supertrend(atrPeriodTertiary, multiplierTertiary)
// 2. MACD
macdLine = ta.ema(close, fastLength) - ta.ema(close, slowLength)
signal = ta.ema(macdLine, signalLength)
// 3. MTF EMAs (7 Options)
ema1 = request.security(syminfo.tickerid, tfEMA, ta.ema(close, ema1Len), gaps = barmerge.gaps_on)
ema2 = request.security(syminfo.tickerid, tfEMA, ta.ema(close, ema2Len), gaps = barmerge.gaps_on)
ema3 = request.security(syminfo.tickerid, tfEMA, ta.ema(close, ema3Len), gaps = barmerge.gaps_on)
ema4 = request.security(syminfo.tickerid, tfEMA, ta.ema(close, ema4Len), gaps = barmerge.gaps_on)
ema5 = request.security(syminfo.tickerid, tfEMA, ta.ema(close, ema5Len), gaps = barmerge.gaps_on)
ema6 = request.security(syminfo.tickerid, tfEMA, ta.ema(close, ema6Len), gaps = barmerge.gaps_on)
ema7 = request.security(syminfo.tickerid, tfEMA, ta.ema(close, ema7Len), gaps = barmerge.gaps_on)
// 4. ORB CALCULATION (Current Day Only)
is_new_day = ta.change(time("D")) != 0
in_orb = not na(time(timeframe.period, orbTime))
is_today = (year(time) == year(timenow)) and (month(time) == month(timenow)) and (dayofmonth(time) == dayofmonth(timenow))
var float orbHigh = na
var float orbLow = na
if is_new_day
orbHigh := na
orbLow := na
if in_orb and is_today
orbHigh := na(orbHigh) ? high : math.max(high, orbHigh)
orbLow := na(orbLow) ? low : math.min(low, orbLow)
orbRange = orbHigh - orbLow
t1_up = orbHigh + (orbRange * orbTargetMult1)
t1_dn = orbLow - (orbRange * orbTargetMult1)
//━━━━━━━━━━━━━━━━━━━
// PLOTTING
//━━━━━━━━━━━━━━━━━━━
// VWAP
plot(showVwap ? ta.vwap : na, title="VWAP", color=color.orange, linewidth=2)
// Triple SuperTrends
plot(stPrimary, title='Primary ST', color=dirPrimary == 1 ? color.green : color.red, linewidth=2)
plot(stSecondary, title='Secondary ST', color=dirSecondary == 1 ? color.teal : color.maroon, linewidth=1)
plot(stTertiary, title='Tertiary ST', color=dirTertiary == 1 ? color.lime : color.orange, linewidth=1)
// 7 EMAs
plot(ema1, title='EMA 1', color=color.new(color.white, 50))
plot(ema2, title='EMA 2', color=color.new(color.yellow, 60))
plot(ema3, title='EMA 3', color=color.new(color.orange, 70))
plot(ema4, title='EMA 4', color=color.new(color.blue, 70))
plot(ema5, title='EMA 5', color=color.new(color.purple, 70))
plot(ema6, title='EMA 6', color=color.new(color.fuchsia, 80))
plot(ema7, title='EMA 7', color=color.new(color.gray, 80))
// ORB Plots
plot(showORB and is_today ? orbHigh : na, title="ORB High", color=color.aqua, linewidth=2, style=plot.style_linebr)
plot(showORB and is_today ? orbLow : na, title="ORB Low", color=color.aqua, linewidth=2, style=plot.style_linebr)
plot(showORB and is_today and not in_orb ? t1_up : na, title="Target 1 Up", color=color.new(color.lime, 40), style=plot.style_linebr)
plot(showORB and is_today and not in_orb ? t1_dn : na, title="Target 1 Down", color=color.new(color.red, 40), style=plot.style_linebr)
// MACD Shapes
plotshape(ta.crossover(macdLine, signal), title="MACD Bull", style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, text="MACD+")
plotshape(ta.crossunder(macdLine, signal), title="MACD Bear", style=shape.triangledown, location=location.belowbar, color=color.red, size=size.small, text="MACD-")
// Background (Based on Primary ST)
bgcolor(dirPrimary == 1 ? color.new(color.green, 96) : color.new(color.red, 96))
Relative Strength Table (Spring)This indicator helps traders quickly understand the relative strength of different groups and different stocks.
Custom EST Candle Marker (All Timeframes)marks out custom 4 hour candle to focus on like 2am or 8am whatever you want
Custom Hour Candle Marker (EST, All Timeframes)hour candle marker on the hourly to see the candle you want to focus on
MES ORB A+ (Pullback Entry)opening range breakout with pullback entry on future charts to get the perfect entry everytime
Ayan EMAV HunterThe script involves 2 zones.
The Blue Zone is the Hunting Zone and the Red Zone helps to decide the which side to trade.
If the Blue Zone is above the Red Zone, we search for UpTrend Trades of 1:2 and we need to observe the candles with the Yellow Arrow which indicates Smart Money entering
Similarly, If the Blue Zone is below the Red Zone, we search for Bearish Trades with 1:2 Risk/Reward and we need to observe the candles with the Yellow Arrow which indicates Smart Money entering
If the Blue Zone lies within the Red Zone, then NO Trade, Just Observe
Please share your feedback if it can be refined
EMA Core Bounce FX (MTF safe Daily Logic)Daily chart core bounce strat
tested works well with the ! H version



















