Normalized 180-Day RP Change (Z-Score)180 day RP change with less alpha decay, good for picking tops on 1d tf
Bands and Channels
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!")
ZLMA Keltner ChannelThe ZLMA Keltner Channel uses a Zero-Lag Moving Average (ZLMA) as the centerline with ATR-based bands to track trends and volatility.
The ZLMA’s reduced lag enhances responsiveness for breakouts and reversals, i.e. it's more sensitive to pivots and trend reversals.
Unlike Bollinger Bands, which use standard deviation and are more sensitive to price spikes, this uses ATR for smoother volatility measurement.
Background:
Built on John Ehlers’ lag-reduction techniques, this indicator adapts the classic Keltner Channel for dynamic markets. It excels in trending (low-entropy) markets for breakouts and range-bound (high-entropy) markets for reversals.
How to Read:
ZLMA (Blue): Tracks price trends. Above = bullish, below = bearish.
Upper Band (Green): ZLMA + (Multiplier × ATR). Cross above signals breakout or overbought.
Lower Band (Red): ZLMA - (Multiplier × ATR). Cross below signals breakout or oversold.
Channel Fill (Gray): Shows volatility. Narrow = low volatility, wide = high volatility.
Signals (Optional): Enable to show “Buy” (green) on upper band crossovers, “Sell” (red) on lower band crossunders.
Strategies: Trade breakouts in trending markets, reversals in ranges, or use bands as trailing stops.
Settings:
ZLMA Period (20): Adjusts centerline responsiveness.
ATR Period (20): Sets volatility period.
Multiplier (2.0): Controls band width.
If you are still confused between the ZLMA Keltner Channels and Bollinger Bands:
Keltner Channel (ZLMA): Uses ATR for bands, which smooths volatility and is less reactive to sudden price spikes. The ZLMA centerline reduces lag for faster trend detection.
Bollinger Bands: Uses standard deviation for bands, making them more sensitive to price volatility and prone to wider swings in high-entropy markets. Typically uses an SMA centerline, which lags more than ZLMA.
AMOGH SMC 1Smart Money Concept (SMC) Indicator market structure ke powerful elements jaise Break of Structure (BOS), Change of Character (CHoCH), liquidity zones, aur Fair Value Gaps (FVG) ko identify karta hai. Is indicator ka purpose hai institutional price movements ko track karna—jahaan large players apna entry ya exit plan karte hain. Traditional indicators ke mukable SMC ek zyada refined aur logic-driven approach deta hai jisme market ka intent samajhna asaan hota hai. Ye tool traders ko trending aur consolidating market conditions me structure-based signals provide karta hai, jisse trade execution aur risk management aur effective ho jata hai. FVGs un zones ko highlight karte hain jahan price imbalance hota hai, aur CHoCH/BOS se market ka directional bias confirm hota hai. Jo traders price action aur institutional footprint pe kaam karte hain, unke liye ye indicator ek must-have resource hai. Iska design clean, customizable aur real-time plotting ke saath optimized hai.
Spot Nachkauf-Zonen High TF (RSI + BB)**Spot Buy/Sell Zones High TF Indicator (RSI + Bollinger Bands + Trend & Volume Filters)**
This is an overlay indicator for TradingView that highlights optimal buy and sell areas on a higher timeframe (e.g. Daily, Weekly) while you view a lower timeframe chart. It combines volatility, momentum, trend and volume checks to reduce false signals.
---
### Key Features
* **Higher-Timeframe Calculations**
All indicators (Bollinger Bands, RSI, moving averages, volume) use data from a user-selected timeframe (for example “D” for daily or “W” for weekly).
* **Bollinger Bands**
* Middle line: Simple Moving Average (SMA) over N periods
* Upper/Lower bands: ±M × standard deviation
* Semi-transparent fill between the bands for quick visual reference
* **RSI Momentum**
* Classic 14-period RSI with adjustable overbought (e.g. 70) and oversold (e.g. 30) levels
* **Buy** when RSI crosses up out of oversold and price touches or goes below the lower Bollinger Band
* **Sell** when RSI crosses down out of overbought and price touches or goes above the upper Bollinger Band
* **Trend Filter (Optional)**
* Higher-TF SMA (default 200 periods) plotted in orange
* Signals only fire when price is above the SMA (for buys) or below (for sells) to align with the main trend
* **Volume Filter (Optional)**
* Compares current higher-TF volume against its SMA
* Signals require volume to exceed a user-set multiplier of average volume, ensuring real market participation
* **Visual Signals**
* Green triangles below bars mark buy zones; red triangles above bars mark sell zones
* Light green background highlights active buy areas
* **Built-In Alerts**
* Two alert conditions (“Buy Signal” and “Sell Signal”) ready to be used in TradingView’s Alert dialog
* Customizable alert messages include ticker and timeframe
---
### Inputs
| Setting | Default | Purpose |
| ------------------------- | ------- | ------------------------------------------------ |
| **Calculation Timeframe** | D | Higher timeframe for all calculations |
| **BB Periods** | 20 | Length of SMA for Bollinger middle line |
| **BB Std-Dev Multiplier** | 2.0 | Number of standard deviations for the bands |
| **RSI Periods** | 14 | Length of the RSI calculation |
| **Overbought / Oversold** | 70 / 30 | RSI thresholds for signal generation |
| **Enable Trend Filter** | true | Use higher-TF SMA to confirm trend direction |
| **Trend MA Periods** | 200 | SMA length for the trend filter |
| **Enable Volume Filter** | true | Require above-average volume to validate signals |
| **Volume MA Periods** | 20 | SMA length for volume filter |
| **Volume Multiplier** | 1.2 | How many times above average volume is needed |
---
### How to Use
1. **Add the Script**: Paste the Pine code into TradingView’s Pine Editor and save.
2. **Adjust Settings**: Choose your higher timeframe (“D”, “W”, etc.) and tweak BB, RSI, trend, and volume parameters.
3. **Activate Alerts**: In the Alerts panel, select the “Buy Signal” or “Sell Signal” alert condition.
4. **Interpret Signals**:
* A green triangle + green background = suggested buy zone
* A red triangle = suggested sell zone
This setup gives you clear, rule-based entry and exit areas by filtering noise and confirming market strength on a higher timeframe.
NEXGEN ADXNEXGEN ADX
NEXGEN ADX – Advanced Trend Strength & Directional Indicator
Purpose:
The NEXGEN ADX is a powerful trend analysis tool developed by NexGen Trading Academy to help traders identify the strength and direction of market trends with precision. Based on the Average Directional Index (ADX) along with +DI (Positive Directional Indicator) and –DI (Negative Directional Indicator), this custom indicator provides a reliable foundation for both trend-following strategies and trend reversal setups.
Faytterro Bands Breakout📌 Faytterro Bands Breakout 📌
This indicator was created as a strategy showcase for another script: Faytterro Bands
It’s meant to demonstrate a simple breakout strategy based on Faytterro Bands logic and includes performance tracking.
❓ What Is It?
This script is a visual breakout strategy based on a custom moving average and dynamic deviation bands, similar in concept to Bollinger Bands but with unique smoothing (centered regression) and performance features.
🔍 What Does It Do?
Detects breakouts above or below the Faytterro Band.
Plots visual trade entries and exits.
Labels each trade with percentage return.
Draws profit/loss lines for every trade.
Shows cumulative performance (compounded return).
Displays key metrics in the top-right corner:
Total Return
Win Rate
Total Trades
Number of Wins / Losses
🛠 How Does It Work?
Bullish Breakout: When price crosses above the upper band and stays above the midline.
Bearish Breakout: When price crosses below the lower band and stays below the midline.
Each trade is held until breakout invalidation, not a fixed TP/SL.
Trades are compounded, i.e., profits stack up realistically over time.
📈 Best Use Cases:
For traders who want to experiment with breakout strategies.
For visual learners who want to study past breakouts with performance metrics.
As a template to develop your own logic on top of Faytterro Bands.
⚠ Notes:
This is a strategy-like visual indicator, not an automated backtest.
It doesn't use strategy.* commands, so you can still use alerts and visuals.
You can tweak the logic to create your own backtest-ready strategy.
Unlike the original Faytterro Bands, this script does not repaint and is fully stable on closed candles.
Alım Algoritması (EMA + RSI + MACD + ATR + Pozisyon Takibi)//@version=5
indicator("Alım Algoritması (EMA + RSI + MACD + ATR + Pozisyon Takibi)", overlay=true)
// === INPUTS ===
ema1_len = input.int(21, title="EMA 1")
ema2_len = input.int(50, title="EMA 2")
ema3_len = input.int(100, title="EMA 3")
rsi_len = input.int(14, title="RSI Length")
atr_len = input.int(14, title="ATR Length")
macd_fast = input.int(12, title="MACD Fast")
macd_slow = input.int(26, title="MACD Slow")
macd_signal = input.int(9, title="MACD Signal")
max_distance_pct = input.float(5.0, title="Max EMA Distance %", step=0.1)
// === CALCULATIONS ===
ema1 = ta.ema(close, ema1_len)
ema2 = ta.ema(close, ema2_len)
ema3 = ta.ema(close, ema3_len)
avg_ema = (ema1 + ema2 + ema3) / 3
distance_pct = math.abs(close - avg_ema) / avg_ema * 100
ema_near = distance_pct <= max_distance_pct
basis = ta.sma(close, 20)
dev = ta.stdev(close, 20)
upper = basis + 2 * dev
lower = basis - 2 * dev
width = (upper - lower) / basis
is_range = width < 0.12 // %5'ten dar bant
rsi = ta.rsi(close, rsi_len)
rsi_trend = ta.sma(rsi, 5)
rsi_up = rsi > rsi_trend
= ta.macd(close, macd_fast, macd_slow, macd_signal)
ema1_cross = ta.crossover(close, ema1) or ta.crossover(close, ema2) or ta.crossover(close, ema3)
ema_recent_cross = ta.barssince(ema1_cross) < 5
// === BUY SIGNAL ===
//buy_signal = ema_near and ema_recent_cross and
// macdLine > signalLine and hist > 0 and
// rsi > 45 and rsi < 65 and rsi_up
buy_signal = not is_range and ema_near and ema_recent_cross and
macdLine > signalLine and hist > 0 and
rsi > 45 and rsi < 65 and rsi_up
//buy_signal = not is_range and ema_near and ema_recent_cross and
// macdLine > signalLine and hist > 0 and
// rsi > 45 and rsi < 65 and rsi_up
// === POSITION LOGIC ===
var bool in_position = false
var float entry_price = na
var float stop_loss = na
var float take_profit_1 = na
var float take_profit_2 = na
atr = ta.atr(atr_len)
// Koşullar
new_buy = buy_signal and not in_position
// SL ve TP seviyeleri hesaplama
new_sl = close - 1.5 * atr
new_tp1 = close + 2.0 * atr
new_tp2 = close + 3.5 * atr
// Pozisyon açma
if new_buy
in_position := true
entry_price := close
stop_loss := new_sl
take_profit_1 := new_tp1
take_profit_2 := new_tp2
label.new(bar_index, low, "BUY", style=label.style_label_up, color=color.green, textcolor=color.white)
sl_hit = in_position and low <= stop_loss
tp1_hit = in_position and high >= take_profit_1
tp2_hit = in_position and high >= take_profit_2
// Pozisyon kapama sinyali
if sl_hit
in_position := false
//label.new(bar_index, low, "SL", style=label.style_label_down, color=color.red, textcolor=color.white)
if tp2_hit
in_position := false
//label.new(bar_index, high, "TP2", style=label.style_label_down, color=color.rgb(209, 34, 222), textcolor=color.white)
else if tp1_hit
in_position := false
//label.new(bar_index, high, "TP1", style=label.style_label_down, color=color.rgb(209, 34, 222), textcolor=color.white)
// === PLOT ===
// Sadece BUY, SL ve TP seviyeleri çizilir
plot(in_position ? stop_loss : na, title="Stop Loss", color=color.red, style=plot.style_linebr)
//plot(in_position ? take_profit_1 : na, title="TP1", color=color.rgb(209, 34, 222), style=plot.style_linebr)
//plot(in_position ? take_profit_2 : na, title="TP2", color=color.rgb(209, 34, 222), style=plot.style_linebr)
Volatility Flow X | Dual Trend Strategy [VWMA+SMA+ADX]📌 Strategy Title
Volatility Flow X | Dual Trend Strategy
🧾 Description
🚀 Strategy Overview
Volatility Flow X is a dual-directional trading strategy that combines Volume-Weighted MA (VWMA) for momentum, Simple MA (SMA) for trend direction, ADX for trend strength filtering, and ATR-based volatility cloud for dynamic support/resistance zones.
It is designed specifically for high-volatility assets like BTC/USD on intraday timeframes such as 15 min, 30 min, and 1 hour — offering both breakout and trend-following opportunities.
🔬 Technical Components and Sources
1. VWMA (Volume-Weighted Moving Average)
Captures volume-weighted momentum shifts.
📚 Kirkpatrick & Dahlquist (2010) — “Technical Analysis”
2. SMA (Simple Moving Average)
Used as a baseline trend direction validator.
📚 Ernie Chan — “Algorithmic Trading” (2013)
3. ADX (Average Directional Index)
Filters out low-conviction signals based on trend strength.
📚 J. Welles Wilder (1978) — ADX in directional movement systems
4. ATR Cloud (Volatility Envelope)
Creates upper and lower dynamic bands using ATR to visualize trend pressure.
📚 Zunino et al. (2017) — Fractal volatility behavior in Bitcoin markets
🧠 Key Features
✅ 3 configurable Long signal modes
✅ 3 configurable Short signal modes
✅ Manually switchable signals for flexibility
✅ Auto-calculated TP/SL using ATR and risk/reward ratio
✅ ADX filter to avoid choppy trends
✅ Visual cloud overlay for support/resistance
✅ Suitable for scalping and short-term swing trading
⚙️ Recommended Settings (for BTC/USDT – 30min)
VWMA Length = 18
SMA Length = 50
ATR Length = 14, Multiplier = 2.5
Risk-Reward Ratio = 1.5
ADX Length = 14, Threshold = 18, Lookback = 4
⚠️ Disclaimer
This strategy is not financial advice. Please backtest and understand the risks before using it in live markets.
SymFlex Band No1. - Momentum Weighted Volatility BandsSymFlex Band No1 – Momentum-Weighted Adaptive Volatility Band
Overview
The SymFlex Band No1 is a custom-built volatility band that fuses momentum and volatility into a flexible, asymmetric envelope.
It adapts dynamically to market conditions using RSI-based momentum weighting and a selection of smoothing algorithms, making it responsive to both trend shifts and volatility expansions.
Key Features
📊 Momentum-Weighted Width
The band expands or contracts based on RSI momentum. When the RSI is above 50, the upper band becomes more sensitive; when below 50, the lower band responds more dynamically.
🔁 Asymmetric Adaptation
Unlike traditional Bollinger Bands or Keltner Channels, the upper and lower bands of the SymFlex system are independently adjusted based on momentum conditions, creating a non-linear envelope structure.
⚙️ Selectable Smoothing Methods
You can choose among the following methods to control the volatility smoothing:
EMA (Exponential Moving Average)
TEMA (Triple Exponential Moving Average)
ZeroLag EMA v0 (double EMA difference method)
ZeroLag EMA v1 (lag-compensated input)
🛠 Fully Customizable Inputs
RSI Length
Band Multiplier
Band Length
Smoothing Type
How It Works
RSI is calculated over a defined length and normalized to a weight between -1 and +1.
Standard deviation (volatility) of the close price is computed and smoothed.
The band centerline is a Simple Moving Average (SMA).
The band boundaries are then:
Upper = Middle + (1 + momentum_weight) × multiplier × smoothed_volatility
Lower = Middle - (1 + momentum_weight) × multiplier × smoothed_volatility
Use Cases
Detect momentum-driven breakouts
Spot compressions before expansions
Adapt to volatile or trending markets more effectively than fixed bands
Disclaimer
This script is for educational and research purposes only. It is not financial advice. Use with discretion and always validate with additional signals and proper risk management.
AI Score Indicator//@version=5
indicator("AI Score Indicator", overlay=true)
// Eingaben
length = input.int(14, title="RSI Length")
smaLength = input.int(50, title="SMA Length")
bbLength = input.int(20, title="Bollinger Band Length")
stdDev = input.float(2.0, title="Standard Deviation")
// Indikatoren
rsi = ta.rsi(close, length)
sma = ta.sma(close, smaLength)
= ta.bb(close, bbLength, stdDev)
// Scoring (simuliert ein KI-System mit gewichteten Bedingungen)
score = 0
score := rsi < 30 ? score + 1 : score
score := close < sma ? score + 1 : score
score := close < bb_lower ? score + 1 : score
score := ta.crossover(close, sma) ? score + 1 : score
// Buy-/Sell-Signale auf Basis des Scores
buySignal = score >= 3
sellSignal = rsi > 70 and close > sma
// Signale anzeigen
plotshape(buySignal, title="Buy", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(sellSignal, title="Sell", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")
// Score visualisieren (debugging)
plot(score, title="AI Score", color=color.orange)
AlphaTrend//@version=5
indicator('AlphaTrend', shorttitle='AT', overlay=true, format=format.price, precision=2, timeframe='')
coeff = input.float(1, 'Multiplier', step=0.1)
AP = input(14, 'Common Period')
ATR = ta.sma(ta.tr, AP)
src = input(close)
showsignalsk = input(title='Show Signals?', defval=true)
novolumedata = input(title='Change calculation (no volume data)?', defval=false)
upT = low - ATR * coeff
downT = high + ATR * coeff
AlphaTrend = 0.0
AlphaTrend := (novolumedata ? ta.rsi(src, AP) >= 50 : ta.mfi(hlc3, AP) >= 50) ? upT < nz(AlphaTrend ) ? nz(AlphaTrend ) : upT : downT > nz(AlphaTrend ) ? nz(AlphaTrend ) : downT
color1 = AlphaTrend > AlphaTrend ? #00E60F : AlphaTrend < AlphaTrend ? #80000B : AlphaTrend > AlphaTrend ? #00E60F : #80000B
k1 = plot(AlphaTrend, color=color.new(#0022FC, 0), linewidth=3)
k2 = plot(AlphaTrend , color=color.new(#FC0400, 0), linewidth=3)
fill(k1, k2, color=color1)
buySignalk = ta.crossover(AlphaTrend, AlphaTrend )
sellSignalk = ta.crossunder(AlphaTrend, AlphaTrend )
K1 = ta.barssince(buySignalk)
K2 = ta.barssince(sellSignalk)
O1 = ta.barssince(buySignalk )
O2 = ta.barssince(sellSignalk )
plotshape(buySignalk and showsignalsk and O1 > K2 ? AlphaTrend * 0.9999 : na, title='BUY', text='BUY', location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(#0022FC, 0), textcolor=color.new(color.white, 0))
plotshape(sellSignalk and showsignalsk and O2 > K1 ? AlphaTrend * 1.0001 : na, title='SELL', text='SELL', location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(color.maroon, 0), textcolor=color.new(color.white, 0))
alertcondition(buySignalk and O1 > K2, title='Potential BUY Alarm', message='BUY SIGNAL!')
alertcondition(sellSignalk and O2 > K1, title='Potential SELL Alarm', message='SELL SIGNAL!')
alertcondition(buySignalk and O1 > K2, title='Confirmed BUY Alarm', message='BUY SIGNAL APPROVED!')
alertcondition(sellSignalk and O2 > K1, title='Confirmed SELL Alarm', message='SELL SIGNAL APPROVED!')
alertcondition(ta.cross(close, AlphaTrend), title='Price Cross Alert', message='Price - AlphaTrend Crossing!')
alertcondition(ta.crossover(low, AlphaTrend), title='Candle CrossOver Alarm', message='LAST BAR is ABOVE ALPHATREND')
alertcondition(ta.crossunder(high, AlphaTrend), title='Candle CrossUnder Alarm', message='LAST BAR is BELOW ALPHATREND!')
alertcondition(ta.cross(close , AlphaTrend ), title='Price Cross Alert After Bar Close', message='Price - AlphaTrend Crossing!')
alertcondition(ta.crossover(low , AlphaTrend ), title='Candle CrossOver Alarm After Bar Close', message='LAST BAR is ABOVE ALPHATREND!')
alertcondition(ta.crossunder(high , AlphaTrend ), title='Candle CrossUnder Alarm After Bar Close', message='LAST BAR is BELOW ALPHATREND!')
fadi ffa This script is for educational purposes only. It draws historical pivot points and labels them on the chart to help users visualize price levels. It does not provide trading signals, recommendations, or any financial advice. Use at your own risk. The author is not responsible for any decisions made based on this script.
SymFlex Band - RSI-MAD Asymmetric
🔮 SymFlex Band – RSI-MAD Asymmetric Band by Kwang Il Lee
Source: surirang.com
The SymFlex Band is a unique asymmetric envelope built on a hybrid concept that fuses RSI momentum dynamics with MAD (Mean Absolute Deviation). Unlike traditional symmetric bands (like Bollinger Bands or Keltner Channels), this band expands and contracts asymmetrically, reflecting the directional momentum of the market.
🎯 Core Innovation
🔸 RSI-Based Asymmetry
This band is not centered merely on price volatility. Instead, it uses the RSI's deviation from the neutral line (50) to determine whether bullish or bearish pressure is dominating — dynamically expanding or compressing the upper/lower bands accordingly.
🔸 MAD-Weighted Scaling
To ensure the band responds accurately to real price deviation, MAD is used instead of standard deviation or ATR. It provides a more robust and median-sensitive envelope for noisy or volatile markets.
🔸 Dynamic Adaptation
The band is adaptive in both direction and width:
When RSI rises above 50, the upper band stretches wider.
When RSI falls below 50, the lower band stretches instead.
A minimum width threshold ensures stability.
📈 How to Use
Use breakouts from the band as potential trend signals.
Confirm market strength via table: Check if price is “In Range” or breaking out.
Monitor the correlation between MAD and RSI in the dynamic table to detect momentum sync.
🔍 Technical Notes
Supports multiple MA types (SMA, EMA, TEMA, DEMA, Zerolag, etc.) as the band basis.
Designed for both trend-following and range-trading interpretations.
Fully responsive to different market conditions through minimal user inputs.
🚨 Note: This is not a combination of unrelated indicators. The RSI-MAD structure is purpose-built to represent a new type of envelope based on directional momentum and deviation sensitivity.
Polynomial Regression + RSI Explosive Zones// Sonic R
EMA_len = input.int(89, title="EMA Signal Length")
HiLoLen = input.int(34, title="PAC EMA Length")
// Polynomial Regression
regression_length = input.int(10, title="Regression Length")
fractal_size = input.int(2, title="Fractal Size")
// Color inputs for regression
colorMid = input.color(color.red, title="Mid Line Color")
colorMax = input.color(color.orange, title="Max Line Color")
colorMin = input.color(color.green, title="Min Line Color")
colorUpper = input.color(color.blue, title="Upper Line Color")
colorLower = input.color(color.purple, title="Lower Line Color")
// === SONIC R ===
// PAC lines
pacC = ta.ema(close, HiLoLen)
pacL = ta.ema(low, HiLoLen)
pacH = ta.ema(high, HiLoLen)
plot(pacL, title="PAC Low EMA", color=color.new(color.blue, 50))
plot(pacH, title="PAC High EMA", color=color.new(color.blue, 50))
plot(pacC, title="PAC Close EMA", color=color.new(color.blue, 0), linewidth=2)
fill(plot(pacL), plot(pacH), color=color.aqua, transp=90, title="Fill PAC")
// EMA lines
ema610 = ta.ema(close, 610)
ema200 = ta.ema(close, 200)
emaSignal = ta.ema(close, EMA_len)
plot(ema610, title="EMA 610", color=color.white)
plot(ema200, title="EMA 200", color=color.fuchsia)
plot(emaSignal, title="EMA Signal", color=color.orange, linewidth=2)
FVG IndicatorYet another indicator allowing you to plot FVGs with the following specific features:
FVG Detection: It automatically identifies bullish (BISI) and bearish (SIBI) FVGs based on the relationship between candle highs and lows.
Clear Visualization: It draws boxes to represent the FVGs and adds a median line for each FVG, making them easier to identify.
Dynamic Styles: The indicator adapts the appearance of FVGs (color and border style) based on their current state:
Untested: When the price has not yet interacted with the FVG.
Tested (Partially Traversed): When the price has entered the FVG.
Fully Traversed (Unmitigated): When the price has completely crossed the FVG but has not yet "invalidated" it (closed beyond the FVG).
Mitigated: When the FVG is invalidated by price action, it disappears from the chart to avoid clutter. This disappearance only occurs after the closing of the mitigating candle.
Full Customization: You can adjust all colors and border styles for each FVG state via the indicator's settings, as well as the maximum number of FVGs displayed.
----------------------------------------------------------------------------------------------------------------------
Simple v6 Moving‑Average TrendTo provide a visual guide for trend direction using EMA crossovers, supported by a dynamic trailing stop for potential exit zones. It shows whether the price is above or below a moving average and highlights shifts in trend with labeled signals and a stop-line.
⚙️ How It Works
1. EMA Calculation
It computes a single EMA (default: 20-period) from the current chart’s close price.
The EMA represents the short-term trend.
EMA + RSI Trend Strength v6✅ Indicator Name:
EMA + RSI Trend Strength v6
📌 Purpose:
This indicator combines trend detection (via EMA) with momentum confirmation (via RSI) to help traders identify high-probability bullish or bearish conditions. It also provides optional visual buy/sell signals and trend shading directly on the chart.
⚙️ Core Components:
1. Inputs:
emaLen: Length of the Exponential Moving Average (default: 50).
rsiLen: RSI period for momentum analysis (default: 14).
rsiOB, rsiOS: RSI levels for context (default: 70/30, but mainly 50 is used for trend strength).
showSignals: Toggle for showing entry signals.
2. Logic:
Bullish Condition:
Price is above the EMA
RSI is above 50 (indicating positive momentum)
Bearish Condition:
Price is below the EMA
RSI is below 50
3. Visuals & Outputs:
EMA Line: Orange line on the price chart showing the trend direction.
Buy Signal: Green triangle appears below the candle when bullish condition is met.
Sell Signal: Red triangle appears above the candle when bearish condition is met.
Background Color:
Light green when bullish
Light red when bearish
MACD Histogram v6This script plots the MACD histogram, a popular momentum indicator used to identify bullish/bearish momentum shifts, convergence/divergence between moving averages, and potential entry/exit signals.
Core Components:
Inputs:
fast – Period for the fast EMA (default: 12).
slow – Period for the slow EMA (default: 26).
signal – Period for the signal line EMA (default: 9).
Avg High/Low Lines with TP & SL아래 코드는 TradingView Pine Script v6으로 작성된 스크립트로, 주어진 캔들 수 동안의 평균 고가와 저가를 계산해서 그 위에 수평선을 그리며, 해당 수평선 돌파 시 진입 가격을 기록하고, 손절가(SL)와 목표가(TP)를 자동으로 계산하여 표시하는 전략입니다. 알림(alert) 기능도 포함되어 있습니다.
코드 주요 기능 요약
length 기간 동안 평균 고가, 저가를 단순 이동평균(SMA)으로 계산
평균 고가선, 저가선 수평선을 일정 바 개수만큼 좌우 연장하여 차트에 표시
평균 고가 돌파 시 매수 진입, 평균 저가 돌파 시 매도 진입 처리
진입 가격 저장 및 상태 관리 (inLong, inShort 플래그)
손절가(SL): 롱이면 평균 저가, 숏이면 평균 고가
목표가(TP): 진입가에서 손절 거리의 1.5배만큼 설정
진입가 기준으로 TP, SL 라인과 라벨 표시
상단 돌파 후 종가 마감 시 매수 알림, 하단 돌파 후 종가 마감 시 매도 알림
Sure! Here’s the English explanation of your TradingView Pine Script v6 code:
Summary of Key Features
Calculates the simple moving average (SMA) of the high and low prices over a user-defined number of candles (length).
Draws horizontal lines for the average high and average low, extending them a specified number of bars to the left and right on the chart.
Detects breakouts above the average high to trigger a long entry, and breakouts below the average low to trigger a short entry.
Records the entry price and manages trade states using flags (inLong, inShort).
Sets the stop loss (SL) at the average low for long positions, and at the average high for short positions.
Calculates the take profit (TP) level based on the entry price plus 1.5 times the stop loss distance.
Draws lines and labels for the TP and SL levels starting from the entry bar, extended to the right.
Sends alerts when the price closes above the average high after a breakout (long signal), or closes below the average low after a breakout (short signal).
-onestar-