10MA Crosses Above 20MA//@version=5
indicator("10MA Crosses Above 20MA", overlay=true)
ma10 = ta.sma(close, 10)
ma20 = ta.sma(close, 20)
plot(ma10, color=color.orange, title="10MA")
plot(ma20, color=color.blue, title="20MA")
crossUp = ta.crossover(ma10, ma20)
alertcondition(crossUp, title="10MA Crosses Above 20MA", message="10MA升穿20MA,可能是買入訊號!")
Chart patterns
10MA Crosses Above 20MA//@version=5
indicator("10MA Crosses Above 20MA", overlay=true)
ma10 = ta.sma(close, 10)
ma20 = ta.sma(close, 20)
plot(ma10, color=color.orange, title="10MA")
plot(ma20, color=color.blue, title="20MA")
crossUp = ta.crossover(ma10, ma20)
alertcondition(crossUp, title="10MA Crosses Above 20MA", message="10MA升穿20MA,可能是買入訊號!")
Opening Range Gaps [TakingProphets]What is an Opening Range Gap (ORG)?
In ICT, the Opening Range Gap is defined as the price difference between the previous session’s close (e.g., 4:00 PM EST in U.S. indices) and the current day’s open (9:30 AM EST).
That gap is a liquidity void—an area where no trading occurred during regular hours.
Why ICT Traders Care About ORG
Liquidity Void (Gap Fill Logic)
-Because the gap is an untraded area, it naturally acts as a draw on liquidity.
-Price often seeks to rebalance by retracing into or fully filling this void.
Premium/Discount Sensitivity
-Once the ORG is defined, ICT treats it as a mini dealing range.
-Above EQ (Consequent Encroachment) = algorithmic premium (sell-sensitive).
-Below EQ = algorithmic discount (buy-sensitive).
-Price reaction at these levels gives a precise read on institutional intent intraday.
Support/Resistance from ORG
-If the session opens above prior close, the gap often acts as support until violated.
-If the session opens below prior close, the gap often acts as resistance until reclaimed.
Key ICT Concepts Anchored to ORG
Consequent Encroachment (CE): The midpoint of the gap. The algo is highly sensitive to CE as a decision point: reject → continuation; reclaim → reversal.
Draw on Liquidity (DoL): Price is algorithmically “pulled” toward gap fills, CE, or the opposite side of the ORG.
Order Flow Confirmation: If price ignores the gap and runs away from it, this signals strong institutional order flow in that direction.
Confluence with Other Tools: FVGs, OBs, and HTF PD arrays often overlap with ORG levels, strengthening setups.
Practical Application for Traders
Bias Formation:
Use ORG EQ as a line in the sand for intraday bias.
If price trades below ORG EQ after the open → look for short setups into the prior day’s low or external liquidity.
If price trades above ORG EQ → favor longs into highs/liquidity pools.
Execution Framework:
Wait for liquidity raids or market structure shifts at ORG edges (.00, .25, .50, .75).
Target: EQ, opposite quarter, or full gap fill.
Precision Reads:
ORG lines let traders anticipate where algorithms are likely to respond, providing mechanical invalidation and clear targets without clutter.
Big BaseA 120 bar breakout is considered powerful because it identifies price moves beyond a significant and long term reference point the highest closing price over approximately 6 months of trading days. Such breakouts signal strong momentum and often mark the start of major new trends or significant price swings.
It represents a breakout beyond a well established resistance level formed over many weeks, highlighting strong buying interest that overcame prior price ceilings.
This timeframe reduces noise from short term fluctuations, helping focus on sustained moves with higher probability of follow through
Breakouts from long consolidation periods tend to generate increased volatility, attracting more traders and volume, which supports stronger trends.
These breakouts can act as a reliable signal for entry points in both swing trading and longer-term investing, often leading to substantial price appreciation.
To leverage such breakouts, traders typically confirm the breakout with volume spikes, set appropriate stop loss levels just below the breakout price, and manage risk carefully since not all breakouts hold.
Odd Digit Candle High/Low Sums [Cross-Aware EMA]DO NOt use this
This is only a test showcasing cool different color options and stuff
It has no use
Do not use
SMA Pro (Tick)Simple moving average based on 100 ticks, by default. Use for high volume markets like ES, NQ, and RTY.
Multi-Timeframe MACD with Color Mix (Nikko)Multi-Timeframe MACD with Color Mix (Nikko) Indicator
This documentation explains the benefits of the "Multi-Timeframe MACD with Color Mix (Nikko)" indicator for traders and provides easy-to-follow steps on how to use it. Written as of 05:06 AM +07 on Saturday, October 04, 2025, this guide focuses on helping you, as a trader, get the most out of this tool with clear, practical advice before diving into the technical details.
Benefits for Traders
1. Multi-Timeframe Insight
This indicator lets you see momentum trends across 15-minute, 1-hour, 1-day, and 1-week timeframes all on one chart. This big-picture view helps you catch both quick market moves and long-term trends without flipping between charts, saving you time and giving you a fuller understanding of the market.
2. Visual Momentum Representation
The background changes from red to green based on short-term (15m) momentum, giving you a quick, easy-to-see signal—red means bearish (prices might drop), and green means bullish (prices might rise). The histogram uses a mix of red, green, and blue colors to show the combined strength of the 1-hour, 1-day, and 1-week timeframes, helping you spot strong trends at a glance (e.g., a bright mix for strong momentum, darker for weaker).
3. Enhanced Decision-Making
The background and histogram colors work together to confirm trends across different timeframes, making it less likely you’ll act on a false signal. This helps you feel more confident when deciding when to buy, sell, or hold.
4. Proactive Alert System
You can set alerts to notify you when the percentage of bullish timeframes hits your chosen levels (e.g., below 10% for bearish, above 90% for bullish). This keeps you in the loop on big momentum shifts without needing to watch the chart all day—perfect for when you’re busy.
5. Flexibility and Efficiency
You can turn timeframes on or off, adjust settings like speed of the moving averages, and tweak transparency to fit your trading style—whether you’re a fast scalper or a patient swing trader. Everything is shown on one chart, saving you effort, and the colors make it simple to read, even if you’re new to trading.
How to Use It
Getting Started
Add the Indicator: Load the "Multi-Timeframe MACD with Color Mix (Nikko)" onto your TradingView chart using the Pine Script editor or indicator library.
Pick Your Timeframes: Turn on the timeframes that match your trading—use 15m and 1h for quick trades, or 1d and 1w for longer holds—using the enable_15m, enable_1h, enable_1d, enable_1w, and enable_background options.
Reading the Colors
Background Gradient: Watch for red to signal bearish 15m momentum and green for bullish momentum. Adjust the Background_transparency (default 75%, or 25% opacity) if the chart feels too busy—try lowering it to 50 for clearer candlesticks in fast markets.
Histogram and EMA Colors:
The histogram and its Exponential Moving Average (EMA) line show a mix of red (1-week), green (1-day), and blue (1-hour) based on how strong the momentum is in each timeframe.
Brighter colors mean stronger momentum—white (all bright) shows all timeframes are pushing up hard, while darker shades (like gray or black) mean weaker or mixed momentum.
Turn off a timeframe (e.g., enable_1h = false) to see how it changes the color mix and focus on what matters to you.
Setting Alerts
Set Your Levels: Choose a threshold_low (default 10%) and threshold_high (default 90%) based on your comfort zone or past market patterns to catch big turns.
Get Notifications: Use TradingView alerts to get pings when the market hits your set levels, so you can act without staring at the screen.
Practical Tips
Pair with Other Tools: Use it with support/resistance lines or the RSI to double-check your moves and build a solid plan.
Tweak Settings: Adjust fast_length, slow_length, and signal_smoothing to match your asset’s speed, and bump up the lookback (default 50) for steadier trends in wild markets.
Practice First: Test different timeframe combos on a demo account to find what works best for you.
Understanding the Colors (Simple Explanation)
How Colors Work
The histogram and its EMA line use a color mix based on a simple idea from color theory, like mixing paints with red, green, and blue (RGB):
Red comes from the 1-week timeframe, green from 1-day, and blue from 1-hour.
When all three timeframes show strong upward momentum, they blend into bright white—the brightest color, like a super-bright light telling you the market’s roaring up.
If some timeframes are weak or pulling down, the mix gets darker (like gray or black), warning you the momentum might not be solid.
Brighter is Better
Bright Colors = Strong Opportunity: The brighter the histogram and EMA (closer to white), the more all your chosen timeframes are in agreement that prices are rising. This is your signal to think about buying or holding, as it points to a powerful trend you can ride.
Dark Colors = Caution: A darker mix (toward black) means some timeframes are lagging or bearish, suggesting you might wait or consider selling. It’s like a dim light saying, “Hold on, check again.”
Benefit in Practice: Watching the brightness helps you jump on the best trades fast. For example, a bright white histogram on a green background is like a green traffic light—go for it! A dark gray on red is like a red light—pause and rethink. This quick color check can save you from bad moves and boost your profits when the trend is strong.
Why It Helps
These colors are your fast friend in trading. A bright histogram means all your timeframes are cheering for an uptrend, giving you the confidence to act. A dull one tells you to be careful, helping you avoid traps. It’s like having a color-coded guide to pick the hottest market moments!
Technical Details
Input Parameters
Fast Length (default: 12): Short-term moving average speed.
Slow Length (default: 26): Long-term moving average speed.
Source (default: close): Price data used.
Signal Smoothing (default: 9): Smooths the signal line.
MA Type (default: EMA): Choose EMA or SMA.
Timeframe and Scaling
Timeframes: 15m, 1h, 1d, 1w, with on/off switches.
Lookback Period (default: 50): Sets the data window for trends.
Background Transparency (default: 75%): Controls background see-through level.
MACD Calculation
Per Timeframe: Uses request.security():
MACD Line: ta.ema(src, fast_length) - ta.ema(src, slow_length).
Signal Line: ta.ema(MACD, signal_length).
Histogram: (macd - signal) / 3.0.
Background Gradient
15m Normalization: norm_value = (hist_15m - hist_15m_min) / max(hist_15m_range, 1e-10), limited to 0-1.
RGB Mix: Red drops from 255 to 0, green rises from 0 to 255, blue stays 0.
Apply: color.new(color.rgb(r_val, g_val, b_val), Background_transparency).
Histogram and EMA Colors
Color Assignment:
1h: Blue (#0000FF) if hist_1h >= 0, else black.
1d: Green (#00FF00) if hist_1d >= 0, else black.
1w: Red (#FF0000) if hist_1w >= 0, else black.
Final Color: final_color = color.rgb(min(r, 255), min(g, 255), min(b, 255)).
Plotting: Histogram and EMA use final_color; MACD (#2962FF), signal (#FF6D00).
Alerts
Bullish Percentage: bullish_pct = (bullish_count / bullish_total) * 100, counting hist >= 0.
Triggers: Below threshold_low or above threshold_high.
--------------------------------------------------------------------
Conclusion
The "Multi-Timeframe MACD with Color Mix (Nikko)" is your all-in-one tool to spot trends, confirm moves, and trade smarter with its bright, easy-to-read colors. By using it wisely, you can sharpen your market edge and trade with more confidence.
This README is tailored for traders and reflects the indicator's practical value as of 05:06 AM +07 on October 04, 2025.
X Pax ORThis indicator captures and visualizes the first 30 seconds of price action starting at 9:30 AM New York time and projects its influence throughout the trading day. Inspired by Pax's open range and level analysis, it provides a structured framework for observing how markets interact with an initial volatility burst.
Core Features
Opening 30s Range Box
At the 9:30:00–9:30:30 window, the indicator records the high and low of that short-lived but impactful moment. A translucent blue box is drawn from this range and extends to 4:00 PM, clearly defining the market’s first key battleground.
User-Defined Extension Levels
From the Opening Range High, upward extensions are projected in user-defined step sizes and counts.
From the Opening Range Low, downward extensions are projected using the same configurable step settings.
These levels adapt to your market and trading style, serving as volatility-based expansion markers to track order flow clustering and potential turning points.
Historical Preservation
Each day’s range box and extension lines are stored, allowing you to review prior sessions for pattern recognition.
Independent toggles let you display or hide historical boxes and historical extensions, keeping the chart clean when needed while retaining analytical depth when desired.
Real-Time Updates
Unlike delayed higher-timeframe methods, this indicator anchors directly to intraday action as it unfolds, ensuring levels are available in real time rather than only after candle closure.
Practical Use
Spot early breakouts or failed retests of the Opening 30s range.
Use extension levels as reference points for intraday trend continuation or reversal setups.
Compare current session levels vs. prior sessions to identify recurring order flow behavior.
Design Notes
Step size, extension count, color transparency, and historical storage are fully configurable.
Clean, minimalist presentation keeps focus on price interaction with levels rather than clutter.
Built for traders who value precision and structure in intraday analysis.
Multi Doji Detector v1 [JopAlgo]Multi Doji Detector v1 — fast pattern pings with real filters
What it does (one line):
Marks reversal/indecision candles (Doji family) and impulse candles (Engulfing, Hammer/Inverted Hammer), with optional ATR and volume filters so you don’t chase every wiggle.
Why it’s useful:
Candles tell you when the auction pauses or flips. This tool spots those moments, but only matters at a level. Use it to time entries at Volume Profile edges and AVWAP—not as a standalone signal.
What you’ll see on the chart
Doji family
Standard Doji (▲ blue above bar)
Dragonfly Doji (● green below bar)
Gravestone Doji (● red above bar)
Long-Legged Doji (▲ orange above bar)
Engulfing
Bullish Engulfing (⬆ teal below bar)
Bearish Engulfing (⬇ purple above bar)
Hammer set
Hammer (⬆ lime below bar)
Inverted Hammer (⬆ fuchsia below bar)
Shapes = heads-up. Your trade still needs location, flow, and a risk plan.
How to use it (the simple playbook)
Location first
Work at Volume Profile v3.2 levels (VAH/VAL/POC/LVNs) or Anchored VWAP.
No level, no trade.
Flow check (optional but strong)
Use CVDv1: take signals only when Alignment = OK and Absorption ≠ red against your idea.
Pattern = timing
At support (VAL/AVWAP): Bullish Engulfing or Hammer, or a Dragonfly/Standard Doji that gets follow-through up.
At resistance (VAH/AVWAP): Bearish Engulfing, Inverted Hammer, or Gravestone/Standard Doji with follow-through down.
Confirm the bar
Let the signal close. If the next bar rejects the idea, stand down.
Timeframe guidance
1–5m (scalps): Many marks. Keep ATR/volume filters ON. Only take signals at VA edges / Session AVWAP.
15m–1H (intraday): Cleanest. Best combo of signal quality and frequency.
2H–4H (swing): Fewer, stronger signals. Ideal for AVWAP/Composite VP reclaims.
1D+ (position): Use as a heads-up at weekly levels; wait for intraday confirmation to enter.
Entries, exits, risk (quick rules)
Entry:
Long: Bullish Engulfing / Hammer / bullish Doji at support, next bar holds above signal’s high or prints follow-through.
Short: Bearish Engulfing / Inverted Hammer / bearish Doji at resistance, next bar holds below signal’s low or follows through.
Stop:
Longs: below signal low or structure under the level.
Shorts: above signal high or structure over the level.
Targets:
Aim for POC/HVNs or obvious swings. Don’t use the symbol alone as a target.
Pass:
Signals mid-range (no level), or against CVDv1 (Absorption), or when ATR is tiny (fake pokes).
Settings that actually matter
Doji mode
Use Percentage-Based: compares body to full candle range (default 5%).
Off = fixed definition (body < 10% of range).
Tip: If you get too many dojis, lower the %; if too few, raise it slightly.
Engulfing filters
ATR Length (default 14) + Min Size (ATR): require real body expansion.
Volume confirmation: ON = demand above-average volume; reduces noise.
Hammer filters
Wick-to-Body Ratio: default 2.5×; increase for stricter hammers.
ATR Filter: minimum candle size; blocks tiny “toy” candles.
Volume confirmation: ON = better reliability.
Alerts
Toggle Doji Alerts on if you want all doji pings; engulfing/hammer alerts are always available.
Pattern cheatsheet (what they mean at a level)
Standard Doji: indecision → wait for directional close next bar.
Dragonfly (at support): buyers rejected lows → look for long on follow-through.
Gravestone (at resistance): sellers rejected highs → look for short on follow-through.
Long-Legged Doji: big fight → only trade it at a level and with the next bar confirming.
Bullish Engulfing: fresh control shift to buyers; best after a drive into support.
Bearish Engulfing: fresh control shift to sellers; best after a pop into resistance.
Hammer: capitulation then rescue; strongest when the low sweeps a level and closes back above.
Inverted Hammer: rejection from above; needs downside follow-through to matter.
Best combos (kept simple)
Volume Profile v3.2 : Signals at VAH/VAL/LVNs. Use POC/HVNs for targets.
Anchored VWAP : Reclaims/rejections get much better with a matching candle signal.
CVDv1 : Take signals with flow (ALIGN OK, no Absorption). If Absorption flashes red against your signal, skip it.
Common mistakes this prevents
Taking a “pretty” candle in the middle of nowhere.
Shorting every Gravestone in a real uptrend (ATR expanding, CVD strong).
Ignoring size: Engulfing/Hammer without ATR/volume often fail.
Entering before close: half of false signals vanish by the close.
Practical defaults to start
Doji: Percentage-based ON, 5%
Engulfing: Min size 1.0 ATR, Volume confirm ON
Hammer: Wick/Body 2.5×, ATR filter 0.5, Volume confirm ON
Timeframes: 15m–1H for most assets; 2H–4H for swing
Quick disclaimer
Educational tool, not financial advice. Patterns are timers, not trades by themselves. Always pair with location, flow, and risk.
Chaos Theory Pro # Anyone who has paid for this script previously, please DM as per author instructions to continue your lifetime access
## The Edge: Smart Zone-Based Trading
This indicator's primary advantage lies in its zone-based approach that naturally encompasses critical areas of support and resistance. These zones capture key market structures including:
- High-volume price clusters
- Support-to-resistance (and resistance-to-support) transitions
- Other significant price action areas
By identifying these zones, the indicator addresses two of the most challenging problems in trading : optimal stop loss placement and take profit targeting.
---
## How to Use This Indicator
### Entry Rules: Limit Orders Only
Critical: All entries must be LIMIT orders. Never use market orders or stop orders.
Here's why:
- Why limit orders? The zones represent areas of strong support and resistance (an unintended but beneficial feature of the indicator's design). Price frequently pulls back to these zones before continuing, giving you optimal entry opportunities.
- Why not market orders? You'll miss the better prices at the zone boundaries.
- Why not stop orders? These zones are areas of intense market activity. Price often "spikes" through zone borders to capture liquidity before reversing in the intended direction. Stop orders would get triggered on these false moves.
Proper Entry Technique:
1. Wait for the candle/bar to close
2. Place your limit order at the zone border
3. Let price come to you
### Take Profit Strategy
Target the next zone (recommended) or multiple zones ahead based on your risk appetite. The simplest and most consistent approach is single-zone targeting.
---
## Your Responsibility: Confluence Analysis
The indicator tells you WHERE to enter, WHERE to place your stop loss, and WHERE to take profit. But you must determine WHEN to trade by identifying confluences.
### Minimum Requirement: 3 Confluences
Before placing any order, look for at least three confirming signals from:
- Divergences : RSI, MFI, or CVD candles
- Volume analysis : Volume Profile
- Order flow : Footprint charts
- Price action : Candlestick patterns
- Market theories : Wyckoff, Dow Theory, Elliott Wave
- Other technical tools of your choice
### You Have Time
The indicator provides alerts when price approaches a zone . During the pullback, you have time to conduct thorough confluence analysis. Only place your limit order after identifying your 3+ confluences.
---
## Alternative Approaches
If you backtest and find that market entries work better for your specific strategy (e.g., using moving average crossovers or other triggers), you're free to adapt the method. However, the limit order approach outlined above is designed to work consistently for everyone, regardless of whether they have an existing strategy.
---
## How the Indicator Works: The Mathematical Foundation
### Based on Chaos Theory - A Predictive, Not Reactive System
This indicator represents a fundamentally different approach to market analysis. Unlike traditional indicators that describe what price has done (using averages, volume, volatility), this system predicts where price will go using chaos theory mathematics.
Key Principle : Price behaves as a complex dynamical system that is highly sensitive to initial conditions - similar to weather patterns or planetary orbits. While we cannot predict when price will reach a destination, we can predict where it will likely travel within probability bounds.
### What Makes This Different
Traditional Indicators:
- React to historical data with lagging signals
- Use linear mathematics and statistical averages
- Assume markets are random or follow simple patterns
This Chaos Theory Approach:
- Proactively identifies future probability zones
- Uses non-linear complex systems mathematics
- Treats markets as chaotic but mathematically predictable
- Applies universal mathematical laws (no curve fitting needed)
### The Butterfly Effect in Trading
Small changes at critical junctures can cascade into major trend changes. The indicator identifies these critical probability zones - mathematical "attractors" toward which price is naturally drawn.
### Understanding the Zones
Orange Zones : Mathematical probability destinations where price is likely to expand
Activation Rule : Price must close outside any zone (full candle body, not just wicks) to activate the next probability destination
Primary Principle : Once activated, price travels to the next zone before closing back behind the originating zone border
Red Dots : Indicate areas where valid zone sets were available for trading. Empty spaces mean price closed past the highest/lowest zone or zones were invalidated.
### Probability-Based Performance
The indicator includes a statistics panel that measures real-time success rates - tracking how often price reaches predicted zones before invalidation. This transparent performance measurement allows you to verify probability calculations for your specific symbol and timeframe.
### Universal Application
Because this is based on fundamental mathematical principles (not optimized parameters), it works consistently across:
- All markets: Forex, stocks, crypto, commodities
- All timeframes: From scalping to position trading
- All conditions: No adjustments needed for different instruments
Important Understanding : Price is a fractal structure with multiple initial conditions forming and clashing simultaneously. External events and market manipulation can interfere with natural system progression. This is why we provide probabilities, not certainties.
---
Summary : This indicator gives you the framework—precise zones for entries, stops, and targets based on chaos theory mathematics. You provide the timing through confluence analysis. Together, this creates a complete, systematic approach to trading with probability on your side.
---
## Technical Features & Alert System
### Alert System Enhancement
Alert Type Selector:
* "Limit Alerts" (pending orders) vs "Normal Alerts" (market orders)
* 8 fully customizable alert message templates with placeholder support:
* Limit Long Entry
* Limit Short Entry
* Normal Long Entry
* Normal Short Entry
* Limit Long TP/Cancel
* Limit Short TP/Cancel
* Normal Long TP
* Normal Short TP
### Placeholder System
Dynamic placeholder replacement function supporting:
* {SYMBOL} - Trading pair/instrument
* {ENTRY} - Entry price level
* {SL} - Stop loss price level
* {TP} - Take profit price level
* {COMMENT} - Additional trade notes
* {TIMEFRAME} - Current chart timeframe
* {TIME} - Alert trigger time
* {ZONE} - Zone identifier
Users can customize alert messages while maintaining data accuracy across all automated trading platforms.
### Alert Trigger Points
* Entry alerts fire when zone breakout occurs (i == 0)
* TP alerts fire when take profit conditions are met
* Unique zone identifiers prevent duplicate alerts per zone set (format: Z L/S )
### Input Parameters
Converted hardcoded values to adjustable inputs for maximum flexibility:
* Lookback Period : 10-500 (default 50)
* Value Area Share : 0.1-0.9 (default 0.3)
* Show Volume Profile Stats : Toggle on/off
* Has Premium Subscription : Toggle on/off
* Vertical Display : Toggle on/off
### Code Compliance
* All line.new(), label.new(), and table.new() calls formatted on single lines per PineScript v6 requirements
* Proper variable declarations to prevent compilation errors
* Optimized for maximum performance and stability
Core Logic : All original zone calculation, validation, and visualization logic remains intact and unchanged.
GOLDSNIPER
The Gold Sniper Indicator is a precision trading tool designed specifically for scalping and intraday trading Gold (XAUUSD) on TradingView.
It automatically plots institutional key levels, detects breakout & retest opportunities, and provides trade management levels (Stop Loss & Take Profit) for structured, disciplined trading.
Prev & Curr TF OHLC (Side Labels)🔑 Core Features
Previous TF Levels → Tracks prior session or bar structure (O/H/L/C).
Current TF Levels → Displays the developing O/H/L/C for the active candle/period.
Side Labels → Each level is clearly marked with a label on the chart edge, keeping the workspace uncluttered.
Custom Styling → Adjustable line colors, label positions, and widths for personalization.
Multi-Timeframe Use → Works seamlessly on intraday, swing, and higher timefram
SM OTC style Supply/Demand Zones Lite+//@version=6
indicator("OTC SD MTF Lite+", "OTCSDmtf+", overlay=true, max_boxes_count=200, max_labels_count=200)
// ================= Inputs =================
useH4 = input.bool(true, "Show 4H zones")
useD1 = input.bool(true, "Show 1D zones")
useW1 = input.bool(true, "Show 1W zones")
useM1 = input.bool(false, "Show 1M zones")
baseLen = input.int(2, "Base length (HTF bars)", 1, 5)
wickPctMax = input.float(35.0, "Max wick % in base", 0, 100)
impulseX = input.float(1.5, "Departure body vs ATR (x)", 0.5, 5.0)
atrLen = input.int(14, "ATR length (HTF)")
extendBars = input.int(2000, "Extend bars on chart", 200, 10000)
maxPerTF = input.int(12, "Max zones per TF", 3, 30)
showLegend = input.bool(true, "Show tiny legend (4H/1D/1W/1M)")
onlyNearest = input.bool(false, "Show ONLY nearest zone above/below")
hideOverlapTF = input.bool(true, "Hide overlapping zones within each TF (keep newest)")
showNearestLabels = input.bool(false, "Show distance labels to nearest above/below")
// --- Hard cap for future drawing with xloc.bar_index ---
FUTURE_CAP = 500
// Colors (Demand hues per TF). Supply uses red for contrast.
colH4 = color.new(color.teal, 78)
colD1 = color.new(color.blue, 78)
colW1 = color.new(color.orange, 78)
colM1 = color.new(color.purple, 78)
colSup= color.new(color.red, 78)
// ================= Helpers =================
wickiness(h, l, o, c) =>
rng = math.max(h - l, syminfo.mintick)
topW = h - math.max(o, c)
botW = math.min(o, c) - l
100.0 * (topW + botW) / rng
// Returns: (dTrig, dProx, dDist, sTrig, sProx, sDist)
f_htfSignals(baseBars, wickMax, xImpulse, aLen) =>
float _o = open
float _h = high
float _l = low
float _c = close
float _atr = ta.atr(aLen)
bool ok = true
for i = 1 to baseBars
ok := ok and (wickiness(_h , _l , _o , _c ) <= wickMax)
bool bullDepart = _c > _o and (_c - _o) > xImpulse * _atr
bool bearDepart = _c < _o and (_o - _c) > xImpulse * _atr
float dTrig = 0.0
float dProx = na
float dDist = na
float sTrig = 0.0
float sProx = na
float sDist = na
if ok and bullDepart
float hi = ta.highest(_h, baseBars)
float lo = ta.lowest(_l, baseBars)
dTrig := 1.0
dProx := lo
dDist := hi
if ok and bearDepart
float hi2 = ta.highest(_h, baseBars)
float lo2 = ta.lowest(_l, baseBars)
sTrig := 1.0
sProx := hi2
sDist := lo2
// ================= Pull HTF signals =================
= request.security(syminfo.tickerid, "240", f_htfSignals(baseLen, wickPctMax, impulseX, atrLen))
= request.security(syminfo.tickerid, "D", f_htfSignals(baseLen, wickPctMax, impulseX, atrLen))
= request.security(syminfo.tickerid, "W", f_htfSignals(baseLen, wickPctMax, impulseX, atrLen))
= request.security(syminfo.tickerid, "M", f_htfSignals(baseLen, wickPctMax, impulseX, atrLen))
// ================= Storage per TF =================
var zH4 = array.new_box()
var aH4 = array.new_bool()
var lH4 = array.new_label()
var sH4 = array.new_int() // 1 = Demand, -1 = Supply
var zD1 = array.new_box()
var aD1 = array.new_bool()
var lD1 = array.new_label()
var sD1 = array.new_int()
var zW1 = array.new_box()
var aW1 = array.new_bool()
var lW1 = array.new_label()
var sW1 = array.new_int()
var zM1 = array.new_box()
var aM1 = array.new_bool()
var lM1 = array.new_label()
var sM1 = array.new_int()
// ================= Overlap utils =================
overlap(topA, botA, topB, botB) =>
not (topA < botB or botA > topB)
purgeOverlaps(arrB, arrA, arrL, newTop, newBot) =>
if hideOverlapTF and array.size(arrB) > 0
for i = 0 to array.size(arrB) - 1
if array.get(arrA, i)
box bOld = array.get(arrB, i)
float t = box.get_top(bOld)
float btm = box.get_bottom(bOld)
if overlap(newTop, newBot, t, btm)
box.delete(bOld)
label.delete(array.get(arrL, i))
array.set(arrA, i, false)
// ================= Add zone =================
addZone(arrB, arrA, arrL, arrS, topV, botV, baseColor, isDemand) =>
purgeOverlaps(arrB, arrA, arrL, topV, botV)
int leftX = bar_index - 1
int rightX = bar_index + math.min(extendBars, FUTURE_CAP) // respect +500 cap
box b = box.new(leftX, topV, rightX, botV, xloc=xloc.bar_index, bgcolor=baseColor, border_color=color.new(color.black, 0))
float ly = isDemand == 1 ? topV : botV
st = isDemand == 1 ? label.style_label_down : label.style_label_up
string tagTxt = isDemand == 1 ? "Demand" : "Supply"
label l = label.new(leftX, ly, tagTxt, xloc=xloc.bar_index, style=st, textcolor=color.white, color=color.new(color.black, 0), size=size.tiny)
array.push(arrB, b)
array.push(arrA, true)
array.push(arrL, l)
array.push(arrS, isDemand)
if array.size(arrB) > maxPerTF
box.delete(array.shift(arrB))
array.shift(arrA)
label.delete(array.shift(arrL))
array.shift(arrS)
// ================= Maintain / Invalidate =================
extendAll(arrB, arrA) =>
if array.size(arrB) > 0
for i = 0 to array.size(arrB) - 1
if array.get(arrA, i)
box.set_right(array.get(arrB, i), bar_index + math.min(extendBars, FUTURE_CAP)) // respect +500 cap
invalidate(arrB, arrA, arrL) =>
if array.size(arrB) > 0
for i = 0 to array.size(arrB) - 1
if array.get(arrA, i)
box b = array.get(arrB, i)
float t = box.get_top(b)
float btm = box.get_bottom(b)
// Close outside band → remove
if close > t or close < btm
box.delete(b)
label.delete(array.get(arrL, i))
array.set(arrA, i, false)
// ================= New HTF bar flags (strict booleans) =================
int chH4 = ta.change(time("240"))
int chD1 = ta.change(time("D"))
int chW1 = ta.change(time("W"))
int chM1 = ta.change(time("M"))
bool newBarH4 = useH4 and (not na(chH4)) and (chH4 != 0)
bool newBarD1 = useD1 and (not na(chD1)) and (chD1 != 0)
bool newBarW1 = useW1 and (not na(chW1)) and (chW1 != 0)
bool newBarM1 = useM1 and (not na(chM1)) and (chM1 != 0)
// ================= Create zones on new HTF bar =================
if newBarH4
if d4t > 0 and not na(d4p) and not na(d4d)
addZone(zH4, aH4, lH4, sH4, d4d, d4p, colH4, 1)
if s4t > 0 and not na(s4p) and not na(s4d)
addZone(zH4, aH4, lH4, sH4, s4p, s4d, colSup, -1)
if newBarD1
if d1t > 0 and not na(d1p) and not na(d1d)
addZone(zD1, aD1, lD1, sD1, d1d, d1p, colD1, 1)
if s1t > 0 and not na(s1p) and not na(s1d)
addZone(zD1, aD1, lD1, sD1, s1p, s1d, colSup, -1)
if newBarW1
if w1t > 0 and not na(w1p) and not na(w1d)
addZone(zW1, aW1, lW1, sW1, w1d, w1p, colW1, 1)
if swt > 0 and not na(swp) and not na(swd)
addZone(zW1, aW1, lW1, sW1, swp, swd, colSup, -1)
if newBarM1
if m1t > 0 and not na(m1p) and not na(m1d)
addZone(zM1, aM1, lM1, sM1, m1d, m1p, colM1, 1)
if smt > 0 and not na(smp) and not na(smd)
addZone(zM1, aM1, lM1, sM1, smp, smd, colSup, -1)
// ================= Maintain & Invalidate (every bar) =================
extendAll(zH4, aH4)
extendAll(zD1, aD1)
extendAll(zW1, aW1)
extendAll(zM1, aM1)
invalidate(zH4, aH4, lH4)
invalidate(zD1, aD1, lD1)
invalidate(zW1, aW1, lW1)
invalidate(zM1, aM1, lM1)
// ================= Nearest across all TFs =================
tfNearest(arrB, arrA) =>
int upIdx = -1
int dnIdx = -1
float upDist = 1e10
float dnDist = 1e10
float upBtm = na
float dnTop = na
if array.size(arrB) > 0
for i = 0 to array.size(arrB) - 1
if array.get(arrA, i)
box b = array.get(arrB, i)
float t = box.get_top(b)
float btm = box.get_bottom(b)
if btm >= close
float d = btm - close
if d < upDist
upDist := d
upIdx := i
upBtm := btm
if t <= close
float d2 = close - t
if d2 < dnDist
dnDist := d2
dnIdx := i
dnTop := t
= tfNearest(zH4, aH4)
= tfNearest(zD1, aD1)
= tfNearest(zW1, aW1)
= tfNearest(zM1, aM1)
float upBest = 1e10, dnBest = 1e10
int upArr = -1, upIdxSel = -1, dnArr = -1, dnIdxSel = -1
color upColor = color.new(color.white, 100), dnColor = color.new(color.white, 100)
if (not na(uh4y)) and uh4d < upBest
upBest := uh4d, upArr := 0, upIdxSel := uh4i, upColor := colH4
if (not na(ud1y)) and ud1d < upBest
upBest := ud1d, upArr := 1, upIdxSel := ud1i, upColor := colD1
if (not na(uw1y)) and uw1d < upBest
upBest := uw1d, upArr := 2, upIdxSel := uw1i, upColor := colW1
if (not na(um1y)) and um1d < upBest
upBest := um1d, upArr := 3, upIdxSel := um1i, upColor := colM1
if (not na(dh4y)) and dh4d < dnBest
dnBest := dh4d, dnArr := 0, dnIdxSel := dh4i, dnColor := colH4
if (not na(dd1y)) and dd1d < dnBest
dnBest := dd1d, dnArr := 1, dnIdxSel := dd1i, dnColor := colD1
if (not na(dw1y)) and dw1d < dnBest
dnBest := dw1d, dnArr := 2, dnIdxSel := dw1i, dnColor := colW1
if (not na(dm1y)) and dm1d < dnBest
dnBest := dm1d, dnArr := 3, dnIdxSel := dm1i, dnColor := colM1
// ================= Nearest-only visibility (optional) =================
hideAll(arrB, arrA) =>
if array.size(arrB) > 0
for i = 0 to array.size(arrB) - 1
if array.get(arrA, i)
box.set_bgcolor(array.get(arrB, i), color.new(color.white, 100))
box.set_border_color(array.get(arrB, i), color.new(color.white, 100))
showOne(arrB, arrA, arrS, idx, demColor) =>
if idx >= 0 and idx < array.size(arrB)
if array.get(arrA, idx)
bool isDemand = array.get(arrS, idx) == 1
color c = isDemand ? demColor : colSup
box.set_bgcolor(array.get(arrB, idx), c)
box.set_border_color(array.get(arrB, idx), color.new(color.black, 0))
if onlyNearest
hideAll(zH4, aH4), hideAll(zD1, aD1), hideAll(zW1, aW1), hideAll(zM1, aM1)
if upArr == 0
showOne(zH4, aH4, sH4, upIdxSel, upColor)
if upArr == 1
showOne(zD1, aD1, sD1, upIdxSel, upColor)
if upArr == 2
showOne(zW1, aW1, sW1, upIdxSel, upColor)
if upArr == 3
showOne(zM1, aM1, sM1, upIdxSel, upColor)
if dnArr == 0
showOne(zH4, aH4, sH4, dnIdxSel, dnColor)
if dnArr == 1
showOne(zD1, aD1, sD1, dnIdxSel, dnColor)
if dnArr == 2
showOne(zW1, aW1, sW1, dnIdxSel, dnColor)
if dnArr == 3
showOne(zM1, aM1, sM1, dnIdxSel, dnColor)
// ================= Nearest distance labels (optional) =================
var label nearUp = na
var label nearDn = na
makeNearLabel(y, txt) =>
label.new(bar_index, y, txt, xloc=xloc.bar_index, style=label.style_label_left, color=color.new(color.black, 0), textcolor=color.white, size=size.tiny)
if showNearestLabels
if not na(nearUp)
label.delete(nearUp)
if not na(nearDn)
label.delete(nearDn)
if upArr != -1
box bUp = upArr == 0 ? array.get(zH4, upIdxSel) : upArr == 1 ? array.get(zD1, upIdxSel) : upArr == 2 ? array.get(zW1, upIdxSel) : array.get(zM1, upIdxSel)
float upBtm = box.get_bottom(bUp)
float pctUp = math.round(10000.0 * (upBtm - close) / close) / 100.0
nearUp := makeNearLabel(upBtm, "Nearest Above ~ " + str.tostring(pctUp) + "%")
if dnArr != -1
box bDn = dnArr == 0 ? array.get(zH4, dnIdxSel) : dnArr == 1 ? array.get(zD1, dnIdxSel) : dnArr == 2 ? array.get(zW1, dnIdxSel) : array.get(zM1, dnIdxSel)
float dnTop = box.get_top(bDn)
float pctDn = math.round(10000.0 * (close - dnTop) / close) / 100.0
nearDn := makeNearLabel(dnTop, "Nearest Below ~ " + str.tostring(pctDn) + "%")
// ================= Tiny legend (dots) =================
var table legend = na
if showLegend and na(legend)
legend := table.new(position.top_left, 4, 1)
if showLegend and not na(legend)
table.cell(legend, 0, 0, "● 4H", text_color=color.white, bgcolor=color.new(color.black, 0))
table.cell(legend, 1, 0, "● 1D", text_color=color.white, bgcolor=color.new(color.black, 0))
table.cell(legend, 2, 0, "● 1W", text_color=color.white, bgcolor=color.new(color.black, 0))
table.cell(legend, 3, 0, "● 1M", text_color=color.white, bgcolor=color.new(color.black, 0))
table.cell_set_bgcolor(legend, 0, 0, color.new(color.teal, 70))
table.cell_set_bgcolor(legend, 1, 0, color.new(color.blue, 70))
table.cell_set_bgcolor(legend, 2, 0, color.new(color.orange, 70))
table.cell_set_bgcolor(legend, 3, 0, color.new(color.purple, 70))
DTM 444 BANDS 🚀DTM 444 BANDS 🚀:
The DTM 444 BANDS 🚀 is a powerful, multi-purpose trading indicator combining Supertrend, Dynamic Band Levels, Breakout Signals, and Volume Confirmation to help traders identify high-probability trade setups across different timeframes.
🔧 Key Features
✅ Multi-Timeframe Support
Analyze price action across any timeframe using the Timeframe input.
All band calculations (High, Low, Midline, and Supertrend) are pulled from a higher timeframe for clearer context.
✅ Dynamic Bands Based on Supertrend
High Band: Rolling highest of Supertrend over hiLen period.
Low Band: Rolling lowest of Supertrend over loLen period.
Midline: Midpoint of the above.
Acts like dynamic support/resistance, ideal for trend-following and breakout strategies.
✅ Dual Signal System
Breakout Signals (Buy and Sell): Triggered when price breaks the bands with volume confirmation.
Supertrend Crossover Signals (Buy1 and Sell1): Classic momentum entries with a confirmation twist.
Exit Signals: Optional take-profit/neutral indicators when price reverses.
✅ Volume Confirmation Filter (Optional)
Only triggers signals if the volume exceeds its 20-period SMA.
Helps filter out false breakouts and weak trends in low-liquidity periods.
✅ Visual Enhancements
Color-coded candles based on band positioning (e.g., red = weak, green = strong, etc.)
On-chart labels for each signal for quick reference.
Real-time Signal Dashboard using Pine Script tables showing:
Current signal
Volume filter status
Live volume vs volume SMA
🧪 Practical Use Cases
Trend Traders: Use the Supertrend cross and band breakouts to ride trends early.
Breakout Traders: Catch high-probability moves outside established ranges.
Swing Traders: Time entries and exits using color-coded bars and exit labels.
Volume-Sensitive Traders: Focus on trades with strong volume backing.
📊 Backtest Snapshot
Based on the example chart for Reliance Industries (RELIANCE.NS) on the weekly timeframe:
Several profitable buy and breakout signals during uptrends.
Timely exits and breakdown alerts before reversals.
Volume filter keeps trades clean and avoids noise.
⚙️ Customizable Parameters
High Length and Low Length (default: 19)
Supertrend Multiplier and ATR Length
Volume Filter: Toggle ON/OFF
Volume SMA Length: Default 20
Custom Timeframe: Choose any higher timeframe for multi-timeframe analysis
📢 Alerts Ready
Fully integrated with TradingView alerts:
Breakout & Breakdown
Supertrend crossovers
All alerts respect the volume filter setting
🏁 Final Thoughts
DTM 444 BANDS 🚀 is a versatile and adaptive trading system that blends trend analysis, volatility bands, and volume validation. Whether you're a trend trader, breakout hunter, or swing trader — this tool gives you a structured edge with clear visual cues and real-time alerts.
[SCALPING] L3 Banker Flow (1m Optimized)What’s improved for 1-min scalping:
Shorter lengths for trend and range detection (9, 5, 3, 2).
Faster EMA and weighted averages for quicker signal response.
Entry signal conditions are slightly relaxed (bull_bear_line < 30) for faster entry in micro-trends.
Maintains the same visuals: yellow/green/white/red/blue candles for easy reading.
Ultra Clean Support / Resistance LevelsThis provides an Ultra Clean look for Support and Resistance levels
Ultra Clean Support / Resistance LevelsThis Provides a very clean Support and Resistance level on any timeframe
Monthly Melodies by Bryan Ramirez Three months make up a quarter. My indicator highlights each month in a distinct color: the first month in green, the second in yellow, and the third in orange. Each month functions as its own time window, where the algorithm may lean toward one side of the market more than the other. I like pairing this with Steve Moore’s seasonal tendencies for added context. This approach applies across Futures, Forex, and Crypto.
SMC Strategy with RSI/OB at Market PriceTakes trade using smc with rsi confirmation
Buy Signal Triggers When:
Scenario 1 (Immediate Touch): Price touches/enters bullish OB boundaries AND previous candle closed with RSI ≤ 35
Scenario 2 (Close Inside): Current candle closes inside bullish OB AND current RSI ≤ 35
Sell Signal Triggers When:
Scenario 1 (Immediate Touch): Price touches/enters bearish OB boundaries AND previous candle closed with RSI ≥ 65
Scenario 2 (Close Inside): Current candle closes inside bearish OB AND current RSI ≥ 65
Regular Trading Hours Opening Range Gap (RTH ORG)### Regular Trading Hours (RTH) Gap Indicator with Quartile Levels
**Overview**
Discover overnight gaps in index futures like ES, YM, and NQ, or stocks like SPY, with this enhanced Pine Script v6 indicator. It visualizes the critical gap between the previous RTH close (4:15 PM ET for futures, 4:00 PM for SPY) and the next RTH open (9:30 AM ET), helping traders spot potential price sensitivity formed during after-hours trading.
**Key Features**
- **Standard Gap Boxes**: Semi-transparent boxes highlight the gap range, with optional text labels showing day-of-week and "RTH" identifier.
- **Midpoint Line**: A customizable dashed line at the 50% level, with price labels for quick reference.
- **New: Quartile Lines (25% & 75%)**: Dotted lines (default width 1) mark the quarter and three-quarter points within the gap, ideal for finer intraday analysis. Toggle on/off, adjust style/color/width, and add labels.
- **High-Low Gap Variant**: Optional boxes and midlines for gaps between the prior close's high/low and the open's high/low—perfect for wick-based overlaps on lower timeframes (5-min or below recommended).
- **RTH Close Lines**: Extend previous close levels with dotted lines and price tags.
- **Customization Galore**: Extend elements right, limit historical displays (default: 3 gaps), no-plot sessions (e.g., avoid weekends), and time offsets for non-US indices.
**How to Use**
Apply to 15-min or lower charts for best results. Toggle "extend right" for ongoing levels. SPY auto-adjusts for its 4 PM close.
Tested on major indices—enhance your gap trading strategy today! Questions? Drop a comment.
Thanks to twingall for supplying the original code.
Thanks to The Inner Circle Trader (ICT) for the logical and systematic application.