Volume MAs Oscillator | Lyro RSVolume MAs Oscillator | Lyro RS
Overview
The Volume MAs Oscillator is a powerful volume‑adjusted momentum tool that combines custom‑weighted moving averages on volume‑weighted price with smoothed deviation bands. It offers dynamic insights into trend direction, overbought/oversold conditions, and relative valuation — all within a single indicator
Key Features
Volume‑Adjusted Moving Averages: Moving averages can be volume‑weighted using the following formula: a moving average of (Price × Volume) divided by a moving average of Volume. This formula is applied across more than 14 different moving averages; however, it is not used with the VWMA, as VWMA is inherently a volume-weighted moving average.
Percentage Oscillator: Displays the normalized difference: (source – MA) / MA * 100, centered around zero for easy interpretation of strength and direction.
Deviation Bands: Builds upper and lower bands from standard deviation of the oscillator over a selected lookback, with distinct positive/negative multipliers and optional smoothing to reduce noise.
Inputs: Band Length, Band Smoothing, Positive Band Multiplier, Negative Band Multiplier.
Multi‑Mode Signal System:
1. Trend Mode – Colors oscillator according to breaks above (bullish) or below (bearish) respective bands.
2. Reversion Mode – Inverses color logic: signals overextensions beyond bands as reversion opportunities, greys inside the bands.
3. Valuation Mode – Applies a gradient color scale (UpC ⇄ DnC) to reflect relative valuation strength.
Customizable Visuals: Select from 5 pre‑set palettes—Classic, Mystic, Major Themes, Accented, Royal—or define your own custom bullish/bearish colors.
Chart enhancements include color‑coded oscillator line, deviation bands, glow‑effect midline at zero, background shading and candlestick/bar coloring aligned to signal mode.
Built‑In Signals: Automatically plots ▲ oversold and ▼ overbought markers upon crosses of lower/upper bands (in trend or reversion modes), enhancing signal clarity.
How It Works
MA Calculation – Applies the selected MA type to price × volume (normalized by MA of volume) or direct VWMA.
Oscillator Output – Calculates the % difference of source vs. derived MA.
Band Construction – Computes rolling standard deviation; applies user‑defined multipliers; smooths bands with exponential blending.
Mode-Dependent Coloring & Signals –
• Trend: Highlights strength trends via band cross coloring.
• Reversion: Flags extremes beyond bands as potential pullbacks.
• Valuation: Uses gradient to reflect oscillator’s position relative to recent range.
Signal Markers – Deploys arrows and color rules to flag overbought (▼) or oversold (▲) conditions when bands are breached.
Practical Use
Trend Confirmation – In Trend Mode, use upward price_diff cross above upper band as bullish; downward cross below lower band as bearish.
Mean Reversion – In Reversion Mode, fading extremes beyond bands may precede a retracement.
Relative Valuation – Valuation Mode shines when assessing how extended price_diff is, with gradient colors indicating valuation zones.
Bars/candles color‑coded to oscillator state boosts clarity of market tone and allows for rapid visual scanning.
Customization
Adjust MA type/length to tune responsiveness vs. smoothing.
Configure band settings for volatility sensitivity.
Toggle between signal modes for trend-following or reversion strategies.
Stylish visuals: pick or customize color schemes to match your chart setup.
⚠️Disclaimer
This indicator is a tool for technical analysis and does not provide guaranteed results. It should be used in conjunction with other analysis methods and proper risk management practices. The creators of this indicator are not responsible for any financial decisions made based on its signals.
Jalur dan Saluran
KT Gaussian Bands🎯 Overview
KT Gaussian Bands is an advanced technical indicator that uses Gaussian-weighted smoothing to create dynamic support and resistance bands. This sophisticated algorithm provides high-quality buy and sell signals by filtering market noise and adapting to price volatility.
🔬 How It Works
The indicator employs a Gaussian weighting function to smooth price data, creating more accurate trend detection compared to traditional moving averages. The algorithm calculates:
Dynamic Upper Band (Resistance Level)
Dynamic Lower Band (Support Level)
Adaptive Signal Generation based on price interaction with bands
📊 Key Features
✨ Smart Signal Generation
🔺 BUY Signal: When price crosses below the lower band and bounces back up
🔻 SELL Signal: When price crosses above the upper band and drops back down
Real-time arrows displayed directly on the chart
⚙️ Customizable Parameters
Bandwidth (h): Controls the smoothness of the calculation (Default: 8.0)
Multiplier: Adjusts the sensitivity of the bands (Default: 3.0)
Source: Choose your preferred price source (Default: Close)
Repainting Mode: Toggle between real-time and historical accuracy
🎨 Visual Elements
Color-coded bands (Teal for upper, Red for lower)
Clear arrow signals for entry/exit points
Clean dashboard showing current mode status
📈 Trading Applications
Best Timeframes
Works effectively on all timeframes
Particularly strong on 15M, 1H, and 4H charts
Daily charts for swing trading setups
Trading Strategies
Trend Following: Use signals in the direction of the major trend
Mean Reversion: Trade bounces off the bands in ranging markets
Breakout Confirmation: Validate breakouts with band penetration
Risk Management
Use stop-loss below/above the opposite band
Position size based on band width (wider = higher volatility)
Combine with other indicators for confirmation
⚠️ Important Notes
Repainting Mode
Enabled: Shows the most accurate current analysis (may change on live bars)
Disabled: Historical signals remain fixed (recommended for backtesting)
Best Practices
Don't trade every signal - wait for high-probability setups
Consider market context and overall trend direction
Use proper risk management on every trade
Backtest on your preferred timeframes before live trading
🔧 Settings Guide
Bandwidth (8.0): Lower = More responsive, Higher = Smoother
Multiplier (3.0): Lower = More signals, Higher = Fewer but stronger signals
Repainting: Enable for live analysis, Disable for backtesting
📊 Performance Characteristics
Low Lag: Responds quickly to price changes
Noise Reduction: Filters out false signals effectively
Adaptive: Automatically adjusts to market volatility
Versatile: Works across different market conditions
🎓 Educational Value
This indicator demonstrates advanced mathematical concepts in trading:
Gaussian distribution applications in finance
Dynamic volatility adjustment
Weighted moving average techniques
⭐ Why Choose KT Gaussian Bands?
Mathematically Sound: Based on proven statistical methods
User-Friendly: Clear signals with minimal complexity
Flexible: Adapts to your trading style and timeframe
Reliable: Consistent performance across market conditions
Disclaimer: This indicator is for educational and informational purposes only. Always use proper risk management and never risk more than you can afford to lose. Past performance does not guarantee future results.
CCI Trading SystemCCI Trading System with Signal Bar Coloring
Overview
This indicator combines the classic Commodity Channel Index (CCI) oscillator with visual signal detection and bar coloring to help traders identify potential momentum shifts and trading opportunities.
Features
CCI Oscillator Display: Shows CCI values in a separate pane with customizable period length
Adjustable Thresholds: User-defined buy and sell levels (default: -100 buy, +100 sell)
Visual Signal Detection: Triangle markers indicate crossover points
Bar Coloring: Highlights only the bars where actual buy/sell signals occur
Zone Highlighting: Background colors show overbought/oversold conditions
Real-time Information Table: Displays current CCI value, thresholds, and signal status
Built-in Alerts: Notification system for signal generation
How It Works
The indicator generates signals based on CCI threshold crossovers:
Buy Signal: Triggered when CCI crosses above the buy threshold (lime bar coloring)
Sell Signal: Triggered when CCI crosses below the sell threshold (red bar coloring)
Input Parameters
CCI Length: Period for CCI calculation (default: 20)
Buy Threshold: Level for buy signal generation (default: -100)
Sell Threshold: Level for sell signal generation (default: +100)
Enable Bar Coloring: Toggle for chart bar coloring
Show Signals: Toggle for signal markers
Usage Guidelines
Adjust thresholds based on your trading timeframe and volatility preferences
Use in conjunction with other technical analysis tools for confirmation
Consider market context and trend direction when interpreting signals
The -200/+200 levels serve as additional reference points for extreme conditions
Educational Purpose
This indicator is designed for educational and analysis purposes. It demonstrates how CCI can be used to identify potential momentum shifts in price action. The visual elements help traders understand the relationship between CCI values and price movements.
Risk Disclaimer
This indicator is a technical analysis tool and does not guarantee profitable trades. Past performance does not indicate future results. Always conduct your own analysis and consider risk management principles. Trading involves substantial risk of loss and is not suitable for all investors.
Technical Notes
Uses Pine Script v5
Plots CCI with standard deviation-based calculation
Includes crossover/crossunder functions for signal generation
Features conditional bar coloring for signal visualization
Incorporates alert conditions for automated notifications
This script is open source and available for modification and educational use.
CipherMatrix Dashboard (MarketCipher B)does it work. A lightweight, multi-time-frame overlay that turns MarketCipher B data into an at-a-glance dashboard:
Time-frames shown: current chart TF first, then 5 m, 15 m, 30 m, 1 H, 4 H, Daily.
Bias icons:
🌙 = bullish (MCB > 0)
🩸 = bearish (MCB < 0)
Signal icons:
⬆️ = histogram crosses above 0 (potential long)
⬇️ = histogram crosses below 0 (potential short)
Table location: bottom-right of chart; updates on every confirmed bar.
FULLY FUNCTIONAL INDICATOR TESTER🎯 Purpose:
A comprehensive strategy testing framework designed to evaluate custom indicators and trading signals with professional-grade risk management and signal detection capabilities.
✨ Key Features:
Multiple Signal Detection Methods - Value changes, crossovers, threshold-based triggers
Advanced Confluence Filtering - Multi-source confirmation system with lookback periods
Professional Risk Management - Static TP/SL, break-even functionality, position sizing
Custom Exit Signals - Independent exit logic for refined strategy testing
Visual Feedback System - Clear signal plots and real-time status monitoring
Flexible Input Sources - Connect any custom indicator or built-in study
🔧 How to Use:
Connect your indicator outputs to the Entry/Exit source inputs
Select appropriate signal detection method for your indicator type
Configure risk parameters (TP/SL/Break-even)
Enable confluence filters if needed for additional confirmation
Backtest and analyze results with built-in performance metrics
📈 Signal Detection Options:
Value Change: Detects when indicator values change
Crossover Above/Below: Traditional crossover signals
Threshold Triggers: Value-based entry/exit levels
⚙️ Technical Specifications:
Compatible with Pine Script v6
Overlay strategy with position tracking
Real-time performance monitoring table
Configurable margin requirements
Full backtesting compatibility
⚠️ Important Notes:
This is a testing framework - not financial advice
Always validate signals in demo environment first
Past performance does not guarantee future results
Use proper risk management in live trading
🔄 Updates:
Enhanced signal detection algorithms
Improved confluence logic
Added break-even functionality
Visual debugging tools
Perfect for traders and developers looking to systematically tes
3.RSI LIJO 45*55//@version=6
indicator(title="3.RSI LIJO 45*55", shorttitle="RSI-LIJO-45-55", format=format.price, precision=2, timeframe="", timeframe_gaps=true)
rsiLengthInput = input.int(9, minval=1, title="RSI Length", group="RSI Settings")
rsiSourceInput = input.source(close, "Source", group="RSI Settings")
calculateDivergence = input.bool(false, title="Calculate Divergence", group="RSI Settings", display=display.data_window, tooltip="Calculating divergences is needed in order for divergence alerts to fire.")
change = ta.change(rsiSourceInput)
up = ta.rma(math.max(change, 0), rsiLengthInput)
down = ta.rma(-math.min(change, 0), rsiLengthInput)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
// Change RSI line color based on bands
rsiColor = rsi > 50 ? color.green : rsi < 50 ? color.red : color.white
rsiPlot = plot(rsi, "RSI", color=rsiColor)
rsiUpperBand = hline(55, "RSI Upper Band", color=color.rgb(5, 247, 22))
midline = hline(50, "RSI Middle Band", color=color.new(#787B86, 50))
rsiLowerBand = hline(45, "RSI Lower Band", color=color.rgb(225, 18, 14))
fill(rsiUpperBand, rsiLowerBand, color=color.rgb(126, 87, 194, 90), title="RSI Background Fill")
midLinePlot = plot(50, color=na, editable=false, display=display.none)
fill(rsiPlot, midLinePlot, 100, 55, top_color=color.new(color.green, 0), bottom_color=color.new(color.green, 100), title="Overbought Gradient Fill")
fill(rsiPlot, midLinePlot, 45, 0, top_color=color.new(color.red, 100), bottom_color=color.new(color.red, 0), title="Oversold Gradient Fill")
// Smoothing MA inputs
GRP = "Smoothing"
TT_BB = "Only applies when 'SMA + Bollinger Bands' is selected. Determines the distance between the SMA and the bands."
maTypeInput = input.string("SMA", "Type", options= , group=GRP, display=display.data_window)
maLengthInput = input.int(31, "Length", group=GRP, display=display.data_window)
bbMultInput = input.float(2.0, "BB StdDev", minval=0.001, maxval=50, step=0.5, tooltip=TT_BB, group=GRP, display=display.data_window)
var enableMA = maTypeInput != "None"
var isBB = maTypeInput == "SMA + Bollinger Bands"
// Smoothing MA Calculation
ma(source, length, MAtype) =>
switch MAtype
"SMA" => ta.sma(source, length)
"SMA + Bollinger Bands" => ta.sma(source, length)
"EMA" => ta.ema(source, length)
"SMMA (RMA)" => ta.rma(source, length)
"WMA" => ta.wma(source, length)
"VWMA" => ta.vwma(source, length)
// Smoothing MA plots
smoothingMA = enableMA ? ma(rsi, maLengthInput, maTypeInput) : na
smoothingStDev = isBB ? ta.stdev(rsi, maLengthInput) * bbMultInput : na
plot(smoothingMA, "RSI-based MA", color=color.yellow, display=enableMA ? display.all : display.none, editable=enableMA)
bbUpperBand = plot(smoothingMA + smoothingStDev, title="Upper Bollinger Band", color=color.green, display=isBB ? display.all : display.none, editable=isBB)
bbLowerBand = plot(smoothingMA - smoothingStDev, title="Lower Bollinger Band", color=color.green, display=isBB ? display.all : display.none, editable=isBB)
fill(bbUpperBand, bbLowerBand, color=isBB ? color.new(color.green, 90) : na, title="Bollinger Bands Background Fill", display=isBB ? display.all : display.none, editable=isBB)
// Divergence
lookbackRight = 5
lookbackLeft = 5
rangeUpper = 60
rangeLower = 5
bearColor = color.red
bullColor = color.green
textColor = color.white
noneColor = color.new(color.white, 100)
_inRange(bool cond) =>
bars = ta.barssince(cond)
rangeLower <= bars and bars <= rangeUpper
plFound = false
phFound = false
bullCond = false
bearCond = false
rsiLBR = rsi
if calculateDivergence
//------------------------------------------------------------------------------
// Regular Bullish
// rsi: Higher Low
plFound := not na(ta.pivotlow(rsi, lookbackLeft, lookbackRight))
rsiHL = rsiLBR > ta.valuewhen(plFound, rsiLBR, 1) and _inRange(plFound )
// Price: Lower Low
lowLBR = low
priceLL = lowLBR < ta.valuewhen(plFound, lowLBR, 1)
bullCond := priceLL and rsiHL and plFound
//------------------------------------------------------------------------------
// Regular Bearish
// rsi: Lower High
phFound := not na(ta.pivothigh(rsi, lookbackLeft, lookbackRight))
rsiLH = rsiLBR < ta.valuewhen(phFound, rsiLBR, 1) and _inRange(phFound )
// Price: Higher High
highLBR = high
priceHH = highLBR > ta.valuewhen(phFound, highLBR, 1)
bearCond := priceHH and rsiLH and phFound
plot(
plFound ? rsiLBR : na,
offset = -lookbackRight,
title = "Regular Bullish",
linewidth = 2,
color = (bullCond ? bullColor : noneColor),
display = display.pane,
editable = calculateDivergence)
plotshape(
bullCond ? rsiLBR : na,
offset = -lookbackRight,
title = "Regular Bullish Label",
text = " Bull ",
style = shape.labelup,
location = location.absolute,
color = bullColor,
textcolor = textColor,
display = display.pane,
editable = calculateDivergence)
plot(
phFound ? rsiLBR : na,
offset = -lookbackRight,
title = "Regular Bearish",
linewidth = 2,
color = (bearCond ? bearColor : noneColor),
display = display.pane,
editable = calculateDivergence)
plotshape(
bearCond ? rsiLBR : na,
offset = -lookbackRight,
title = "Regular Bearish Label",
text = " Bear ",
style = shape.labeldown,
location = location.absolute,
color = bearColor,
textcolor = textColor,
display = display.pane,
editable = calculateDivergence)
alertcondition(bullCond, title='Regular Bullish Divergence', message="Found a new Regular Bullish Divergence, Pivot Lookback Right number of bars to the left of the current bar.")
alertcondition(bearCond, title='Regular Bearish Divergence', message='Found a new Regular Bearish Divergence, Pivot Lookback Right number of bars to the left of the current bar.')
Bollinger Bands ±2σ & ±3σBollinger Band 2 & 3 standard deviation, clubbed together, so that you can take trade on BKP & BKT.
// This Pine Script plots Bollinger Bands with both ±2σ and ±3σ levels for enhanced volatility analysis.
// Users can customize the moving average type, length, and standard deviation multipliers directly in the settings.
// The indicator overlays a shaded ±2σ region and semi-transparent ±3σ bands to highlight extreme price movements.
LinearRegfressionL'indicatore fornisce una semplice regressione lineare dei valori High, Low, Open, Close
Momentum SNR VIP [3 TP + Max 50 Pip SL]//@version=6
indicator("Momentum SNR VIP ", overlay=true)
// === Settings ===
pip = input.float(0.0001, "Pip Size", step=0.0001)
sl_pip = 50 * pip
tp1_pip = 40 * pip
tp2_pip = 70 * pip
tp3_pip = 100 * pip
lookback = input.int(20, "Lookback for S/R", minval=5)
// === SNR ===
pivotHigh = ta.pivothigh(high, lookback, lookback)
pivotLow = ta.pivotlow(low, lookback, lookback)
supportZone = not na(pivotLow)
resistanceZone = not na(pivotHigh)
plotshape(supportZone, title="Support", location=location.belowbar, color=color.blue, style=shape.triangleup, size=size.tiny)
plotshape(resistanceZone, title="Resistance", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.tiny)
// === Price Action ===
bullishEngulfing = close < open and close > open and close > open and open <= close
bearishEngulfing = close > open and close < open and close < open and open >= close
bullishPinBar = close < open and (low - math.min(open, close)) > 1.5 * math.abs(close - open)
bearishPinBar = close > open and (high - math.max(open, close)) > 1.5 * math.abs(close - open)
buySignal = supportZone and (bullishEngulfing or bullishPinBar)
sellSignal = resistanceZone and (bearishEngulfing or bearishPinBar)
// === SL & TP ===
rawBuySL = low - 10 * pip
buySL = math.max(close - sl_pip, rawBuySL)
buyTP1 = close + tp1_pip
buyTP2 = close + tp2_pip
buyTP3 = close + tp3_pip
rawSellSL = high + 10 * pip
sellSL = math.min(close + sl_pip, rawSellSL)
sellTP1 = close - tp1_pip
sellTP2 = close - tp2_pip
sellTP3 = close - tp3_pip
// === Plot Lines ===
plot(buySignal ? buySL : na, title="Buy SL", color=color.red, style=plot.style_line, linewidth=1)
plot(buySignal ? buyTP1 : na, title="Buy TP1", color=color.green, style=plot.style_line, linewidth=1)
plot(buySignal ? buyTP2 : na, title="Buy TP2", color=color.green, style=plot.style_line, linewidth=1)
plot(buySignal ? buyTP3 : na, title="Buy TP3", color=color.green, style=plot.style_line, linewidth=1)
plot(sellSignal ? sellSL : na, title="Sell SL", color=color.red, style=plot.style_line, linewidth=1)
plot(sellSignal ? sellTP1 : na, title="Sell TP1", color=color.green, style=plot.style_line, linewidth=1)
plot(sellSignal ? sellTP2 : na, title="Sell TP2", color=color.green, style=plot.style_line, linewidth=1)
plot(sellSignal ? sellTP3 : na, title="Sell TP3", color=color.green, style=plot.style_line, linewidth=1)
// === Floating Labels on Right Side ===
if buySignal
label.new(x=bar_index + 50, y=buySL, text="SL", style=label.style_label_right, color=color.red, textcolor=color.white)
label.new(x=bar_index + 50, y=buyTP1, text="TP1", style=label.style_label_right, color=color.green, textcolor=color.white)
label.new(x=bar_index + 50, y=buyTP2, text="TP2", style=label.style_label_right, color=color.green, textcolor=color.white)
label.new(x=bar_index + 50, y=buyTP3, text="TP3", style=label.style_label_right, color=color.green, textcolor=color.white)
if sellSignal
label.new(x=bar_index + 50, y=sellSL, text="SL", style=label.style_label_right, color=color.red, textcolor=color.white)
label.new(x=bar_index + 50, y=sellTP1, text="TP1", style=label.style_label_right, color=color.green, textcolor=color.white)
label.new(x=bar_index + 50, y=sellTP2, text="TP2", style=label.style_label_right, color=color.green, textcolor=color.white)
label.new(x=bar_index + 50, y=sellTP3, text="TP3", style=label.style_label_right, color=color.green, textcolor=color.white)
// === Signal Markers ===
plotshape(buySignal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(sellSignal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")
// === Alerts ===
alertcondition(buySignal, title="Buy Alert", message="🟢 BUY at Support Zone + Price Action")
alertcondition(sellSignal, title="Sell Alert", message="🟡 SELL at Resistance Zone + Price Action")
Repeating Trend HighlighterThis custom indicator helps you see when the current price trend is similar to a past trend over the same number of candles. Think of it like checking whether the market is repeating itself.
You choose three settings:
• Lookback Period: This is how many candles you want to measure. For example, if you set it to 10, it looks at the price change over the last 10 bars.
• Offset Bars Ago: This tells the indicator how far back in time to look for a similar move. If you set it to 50, it compares the current move to what happened 50 bars earlier.
• Tolerance (%): This is how closely the moves must match to be considered similar. A smaller number means you only get a signal if the moves are almost the same, while a larger number allows more flexibility.
When the current price move is close enough to the past move you picked, the background of your chart turns light green. This makes it easy to spot repeating trends without studying numbers manually.
You’ll also see two lines under your chart if you enable them: a blue line showing the percentage change of the current move and an orange line showing the change in the past move. These help you compare visually.
This tool is useful in several ways. You can use it to confirm your trading setups, for example if you suspect that a strong rally or pullback is happening again. You can also use it to filter trades by combining it with other indicators, so you only enter when trends repeat. Many traders use it as a learning tool, experimenting with different lookback periods and offsets to understand how often similar moves happen.
If you are a scalper working on short timeframes, you can set the lookback to a small number like 3–5 bars. Swing traders who prefer daily or weekly charts might use longer lookbacks like 20–30 bars.
Keep in mind that this indicator doesn’t guarantee price will move the same way again—it only shows similarity in how price changed over time. It works best when you use it together with other signals or market context.
In short, it’s like having a simple spotlight that tells you: “This move looks a lot like what happened before.” You can then decide if you want to act on that information.
If you’d like, I can help you tweak the settings or combine it with alerts so it notifies you when these patterns appear.
Momentum SNR VIP (Step 2)//@version=6
indicator("Momentum SNR VIP (Step 2)", overlay=true)
// === Inputs ===
lookback = input.int(20, "Lookback for S/R", minval=5)
rr_ratio = input.float(2.0, "Risk-Reward Ratio", minval=0.5, step=0.1)
plot(close, color=color.orange)
GX Credit Spread SignalThe GX Credit Spread Signal is an advanced indicator designed for traders who trade options strategies on the SPX index, especially using vertical credit spreads. It combines traditional technical analysis with volatility and option pricing concepts to provide relevant signals and projections on the chart.
Main features:
Trend analysis: Uses opening gap, position relative to VWAP and simple moving average (SMA 50) to indicate bullish or bearish bias right after the first 15-minute candle.
Safe range projection: Calculates a range based on the ATR (Average True Range) multiplied by a safety factor, suggesting potential strikes for credit spreads.
Quantitative estimates:
Calculates the estimated delta of options via the Black-Scholes formula approximation.
Estimated probability of expiring out of the money (OTM).
Chart visualizations: Displays projected ATR lines, previous day's levels (high, low, close) and an informative panel with strikes, delta, OTM probability, ATR and VWAP data.
Configurable alerts: Notifications for detected bullish or bearish bias, helping the trader to identify opportunities quickly.
This indicator is ideal for those who day trade with SPX options, facilitating decision-making by combining technical analysis, volatility and option probabilities in one place.
9 EMA Angle + Price % Filter//@version=5
indicator("9 EMA Angle + Price % Filter", overlay=true)
length = 9
emaLine = ta.ema(close, length)
// === INPUTS ===
angleThreshold = input.float(20, "EMA Angle Threshold (°)")
pricePercentThreshold = input.float(80, "Price % Above/Below EMA")
// === PRICE DISTANCE FROM EMA IN % ===
percentAbove = close >= emaLine ? ((close - emaLine) / emaLine) * 100 : 0
percentBelow = close < emaLine ? ((emaLine - close) / emaLine) * 100 : 0
// === ANGLE CALCULATION ===
lookbackBars = input.int(5, "Bars for Angle Calculation")
p1 = emaLine
p2 = emaLine
deltaY = p1 - p2
deltaX = lookbackBars
angleRadians = math.atan(deltaY / deltaX)
angleDegrees = angleRadians * 180 / math.pi
// === CONDITIONS ===
isFlat = percentAbove < pricePercentThreshold and percentBelow < pricePercentThreshold and angleDegrees > -angleThreshold and angleDegrees < angleThreshold
isPriceAbove = percentAbove >= pricePercentThreshold
isPriceBelow = percentBelow >= pricePercentThreshold
isAngleUp = angleDegrees >= angleThreshold
isAngleDown = angleDegrees <= -angleThreshold
// === EMA COLOR LOGIC ===
emaColor = isFlat ? color.black :
isAngleUp or isPriceAbove ? color.green :
isAngleDown or isPriceBelow ? color.red : color.gray
// === PLOT EMA ===
plot(emaLine, "9 EMA", color=emaColor, linewidth=2)
ETH Mean Reversion Strategy [VWAP + EMA + Bollinger]Mean Reversion Strategy using VWAP, EMA, and Bollinger Bands, with entry signals and target lines:
Momentum SNR VIP [3 TP + Max 50 Pip SL]//@version=6
indicator("Momentum SNR VIP ", overlay=true)
// === Settings ===
pip = input.float(0.0001, "Pip Size", step=0.0001)
sl_pip = 50 * pip
tp1_pip = 40 * pip
tp2_pip = 70 * pip
tp3_pip = 100 * pip
lookback = input.int(20, "Lookback for S/R", minval=5)
// === SNR ===
pivotHigh = ta.pivothigh(high, lookback, lookback)
pivotLow = ta.pivotlow(low, lookback, lookback)
supportZone = not na(pivotLow)
resistanceZone = not na(pivotHigh)
plotshape(supportZone, title="Support", location=location.belowbar, color=color.blue, style=shape.triangleup, size=size.tiny)
plotshape(resistanceZone, title="Resistance", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.tiny)
// === Price Action ===
bullishEngulfing = close < open and close > open and close > open and open <= close
bearishEngulfing = close > open and close < open and close < open and open >= close
bullishPinBar = close < open and (low - math.min(open, close)) > 1.5 * math.abs(close - open)
bearishPinBar = close > open and (high - math.max(open, close)) > 1.5 * math.abs(close - open)
buySignal = supportZone and (bullishEngulfing or bullishPinBar)
sellSignal = resistanceZone and (bearishEngulfing or bearishPinBar)
// === SL & TP ===
rawBuySL = low - 10 * pip
buySL = math.max(close - sl_pip, rawBuySL)
buyTP1 = close + tp1_pip
buyTP2 = close + tp2_pip
buyTP3 = close + tp3_pip
rawSellSL = high + 10 * pip
sellSL = math.min(close + sl_pip, rawSellSL)
sellTP1 = close - tp1_pip
sellTP2 = close - tp2_pip
sellTP3 = close - tp3_pip
// === Plot Buy/Sell Signal
plotshape(buySignal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(sellSignal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")
// === Plot SL & TP lines
plot(buySignal ? buySL : na, title="Buy SL", color=color.red, style=plot.style_linebr, linewidth=1)
plot(buySignal ? buyTP1 : na, title="Buy TP1", color=color.green, style=plot.style_linebr, linewidth=1)
plot(buySignal ? buyTP2 : na, title="Buy TP2", color=color.green, style=plot.style_linebr, linewidth=1)
plot(buySignal ? buyTP3 : na, title="Buy TP3", color=color.green, style=plot.style_linebr, linewidth=1)
plot(sellSignal ? sellSL : na, title="Sell SL", color=color.red, style=plot.style_linebr, linewidth=1)
plot(sellSignal ? sellTP1 : na, title="Sell TP1", color=color.green, style=plot.style_linebr, linewidth=1)
plot(sellSignal ? sellTP2 : na, title="Sell TP2", color=color.green, style=plot.style_linebr, linewidth=1)
plot(sellSignal ? sellTP3 : na, title="Sell TP3", color=color.green, style=plot.style_linebr, linewidth=1)
// === Labels
if buySignal
label.new(x=bar_index, y=buySL, text="SL : " + str.tostring(buySL, "#.0000"), style=label.style_label_down, color=color.red, textcolor=color.white)
label.new(x=bar_index, y=buyTP1, text="TP1 : " + str.tostring(buyTP1, "#.0000"), style=label.style_label_up, color=color.green, textcolor=color.white)
label.new(x=bar_index, y=buyTP2, text="TP2 : " + str.tostring(buyTP2, "#.0000"), style=label.style_label_up, color=color.green, textcolor=color.white)
label.new(x=bar_index, y=buyTP3, text="TP3 : " + str.tostring(buyTP3, "#.0000"), style=label.style_label_up, color=color.green, textcolor=color.white)
if sellSignal
label.new(x=bar_index, y=sellSL, text="SL : " + str.tostring(sellSL, "#.0000"), style=label.style_label_up, color=color.red, textcolor=color.white)
label.new(x=bar_index, y=sellTP1, text="TP1 : " + str.tostring(sellTP1, "#.0000"), style=label.style_label_down, color=color.green, textcolor=color.white)
label.new(x=bar_index, y=sellTP2, text="TP2 : " + str.tostring(sellTP2, "#.0000"), style=label.style_label_down, color=color.green, textcolor=color.white)
label.new(x=bar_index, y=sellTP3, text="TP3 : " + str.tostring(sellTP3, "#.0000"), style=label.style_label_down, color=color.green, textcolor=color.white)
// === Alerts
alertcondition(buySignal, title="Buy Alert", message="🟢 BUY at Support Zone + Price Action")
alertcondition(sellSignal, title="Sell Alert", message="🟡 SELL at Resistance Zone + Price Action")
CME Crude Oil 15-Min Multi-Unified Entry Zones (Dot Signals)//@version=6
indicator("CME Crude Oil 15-Min Multi-Unified Entry Zones (Dot Signals)", overlay=true)
// --- Input Parameters ---
emaLength = input.int(11, title="EMA Length", minval=1)
// Ichimoku Cloud Inputs (Adjusted for higher sensitivity)
conversionLineLength = input.int(7, title="Ichimoku Conversion Line Length (Sensitive)", minval=1)
baseLineLength = input.int(20, title="Ichimoku Base Line Length (Sensitive)", minval=1)
laggingSpanLength = input.int(40, title="Ichimoku Lagging Span Length (Sensitive)", minval=1)
displacement = input.int(26, title="Ichimoku Displacement", minval=1)
// MACD Inputs (Adjusted for higher sensitivity)
fastLength = input.int(9, title="MACD Fast Length (Sensitive)", minval=1)
slowLength = input.int(21, title="MACD Slow Length (Sensitive)", minval=1)
signalLength = input.int(6, title="MACD Signal Length (Sensitive)", minval=1)
// RSI Inputs
rsiLength = input.int(8, title="RSI Length", minval=1)
rsiOverbought = input.int(70, title="RSI Overbought Level", minval=50, maxval=90)
rsiOversold = input.int(30, title="RSI Oversold Level", minval=10, maxval=50)
// ADX Inputs
adxLength = input.int(14, title="ADX Length", minval=1)
adxTrendStrengthThreshold = input.int(20, title="ADX Trend Strength Threshold", minval=10, maxval=50)
// Weak Entry Threshold (50 ticks for Crude Oil, where 1 tick = $0.01)
// 50 ticks = $0.50
weakEntryTickThreshold = input.float(0.50, title="Weak Entry Threshold (in $)", minval=0.01)
// --- Indicator Calculations ---
// 1. EMA 11
ema11 = ta.ema(close, emaLength)
// 2. Ichimoku Cloud
donchian(len) => math.avg(ta.lowest(len), ta.highest(len))
tenkanSen = donchian(conversionLineLength)
kijunSen = donchian(baseLineLength)
senkouSpanA = math.avg(tenkanSen, kijunSen)
senkouSpanB = donchian(laggingSpanLength)
// Shifted for plotting (future projection)
senkouSpanA_plot = senkouSpanA
senkouSpanB_plot = senkouSpanB
// Chikou Span (lagging span, plotted 26 periods back)
chikouSpan = close
// 3. MACD
= ta.macd(close, fastLength, slowLength, signalLength)
// 4. RSI
rsi = ta.rsi(close, rsiLength)
// 5. ADX
= ta.dmi(adxLength, adxLength)
// --- Price Volume Pattern Logic ---
// Simplified volume confirmation:
isVolumeIncreasing = volume > volume
isVolumeDecreasing = volume < volume
isPriceUp = close > close
isPriceDown = close < close
bullishVolumeConfirmation = (isPriceUp and isVolumeIncreasing) or (isPriceDown and isVolumeDecreasing)
bearishVolumeConfirmation = (isPriceDown and isVolumeIncreasing) or (isPriceUp and isVolumeDecreasing)
// --- Daily Pivot Point Calculation (Critical Support/Resistance) ---
// Request daily High, Low, Close for pivot calculation
= request.security(syminfo.tickerid, "D", [high , low , close ])
// Classic Pivot Point Formula
dailyPP = (dailyHigh + dailyLow + dailyClose) / 3
dailyR1 = (2 * dailyPP) - dailyLow
dailyS1 = (2 * dailyPP) - dailyHigh
dailyR2 = dailyPP + (dailyHigh - dailyLow)
dailyS2 = dailyPP - (dailyHigh - dailyLow)
// --- Crosses and States for Unified Entry 1 (EMA & MACD) ---
// Moved ta.cross() calls outside of conditional blocks for consistent calculation.
emaGoldenCrossCondition = ta.cross(close, ema11)
emaDeathCrossCondition = ta.cross(ema11, close)
macdGoldenCrossCondition = ta.cross(macdLine, signalLine)
macdDeathCrossCondition = ta.cross(signalLine, macdLine)
emaIsBullish = close > ema11
emaIsBearish = close < ema11
macdIsBullishStrong = macdLine > signalLine and macdLine > 0
macdIsBearishStrong = macdLine < signalLine and macdLine < 0
// --- Unified Entry 1 Logic (EMA & MACD) ---
unifiedLongEntry1 = false
unifiedShortEntry1 = false
if (emaGoldenCrossCondition and macdIsBullishStrong )
unifiedLongEntry1 := true
else if (macdGoldenCrossCondition and emaIsBullish )
unifiedLongEntry1 := true
if (emaDeathCrossCondition and macdIsBearishStrong )
unifiedShortEntry1 := true
else if (macdDeathCrossCondition and emaIsBearish )
unifiedShortEntry1 := true
// --- Unified Entry 2 Logic (Ichimoku & EMA/Volume) ---
unifiedLongEntry2 = false
unifiedShortEntry2 = false
ichimokuCloudBullish = close > senkouSpanA_plot and close > senkouSpanB_plot and
senkouSpanA_plot > senkouSpanB_plot and
tenkanSen > kijunSen and
chikouSpan > close
ichimokuCloudBearish = close < senkouSpanA_plot and close < senkouSpanB_plot and
senkouSpanB_plot > senkouSpanA_plot and
tenkanSen < kijunSen and
chikouSpan < close
// Moved ta.cross() calls outside of conditional blocks for consistent calculation.
ichimokuBullishTriggerCondition = ta.cross(tenkanSen, kijunSen)
ichimokuBearishTriggerCondition = ta.cross(kijunSen, tenkanSen)
priceCrossAboveSenkouA = ta.cross(close, senkouSpanA_plot)
priceCrossBelowSenkouA = ta.cross(senkouSpanA_plot, close)
if (ichimokuBullishTriggerCondition or (priceCrossAboveSenkouA and close > senkouSpanB_plot)) and
emaIsBullish and
bullishVolumeConfirmation
unifiedLongEntry2 := true
if (ichimokuBearishTriggerCondition or (priceCrossBelowSenkouA and close < senkouSpanB_plot)) and
emaIsBearish and
bearishVolumeConfirmation
unifiedShortEntry2 := true
// --- Weak Entry Logic ---
weakLongEntry = false
weakShortEntry = false
// Function to check for weak long entry
// Checks if the distance to the nearest resistance (R1 or R2) is less than the threshold
f_isWeakLongEntry(currentPrice) =>
bool isWeak = false
// Check R1 if it's above current price and within threshold
if dailyR1 > currentPrice and (dailyR1 - currentPrice < weakEntryTickThreshold)
isWeak := true
// Check R2 if it's above current price and within threshold (only if not already weak by R1)
else if dailyR2 > currentPrice and (dailyR2 - currentPrice < weakEntryTickThreshold)
isWeak := true
isWeak
// Function to check for weak short entry
// Checks if the distance to the nearest support (S1 or S2) is less than the threshold
f_isWeakShortEntry(currentPrice) =>
bool isWeak = false
// Check S1 if it's below current price and within threshold
if dailyS1 < currentPrice and (currentPrice - dailyS1 < weakEntryTickThreshold)
isWeak := true
// Check S2 if it's below current price and within threshold (only if not already weak by S1)
else if dailyS2 < currentPrice and (currentPrice - dailyS2 < weakEntryTickThreshold)
isWeak := true
isWeak
// Apply weak entry check to Unified Entry 1
if unifiedLongEntry1 and f_isWeakLongEntry(close)
weakLongEntry := true
if unifiedShortEntry1 and f_isWeakShortEntry(close)
weakShortEntry := true
// Apply weak entry check to Unified Entry 2
if unifiedLongEntry2 and f_isWeakLongEntry(close)
weakLongEntry := true
if unifiedShortEntry2 and f_isWeakShortEntry(close)
weakShortEntry := true
// --- Enhanced Entry Conditions with RSI and ADX ---
// Removed candlestick pattern requirement.
// Only consider an entry if RSI is not overbought/oversold AND ADX indicates trend strength.
// Enhanced Long Entry Condition
enhancedLongEntry = (unifiedLongEntry1 or unifiedLongEntry2) and
(rsi < rsiOverbought) and // RSI not overbought
(adx > adxTrendStrengthThreshold) // ADX shows trend strength
// Enhanced Short Entry Condition
enhancedShortEntry = (unifiedShortEntry1 or unifiedShortEntry2) and
(rsi > rsiOversold) and // RSI not oversold
(adx > adxTrendStrengthThreshold) // ADX shows trend strength
// --- Define colors as variables for clarity and to potentially resolve parsing issues ---
// Changed named color constants to hexadecimal values
var color strongBuyDotColor = #FFD700 // Gold
var color weakBuyDotColor = #008000 // Green
var color strongSellDotColor = #FFFFFF // White
var color weakSellDotColor = #FF0000 // Red
// --- Plotting Entry Dots on Candlesticks ---
// Define conditions for plotting only on the *first* occurrence of a signal
isNewStrongBuy = enhancedLongEntry and not weakLongEntry and not (enhancedLongEntry and not weakLongEntry )
isNewWeakBuy = enhancedLongEntry and weakLongEntry and not (enhancedLongEntry and weakLongEntry )
isNewStrongSell = enhancedShortEntry and not weakShortEntry and not (enhancedShortEntry and not weakShortEntry )
isNewWeakSell = enhancedShortEntry and weakShortEntry and not (enhancedShortEntry and weakShortEntry )
// Helper functions to check candlestick type
isCurrentCandleBullish = close > open
isCurrentCandleBearish = close < open
// Strong Buy: Gold dot (only on bullish candles)
plotshape(isNewStrongBuy and isCurrentCandleBullish ? close : na, title="Strong B", location=location.absolute, color=strongBuyDotColor, style=shape.circle, size=size.tiny)
// Weak Buy: Solid Green dot (no candlestick filter for weak buys)
// Changed text to "" and style to shape.triangleup for symbol only
plotshape(isNewWeakBuy ? close : na, title="Weak B", location=location.absolute, color=weakBuyDotColor, style=shape.triangleup, size=size.tiny)
// Strong Sell: White dot (only on bearish candles)
plotshape(isNewStrongSell and isCurrentCandleBearish ? close : na, title="Strong S", location=location.absolute, color=strongSellDotColor, style=shape.circle, size=size.tiny)
// Weak Sell: Red dot (no candlestick filter for weak sells)
// Changed text to "" and style to shape.triangledown for symbol only
plotshape(isNewWeakSell ? close : na, title="Weak S", location=location.absolute, color=weakSellDotColor, style=shape.triangledown, size=size.tiny)
// --- Plotting Indicators (Optional, for visual confirmation) ---
// All indicator plots have been removed as requested.
// plot(ema11, title="EMA 11", color=emaColor)
// plot(tenkanSen, title="Tenkan-Sen", color=tenkanColor)
// plot(kijunSen, title="Kijun-Sen", color=kijunColor)
// plot(senkouSpanA_plot, title="Senkou Span A", color=senkouAColor, offset=displacement)
// plot(senkouSpanB_plot, title="Senkou Span B", color=senkouBColor, offset=displacement)
// fill(plot(senkouSpanA_plot, offset=displacement), plot(senkouSpanB_plot, offset=displacement), color=cloudFillBullishColor, title="Cloud Fill Bullish")
// fill(plot(senkouSpanA_plot, offset=displacement), plot(senkouSpanB_plot, offset=displacement), color=cloudFillBearishColor, title="Cloud Fill Bearish")
// plot(chikouSpan, title="Chikou Span", color=chikouColor, offset=-displacement)
// plot(macdLine, title="MACD Line", color=macdLineColor, display=display.pane)
// plot(signalLine, title="Signal Line", color=signalLineColor, display=display.pane)
// plot(hist, title="Histogram", color=hist >= 0 ? histGreenColor : histRedColor, style=plot.style_columns, display=display.pane)
// plot(rsi, title="RSI", color=rsiPlotColor, display=display.pane)
// hline(rsiOverbought, "RSI Overbought", color=rsiHlineRedColor, linestyle=hline.style_dashed, display=display.all)
// hline(rsiOversold, "RSI Oversold", color=rsiHlineGreenColor, linestyle=hline.style_dashed, display=display.all)
// plot(adx, title="ADX", color=adxPlotColor, display=display.pane)
// hline(adxTrendStrengthThreshold, "ADX Threshold", color=adxHlineColor, linestyle=hline.style_dashed, display=display.all)
// plot(diPlus, title="+DI", color=diPlusColor, display=display.pane)
// plot(diMinus, title="-DI", color=diMinusColor, display=display.pane)
// plot(dailyPP, title="Daily PP", color=dailyPPColor, style=plot.style_line, linewidth=1)
// plot(dailyR1, title="Daily R1", color=dailyRColor, style=plot.style_line, linewidth=1)
// plot(dailyR2, title="Daily R2", color=dailyRColor, style=plot.style_line, linewidth=1)
// plot(dailyS1, title="Daily S1", color=dailySColor, style=plot.style_line, linewidth=1)
// plot(dailyS2, title="Daily S2", color=dailySColor, style=plot.style_line, linewidth=1)
// --- Alerts (Optional) ---
alertcondition(enhancedLongEntry and not weakLongEntry, title="Strong Buy Alert", message="CME Crude Oil: Strong Buy Entry!")
alertcondition(enhancedLongEntry and weakLongEntry, title="Weak Buy Alert", message="CME Crude Oil: Weak Buy Entry Detected!")
alertcondition(enhancedShortEntry and not weakShortEntry, title="Strong Sell Alert", message="CME Crude Oil: Strong Sell Entry!")
alertcondition(enhancedShortEntry and weakShortEntry, title="Weak Sell Alert", message="CME Crude Oil: Weak Sell Entry Detected!")
EMA Shadow Trading_TixThis TradingView indicator, named "EMA Shadow Trading_Tix", combines Exponential Moving Averages (EMAs) with VWAP (Volume-Weighted Average Price) and a shadow fill between EMAs to help traders identify trends, momentum, and potential reversal zones. Below is a breakdown of its key functions:
1. EMA (Exponential Moving Average) Settings
The indicator allows customization of four EMAs with different lengths and colors:
EMA 1 (Default: 9, Green) – Short-term trend filter.
EMA 2 (Default: 21, Red) – Medium-term trend filter.
EMA 3 (Default: 50, Blue) – Mid-to-long-term trend filter.
EMA 4 (Default: 200, Orange) – Long-term trend filter (often used as a "bull/bear market" indicator).
Key Features:
Global EMA Source: All EMAs use the same source (default: close), ensuring consistency.
Toggle Visibility: Each EMA can be independently shown/hidden.
Precision Calculation: EMAs are rounded to the minimum tick size for accuracy.
Customizable Colors & Widths: Helps in distinguishing different EMAs easily.
How Traders Use EMAs:
Trend Identification:
If price is above all EMAs, the trend is bullish.
If price is below all EMAs, the trend is bearish.
Crossovers:
A shorter EMA crossing above a longer EMA (e.g., EMA 9 > EMA 21) suggests bullish momentum.
A shorter EMA crossing below a longer EMA (e.g., EMA 9 < EMA 21) suggests bearish momentum.
Dynamic Support/Resistance:
EMAs often act as support in uptrends and resistance in downtrends.
2. Shadow Fill Between EMA 1 & EMA 2
The indicator includes a colored fill (shadow) between EMA 1 (9-period) and EMA 2 (21-period) to enhance trend visualization.
How It Works:
Bullish Shadow (Green): Applies when EMA 1 > EMA 2, indicating a bullish trend.
Bearish Shadow (Red): Applies when EMA 1 < EMA 2, indicating a bearish trend.
Why It’s Useful:
Trend Confirmation: The shadow helps traders quickly assess whether the short-term trend is bullish or bearish.
Visual Clarity: The fill makes it easier to spot EMA crossovers and trend shifts.
3. VWAP (Volume-Weighted Average Price) Integration
The indicator includes an optional VWAP overlay, which is useful for intraday traders.
Key Features:
Customizable Anchor Periods: Options include Session, Week, Month, Quarter, Year, Decade, Century, Earnings, Dividends, Splits.
Hide on Higher Timeframes: Can be disabled on 1D or higher charts to avoid clutter.
Adjustable Color & Width: Default is purple, but users can change it.
How Traders Use VWAP:
Mean Reversion: Price tends to revert to VWAP.
Trend Confirmation:
Price above VWAP = Bullish bias.
Price below VWAP = Bearish bias.
Breakout/Rejection Signals: Strong moves away from VWAP may indicate continuation or exhaustion.
4. Practical Trading Applications
Trend-Following Strategy:
Long Entry: Price above all EMAs + EMA 1 > EMA 2 (green shadow). Optional: Price above VWAP for intraday trades.
Short Entry: Price below all EMAs + EMA 1 < EMA 2 (red shadow). Optional: Price below VWAP for intraday trades.
Mean Reversion Strategy:
Pullback to EMA 9/21/VWAP: Look for bounces near EMAs or VWAP in a strong trend.
Multi-Timeframe Confirmation:
Higher timeframe EMAs (50, 200) can be used to filter trades (e.g., only trade longs if price is above EMA 200).
Conclusion
This EMA Shadow Trading Indicator is a versatile tool that combines:
✔ Multiple EMAs for trend analysis
✔ Shadow fill for quick trend visualization
✔ VWAP integration for intraday trading
It is useful for swing traders, day traders, and investors looking for trend confirmation, momentum shifts, and dynamic support/resistance levels.
Momentum SNR VIP [INDICATOR ONLY]//@version=6
indicator("Momentum SNR VIP ", overlay=true)
// === Inputs ===
lookback = input.int(20, "Lookback for S/R", minval=5)
rr_ratio = input.float(2.0, "Risk-Reward Ratio", minval=0.5, step=0.1)
// === SNR Detection ===
pivotHigh = ta.pivothigh(high, lookback, lookback)
pivotLow = ta.pivotlow(low, lookback, lookback)
supportZone = not na(pivotLow)
resistanceZone = not na(pivotHigh)
plotshape(supportZone, title="Support", location=location.belowbar, color=color.blue, style=shape.triangleup, size=size.tiny)
plotshape(resistanceZone, title="Resistance", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.tiny)
// === Price Action ===
bullishEngulfing = close < open and close > open and close > open and open <= close
bearishEngulfing = close > open and close < open and close < open and open >= close
bullishPinBar = close < open and (low - math.min(open, close)) > 1.5 * math.abs(close - open)
bearishPinBar = close > open and (high - math.max(open, close)) > 1.5 * math.abs(close - open)
buySignal = supportZone and (bullishEngulfing or bullishPinBar)
sellSignal = resistanceZone and (bearishEngulfing or bearishPinBar)
// === SL & TP ===
buySL = low - 10
buyTP = close + (close - buySL) * rr_ratio
sellSL = high + 10
sellTP = close - (sellSL - close) * rr_ratio
// === Plot Signals
plotshape(buySignal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(sellSignal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")
plot(buySignal ? buySL : na, title="Buy SL", color=color.red, style=plot.style_linebr, linewidth=1)
plot(buySignal ? buyTP : na, title="Buy TP", color=color.green, style=plot.style_linebr, linewidth=1)
plot(sellSignal ? sellSL : na, title="Sell SL", color=color.red, style=plot.style_linebr, linewidth=1)
plot(sellSignal ? sellTP : na, title="Sell TP", color=color.green, style=plot.style_linebr, linewidth=1)
// === Labels (Fixed)
if buySignal
label.new(x=bar_index, y=buySL, text="SL : " + str.tostring(buySL, "#.00"), style=label.style_label_down, color=color.red, textcolor=color.white)
label.new(x=bar_index, y=buyTP, text="TP 1 : " + str.tostring(buyTP, "#.00"), style=label.style_label_up, color=color.green, textcolor=color.white)
if sellSignal
label.new(x=bar_index, y=sellSL, text="SL : " + str.tostring(sellSL, "#.00"), style=label.style_label_up, color=color.red, textcolor=color.white)
label.new(x=bar_index, y=sellTP, text="TP 1 : " + str.tostring(sellTP, "#.00"), style=label.style_label_down, color=color.green, textcolor=color.white)
// === Alerts
alertcondition(buySignal, title="Buy Alert", message="🟢 BUY at Support Zone + Price Action")
alertcondition(sellSignal, title="Sell Alert", message="🟡 SELL at Resistance Zone + Price Action")
💼 Momentum SNR VIP//@version=5
indicator("Momentum", overlay=true)
// === SNR Detection ===
lookback = input.int(20, "Lookback for S/R", minval=5)
pivotHigh = ta.pivothigh(high, lookback, lookback)
pivotLow = ta.pivotlow(low, lookback, lookback)
// Plot SNR Zones
plotshape(pivotHigh, title="Resistance", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)
plotshape(pivotLow, title="Support", location=location.belowbar, color=color.blue, style=shape.triangleup, size=size.small)
// === Price Action Detection ===
// Bullish Engulfing
bullishEngulfing = close < open and close > open and close > open and open <= close
// Bearish Engulfing
bearishEngulfing = close > open and close < open and close < open and open >= close
// Pin Bar Bullish
bullishPinBar = close > open and (low - math.min(open, close)) > 1.5 * (math.abs(close - open))
// Pin Bar Bearish
bearishPinBar = close < open and (math.max(open, close) - high) > 1.5 * (math.abs(close - open))
// === Combined Signal at SNR ===
supportZone = not na(pivotLow)
resistanceZone = not na(pivotHigh)
buySignal = (bullishEngulfing or bullishPinBar) and supportZone
sellSignal = (bearishEngulfing or bearishPinBar) and resistanceZone
// Plot Buy/Sell Arrows
plotshape(buySignal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(sellSignal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")
// === SL & TP Calculation ===
rr_ratio = input.float(2.0, "Risk Reward Ratio", minval=0.5, step=0.5)
buySL = low
buyTP = close + (close - low) * rr_ratio
sellSL = high
sellTP = close - (high - close) * rr_ratio
plot(buySignal ? buySL : na, title="Buy SL", color=color.red, style=plot.style_linebr, linewidth=1)
plot(buySignal ? buyTP : na, title="Buy TP", color=color.green, style=plot.style_linebr, linewidth=1)
plot(sellSignal ? sellSL : na, title="Sell SL", color=color.red, style=plot.style_linebr, linewidth=1)
plot(sellSignal ? sellTP : na, title="Sell TP", color=color.green, style=plot.style_linebr, linewidth=1)
// === Alerts ===
alertcondition(buySignal, title="Buy Alert", message="GOLD: Potential BUY @ SNR Zone + Price Action")
alertcondition(sellSignal, title="Sell Alert", message="GOLD: Potential SELL @ SNR Zone + Price Action")
EMAs 60/125/250 + Swing-Struktur + CCI-AlertsEMAs 60/125/250 + Swing-Points + CCI-Alerts / crossover 100 /-100
Sanuja nuwanThe Zero Fear Indicator is a custom-built trading tool designed for confident and precise entries. Powered by real-time market structure, volume pressure, and volatility logic, it filters out noise and shows clear buy/sell signals with zero hesitation. Perfect for both beginners and experienced traders looking to trade without fear.
K Bands v2.2K Bands v2 - Settings Breakdown (Timeframe Agnostic)
K Bands v2 is an adaptive volatility envelope tool designed for flexibility across different trading
styles and timeframes.
The settings below allow complete control over how the bands are constructed, smoothed, and how
they respond to market volatility.
1. Upstream MA Type
Controls the core smoothing applied to price before calculating the bands.
Options:
- EMA: Fast, responsive, reacts quickly to price changes.
- SMA: Classic moving average, slower but provides stability.
- Hull: Ultra smooth, reduces noise significantly but may react differently to choppy conditions.
- GeoMean: Geometric mean smoothing, creates a unique, slightly smoother line.
- SMMA: Wilder-style smoothing, balances noise reduction and responsiveness.
- WMA: Weighted Moving Average, emphasizes recent price action for sharper responsiveness.
2. Smoothing Length
Lookback period for the upstream moving average.
- Lower values: Faster reaction, captures short-term shifts.
- Higher values: Smoother trend depiction, filters out noise.
3. Multiplier
Determines the width of the bands relative to calculated volatility.
- Lower multiplier: Tighter bands, more signals, but increased false breakouts.
- Higher multiplier: Wider bands, fewer false signals, more conservative.
4. Downstream MA Type
Applies final smoothing to the band plots after initial calculation.
Same options as Upstream MA.
5. Downstream Smoothing Length
Lookback period for downstream smoothing.
- Lower: More responsive bands.
- Higher: Smoother, visually cleaner bands.
6. Band Width Source
Selects the method used to calculate band width based on market volatility.
Options:
- ATR (Average True Range): Smooth, stable bands based on price range expansion.
- Stdev (Standard Deviation): More reactive bands highlighting short-term volatility spikes.
7. ATR Smoothing Type
Controls how the ATR or Stdev value is smoothed before applying to band width.
Options:
- Wilder: Classic, stable smoothing.
- SMA: Simple moving average smoothing.
- EMA: Faster, more reactive smoothing.
- Hull: Ultra-smooth, noise-reducing smoothing.
- GeoMean: Geometric mean smoothing.
8. ATR Length
Lookback period for smoothing the volatility measurement (ATR or Stdev).
- Lower: More reactive bands, captures quick shifts.
- Higher: Smoother, more stable bands.
9. Dynamic Multiplier Based on Volatility
Allows the band multiplier to adapt automatically to changes in market volatility.
- ON: Bands expand during high volatility and contract during low volatility.
- OFF: Bands remain fixed based on the set multiplier.
10. Dynamic Multiplier Sensitivity
Controls how aggressively the dynamic multiplier responds to volatility changes.
- Lower values: Subtle adjustments.
- Higher values: More aggressive band expansion/contraction.
K Bands v2 is designed to be adaptable across any market or timeframe, helping visualize price
structure, trend, and volatility behavior.