The Rumer's Box Theory“The Rumer's Box Theory” is a visual trading indicator designed to help traders quickly identify the previous daily candle’s high and low ranges across all timeframes. The indicator draws a purple box spanning the previous day’s high to low, with a blue horizontal line at the 50% midpoint for easy reference.
Cari dalam skrip untuk "Candlestick"
Developing Midpoint TrackerDeveloping Midpoint Tracker (DMT)
Original Concept: This indicator tracks key midpoint levels from either session opens or custom timeframe periods, providing precise reference levels for intraday trading decisions.
Dual Tracking Modes:
Session Mode: Tracks midpoints from a specific session start time (e.g., 1800 ET electronic trading open) with full timezone support
Timeframe Mode: Tracks midpoints from any custom timeframe (15m, 1H, 4H, etc.) using higher timeframe OHLC data via request.security()
Core Calculations:
The indicator calculates three distinct midpoint levels:
Open-to-High Midpoint: (Session/Timeframe Open + Highest High) / 2
Open-to-Low Midpoint: (Session/Timeframe Open + Lowest Low) / 2
High-to-Low Midpoint: (Highest High + Lowest Low) / 2
Visual Features:
Horizontal lines extending from the reference period start with customizable colors, styles, and extension length
Smart collision detection prevents duplicate lines at identical price levels
Price labels with transparent backgrounds showing exact values
Optional reference open price line
Real-time info table displaying current mode and all calculated levels
Technical Implementation:
Uses Pine Script's native time() function for accurate session detection across multiple timezones
Employs request.security() for reliable higher timeframe data access
Implements proper line and label management to prevent memory issues
Supports 13 major global timezones including US markets, Europe, and Asia
Use Cases:
Identifying potential support/resistance levels from key price relationships
Setting profit targets and stop levels based on mathematical price midpoints
Analyzing price behavior around session or timeframe-specific reference levels
Multi-timeframe analysis when using custom timeframe mode on lower timeframe charts
This indicator is particularly useful for traders who utilize midpoint reversion strategies or need precise reference levels derived from session or timeframe opens.
Narayan Candle Up/Down Indicator //@version=5
indicator("Candle Up/Down Indicator", overlay=true)
// Candle colors
candleColor = close > open ? color.green : close < open ? color.red : color.gray
// Plot candles as background
bgcolor(candleColor, transp=80)
// Optional: plot arrow on up/down
plotshape(close > open, title="Up Candle", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.tiny)
plotshape(close < open, title="Down Candle", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.tiny)
Daily High-Low-Open + LabelsSimple PDH/PDL/DO indicator. It is in horizontal line form and it includes labels. So you don't have to place them daily yourself. Updates on its own every single day.
VWAP + EMA9/21/50 + Ichimoku + RSI (M5) - Strict + TPSL//@version=5
indicator("VWAP + EMA9/21/50 + Ichimoku + RSI (M5) - Strict + TPSL", overlay=true, shorttitle="VWAP_EMA_ICH_RSI_TPSL")
// === Inputs ===
emaFastLen = input.int(9, "EMA Fast (9)")
emaMidLen = input.int(21, "EMA Mid (21)")
emaSlowLen = input.int(50, "EMA Slow (50)")
// Ichimoku inputs
tenkanLen = input.int(9, "Tenkan Sen Length")
kijunLen = input.int(26, "Kijun Sen Length")
senkouBLen = input.int(52, "Senkou B Length")
displacement = input.int(26, "Displacement")
// RSI
rsiLen = input.int(14, "RSI Length")
rsiThreshold = input.int(50, "RSI Threshold")
// VWAP option
useSessionVWAP = input.bool(true, "Use Session VWAP (true) / Daily VWAP (false)")
// Volume filter
useVolumeFilter = input.bool(true, "Enable Volume Filter")
volAvgLen = input.int(20, "Volume Avg Length")
volMultiplier = input.float(1.2, "Min Volume > avg *", step=0.1)
// Higher timeframe trend check
useHTF = input.bool(true, "Enable Higher-Timeframe Trend Check")
htfTF = input.string("60", "HTF timeframe (e.g. 60, 240, D)")
// Alerts / webhook
alertOn = input.bool(true, "Enable Alerts")
useWebhook = input.bool(true, "Send webhook on alerts")
webhookURL = input.string("", "Webhook URL (leave blank to set in alert)")
// TP/SL & Trailing inputs
useTP = input.bool(true, "Enable Take Profit (TP)")
tpTypeRR = input.bool(true, "TP as Risk-Reward ratio (true) / Fixed points (false)")
tpRR = input.float(1.5, "TP RR (e.g. 1.5)", step=0.1)
fixedTPpts = input.float(40.0, "Fixed TP (ticks/pips) if not RR")
useSL = input.bool(true, "Enable Stop Loss (SL)")
slTypeATR = input.bool(true, "SL as ATR-based (true) / Fixed points (false)")
atrLen = input.int(14, "ATR Length")
atrMult = input.float(1.5, "ATR Multiplier for SL", step=0.1)
fixedSLpts = input.float(20.0, "Fixed SL (ticks/pips) if not ATR")
useTrailing = input.bool(true, "Enable Trailing Stop")
trailType = input.string("ATR", "Trailing type: ATR or EMA", options= ) // "ATR" or "EMA"
trailATRmult = input.float(1.0, "Trailing ATR Multiplier", step=0.1)
trailEMAlen = input.int(9, "Trailing EMA Length (if EMA chosen)")
trailLockInPts = input.float(5.0, "Trail lock-in (min profit before trail active, pts)")
// Other
showArrows = input.bool(true, "Show Entry Arrows")
// === Calculations ===
ema9 = ta.ema(close, emaFastLen)
ema21 = ta.ema(close, emaMidLen)
ema50 = ta.ema(close, emaSlowLen)
// VWAP
vwapVal = ta.vwap
// Ichimoku
highestHighTenkan = ta.highest(high, tenkanLen)
lowestLowTenkan = ta.lowest(low, tenkanLen)
tenkan = (highestHighTenkan + lowestLowTenkan) / 2
highestHighKijun = ta.highest(high, kijunLen)
lowestLowKijun = ta.lowest(low, kijunLen)
kijun = (highestHighKijun + lowestLowKijun) / 2
highestHighSenkouB = ta.highest(high, senkouBLen)
lowestLowSenkouB = ta.lowest(low, senkouBLen)
senkouB = (highestHighSenkouB + lowestLowSenkouB) / 2
senkouA = (tenkan + kijun) / 2
// RSI
rsi = ta.rsi(close, rsiLen)
// Volume
volAvg = ta.sma(volume, volAvgLen)
volOk = not useVolumeFilter or (volume > volAvg * volMultiplier)
// Higher timeframe trend values
htf_close = request.security(syminfo.tickerid, htfTF, close)
htf_ema50 = request.security(syminfo.tickerid, htfTF, ta.ema(close, emaSlowLen))
htf_rsi = request.security(syminfo.tickerid, htfTF, ta.rsi(close, rsiLen))
htf_bull = htf_close > htf_ema50
htf_bear = htf_close < htf_ema50
htf_ok = not useHTF or (htf_bull and close > ema50) or (htf_bear and close < ema50)
// Trend filters (on current timeframe)
priceAboveVWAP = close > vwapVal
priceAboveEMA50 = close > ema50
priceAboveCloud = close > senkouA and close > senkouB
bullTrend = priceAboveVWAP and priceAboveEMA50 and priceAboveCloud
bearTrend = not priceAboveVWAP and not priceAboveEMA50 and not priceAboveCloud
// Pullback detection (price near EMA21 within tolerance)
tolPerc = input.float(0.35, "Pullback tolerance (%)", step=0.05) / 100.0
nearEMA21 = math.abs(close - ema21) <= ema21 * tolPerc
// Entry conditions
emaCrossUp = ta.crossover(ema9, ema21)
emaCrossDown = ta.crossunder(ema9, ema21)
longConditionBasic = bullTrend and (nearEMA21 or close >= vwapVal) and emaCrossUp and rsi > rsiThreshold
shortConditionBasic = bearTrend and (nearEMA21 or close <= vwapVal) and emaCrossDown and rsi < rsiThreshold
longCondition = longConditionBasic and volOk and htf_ok and (not useHTF or htf_bull) and (rsi > rsiThreshold)
shortCondition = shortConditionBasic and volOk and htf_ok and (not useHTF or htf_bear) and (rsi < rsiThreshold)
// More strict: require Tenkan > Kijun for bull and Tenkan < Kijun for bear
ichimokuAlign = (tenkan > kijun) ? 1 : (tenkan < kijun ? -1 : 0)
longCondition := longCondition and (ichimokuAlign == 1)
shortCondition := shortCondition and (ichimokuAlign == -1)
// ATR for SL / trailing
atr = ta.atr(atrLen)
// --- Trade management state variables ---
var float activeLongEntry = na
var float activeShortEntry = na
var float activeLongSL = na
var float activeShortSL = na
var float activeLongTP = na
var float activeShortTP = na
var float activeLongTrail = na
var float activeShortTrail = na
// Function to convert fixed points to price (assumes chart in points as price units)
fixedToPriceLong(p) => p
fixedToPriceShort(p) => p
// On signal, set entry, SL and TP
if longCondition
activeLongEntry := close
// SL
if useSL
if slTypeATR
activeLongSL := close - atr * atrMult
else
activeLongSL := close - fixedToPriceLong(fixedSLpts)
else
activeLongSL := na
// TP
if useTP
if tpTypeRR and useSL and not na(activeLongSL)
risk = activeLongEntry - activeLongSL
activeLongTP := activeLongEntry + risk * tpRR
else
activeLongTP := activeLongEntry + fixedToPriceLong(fixedTPpts)
else
activeLongTP := na
// reset short
activeShortEntry := na
activeShortSL := na
activeShortTP := na
// init trailing
activeLongTrail := activeLongSL
if shortCondition
activeShortEntry := close
if useSL
if slTypeATR
activeShortSL := close + atr * atrMult
else
activeShortSL := close + fixedToPriceShort(fixedSLpts)
else
activeShortSL := na
if useTP
if tpTypeRR and useSL and not na(activeShortSL)
riskS = activeShortSL - activeShortEntry
activeShortTP := activeShortEntry - riskS * tpRR
else
activeShortTP := activeShortEntry - fixedToPriceShort(fixedTPpts)
else
activeShortTP := na
// reset long
activeLongEntry := na
activeLongSL := na
activeLongTP := na
// init trailing
activeShortTrail := activeShortSL
// Trailing logic (update only when in profit beyond 'lock-in')
if not na(activeLongEntry) and useTrailing
// current unrealized profit in points
currProfitPts = close - activeLongEntry
if currProfitPts >= trailLockInPts
// declare candidate before use to avoid undeclared identifier errors
float candidate = na
if trailType == "ATR"
candidate := close - atr * trailATRmult
else
candidate := close - ta.ema(close, trailEMAlen)
// move trail stop up but never below initial SL
activeLongTrail := math.max(nz(activeLongTrail, activeLongSL), candidate)
// ensure trail never goes below initial SL if SL exists
if useSL and not na(activeLongSL)
activeLongTrail := math.max(activeLongTrail, activeLongSL)
// update SL to trailing
activeLongSL := activeLongTrail
if not na(activeShortEntry) and useTrailing
currProfitPtsS = activeShortEntry - close
if currProfitPtsS >= trailLockInPts
// declare candidateS before use
float candidateS = na
if trailType == "ATR"
candidateS := close + atr * trailATRmult
else
candidateS := close + ta.ema(close, trailEMAlen)
activeShortTrail := math.min(nz(activeShortTrail, activeShortSL), candidateS)
if useSL and not na(activeShortSL)
activeShortTrail := math.min(activeShortTrail, activeShortSL)
activeShortSL := activeShortTrail
// Detect TP/SL hits (for plotting & alerts)
longTPHit = not na(activeLongTP) and close >= activeLongTP
longSLHit = not na(activeLongSL) and close <= activeLongSL
shortTPHit = not na(activeShortTP) and close <= activeShortTP
shortSLHit = not na(activeShortSL) and close >= activeShortSL
if longTPHit or longSLHit
// reset long state after hit
activeLongEntry := na
activeLongSL := na
activeLongTP := na
activeLongTrail := na
if shortTPHit or shortSLHit
activeShortEntry := na
activeShortSL := na
activeShortTP := na
activeShortTrail := na
// Plot EMAs
p_ema9 = plot(ema9, title="EMA9", linewidth=1)
plot(ema21, title="EMA21", linewidth=1)
plot(ema50, title="EMA50", linewidth=2)
// Plot VWAP
plot(vwapVal, title="VWAP", linewidth=2, style=plot.style_line)
// Plot Ichimoku lines (Tenkan & Kijun)
plot(tenkan, title="Tenkan", linewidth=1)
plot(kijun, title="Kijun", linewidth=1)
// Plot cloud (senkouA & senkouB shifted forward)
plot(senkouA, title="Senkou A", offset=displacement, transp=60)
plot(senkouB, title="Senkou B", offset=displacement, transp=60)
fill(plot(senkouA, offset=displacement), plot(senkouB, offset=displacement), color = senkouA > senkouB ? color.new(color.green, 80) : color.new(color.red, 80))
// Plot active trade lines
plotshape(not na(activeLongEntry), title="Active Long", location=location.belowbar, color=color.new(color.green, 0), style=shape.circle, size=size.tiny)
plotshape(not na(activeShortEntry), title="Active Short", location=location.abovebar, color=color.new(color.red, 0), style=shape.circle, size=size.tiny)
plot(activeLongSL, title="Long SL", color=color.red, linewidth=2)
plot(activeLongTP, title="Long TP", color=color.green, linewidth=2)
plot(activeShortSL, title="Short SL", color=color.red, linewidth=2)
plot(activeShortTP, title="Short TP", color=color.green, linewidth=2)
// Arrows / labels
if showArrows
if longCondition
label.new(bar_index, low, "BUY", style=label.style_label_up, color=color.green, textcolor=color.white, size=size.small)
if shortCondition
label.new(bar_index, high, "SELL", style=label.style_label_down, color=color.red, textcolor=color.white, size=size.small)
// Alerts
// alertcondition must be declared in global scope so TradingView can create alerts from them
alertcondition(longCondition, "VWAP+EMA+Ichimoku+RSI — BUY (STRICT)", "BUY signal from VWAP+EMA+Ichimoku+RSI (STRICT)")
alertcondition(shortCondition, "VWAP+EMA+Ichimoku+RSI — SELL (STRICT)", "SELL signal from VWAP+EMA+Ichimoku+RSI (STRICT)")
// Runtime alerts (still use alert() to trigger immediate alerts; webhook is added in TradingView Alert dialog)
if alertOn
if longCondition
alert("VWAP+EMA+Ichimoku+RSI — BUY (STRICT)", alert.freq_once_per_bar_close)
if shortCondition
alert("VWAP+EMA+Ichimoku+RSI — SELL (STRICT)", alert.freq_once_per_bar_close)
// Alerts for TP/SL hits
if longTPHit
alert("LONG TP HIT", alert.freq_once_per_bar_close)
if longSLHit
alert("LONG SL HIT", alert.freq_once_per_bar_close)
if shortTPHit
alert("SHORT TP HIT", alert.freq_once_per_bar_close)
if shortSLHit
alert("SHORT SL HIT", alert.freq_once_per_bar_close)
// Info table
var table info = table.new(position.top_right, 1, 8)
if barstate.islast
table.cell(info, 0, 0, text = 'Trend: ' + (bullTrend ? 'Bull' : bearTrend ? 'Bear' : 'Neutral'))
table.cell(info, 0, 1, text = 'EMA9/21/50: ' + str.tostring(ema9, format.mintick) + ' / ' + str.tostring(ema21, format.mintick) + ' / ' + str.tostring(ema50, format.mintick))
table.cell(info, 0, 2, text = 'VWAP: ' + str.tostring(vwapVal, format.mintick))
table.cell(info, 0, 3, text = 'RSI: ' + str.tostring(rsi, format.mintick))
table.cell(info, 0, 4, text = 'Vol OK: ' + (volOk ? 'Yes' : 'No'))
table.cell(info, 0, 5, text = 'HTF: ' + htfTF + ' ' + (htf_bull ? 'Bull' : htf_bear ? 'Bear' : 'Neutral'))
table.cell(info, 0, 6, text = 'ActiveLong: ' + (not na(activeLongEntry) ? 'Yes' : 'No'))
table.cell(info, 0, 7, text = 'ActiveShort: ' + (not na(activeShortEntry) ? 'Yes' : 'No'))
// End of script
BigCandleAndRSIAlertChanges Candle Color to your choosing for Big Candles or Big Wick Candles or Over Bought/Oversold RSI Levels.
Minor Break of Structure (Minor BoS)This indicator extracts and isolates the Minor Break of Structure (BoS) logic from a full SMC framework and presents it as a clean, lightweight tool for structure-based price action traders.
Unlike traditional BOS indicators that rely on swing calculations with heavy filtering, this script uses original SMC-style minor structure logic to detect meaningful shifts in internal order flow.
A Minor BoS appears when price breaks above a minor swing high (bullish) or below a minor swing low (bearish), confirming a short-term continuation in trend direction.
Features:
Bullish Minor BoS detection
Bearish Minor BoS detection
Automatic line plotting with extend-right
Clear “Minor BoS” label with tiny footprint
Customizable line styles and colors
Lightweight & optimized for fast execution
Zero repainting on BoS confirmations
This tool is ideal for traders who want a simple, clean, and reliable structure-based signal without the noise of major structure, order blocks, liquidity sweeps, or external SMC modules.
Multi Timeframe Traffic LightsMonthly, Weekly, Daily, Hourly previous candle range vs current price. Inside = orange, above = green, below = red
Candle Points (Based on High/Low)Places a dot on the candle at the 25% 50% and 75% mark.
Candle body opacity needs to reduced to see the dots when then are within the candle body.
XAU Macro Regime + Mispricing OscillatorThis indicator is designed to measure the true macro environment behind gold (XAUUSD) and identify when price is aligned with macro flows or mispriced relative to them.
It combines a macro composite index, a mispricing spread oscillator, and automatic divergence detection into one tool.
1. Macro Composite Index (Regime Filter)
The top layer of the indicator constructs a macro regime score derived from:
A basket of gold FX pairs (XAUJPY, XAUAUD, XAUCHF, XAUNZD, XAUSGD)
The inverted DXY (to represent USD pressure on gold)
US30 (to capture global risk appetite and macro sentiment)
Each component is normalized and weighted, then combined into a composite macro index.
A smoothed baseline (SMA) is subtracted from this composite to form the Regime Line.
Interpretation
Regime > 0 (Green background):
Macro environment is supportive for gold.
XAUUSD is more likely to rise, consolidate, or mean revert upward.
Regime < 0 (Red background):
Macro environment is hostile for gold.
XAUUSD is more likely to fall, struggle, or mean revert downward.
This creates a macro trend filter that tells you when it is safer to prefer longs, shorts, or stay out.
2. Mispricing Spread Oscillator (Spread MACD)
The second layer measures the difference between XAUUSD and the macro composite index:
Spread = (Macro Composite) – (Normalized XAUUSD)
This spread is then smoothed into a signal line, and a histogram is plotted from their difference (MACD-style).
Interpretation
Spread > 0:
Gold is undervalued relative to macro conditions.
Macro strength > price strength.
Spread < 0:
Gold is overvalued relative to macro conditions.
Price strength > macro strength.
Spread crossing above signal:
Macro momentum turning bullish relative to price.
Spread crossing below signal:
Macro momentum turning bearish relative to price.
Green histogram: acceleration upward
Red histogram: acceleration downward
This oscillator captures mispricing, momentum shifts, and macro-pressure reversals.
3. Automatic Divergence Detection
The indicator automatically detects:
-Bullish Divergence-
XAUUSD makes a lower low
Spread makes a higher low
→ Price is weaker than macro reality → potential bullish reversal or mispricing reversion.
-Bearish Divergence-
XAUUSD makes a higher high
Spread makes a lower high
→ Price is stronger than macro reality → potential bearish reversal or exhaustion.
Labels (“Bull div” / “Bear div”) appear directly on the oscillator for clarity.
4. What The Indicator Seeks To Do
This indicator aims to answer the question:
“Is gold moving with the true macro pressure behind it, or diverging from it?”
Most gold indicators only watch XAUUSD price.
This one watches:
-gold cross-currency flows
-USD strength
-global risk sentiment
-gold’s relative position vs macro
-mispricing momentum
-divergence between price and macro reality
This creates a unique tool that:
-Detects when gold is overextended
-Detects when gold is undervalued
-Reveals hidden macro strength or weakness
-Highlights turning points and exhaustion
-Shows when a pullback is likely to end
-Shows when a rally is likely to fail
-Gives regime-aware trade direction (long vs short bias)
-Adds divergence labels for precision entries
DAS-Style RVOLDAS RVOL compares the current 1-minute volume to the average volume of that same minute over the past 14 trading days.
Example:
Current 10:00 AM 1-minute volume = 10M
Avg 10:00 AM 1-min volume over last 14 days = 1M
→ RVOL = 10.0 (or 1000%)
So this is time-of-day specific — not just average volume across the whole day.
MTF Slow Stochastic Buy/Sellcompare between 2 timeframe 1 minute and 3 minute, if both 1 and 3 minute time frame value %K is greater then %D then display BUY text.
if both timeframe value %D is greater then %K, display SELL text
Stochastic Signalbuy and sell indicator for slow stochastic, basic indicator to show buy and sell position based on slow stochastic 3 minute time frame.
MAT's Equal Highs and Lows IndicatorEqual highs and lows indicator. This is an indicator that marks out equal highs and lows within the market, wich can be a strong draw on liquidity.
Current Candle Vertical LineDescription
The Current Candle Vertical Line indicator draws a fully customizable vertical line on the most recent candle (live bar). This provides a clear visual anchor for active traders, especially during fast-moving markets or multi-chart setups.
The line extends from the top of the chart to the bottom, ensuring maximum visibility—regardless of zoom level or price scale.
Features
✔ Fully customizable line color
✔ Adjustable opacity (0–100%)
✔ Custom line thickness
✔ Three selectable line styles: Solid, Dashed, or Dotted
✔ Automatically deletes old line and redraws on the newest bar
✔ Works on any timeframe, chart type, and asset
Use Cases
Highlight the current candle during live trading
Keep visual focus when scalping or trading futures
Align entries with indicators on lower or higher timeframes
Improve visibility during high volatility
Support multi-monitor or multi-chart layouts
Notes
The indicator draws the line only on the last active bar.
Since overlay=true, the line appears in the main chart panel.
This script does not generate alerts (visual marker only).
WEEKLY - 3-Condition Arrows - Buy & SellVersion 1.
On the WEEKLY time frame, this indicator will add a green BUY arrow to a stock price when the following 3 conditions are ALL true:
BUY (all 3 conditions are true)
1. Stock price > 50 EMA
2. MACD line above moving average
3. Williams %R (Best_Solve version) is above moving average
Conversely, a red SELL arrow will point out when the following 3 conditions are ALL true:
SELL (all 3 conditions are true)
1. Stock price < 50 EMA
2. MACD line below moving average
3. Williams %R (Best_Solve version) is below the moving average
Harris Triple Impulse Candle Detector Triple impulse candle detector system. Indicator uses size multiplier, volume multiplier and body to mick ratio, to calculate the size of its impulse
Highlight 6-7 PM (IST) candle + mark H/L (Hourly)📌 Highlight 6–7 PM Candle (IST) + High/Low Lines (No Labels)
This indicator automatically detects the 6:00–7:00 PM candle (IST) on the hourly timeframe and visually marks it on the chart.
It highlights the candle and draws horizontal High and Low levels without any labels—making the chart clean and easy to read.
✅ Features
Highlights the 6–7 PM hourly candle (timezone adjustable: IST/UTC/Exchange).
Draws high & low horizontal lines from the target candle.
Option to extend the lines for a selected number of bars.
Optional restriction to only show on 1-hour timeframe.
Clean design — no labels, no clutter.
🛠️ Inputs
Timezone (default: Asia/Kolkata)
Target Hour (default: 18 = 6 PM)
Highlight Color
High/Low Line Colors
Line Extension Length
Enable/Disable Hourly-only Mode
🎯 Use Case
Useful for traders who track post-market candles, volatility behavior, range levels, or want to build intraday strategies based on evening session highs/lows.
First Fvg Strategy with CHoCH Exits, Adaptive TP & Entry TimerA strategy that is purely based off of prices reaction to the first presented fair value gap at 9:30 market open. Works best on NASDAQ one minute timeframe. Experimental indicator for me to back test first presented fair value gap.






















