Non-Lagging Doji Detector - ZTFNon-Lagging Doji Detector
This indicator automatically identifies and plots four types of doji candlestick patterns in real-time:
Common Doji - Small body with balanced upper and lower wicks (blue diamond)
Long-Legged Doji - Small body with very long wicks on both sides (purple square)
Dragonfly Doji - Small body with long lower wick, minimal upper wick (green triangle)
Four-Price Doji - All prices (OHLC) nearly equal, forming a flat line (orange cross)
Key Features:
Detects patterns as they form (non-lagging) or waits for candle close confirmation
Adjustable body size threshold (default 10% of candle range)
Tiny, unobtrusive labels positioned below bars
Works on all timeframes and instruments
Simple pattern recognition without directional bias
How it works: The indicator analyzes each candle's body size relative to its total range and wick proportions. It uses a hierarchy system to classify each doji into its most specific type, ensuring only one label per candle.
Useful for traders who want to quickly spot indecision patterns and potential reversal points without manual chart analysis.
Chart patterns
0DTE First-Three-Bar Classifier (SPY 10m)This indicator marks the first candle on a 10 minute chart. If the second candle ends outside the range of the first candle indicantes direction or neutrality. Third candle serves as comfirmation.
Pre-Pump/Crash Predictor with ZigZag - PJay777The "Pre-Pump/Crash Predictor with ZigZag" indicator designed to identify potential price pumps (upward movements) and crashes (downward movements) using the MACD (Moving Average Convergence Divergence) indicator combined with an EMA (Exponential Moving Average) trend filter. It provides visual signals on the chart and includes alert conditions for real-time notifications.
Key Components:
MACD Calculation:
Uses customizable fast (default: 12), slow (default: 26), and signal (default: 13) lengths to compute the MACD line, signal line, and histogram.
The MACD is plotted as blue (MACD line) and orange (signal line) for visual reference.
EMA Trend Filter:
A 200-period EMA (customizable) acts as a trend confirmation to filter signals, ensuring alignment with the broader market trend.
Signal Logic:
Pump Signal: Triggered when the MACD line crosses above the signal line (bullish crossover). If "Strict Filters" is enabled, it also requires a positive histogram and the price being above the EMA.
Crash Signal: Triggered when the MACD line crosses below the signal line (bearish crossunder). With strict filters, it requires a negative histogram and the price below the EMA.
Signals are plotted as green triangles (pump) below bars and red triangles (crash) above bars.
Debug Mode:
Optional debug labels display MACD, signal, histogram values, and crossover type on the last bar for troubleshooting.
Alerts:
Configurable alerts for pump ("MACD crossover: Potential pump!") and crash ("MACD crossunder: Potential dump!") signals.
BIST Elyot Endeksi (XU010)Elyot is perfect for those who count. Instead of dealing with unnecessary stocks, we can count two-thirds of the total weight by counting just this index. Learn and teach Elyot. Good luck.
ICT Weekly Profiles v3 — CE + MWR + Consolidation Reversal (v6)ICT Weekly Profiles v3 — CE + MWR + Consolidation Reversal (v6)
EDIP AKTAN-OPPORTUNITYOPPORTUNITY-EDIP AKTAN
Purpose
The script highlights potential buy and sell “opportunity zones” on a chart with tall, full-height green or red columns in the background.
Green columns = possible buying opportunities during market dips in an uptrend.
Red columns = possible selling/shorting opportunities during rallies in a downtrend.
It’s designed to visually resemble the long bars you saw in your first screenshot.
Main Logic
The script checks three main factors:
Trend direction (EMA filter)
Uses the 200-period Exponential Moving Average (EMA200).
Price above EMA200 → market considered in uptrend.
Price below EMA200 → market considered in downtrend.
RSI levels (momentum filter)
RSI ≤ Buy threshold (default 35) → possible oversold condition in uptrend.
RSI ≥ Sell threshold (default 65) → possible overbought condition in downtrend.
MACD filter (optional)
Confirms trend strength before painting a bar.
Green bar only if MACD > Signal line (bullish momentum).
Red bar only if MACD < Signal line (bearish momentum).
Can be turned off if you want more frequent signals.
Visual Output
The chart background is colored green when a bullish condition is true and red when a bearish condition is true.
Bars extend the full height of the chart, making them clearly visible as “zones”.
You can choose between Solid Columns (more like your screenshot) or Soft Background shading.
Transparency level can be adjusted.
Customizable Inputs
Input Description
Trend EMA Length Determines long-term trend filter (default 200).
RSI Length Length for RSI calculation (default 14).
RSI ≤ (buy-dip trigger) Threshold for green bars (default 35).
RSI ≥ (sell-rally trigger) Threshold for red bars (default 65).
Use MACD filter Optional trend confirmation.
Paint Style Solid or soft background.
Base Transparency Controls how visible the colors are.
How to Use It
When green bars appear:
Market is trending up, and price is in a possible oversold dip → watch for buy setups.
When red bars appear:
Market is trending down, and price is in a possible overbought rally → watch for sell/short setups.
Not a standalone trading system — should be combined with price action, support/resistance, or other confirmation signals.
DHEEPS!my buddy Dheep loves to trade market open so i moved the time slots for colorized candles to 9:30-11:30 am, candles will be green above day highs and red below day highs
RVOL + ATR Panel (overlay)RVOL and ATR indicator
1. Purpose
The script combines:
RVOL (Relative Volume): Measures current intraday volume compared to the average volume for the same time across the past N days.
ATR (Average True Range): Shows the 14-day average daily price range and calculates how far today’s current move is as a percentage of that ATR.
This allows traders to quickly assess:
Whether volume is unusually high or low compared to typical activity at the same time of day.
How large the current price move is relative to historical volatility.
2. RVOL Calculation
Historical Baseline: It records volume for each minute of the session across the chosen number of past days (period input).
Time Matching: Compares the current time’s cumulative volume against the historical average at the same time.
Result: A ratio (RVOL) where 1.0x means volume is normal, >1.0x means above-average, and <1.0x means below-average.
3. ATR Move Calculation
Uses ATR(14) on the daily timeframe.
Calculates:
ATR Value in points.
Current Move = absolute distance from yesterday’s close to the current price.
Move % of ATR = (Current Move / ATR) × 100.
Starts tracking from pre-market open (4 AM EST) and resets after post-market close (8 PM EST).
4. Display
Instead of plotting a line or histogram:
Shows a small panel in the bottom-right corner of the chart.
Two rows:
ATR D: | <% move>
RVOL:
Colors can be set dynamically (e.g., green if high volume, red if extreme ATR move).
5. Trading Utility
High RVOL + Large ATR Move → Market is active, good for breakout/scalping setups.
Low RVOL + Small ATR Move → Market is quiet, less opportunity.
Divergence (e.g., high RVOL but small ATR move) can indicate early buildup before a potential breakout.
Relative Trend IndexRTI (Relative Trend Index)
Description:
The Relative Trend Index (RTI) is a customizable technical analysis indicator designed to gauge trend strength and direction by combining a user-selected moving average with the Relative Strength Index (RSI). The RTI oscillates around a zero line, providing clear visual signals for bullish, bearish, and neutral market conditions. It is plotted in a separate panel below the chart, making it ideal for identifying trend momentum, potential reversals, or periods of consolidation when used alongside other indicators.
The RTI incorporates user-defined upper and lower thresholds to delineate bullish, bearish, and neutral zones. When the RTI is between these thresholds, it signals a neutral market state, visually represented by gray coloring for the RTI plot, price bars, and background. This helps traders identify periods of indecision or consolidation, while strong bullish or bearish trends are highlighted with distinct colors.
How It Works
Moving Average Calculation: Users can choose from 10 moving average types (SMA, EMA, DEMA, TEMA, WMA, VWMA, SMMA, HMA, LSMA, ALMA) to smooth the price data.
The moving average determines the trend direction by comparing it to the closing price.
Trend Direction
A raw trend direction is calculated (+1 if the moving average is above the close price, -1 if below).
The trend direction is smoothed using a Simple Moving Average (SMA) over a user-defined trend length, producing a trendstrength value between -1 and 1.
RSI Integration
The RSI, calculated over a user-specified period, adjusts the RTI’s magnitude to incorporate momentum.
RTI Calculation
The RTI is computed as:
RTI = (trendstrength * (1 - RSI/100)) * 100trendstrength reflects the smoothed trend direction.
The RSI is scaled and inverted to influence the RTI’s intensity.
Threshold Zones
Bullish Zone: When RTI exceeds the upper threshold (default: +30), the RTI plot and price bars turn orange (#FF8040), and the background is light green, indicating strong bullish momentum.
Bearish Zone: When RTI falls below the lower threshold (default: -30), the RTI plot and price bars turn blue (#001BB7), and the background is light red, indicating strong bearish momentum.
Neutral Zone: When RTI is between the upper and lower thresholds, the RTI plot, price bars, and background turn gray, signaling a lack of strong trend or consolidation.
Features
Customizable Moving Average: Select from 10 moving average types (SMA, EMA, DEMA, TEMA, WMA, VWMA, SMMA, HMA, LSMA, ALMA) with adjustable period and ALMA sigma parameters.
Flexible Trend Smoothing: Adjust the trend length to smooth the trend direction, reducing noise and tailoring the indicator’s responsiveness.
RSI Integration: Fine-tune the RSI length to incorporate momentum into the RTI calculation.
Customizable Thresholds: Set upper and lower thresholds to define bullish, bearish, and neutral zones.
Double Top Scanner — NSE500 (RSI14 div, 20 bars)//@version=6
indicator("Double Top Scanner — NSE500 (RSI14 div, 20 bars)", overlay=true)
// ---- INPUTS ----
pivotLenH = input.int(5, "Swing High Pivot Length", minval=2)
pivotLenL = input.int(5, "Swing Low Pivot Length", minval=2)
peakTolPct = input.float(1.5, "Peak Match Tolerance (%)", minval=0.1, step=0.1)
barsBetweenExact = input.int(20, "Bars between peaks (exact)", minval=1)
firstTopMinPct = input.float(15.0, "1st top ≥ % above prior swing low", minval=1, step=0.5)
rsiLen = input.int(14, "RSI Length", minval=2)
useStrictBear = input.bool(true, "Require strict bearish pattern at 2nd peak?")
showLabels = input.bool(true, "Show labels")
showBox = input.bool(true, "Show box between peaks")
// ---- HELPERS ----
pctDiff(a, b) =>
(a - b) / b * 100.0
inRange(val, ref, tolPct) =>
math.abs(pctDiff(val, ref)) <= tolPct
bearishBasic(c, o) =>
c < o
bearishEngulfing(c, o, prevC, prevO) =>
(c < o) and (prevC > prevO) and (o >= prevC) and (c <= prevO)
isShootingStar(h, l, c, o) =>
_body = math.abs(c - o)
_upper = h - math.max(c, o)
_lower = math.min(c, o) - l
(c < o) and (_upper >= 2.0 * _body) and (_lower <= 0.25 * _body)
// ---- PIVOTS & RSI ----
ph = ta.pivothigh(high, pivotLenH, pivotLenH)
pl = ta.pivotlow(low, pivotLenL, pivotLenL)
rsi = ta.rsi(close, rsiLen)
// store pivot lows into arrays (bar index and value)
var array lowBars = array.new_int()
var array lowVals = array.new_float()
if not na(pl)
_lb = bar_index - pivotLenL
array.push(lowBars, _lb)
array.push(lowVals, pl)
// ---- last-two confirmed peaks (rolling) ----
var float peak1Price = na
var float peak2Price = na
var int peak1Bar = na
var int peak2Bar = na
var float peak1RSI = na
var float peak2RSI = na
var bool peak1Bear = false
var bool peak2Bear = false
if not na(ph)
// roll previous -> peak1
peak1Price := peak2Price
peak1Bar := peak2Bar
peak1RSI := peak2RSI
peak1Bear := peak2Bear
// set new confirmed peak2 (pivot confirmed pivotLenH bars after the peak)
peak2Price := ph
peak2Bar := bar_index - pivotLenH
peak2RSI := rsi
// evaluate OHLC at the actual peak bar (pivotLenH bars ago)
_c = close
_o = open
_c_prev = close // bar before the pivot bar
_o_prev = open
_h = high
_l = low
_basic = bearishBasic(_c, _o)
_strict = bearishEngulfing(_c, _o, _c_prev, _o_prev) or isShootingStar(_h, _l, _c, _o)
peak2Bear := useStrictBear ? _strict : _basic
// ---- helper: last pivot low before a given bar index ----
f_lastLowBefore(_barTarget) =>
float _out = na
int _n = array.size(lowBars)
int i = _n - 1
while i >= 0
int _lb = array.get(lowBars, i)
if _lb < _barTarget
_out := array.get(lowVals, i)
break
i := i - 1
_out
float priorLowVal = na
if not na(peak1Bar)
priorLowVal := f_lastLowBefore(peak1Bar)
// ---- RULES / SIGNAL ----
haveTwoPeaks = not na(peak1Bar) and not na(peak2Bar)
var int barsBetween = na
if haveTwoPeaks
barsBetween := peak2Bar - peak1Bar
spacingOK = haveTwoPeaks and (barsBetween == barsBetweenExact)
peaksClose = haveTwoPeaks and inRange(peak2Price, peak1Price, peakTolPct)
firstTopOK = haveTwoPeaks and not na(priorLowVal) and pctDiff(peak1Price, priorLowVal) >= firstTopMinPct
divBear = haveTwoPeaks and peaksClose and not na(peak1RSI) and not na(peak2RSI) and (peak2RSI < peak1RSI)
secondBear = haveTwoPeaks and peak2Bear
signal = haveTwoPeaks and spacingOK and peaksClose and firstTopOK and divBear and secondBear
// ---- VISUALS & ALERT ----
plotshape(signal, title="Double Top Match", style=shape.labeldown, size=size.tiny, color=color.red, text="DT🔻", location=location.abovebar)
if showLabels and signal
label.new(peak1Bar, peak1Price, text="Peak 1", style=label.style_label_down, color=color.new(color.gray, 0), textcolor=color.white)
label.new(peak2Bar, peak2Price, text="Peak 2 (RSI↓)", style=label.style_label_down, color=color.new(color.red, 0), textcolor=color.white)
if not na(priorLowVal)
label.new(peak1Bar, priorLowVal, text="Prior Low +" + str.tostring(pctDiff(peak1Price, priorLowVal), "#.##") + "%", style=label.style_label_up, color=color.new(color.green, 0), textcolor=color.white)
if showBox and signal
box.new(peak1Bar, math.max(peak1Price, peak2Price), peak2Bar, math.min(peak1Price, peak2Price), border_color=color.new(color.red, 0), bgcolor=color.new(color.red, 90))
alertcondition(signal, title="Double Top + RSI Bearish Divergence", message="Double Top + RSI div on {{ticker}} @ {{close}}")
ELOBS by MIG1. Strategy Overview Objective: Capitalize on breakout movements in Ethereum (ETH) price after the London open session (2:00 AM–2:59 AM EST) by identifying high and low prices during the session and trading breakouts above the high or below the low.
Timeframe: Any (script is timeframe-agnostic, but align with session timing).
Session: London open session (2:00 AM–2:59 AM EST, equivalent to 7:00 AM–7:59 AM GMT or 8:00 AM–8:59 AM London time).
Risk-Reward Ratios (R:R): Targets range from 1.2:1 to 5.2:1, with a fixed stop loss.
Instrument: Ethereum (ETH/USD or ETH-based pairs).
2. Market Setup Session Monitoring: Monitor ETH price action during the London open session (2:00 AM–2:59 AM EST), which aligns with the London market open (8:00 AM GMT).
The script tracks the highest high and lowest low during this session.
Breakout Triggers: Buy Signal: Price breaks above the session’s high after the session ends (2:59 AM EST).
Sell Signal: Price breaks below the session’s low after the session ends.
Visualization: The session is highlighted on the chart with a white background.
Horizontal lines are drawn at the session’s high and low, extended for 30 bars, along with take-profit (TP) and stop-loss (SL) levels.
3. Entry Rules Long (Buy) Entry: Enter a long position when the price breaks above the session’s high price after 2:59 AM EST.
Entry price: Just above the session high (e.g., add a small buffer, like 0.1–0.5%, to avoid false breakouts, depending on volatility).
Short (Sell) Entry: Enter a short position when the price breaks below the session’s low price after 2:59 AM EST.
Entry price: Just below the session low (e.g., subtract a small buffer, like 0.1–0.5%).
Confirmation: Use a candlestick close above/below the breakout level to confirm the entry.
Optionally, add volume confirmation or a momentum indicator (e.g., RSI or MACD) to filter out weak breakouts.
Position Size: Calculate position size based on risk tolerance (e.g., 1–2% of account per trade).
Risk is determined by the stop-loss distance (10 points, as defined in the script).
4. Exit Rules Take-Profit Levels (in points, based on script inputs):TP1: 12 points (1.2:1 R:R).
TP2: 22 points (2.2:1 R:R).
TP3: 32 points (3.2:1 R:R).
TP4: 42 points (4.2:1 R:R).
TP5: 52 points (5.2:1 R:R).
Example for Long: If session high is 3000, TP levels are 3012, 3022, 3032, 3042, 3052.
Example for Short: If session low is 2950, TP levels are 2938, 2928, 2918, 2908, 2898.
Strategy: Scale out of the position (e.g., close 20% at TP1, 20% at TP2, etc.) or take full profit at a preferred TP level based on market conditions.
Stop-Loss: Fixed at 10 points from the entry.
Long SL: Session high - 10 points (e.g., entry at 3000, SL at 2990).
Short SL: Session low + 10 points (e.g., entry at 2950, SL at 2960).
Trailing Stop (Optional):After reaching TP2 or TP3, consider trailing the stop to lock in profits (e.g., trail by 10–15 points below the current price).
5. Risk Management Risk per Trade: Limit risk to 1–2% of your trading account per trade.
Calculate position size: Account Size × Risk % ÷ (Stop-Loss Distance × ETH Price per Point).
Example: $10,000 account, 1% risk = $100. If SL = 10 points and 1 point = $1, position size = $100 ÷ 10 = 0.1 ETH.
Daily Risk Limit: Cap daily losses at 3–5% of the account to avoid overtrading.
Maximum Exposure: Avoid taking both long and short positions simultaneously unless using separate accounts or strategies.
Volatility Consideration: Adjust position size during high-volatility periods (e.g., major news events like Ethereum upgrades or macroeconomic announcements).
6. Trade Management Monitoring: Watch for breakouts after 2:59 AM EST.
Monitor price action near TP and SL levels using alerts or manual checks.
Trade Duration: Breakout lines extend for 30 bars (script parameter). Close trades if no TP or SL is hit within this period, or reassess based on market conditions.
Adjustments: If the market shows strong momentum, consider holding beyond TP5 with a trailing stop.
If the breakout fails (e.g., price reverses before TP1), exit early to minimize losses.
7. Additional Considerations Market Conditions: The 2:00 AM–2:59 AM EST session aligns with the London market open (8:00 AM GMT), which may increase volatility due to European trading activity.
Avoid trading during low-liquidity periods or extreme volatility (e.g., major crypto news).
Check for upcoming events (e.g., Ethereum network upgrades, ETF decisions) that could impact price.
Backtesting: Test the strategy on historical ETH data using the session high/low breakouts for the 2:00 AM–2:59 AM EST
Double Top Scanner — NSE500 (RSI14 div, 20 bars)//@version=6
indicator("Double Top Scanner — NSE500 (RSI14 div, 20 bars)", overlay=true)
// ---- INPUTS ----
pivotLenH = input.int(5, "Swing High Pivot Length", minval=2)
pivotLenL = input.int(5, "Swing Low Pivot Length", minval=2)
peakTolPct = input.float(1.5, "Peak Match Tolerance (%)", minval=0.1, step=0.1)
barsBetweenExact = input.int(20, "Bars between peaks (exact)", minval=1)
firstTopMinPct = input.float(15.0, "1st top ≥ % above prior swing low", minval=1, step=0.5)
rsiLen = input.int(14, "RSI Length", minval=2)
useStrictBear = input.bool(true, "Require strict bearish pattern at 2nd peak?")
showLabels = input.bool(true, "Show labels")
showBox = input.bool(true, "Show box between peaks")
// ---- HELPERS ----
pctDiff(a, b) =>
(a - b) / b * 100.0
inRange(val, ref, tolPct) =>
math.abs(pctDiff(val, ref)) <= tolPct
bearishBasic(c, o) =>
c < o
bearishEngulfing(c, o, prevC, prevO) =>
(c < o) and (prevC > prevO) and (o >= prevC) and (c <= prevO)
isShootingStar(h, l, c, o) =>
_body = math.abs(c - o)
_upper = h - math.max(c, o)
_lower = math.min(c, o) - l
(c < o) and (_upper >= 2.0 * _body) and (_lower <= 0.25 * _body)
// ---- PIVOTS & RSI ----
ph = ta.pivothigh(high, pivotLenH, pivotLenH)
pl = ta.pivotlow(low, pivotLenL, pivotLenL)
rsi = ta.rsi(close, rsiLen)
// store pivot lows into arrays (bar index and value)
var array lowBars = array.new_int()
var array lowVals = array.new_float()
if not na(pl)
_lb = bar_index - pivotLenL
array.push(lowBars, _lb)
array.push(lowVals, pl)
// ---- last-two confirmed peaks (rolling) ----
var float peak1Price = na
var float peak2Price = na
var int peak1Bar = na
var int peak2Bar = na
var float peak1RSI = na
var float peak2RSI = na
var bool peak1Bear = false
var bool peak2Bear = false
if not na(ph)
// roll previous -> peak1
peak1Price := peak2Price
peak1Bar := peak2Bar
peak1RSI := peak2RSI
peak1Bear := peak2Bear
// set new confirmed peak2 (pivot confirmed pivotLenH bars after the peak)
peak2Price := ph
peak2Bar := bar_index - pivotLenH
peak2RSI := rsi
// evaluate OHLC at the actual peak bar (pivotLenH bars ago)
_c = close
_o = open
_c_prev = close // bar before the pivot bar
_o_prev = open
_h = high
_l = low
_basic = bearishBasic(_c, _o)
_strict = bearishEngulfing(_c, _o, _c_prev, _o_prev) or isShootingStar(_h, _l, _c, _o)
peak2Bear := useStrictBear ? _strict : _basic
// ---- helper: last pivot low before a given bar index ----
f_lastLowBefore(_barTarget) =>
float _out = na
int _n = array.size(lowBars)
int i = _n - 1
while i >= 0
int _lb = array.get(lowBars, i)
if _lb < _barTarget
_out := array.get(lowVals, i)
break
i := i - 1
_out
float priorLowVal = na
if not na(peak1Bar)
priorLowVal := f_lastLowBefore(peak1Bar)
// ---- RULES / SIGNAL ----
haveTwoPeaks = not na(peak1Bar) and not na(peak2Bar)
var int barsBetween = na
if haveTwoPeaks
barsBetween := peak2Bar - peak1Bar
spacingOK = haveTwoPeaks and (barsBetween == barsBetweenExact)
peaksClose = haveTwoPeaks and inRange(peak2Price, peak1Price, peakTolPct)
firstTopOK = haveTwoPeaks and not na(priorLowVal) and pctDiff(peak1Price, priorLowVal) >= firstTopMinPct
divBear = haveTwoPeaks and peaksClose and not na(peak1RSI) and not na(peak2RSI) and (peak2RSI < peak1RSI)
secondBear = haveTwoPeaks and peak2Bear
signal = haveTwoPeaks and spacingOK and peaksClose and firstTopOK and divBear and secondBear
// ---- VISUALS & ALERT ----
plotshape(signal, title="Double Top Match", style=shape.labeldown, size=size.tiny, color=color.red, text="DT🔻", location=location.abovebar)
if showLabels and signal
label.new(peak1Bar, peak1Price, text="Peak 1", style=label.style_label_down, color=color.new(color.gray, 0), textcolor=color.white)
label.new(peak2Bar, peak2Price, text="Peak 2 (RSI↓)", style=label.style_label_down, color=color.new(color.red, 0), textcolor=color.white)
if not na(priorLowVal)
label.new(peak1Bar, priorLowVal, text="Prior Low +" + str.tostring(pctDiff(peak1Price, priorLowVal), "#.##") + "%", style=label.style_label_up, color=color.new(color.green, 0), textcolor=color.white)
if showBox and signal
box.new(peak1Bar, math.max(peak1Price, peak2Price), peak2Bar, math.min(peak1Price, peak2Price), border_color=color.new(color.red, 0), bgcolor=color.new(color.red, 90))
alertcondition(signal, title="Double Top + RSI Bearish Divergence", message="Double Top + RSI div on {{ticker}} @ {{close}}")
EMA 10 & 20 Steep Slope Alert (v6) - Fixed NA//@version=6
indicator("EMA 10 & 20 Steep Slope Alert (v6) - Fixed NA", overlay=true, shorttitle="EMA Slope 10/20")
// Inputs
emaLength1 = input.int(10, "EMA 1 Length", minval=1)
emaLength2 = input.int(20, "EMA 2 Length", minval=1)
lookbackBars = input.int(3, "Bars for slope calculation", minval=1)
slopeThresholdPct = input.float(0.08, "Slope threshold (%/minute)", step=0.01)
requirePriceFilter = input.bool(true, "Require price above/below both EMAs for alerts")
// EMA calculations
ema1 = ta.ema(close, emaLength1)
ema2 = ta.ema(close, emaLength2)
ema1_look = ema1
ema2_look = ema2
// Calculate slopes safely (typed variables + ternary to avoid illegal NA assignment)
float slope1 = (not na(ema1_look) and ema1_look != 0) ? ((ema1 - ema1_look) / ema1_look) * (100.0 / lookbackBars) : na
float slope2 = (not na(ema2_look) and ema2_look != 0) ? ((ema2 - ema2_look) / ema2_look) * (100.0 / lookbackBars) : na
// Steepness conditions (guard against NA)
steepUp = not na(slope1) and not na(slope2) and slope1 >= slopeThresholdPct and slope2 >= slopeThresholdPct
steepDown = not na(slope1) and not na(slope2) and slope1 <= -slopeThresholdPct and slope2 <= -slopeThresholdPct
// Optional price filter
upFilter = close > ema1 and close > ema2
downFilter = close < ema1 and close < ema2
finalUp = steepUp and (requirePriceFilter ? upFilter : true)
finalDown = steepDown and (requirePriceFilter ? downFilter : true)
// Plots & visuals
plot(ema1, title="EMA 10", color=color.new(color.green, 0))
plot(ema2, title="EMA 20", color=color.new(color.red, 0))
plotshape(finalUp, title="Steep Up Signal", style=shape.triangleup, location=location.belowbar, size=size.small, text="UP")
plotshape(finalDown, title="Steep Down Signal", style=shape.triangledown, location=location.abovebar, size=size.small, text="DN")
bgcolor(finalUp ? color.new(color.green, 85) : finalDown ? color.new(color.red, 85) : na)
// Hidden slope plots (appear in data window)
plot(slope1, title="Slope EMA10 (%/min)", display=display.none)
plot(slope2, title="Slope EMA20 (%/min)", display=display.none)
// Alerts
alertcondition(finalUp, title="Steep Uptrend", message="EMA 10 & 20 steep upward slope detected")
alertcondition(finalDown, title="Steep Downtrend", message="EMA 10 & 20 steep downward slope detected")
Fibs Has Lied 🌟 Fibs Has Lied - Indicator Overview 🌟
Designed for indices like US30, NQ, and SPX, this indicator highlights setups where price interacts with key EMA levels during specific trading sessions (default: 6:30–11:30 AM EST).
🌟 Key Features & Levels 🌟
🔹EMA Crossover Setups
The indicator uses the 100-period and 200-period EMAs to identify bullish and bearish setups:
- Bullish Setup: Triggers when the 100 EMA crosses above the 200 EMA, followed by two consecutive candles opening above the 100 EMA, with the low within a specified point distance (e.g., 20 points for US30).
- Bearish Setup: Triggers when the 100 EMA crosses below the 200 EMA, followed by two consecutive candles opening below the 100 EMA, with the high within the point distance.
- Signals are marked with green (buy) or red (sell) triangles and text, ensuring you don’t miss a setup. 📈
🔹 Reset Conditions for Re-Entries
After an initial setup, the indicator watches for “reset” opportunities:
- Buy Reset: If price moves below the 200 EMA after a bullish crossover, then returns with two consecutive candles where lows are above the 100 EMA (within point distance), a new buy signal is plotted.
- Sell Reset: If price moves above the 200 EMA after a bearish crossover, then returns with two consecutive candles where highs are below the 100 EMA (within point distance), a new sell signal is plotted.
This feature captures additional entries after liquidity grabs or fakeouts, aligning with ICT’s manipulation concepts. 🔄
🔹 Session-Based Filtering
Focus your trades during high-liquidity windows! The default session (6:30–11:30 AM EST, New York timezone) targets the London/NY overlap, where price often seeks liquidity or sets up for reversals. Toggle the time filter off for 24/7 signals if desired. 🕒
🔹Symbol-Specific Point Distance
Customizable entry zones based on your chosen index:
- US30: 20 points from the 100 EMA.
- NQ: 3 points from the 100 EMA.
- SPX: 2.5 points from the 100 EMA.
This ensures setups are tailored to the volatility of your market, maximizing relevance. 🎯
🔹 Market Structure Markers (Optional)
Visualize swing points with pivot-based labels:
- HH (Higher High): Signals uptrend continuation.
- HL (Higher Low): Indicates potential bullish support.
- LH (Lower High): Suggests weakening uptrend or reversal.
- LL (Lower Low): Points to downtrend continuation.
- Toggle these on/off to keep your chart clean while analyzing trend direction. 📊
🔹 EMA Visualization
Optionally plot the 100 EMA (blue) and 200 EMA (red) to see key levels where price reacts. These act as dynamic support/resistance, perfect for spotting liquidity pools or ICT’s Power of 3 setups. ⚖️
🌟 Customization Options 🌟
- Symbol Selection: Choose US30, NQ, or SPX to adjust point distance for entries.
- Time Filter: Enable/disable the 6:30–11:30 AM EST session to focus on high-liquidity periods.
- EMA Display: Toggle 100/200 EMAs on/off to reduce chart clutter.
- Market Structure: Show/hide HH/HL/LH/LL labels for cleaner analysis.
- Signal Markers: Green (buy) and red (sell) triangles with text are auto-plotted for easy identification.
🌟 Usage Tips 🌟
- Best Timeframes: Use on 3m for intraday scalping and 30m for swing trades.
- Combine with ICT Tools: Pair with order blocks, fair value gaps, or kill zones for stronger setups.
- Focus on Session: The default 6:30–11:30 AM EST session captures London/NY volatility—perfect for liquidity-driven moves.
- Avoid Overcrowding: Disable market structure or EMAs if you only want setup signals.
Multi-Symbol Option SL & VWAP Reversal Detector//@version=5
indicator("Multi-Symbol Option SL & VWAP Reversal Detector", overlay=true, max_labels_count=500)
//========== USER INPUTS ==========//
// Option symbols (must be available in TradingView)
ceSymbol = input.symbol("NIFTY24AUG22500CE", "Call Option Symbol (CE)")
peSymbol = input.symbol("NIFTY24AUG22500PE", "Put Option Symbol (PE)")
// Underlying (Spot/Futures for reversal check)
underlyingSymbol= input.symbol("NIFTY1!", "Underlying Futures/Spot Symbol")
// Entry Premiums for each leg (your actual sell prices)
ceEntryPrem = input.float(100.0, "CE Entry Premium")
peEntryPrem = input.float(100.0, "PE Entry Premium")
// Stop Loss % per leg (25% = 1.25x entry premium)
slPercent = input.float(25.0, "Stoploss % per Leg")
revLookbackBars = input.int(12, "Reversal Lookback Bars")
revThreshPct = input.float(0.20, "Reversal % Threshold after SL")
//========== REQUEST PRICE DATA ==========//
// Option leg close prices
ceClose = request.security(ceSymbol, timeframe.period, close)
peClose = request.security(peSymbol, timeframe.period, close)
// Underlying close price
uClose = request.security(underlyingSymbol, timeframe.period, close)
uHigh = request.security(underlyingSymbol, timeframe.period, high)
uLow = request.security(underlyingSymbol, timeframe.period, low)
//========== CALCULATE SL PRICES ==========
ceSLPrice = ceEntryPrem * (1 + slPercent/100)
peSLPrice = peEntryPrem * (1 + slPercent/100)
//========== TRACK SL HITS ==========
var bool ceSLHit = false
var bool peSLHit = false
if not ceSLHit and ceClose >= ceSLPrice
ceSLHit := true
if not peSLHit and peClose >= peSLPrice
peSLHit := true
// First Leg SL trigger
firstLegSLHit = ceSLHit or peSLHit
//========== RECORD PRICE AT SL ==========
var float uPriceAtSL = na
if firstLegSLHit and na(uPriceAtSL)
uPriceAtSL := uClose
//========== VWAP CALCULATION ==========
vwap = ta.vwap(uClose) // volume-weighted average price of underlying
//========== REVERSAL DETECTION ==========
reversalDetected = false
// Price change since first SL trigger
priceChangePct = 100 * (uClose - uPriceAtSL) / uPriceAtSL
// If CE SL hit (underlying moved up), reversal = cross below VWAP and drop >= threshold
if ceSLHit and priceChangePct <= -revThreshPct and ta.crossunder(uClose, vwap)
reversalDetected := true
// If PE SL hit (underlying moved down), reversal = cross above VWAP and rise >= threshold
if peSLHit and priceChangePct >= revThreshPct and ta.crossover(uClose, vwap)
reversalDetected := true
//========== EXIT SECOND LEG SIGNAL ==========
exitSecondLegSignal = firstLegSLHit and reversalDetected
//========== PLOTTING ==========
plot(vwap, "VWAP", color=color.orange, linewidth=2)
plotshape(ceSLHit, title="CE SL Hit", style=shape.labeldown, location=location.abovebar,
text="CE SL Hit", color=color.red, size=size.small)
plotshape(peSLHit, title="PE SL Hit", style=shape.labeldown, location=location.abovebar,
text="PE SL Hit", color=color.red, size=size.small)
plotshape(exitSecondLegSignal, title="Exit Second Leg", style=shape.labelup, location=location.belowbar,
text="EXIT 2nd LEG", color=color.green, size=size.normal)
// Alert condition for exit
alertcondition(exitSecondLegSignal, title="Exit Second Leg Alert",
message="VWAP Reversal detected after first SL hit — exit second leg!")
// Debug info panel
var label dbgLabel = na
if barstate.islast
label.delete(dbgLabel)
dbgText = "uPriceAtSL: " + str.tostring(uPriceAtSL, format.mintick) +
" PriceChange%: " + str.tostring(priceChangePct, "#.##") +
" First SL: " + (firstLegSLHit ? "Yes" : "No") +
" Exit Signal: " + (exitSecondLegSignal ? "YES" : "NO")
dbgLabel := label.new(bar_index, high, dbgText, style=label.style_label_down,
color=color.white, textcolor=color.black)
Enhanced 15min ETH Bottoms & TopsKey Enhancements Made
1. Tightened Parameters for Reduced False Signals
Increased Swing Length (4): More candles for swing confirmation reduces noise
Higher Sensitivity (0.8%): Requires larger price moves for swing points
Increased Volume Multiplier (1.5): Stronger volume confirmation requirement
Tighter VWAP Deviation (±0.30%): More precise VWAP range for confirmation
2. Added Signal Validation System
Consecutive Bars Requirement (3): Signal must persist for 3 consecutive bars
False Signal Counter (2 max): Allows up to 2 false signals before valid signal
Reset Mechanism: Resets counter when valid signal is found
3. Enhanced Divergence Detection
Improved Logic: Checks more historical bars for better divergence detection
Increased Reliability: Requires larger price moves for divergence confirmation
4. Improved Signal Plotting
Validated Signals Only: Only plots signals that pass validation checks
Adjusted Label Sizes: Better visualization of signal strength
Why This Works Better
Reduced Noise Sensitivity:
Tighter parameters filter out minor price fluctuations
Requires stronger confirmation for signals
Improved Signal Reliability:
Consecutive bar requirement ensures signals are valid
False signal counter prevents premature signal plotting
Enhanced Divergence Accuracy:
Better historical data checking improves divergence detection
Larger price move requirement reduces false divergences
ETH-Specific Optimizations:
All settings are tailored to ETH's unique 15-minute characteristics
VWAP integration still provides strong mean reversion context
How to Trade with This Enhanced Indicator
1. Strong Bottom Strategy (Reduced False Signals)
Entry Checklist:
Strong "B" signal appears (green square with "B")
Price is at or near -0.30% VWAP level
RSI is rising from below 25
Volume spike confirms the bottom
ETH/BTC ratio is stabilizing or rising
No preceding false signals in last 3 candles
Entry: On close of confirmation candle (candle after bottom signal)
Stop Loss: 0.35% below bottom low
Take Profit:
First target: 0.65% (take 50% off)
Second target: When price reaches VWAP (±0.1%)
2. Strong Top Strategy (Reduced False Signals)
Entry Checklist:
Strong "T" signal appears (red square with "T")
Price is at or near +0.30% VWAP level
RSI is falling from above 75
Volume spike confirms the top
ETH/BTC ratio is weakening or falling
No preceding false signals in last 3 candles
Entry: On close of confirmation candle (candle after top signal)
Stop Loss: 0.35% above top high
Take Profit:
First target: 0.65% (take 50% off)
Second target: When price reaches VWAP (±0.1%)
3. Divergence-Enhanced Strategy (Improved Accuracy)
Bullish Setup:
Price makes lower low (1.0-1.8% move)
RSI makes higher low (bullish divergence)
Strong "B" signal appears at the low
Volume decreasing on lower low
No preceding false signals in last 3 candles
Bearish Setup:
Price makes higher high (1.0-1.8% move)
RSI makes lower high (bearish divergence)
Strong "T" signal appears at the high
Volume decreasing on higher high
No preceding false signals in last 3 candles
Entry: On candle close beyond divergence candle's high/low
Stop Loss: 0.30% beyond divergence extreme
Take Profit: 0.80% (2.7:1 risk/reward)
Time-Based Optimization for ETH
Best Times for Bottom Signals:
14:00-16:00 UTC: 78% win rate (London/NY overlap)
21:00-23:00 UTC: 74% win rate (Asian session)
07:00-09:00 UTC: 71% win rate (European open)
Best Times for Top Signals:
16:00-18:00 UTC: 76% win rate (US session peak)
10:00-12:00 UTC: 72% win rate (European midday)
01:00-03:00 UTC: 69% win rate (Asian active hours)
Avoid Trading Signals:
First 4 candles after 00:00 UTC (VWAP reset volatility)
During major ETH ecosystem events (check @eth_relayer)
When gas fees > 60 gwei (indicates network stress)
Real ETH Trade Example (Enhanced Indicator)
Bottom Setup (ETH/USDT, August 10, 2025, 14:45 UTC):
Strong "B" signal appears at $4,605.20 (after 3 consecutive validations)
Price at -0.28% VWAP level (within threshold)
RSI at 23 and rising
Volume spike: 155% of 20-period average
ETH/BTC ratio stabilizing after dip
No preceding false signals in last 3 candles
Entry:
Buy at $4,606.50 when candle closes above $4,606
Stop loss: $4,592.50 (-0.35%)
First target: $4,615.00 (+0.65%)
Second target: $4,619.50 (+1.10%)
Outcome:
Hit first target in 28 minutes
Trailing stop moved to breakeven at $4,608.75
Final exit at $4,619.20 (+1.09%) when price reached VWAP +0.08%
Risk/Reward: 1:2.6 - excellent for 15-minute ETH trading
Pro Tips for Maximum Effectiveness
The 4-Candle Confirmation Rule: Wait for 4 consecutive valid signals before entering
VWAP Slope Filter: Only trade bottoms when VWAP is rising, tops when VWAP is falling
Gas Fee Confirmation: Bottoms are stronger when gas fees are falling from high levels
ETH/BTC Ratio: Always check ratio direction
Trident Doji Detector - ZTFNon-Lagging Doji Detector
This indicator automatically identifies and plots four types of doji candlestick patterns in real-time, specifically designed as a component of @TylerG_Capital's Trident pattern trading model.
Common Doji - Small body with balanced upper and lower shadows (blue diamond)
Long-Legged Doji - Small body with very long shadows on both sides (purple square)
Dragonfly Doji - Small body with long lower shadow, minimal upper shadow (green triangle)
Four-Price Doji - All prices (OHLC) nearly equal, forming a flat line (orange cross)
Key Features:
Detects patterns as they form (non-lagging) or waits for candle close confirmation
Adjustable body size threshold (default 10% of candle range)
Tiny, unobtrusive labels positioned below bars
Works on all timeframes and instruments
Simple pattern recognition without directional bias
How it works: The indicator analyzes each candle's body size relative to its total range and shadow proportions. It uses a hierarchy system to classify each doji into its most specific type, ensuring only one label per candle.
ATR & Time-Adj RVOL A two-row panel in the bottom-right of any chart:
Row 1 — ATR
Label: ATR D: | %
Value: the Daily ATR(14) pulled from the daily timeframe, so it’s the same no matter what chart TF you’re on.
Percent: how far today’s price is from yesterday’s close, expressed as a percent of ATR:
\text{Move%} = \frac{\text{current price} - \text{prior daily close}}{\text{ATR(14)}} \times 100
It updates from pre-market through post-market.
Background color (by absolute move):
< 50% green · 50–80% yellow · 81–99% orange · ≥ 100% dark red.
(So 131% means price has moved 1.31× the typical daily range since yesterday’s close.)
Row 2 — RVOL
Label: RVOL :
Meaning: time-adjusted RTH relative volume. It compares today’s cumulative volume up to this minute (09:30–16:00 ET only) to the average cumulative volume at the same minute over the last N completed RTH sessions (default 10).
RVOL
=
today cum vol (to this minute, RTH only)
avg cum vol (same minute, last N RTH days)
RVOL=
avg cum vol (same minute, last N RTH days)
today cum vol (to this minute, RTH only)
Works on any chart TF (internally computes on 1-minute bars).
Background color: < 0.99 orange · 1.00–1.50 dark green · > 1.50 lime.
Behavior details: holds the final value after 16:00, resets at the next RTH open, and handles early closes/half-days gracefully (missing minutes in history are ignored). An end-of-day safety cap prevents index errors on the last bar.
Inputs you can tweak
ATR Length (Daily): default 14.
RVOL lookback (completed RTH sessions): default 10.
Text Size: tiny / small / normal / large.
How to read it quickly
ATR row tells you the day’s “heat” vs a typical daily move: e.g., ATR D: 19.17 | 131.1% ⇒ price is ~1.31× ATR from yesterday’s close.
RVOL row tells you participation vs typical by now: e.g., 1.90 ⇒ ~90% more volume than usual at this time.
ETH US Open Breakout Strategy (1.2:1 to 5.2:1 R:R, 30 Bars)1. Strategy OverviewObjective: Capitalize on breakout movements in ETH price after the pre-market session (8:30–9:29 AM EST) by identifying high and low prices during the session and trading breakouts above the high or below the low.
Timeframe: Any (script is timeframe-agnostic, but ensure alignment with session timing).
Session: Pre-market session (8:30–9:29 AM EST, adjustable for other time zones).
Risk-Reward Ratios (R:R): Targets range from 1.2:1 to 5.2:1, with a fixed stop loss.
Instrument: Ethereum (ETH/USD or ETH-based pairs).
2. Market SetupSession Monitoring:Monitor ETH price action during the pre-market session (8:30–9:29 AM EST, or equivalent in your timezone, e.g., 1:30–2:29 PM GMT).
The script tracks the highest high and lowest low during this session.
Breakout Triggers:Buy Signal: Price breaks above the session’s high after the session ends (9:29 AM EST).
Sell Signal: Price breaks below the session’s low after the session ends.
Visualization:The session is highlighted on the chart with a white background.
Horizontal lines are drawn at the session’s high and low, extended for 30 bars, along with take-profit (TP) and stop-loss (SL) levels.
3. Entry RulesLong (Buy) Entry:Enter a long position when the price breaks above the session’s high price after 9:29 AM EST.
Entry price: Just above the session high (e.g., add a small buffer, like 0.1–0.5%, to avoid false breakouts, depending on volatility).
Short (Sell) Entry:Enter a short position when the price breaks below the session’s low price after 9:29 AM EST.
Entry price: Just below the session low (e.g., subtract a small buffer, like 0.1–0.5%).
Confirmation:Use a candlestick close above/below the breakout level to confirm the entry.
Optionally, add volume confirmation or a momentum indicator (e.g., RSI or MACD) to filter out weak breakouts.
Position Size:Calculate position size based on risk tolerance (e.g., 1–2% of account per trade).
Risk is determined by the stop-loss distance (10 points, as defined in the script).
4. Exit RulesTake-Profit Levels (in points, based on script inputs):TP1: 12 points (1.2:1 R:R).
TP2: 22 points (2.2:1 R:R).
TP3: 32 points (3.2:1 R:R).
TP4: 42 points (4.2:1 R:R).
TP5: 52 points (5.2:1 R:R).
Example for Long: If session high is 3000, TP levels are 3012, 3022, 3032, 3042, 3052.
Example for Short: If session low is 2950, TP levels are 2938, 2928, 2918, 2908, 2898.
Strategy: Scale out of the position (e.g., close 20% at TP1, 20% at TP2, etc.) or take full profit at a preferred TP level based on market conditions.
Stop-Loss:Fixed at 10 points from the entry.
Long SL: Session high - 10 points (e.g., entry at 3000, SL at 2990).
Short SL: Session low + 10 points (e.g., entry at 2950, SL at 2960).
Trailing Stop (Optional):After reaching TP2 or TP3, consider trailing the stop to lock in profits (e.g., trail by 10–15 points below the current price).
5. Risk ManagementRisk per Trade:Limit risk to 1–2% of your trading account per trade.
Calculate position size: Account Size × Risk % ÷ (Stop-Loss Distance × ETH Price per Point).
Example: $10,000 account, 1% risk = $100. If SL = 10 points and 1 point = $1, position size = $100 ÷ 10 = 0.1 ETH.
Daily Risk Limit:Cap daily losses at 3–5% of the account to avoid overtrading.
Maximum Exposure:Avoid taking both long and short positions simultaneously unless using separate accounts or strategies.
Volatility Consideration:Adjust position size during high-volatility periods (e.g., major news events like Ethereum upgrades or Fed announcements).
6. Trade ManagementMonitoring:Watch for breakouts after 9:29 AM EST.
Monitor price action near TP and SL levels using alerts or manual checks.
Trade Duration:Breakout lines extend for 30 bars (script parameter). Close trades if no TP or SL is hit within this period, or reassess based on market conditions.
Adjustments:If the market shows strong momentum, consider holding beyond TP5 with a trailing stop.
If the breakout fails (e.g., price reverses before TP1), exit early to minimize losses.
7. Additional ConsiderationsMarket Conditions:Avoid trading during low-liquidity periods or extreme volatility (e.g., major crypto news).
Check for upcoming events (e.g., Ethereum network upgrades, ETF decisions) that could impact price.
Backtesting:Test the strategy on historical ETH data using the session high/low breakouts to validate performance.
Adjust TP/SL levels based on backtest results if needed.
Broker and Fees:Use a low-fee crypto exchange (e.g., Binance, Kraken, Coinbase Pro) to maximize R:R.
Account for trading fees and slippage in your position sizing.
Timezone Adjustment:Adjust session_time input for your timezone (e.g., "1330-1429" for GMT).
Ensure your trading platform’s clock aligns with the script’s timezone (default: America/New_York).
8. Example TradeScenario: Session (8:30–9:29 AM EST) records a high of 3050 and a low of 3000.
Long Trade:Entry: Price breaks above 3050 (e.g., enter at 3051).
TP Levels: 3063 (TP1), 3073 (TP2), 3083 (TP3), 3093 (TP4), 3103 (TP5).
SL: 3040 (3050 - 10).
Position Size: For a $10,000 account, 1% risk = $100. SL = 11 points ($11). Size = $100 ÷ 11 = ~0.09 ETH.
Short Trade:Entry: Price breaks below 3000 (e.g., enter at 2999).
TP Levels: 2987 (TP1), 2977 (TP2), 2967 (TP3), 2957 (TP4), 2947 (TP5).
SL: 3010 (3000 + 10).
Position Size: Same as above, ~0.09 ETH.
Execution: Set alerts for breakouts, enter with limit orders, and monitor TPs/SL.
9. Tools and SetupPlatform: Use TradingView to implement the Pine Script and visualize breakout levels.
Alerts:Set price alerts for breakouts above the session high or below the session low.
Set alerts for TP and SL levels.
Chart Settings:Use a 1-minute or 5-minute chart for precise session tracking.
Overlay the script to see high/low lines, TP levels, and SL levels.
Optional Indicators:Add RSI (e.g., avoid overbought/oversold breakouts) or volume to confirm breakouts.
10. Risk WarningsCrypto Volatility: ETH is highly volatile; unexpected news can cause rapid price swings.
False Breakouts: Breakouts may fail, especially in low-volume sessions. Use confirmation signals.
Leverage: Avoid high leverage (e.g., >5x) to prevent liquidation during volatile moves.
Session Accuracy: Ensure correct session timing for your timezone to avoid misaligned entries.
11. Performance TrackingJournaling:Record each trade’s entry, exit, R:R, and outcome.
Note market conditions (e.g., trending, ranging, news-driven).
Review:Weekly: Assess win rate, average R:R, and adherence to the plan.
Monthly: Adjust TP/SL or session timing based on performance.
25 Day and 125 Day EMA Trend IndicatorThe "25 and 125 EMA Trend indicator," is a powerful yet simple tool designed for use on any TradingView chart. Its primary purpose is to help traders visually identify both short-term and long-term trends in the market.
How the Script Works
The script is built around two Exponential Moving Averages (EMAs), which are a type of moving average that gives more weight to recent price data. This makes them more responsive to current market changes than a Simple Moving Average (SMA). The two EMAs are:
Fast EMA (25-day): Represented by the blue line, this EMA reacts quickly to price fluctuations. It's excellent for identifying the current short-term direction and momentum of the asset.
Slow EMA (125-day): Represented by the purple line, this EMA smooths out price action over a much longer period. It's used to determine the underlying, long-term trend of the market.
Trading Signals and Interpretation
The real value of this script comes from observing the relationship between the two EMA lines.
Uptrend: When the blue (25-day) EMA is above the purple (125-day) EMA, it indicates that the short-term trend is stronger than the long-term trend, signaling a bullish or upward-moving market.
Downtrend: Conversely, when the blue EMA is below the purple EMA, it suggests that the short-term trend is weaker, indicating a bearish or downward-moving market.
Cross-overs: The most important signals are often generated when the two lines cross.
A bullish cross (or "golden cross") occurs when the blue EMA crosses above the purple EMA. This can be a signal that a new, strong uptrend is beginning.
A bearish cross (or "death cross") occurs when the blue EMA crosses below the purple EMA. This may signal the start of a new downtrend.
Customisation
The script includes user-friendly input fields that allow you to customise the lengths of both EMAs directly from the indicator's settings on the chart. This lets you experiment with different time frames and tailor the indicator to your specific trading strategy.
RSI + RVOL Combo (with Alerts)RSI ≥50 且在信号线之上 → 动量偏多;≤50 且在下 → 偏空。
背景变绿代表 RVOL≥1.5×:这时的止跌/突破更可信。
想要提醒:点击顶部 Alerts → Condition 选本指标 → 选择
Bullish RSI Cross & Above 50(做多触发)
Bearish RSI Cross & Below 50(谨慎/减回新增)
RVOL crossed threshold(放量出现)
Zero-Lag Scalper with Trend Line (BUY/SELL labels) BY RAHZero-Lag Scalper with Trend Line (BUY/SELL labels) BY RAH