detects bottom rebound signal🧩 General Idea:
This indicator detects bottom rebound signals — the start of an upward move after a downtrend — using a combination of RSI + price + volume.
⚙️ How the Indicator Works:
Calculates the RSI (Relative Strength Index) using a 14-period length.
→ Purpose: Measure momentum after a decline.
Monitors upward RSI crossovers at levels 45, 50, 55, and 60.
→ Purpose: Confirm that momentum is shifting from bearish to bullish.
Checks for a price increase of more than 2% compared to the previous close.
→ Purpose: Ensure that the move is strong and not just a small fluctuation.
Confirms that today’s volume is higher than yesterday’s.
→ Purpose: Validate that buying pressure is supported by real market activity.
When all conditions are met together ⇒ a rebound signal is generated ✅
(It plots a value of 1 as a histogram — can be used as a filter).
Triggers an alert when a rebound signal occurs — so you can get notified automatically in TradingView.
🎯 Indicator Purpose:
To identify stocks that are truly rebounding from their bottom, confirming it through momentum, price strength, and volume — often highlighting early entry opportunities before a larger uptrend.
🧩 الفكرة العامة:
يرصد لحظات ارتداد السهم من القاع — أي بداية صعود بعد فترة نزول — اعتمادًا على RSI + السعر + الحجم.
⚙️ خطوات عمل المؤشر:
يحسب مؤشر القوة النسبية (RSI) بطول 14 شمعة.
الهدف: قياس الزخم بعد نزول طويل.
يراقب تقاطعات RSI لأعلى عند المستويات (45، 50، 55، 60).
الهدف: تأكيد أن الزخم بدأ يتحول من سالب إلى موجب.
يتحقق من ارتفاع السعر أكثر من 2٪ مقارنةً بالإغلاق السابق.
الهدف: التأكد أن الصعود حقيقي وليس مجرد تذبذب بسيط.
يتأكد أن حجم التداول اليوم أكبر من اليوم السابق.
الهدف: وجود دعم حقيقي من المشترين (تأكيد على دخول سيولة).
عند تحقق كل الشروط السابقة معًا ⇒ يعطي إشارة ارتداد من القاع ✅
(يرسم عمودًا بقيمة 1 في الأسفل ويمكن استخدامه كفلتر).
يصدر تنبيه (Alert) عند تحقق الإشارة لتتابعها تلقائيًا في TradingView.
🎯 الهدف من المؤشر:
تحديد الأسهم التي بدأت ترتد فعليًا من القاع مع تأكيد الزخم والحجم والسعر — وهي غالبًا فرص دخول مبكرة قبل استمرار الصعود.
تنبيه مهم: يعمل كفلتر نبيه على قائمة محددة ولا يظهر على الشارت
Indicateurs et stratégies
loxxmasLibrary "loxxmas"
TODO:loxx moving averages used in indicators
kama(src, len, kamafastend, kamaslowend)
KAMA Kaufman adaptive moving average
Parameters:
src (float) : float
len (int) : int
kamafastend (int) : int
kamaslowend (int) : int
Returns: array
ama(src, len, fl, sl)
AMA, adaptive moving average
Parameters:
src (float) : float
len (int) : int
fl (int) : int
sl (int) : int
Returns: array
t3(src, len)
T3 moving average, adaptive moving average
Parameters:
src (float) : float
len (simple int) : int
Returns: array
adxvma(src, len)
ADXvma - Average Directional Volatility Moving Average
Parameters:
src (float) : float
len (int) : int
Returns: array
ahrma(src, len)
Ahrens Moving Average
Parameters:
src (float) : float
len (int) : int
Returns: array
alxma(src, len)
Alexander Moving Average - ALXMA
Parameters:
src (float) : float
len (int) : int
Returns: array
dema(src, len)
Double Exponential Moving Average - DEMA
Parameters:
src (float) : float
len (simple int) : int
Returns: array
dsema(src, len)
Double Smoothed Exponential Moving Average - DSEMA
Parameters:
src (float) : float
len (int) : int
Returns: array
ema(src, len)
Exponential Moving Average - EMA
Parameters:
src (float) : float
len (simple int) : int
Returns: array
fema(src, len)
Fast Exponential Moving Average - FEMA
Parameters:
src (float) : float
len (int) : int
Returns: array
hma(src, len)
Hull moving averge
Parameters:
src (float) : float
len (simple int) : int
Returns: array
ie2(src, len)
Early T3 by Tim Tilson
Parameters:
src (float) : float
len (int) : int
Returns: array
frama(src, len, FC, SC)
Fractal Adaptive Moving Average - FRAMA
Parameters:
src (float) : float
len (int) : int
FC (int) : int
SC (int) : int
Returns: array
instant(src, alpha)
Instantaneous Trendline
Parameters:
src (float) : float
alpha (float)
Returns: array
ilrs(src, len)
Integral of Linear Regression Slope - ILRS
Parameters:
src (float) : float
len (int)
Returns: array
laguerre(src, alpha)
Laguerre Filter
Parameters:
src (float) : float
alpha (float)
Returns: array
leader(src, len)
Leader Exponential Moving Average
Parameters:
src (float) : float
len (int)
Returns: array
lsma(src, len, offset)
Linear Regression Value - LSMA (Least Squares Moving Average)
Parameters:
src (float) : float
len (simple int)
offset (simple int)
Returns: array
lwma(src, len)
Linear Weighted Moving Average - LWMA
Parameters:
src (float) : float
len (int)
Returns: array
mcginley(src, len)
McGinley Dynamic
Parameters:
src (float) : float
len (simple int)
Returns: array
mcNicholl(src, len)
McNicholl EMA
Parameters:
src (float) : float
len (simple int)
Returns: array
nonlagma(src, len)
Non-lag moving average
Parameters:
src (float) : float
len (int)
Returns: array
pwma(src, len, pwr)
Parabolic Weighted Moving Average
Parameters:
src (float) : float
len (int)
pwr (float)
Returns: array
rmta(src, len)
Recursive Moving Trendline
Parameters:
src (float) : float
len (int)
Returns: array
decycler(src, len)
Simple decycler - SDEC
Parameters:
src (float) : float
len (int)
Returns: array
sma(src, len)
Simple Moving Average
Parameters:
src (float) : float
len (int)
Returns: array
swma(src, len)
Sine Weighted Moving Average
Parameters:
src (float) : float
len (int)
Returns: array
slwma(src, len)
linear weighted moving average
Parameters:
src (float) : float
len (int)
Returns: array
smma(src, len)
Smoothed Moving Average - SMMA
Parameters:
src (float) : float
len (simple int)
Returns: array
super(src, len)
Ehlers super smoother
Parameters:
src (float) : float
len (int)
Returns: array
smoother(src, len)
Smoother filter
Parameters:
src (float) : float
len (int)
Returns: array
tma(src, len)
Triangular moving average - TMA
Parameters:
src (float) : float
len (int)
Returns: array
tema(src, len)
Tripple exponential moving average - TEMA
Parameters:
src (float) : float
len (simple int)
Returns: array
vwema(src, len)
Volume weighted ema - VEMA
Parameters:
src (float) : float
len (simple int)
Returns: array
vwma(src, len)
Volume weighted moving average - VWMA
Parameters:
src (float) : float
len (simple int)
Returns: array
zlagdema(src, len)
Zero-lag dema
Parameters:
src (float) : float
len (simple int)
Returns: array
zlagma(src, len)
Zero-lag moving average
Parameters:
src (float) : float
len (int)
Returns: array
zlagtema(src, len)
Zero-lag tema
Parameters:
src (float) : float
len (simple int)
Returns: array
threepolebuttfilt(src, len)
Three-pole Ehlers Butterworth
Parameters:
src (float) : float
len (int)
Returns: array
threepolesss(src, len)
Three-pole Ehlers smoother
Parameters:
src (float) : float
len (int)
Returns: array
twopolebutter(src, len)
Two-pole Ehlers Butterworth
Parameters:
src (float) : float
len (int)
Returns: array
twopoless(src, len)
Two-pole Ehlers smoother
Parameters:
src (float) : float
len (int)
Returns: array
Double Grid + Auto Countdown Timer (Stable v6.1)Adjustable grid indicator with two levels and bar countdown timer fully adjustable.
AUTO asset, 1h/4h, Last Lines + Alerts + Signal BoxUnified PC-ATR v5 (Indicator) — AUTO asset, 1h/4h, Last Lines + Alerts + Signal Box
Live P&L IndicatorThis script gives you a simple, no-nonsense way to see your live profit and loss right on your chart. It stays fixed in the center (slightly offset for balance), updating automatically as price moves — so you always know where you stand without checking your account tab.
You can manually set your entry, clear it, or let the script freeze once your take-profit target is hit — perfect for keeping emotions in check when the trade’s already done its job.
Everything’s built to look clean and professional — no clutter, no distractions, just a sleek overlay.
💎 Trend Master Pro Scalping MTFTrend Master Pro Scalping MTF is a professional-grade indicator designed for intraday trading and scalping, optimized for 1M, 5M, and 15M timeframes. It combines multiple technical filters to provide high-confidence breakout and trend signals with visual clarity.
Key Features:
Multi-indicator analysis: EMA, RSI, ATR, SuperTrend, and volume.
Multi-Timeframe (MTF) filter: signals are validated only if the higher timeframe trend is aligned.
Clear visual signals: colored triangles and dynamic labels showing signal strength: A++, A+, A, B.
Confirmation dashboard: instantly see EMA trend, RSI strength, volume, ATR activity, SuperTrend direction, and final signal on your chart.
Reliable alerts: fixed alert messages compatible with TradingView, avoiding Pine Script errors.
Customizable parameters: adjust EMA, RSI, ATR, volume, and SuperTrend settings to match your scalping or day trading style.
How to Use:
Select your desired timeframe: 1M, 5M, or 15M.
Look for signals rated A++ or A+ for maximum probability.
Confirm trends using labels and the dashboard before entering trades.
Receive real-time notifications via alerts when confirmed signals occur.
Benefits:
Ideal for quick scalping and intraday strategies.
Reduces false signals with MTF trend filtering.
Professional visualization for fast and confident decision-making.
Recommendations:
Test on a demo account before trading live.
Adjust parameters to fit your asset and timeframe.
Combine with proper risk management strategies.
Pump & Dump Detector v6Overview:
The Pump & Dump Detector v6 is a powerful TradingView indicator designed to identify rapid bullish (pump) or bearish (dump) price movements in real time. By combining Rate of Change (ROC), candle volatility, and volume analysis, this indicator highlights extreme market moves that could indicate momentum spikes, retail-driven activity, or potential manipulations.
Key Features:
ROC-Based Detection: Detects strong upward or downward price momentum over a configurable period.
Volume Confirmation: Filters signals based on volume exceeding a simple moving average, reducing false alerts.
Customizable Candle Filters: Ensures signals are triggered only when the candle shows meaningful movement.
Visual Alerts: Displays clear green (pump) and red (dump) markers on the chart with customizable size.
Real-Time Alerts: Sends instant notifications when pump or dump conditions are met, once per bar.
User-Friendly Inputs: Adjust ROC length, thresholds, minimum candle move, and volume MA length to fit your trading style.
Community-Oriented: As a trader and software professional, I noticed that most pump/dump indicators are restricted access. I developed this indicator to be free for all, helping the trading community.
How to Use:
Green triangle below the bar → Pump detected; consider bullish setups.
Red triangle above the bar → Dump detected; consider bearish setups.
Use in conjunction with other technical analysis tools for confirmation.
Alerts can be used for automated notifications or trading strategies.
Why It’s Useful:
This indicator saves time and enhances decision-making by spotting extreme price moves early, giving traders an edge in volatile markets. Ideal for intraday, swing, and crypto traders looking to capitalize on sudden momentum shifts.
VIX OscillatorVIX Oscillator for catching vol signals on the same chart as your index of choice.
- Configurable levels that alert you when certain thresholds are broken
- Shaded background that make it simple to tell when you are in low vol/high vol regimes
- Moving line tracking price so that you can easily see bull/bear divergences against SPX building
RSI مع 5 متوسطات و5 مستوياتRSI with 5 Moving Averages and 5 Levels
This indicator combines the Relative Strength Index (RSI) with five customizable moving averages and five horizontal levels to help identify momentum, overbought/oversold zones, and trend strength.
• RSI: Measures the speed and change of price movements.
• Levels (10, 20, 50, 80, 90):
• 10 & 20 → Oversold zones (potential buy areas)
• 80 & 90 → Overbought zones (potential sell areas)
• 50 → Neutral midpoint (trend balance line)
• Moving Averages (5, 8, 13, 21, 200):
Smooth the RSI line to reveal short- and long-term momentum trends.
You can choose the type (SMA, EMA, WMA), color, and line thickness.
Optional alert signals can be triggered when the RSI crosses specific levels (e.g., above 80 or below 20).
TICK OscillatorOscillator that makes it easy to see when TICK is hitting extreme readings or establishing a bullish/bearish divergence vs the indices.
- Green coloration means a reading of >+400
- Red coloration means a reading of <-400
- Orange means a reading in between -400 and +400
This was inspired by John F Carter's book "Mastering The Trade", where I first learned about utilizing TICK in my trading.
SMT + CVD (NQ vs ES) w/ AlertsSMT + CVD (NQ vs ES) w/ Alerts
This tool combines Smart Money Technique (SMT) and Cumulative Volume Delta (CVD) to highlight high-probability inflection points on NQ (primary) versus ES (secondary).
How it works
SMT condition: the primary breaks its most recent swing (High for bearish / Low for bullish) while the secondary does not break the corresponding swing within a small retest window.
CVD confirmation: at the same time, the primary’s CVD shows divergence (higher price but lower/equal CVD for shorts, lower price but higher/equal CVD for longs).
When both align, the script plots a marker/label and draws a line from the primary swing to the signal bar. Alerts are fired.
Signals & Alerts
Labels: “SMT+CVD DOWN/UP” on the signal bar.
Lines: connects the primary swing → signal bar so you can see the structure that produced the signal.
Alert names: “SMT+CVD Bearish” and “SMT+CVD Bullish.”
Inputs
Primary / Secondary symbols: defaults NQ & ES (you can change them).
Resolution: use chart timeframe or specify one.
Swing Left/Right Bars: pivot detection depth (higher = larger swings).
Break Window Bars: how many bars the secondary has to not break for SMT to be valid.
CVD Up/Down By: Close vs Previous Close (default) or Close vs Open.
Anchor CVD Daily: resets CVD at session/day start.
CVD Smoothing (EMA): smooths the CVD line (optional show).
FAST Pivots (no future bars): left-only swing detection so signals appear sooner and behave well in Replay/live.
Require Secondary Pivot: if ON, SMT checks wait for a confirmed secondary swing; if OFF, signals can appear while the secondary swing is still forming (useful for Replay/testing).
Show CVD line: optional, may compress price scale.
Non-repaint notes
With FAST Pivots ON, swings are detected with no future bars (minimal latency = leftBars).
With FAST Pivots OFF, standard pivots require rightBars future bars to confirm the swing (classic, but naturally delayed).
Tips
For intraday futures, keep leftBars/rightBars small (e.g., 3/3) and Break Window 1–3.
In Replay, enable FAST Pivots and consider disabling Require Secondary Pivot if you want signals to appear as soon as the primary breaks.
Combine with session filters, execution rules, or liquidity zones for context.
PHD-Points
The PHD Pivot Points indicator is a professional-grade support and resistance tool that calculates key price levels based on previous day's price action and current intraday data. It provides traders with multiple reference points for identifying potential reversal zones, breakout levels, and strategic entry/exit positions.
Key Components
1. Previous Day Pivot Point (P)
White Line - The main pivot level calculated from previous day's High, Low, and Close
Formula: P = (Previous High + Previous Low + Previous Close) / 3
Serves as the central reference point for the trading day
Often acts as a psychological support/resistance level
2. Previous Day Support Levels (D1, D2, D3)
Brown Lines - Three support levels below the previous day's pivot
D1 (Support 1): First support level, closest to pivot
D2 (Support 2): Second support level, medium-strength
D3 (Support 3): Third support level, strongest support
Calculated using previous day's high and low ranges
3. Previous Day Resistance Levels (H1, H2, H3)
Yellow-Brown Lines - Three resistance levels above the previous day's pivot
H1 (Resistance 1): First resistance level, closest to pivot
H2 (Resistance 2): Second resistance level, medium-strength
H3 (Resistance 3): Third resistance level, strongest resistance
Calculated using previous day's high and low ranges
4. Today's Pivot Point (PT)
Dark Red Line - Dynamic pivot point that updates throughout the current trading session
Formula: PT = (Current High + Current Low + Current Close) / 3
Provides real-time trend reference for intraday trading
Helps identify intraday momentum and trend strength
5. Today's Dynamic Levels (DD1-DD3, HH1-HH3)
Calculated but not plotted by default
These values represent current session's support and resistance levels
Can be used for advanced intraday analysis
Trading Applications
Support and Resistance Trading
Price tends to bounce at D1, D2, D3 levels (potential buy zones)
Price tends to stall or reverse at H1, H2, H3 levels (potential sell zones)
Breaks above/below these levels signal trend strength
Trend Identification
Price above P = Bullish bias
Price below P = Bearish bias
PT line angle shows intraday momentum direction
DD RatioThe DD Ratio (“Directional Distribution Ratio”) is a breadth indicator that shows, in real time, how many of the selected stocks (e.g., S&P 500 components) are bullish vs. bearish relative to today’s open.
The DD Ratio tells you what’s really happening under the hood of the index:
Futures may mislead: An index future (like ES or NQ) can rise on a few heavy-weighted stocks even while most components fall.
The DD Ratio exposes that divergence.
Breadth confirmation: When the futures are up and DD Ratio ≥ 0.5 → healthy rally.
When futures are up but DD Ratio < 0.5 → weak, narrow advance.
Intraday sentiment gauge: It updates live with each bar, reflecting “who’s winning” since the open.
RSI Overbought/Oversold + Divergence Indicator (new)//@version=5
indicator('CryptoSignalScanner - RSI Overbought/Oversold + Divergence Indicator (new)',
//---------------------------------------------------------------------------------------------------------------------------------
//--- Define Colors ---------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------
vWhite = #FFFFFF
vViolet = #C77DF3
vIndigo = #8A2BE2
vBlue = #009CDF
vGreen = #5EBD3E
vYellow = #FFB900
vRed = #E23838
longColor = color.green
shortColor = color.red
textColor = color.white
bullishColor = color.rgb(38,166,154,0) //Used in the display table
bearishColor = color.rgb(239,83,79,0) //Used in the display table
nomatchColor = color.silver //Used in the display table
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- Functions--------------------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
TF2txt(TF) =>
switch TF
"S" => "RSI 1s:"
"5S" => "RSI 5s:"
"10S" => "RSI 10s:"
"15S" => "RSI 15s:"
"30S" => "RSI 30s"
"1" => "RSI 1m:"
"3" => "RSI 3m:"
"5" => "RSI 5m:"
"15" => "RSI 15m:"
"30" => "RSI 30m"
"45" => "RSI 45m"
"60" => "RSI 1h:"
"120" => "RSI 2h:"
"180" => "RSI 3h:"
"240" => "RSI 4h:"
"480" => "RSI 8h:"
"D" => "RSI 1D:"
"1D" => "RSI 1D:"
"2D" => "RSI 2D:"
"3D" => "RSI 2D:"
"3D" => "RSI 3W:"
"W" => "RSI 1W:"
"1W" => "RSI 1W:"
"M" => "RSI 1M:"
"1M" => "RSI 1M:"
"3M" => "RSI 3M:"
"6M" => "RSI 6M:"
"12M" => "RSI 12M:"
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- Show/Hide Settings ----------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
rsiShowInput = input(true, title='Show RSI', group='Show/Hide Settings')
maShowInput = input(false, title='Show MA', group='Show/Hide Settings')
showRSIMAInput = input(true, title='Show RSIMA Cloud', group='Show/Hide Settings')
rsiBandShowInput = input(true, title='Show Oversold/Overbought Lines', group='Show/Hide Settings')
rsiBandExtShowInput = input(true, title='Show Oversold/Overbought Extended Lines', group='Show/Hide Settings')
rsiHighlightShowInput = input(true, title='Show Oversold/Overbought Highlight Lines', group='Show/Hide Settings')
DivergenceShowInput = input(true, title='Show RSI Divergence Labels', group='Show/Hide Settings')
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- Table Settings --------------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
rsiShowTable = input(true, title='Show RSI Table Information box', group="RSI Table Settings")
rsiTablePosition = input.string(title='Location', defval='middle_right', options= , group="RSI Table Settings", inline='1')
rsiTextSize = input.string(title=' Size', defval='small', options= , group="RSI Table Settings", inline='1')
rsiShowTF1 = input(true, title='Show TimeFrame1', group="RSI Table Settings", inline='tf1')
rsiTF1 = input.timeframe("15", title=" Time", group="RSI Table Settings", inline='tf1')
rsiShowTF2 = input(true, title='Show TimeFrame2', group="RSI Table Settings", inline='tf2')
rsiTF2 = input.timeframe("60", title=" Time", group="RSI Table Settings", inline='tf2')
rsiShowTF3 = input(true, title='Show TimeFrame3', group="RSI Table Settings", inline='tf3')
rsiTF3 = input.timeframe("240", title=" Time", group="RSI Table Settings", inline='tf3')
rsiShowTF4 = input(true, title='Show TimeFrame4', group="RSI Table Settings", inline='tf4')
rsiTF4 = input.timeframe("D", title=" Time", group="RSI Table Settings", inline='tf4')
rsiShowHist = input(true, title='Show RSI Historical Columns', group="RSI Table Settings", tooltip='Show the information of the 2 previous closed candles')
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- RSI Input Settings ----------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
rsiSourceInput = input.source(close, 'Source', group='RSI Settings')
rsiLengthInput = input.int(14, minval=1, title='RSI Length', group='RSI Settings', tooltip='Here we set the RSI lenght')
rsiColorInput = input.color(#26a69a, title="RSI Color", group='RSI Settings')
rsimaColorInput = input.color(#ef534f, title="RSIMA Color", group='RSI Settings')
rsiBandColorInput = input.color(#787B86, title="RSI Band Color", group='RSI Settings')
rsiUpperBandExtInput = input.int(title='RSI Overbought Extended Line', defval=80, minval=50, maxval=100, group='RSI Settings')
rsiUpperBandInput = input.int(title='RSI Overbought Line', defval=70, minval=50, maxval=100, group='RSI Settings')
rsiLowerBandInput = input.int(title='RSI Oversold Line', defval=30, minval=0, maxval=50, group='RSI Settings')
rsiLowerBandExtInput = input.int(title='RSI Oversold Extended Line', defval=20, minval=0, maxval=50, group='RSI Settings')
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- MA Input Settings -----------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
maTypeInput = input.string("EMA", title="MA Type", options= , group="MA Settings")
maLengthInput = input.int(14, title="MA Length", group="MA Settings")
maColorInput = input.color(color.yellow, title="MA Color", group='MA Settings') //#7E57C2
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- Divergence Input Settings ---------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
lbrInput = input(title="Pivot Lookback Right", defval=2, group='RSI Divergence Settings')
lblInput = input(title="Pivot Lookback Left", defval=2, group='RSI Divergence Settings')
lbRangeMaxInput = input(title="Max of Lookback Range", defval=10, group='RSI Divergence Settings')
lbRangeMinInput = input(title="Min of Lookback Range", defval=2, group='RSI Divergence Settings')
plotBullInput = input(title="Plot Bullish", defval=true, group='RSI Divergence Settings')
plotHiddenBullInput = input(title="Plot Hidden Bullish", defval=true, group='RSI Divergence Settings')
plotBearInput = input(title="Plot Bearish", defval=true, group='RSI Divergence Settings')
plotHiddenBearInput = input(title="Plot Hidden Bearish", defval=true, group='RSI Divergence Settings')
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- RSI Calculation -------------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
rsi = ta.rsi(rsiSourceInput, rsiLengthInput)
rsiprevious = rsi
= request.security(syminfo.tickerid, rsiTF1, [rsi, rsi , rsi ], lookahead=barmerge.lookahead_on)
= request.security(syminfo.tickerid, rsiTF2, [rsi, rsi , rsi ], lookahead=barmerge.lookahead_on)
= request.security(syminfo.tickerid, rsiTF3, [rsi, rsi , rsi ], lookahead=barmerge.lookahead_on)
= request.security(syminfo.tickerid, rsiTF4, [rsi, rsi , rsi ], lookahead=barmerge.lookahead_on)
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- MA Calculation -------------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
ma(source, length, type) =>
switch type
"SMA" => ta.sma(source, length)
"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)
rsiMA = ma(rsi, maLengthInput, maTypeInput)
rsiMAPrevious = rsiMA
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- Stoch RSI Settings + Calculation --------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
showStochRSI = input(false, title="Show Stochastic RSI", group='Stochastic RSI Settings')
smoothK = input.int(title="Stochastic K", defval=3, minval=1, maxval=10, group='Stochastic RSI Settings')
smoothD = input.int(title="Stochastic D", defval=4, minval=1, maxval=10, group='Stochastic RSI Settings')
lengthRSI = input.int(title="Stochastic RSI Lenght", defval=14, minval=1, group='Stochastic RSI Settings')
lengthStoch = input.int(title="Stochastic Lenght", defval=14, minval=1, group='Stochastic RSI Settings')
colorK = input.color(color.rgb(41,98,255,0), title="K Color", group='Stochastic RSI Settings', inline="1")
colorD = input.color(color.rgb(205,109,0,0), title="D Color", group='Stochastic RSI Settings', inline="1")
StochRSI = ta.rsi(rsiSourceInput, lengthRSI)
k = ta.sma(ta.stoch(StochRSI, StochRSI, StochRSI, lengthStoch), smoothK) //Blue Line
d = ta.sma(k, smoothD) //Red Line
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- Divergence Settings ------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
bearColor = color.red
bullColor = color.green
hiddenBullColor = color.new(color.green, 50)
hiddenBearColor = color.new(color.red, 50)
//textColor = color.white
noneColor = color.new(color.white, 100)
osc = rsi
plFound = na(ta.pivotlow(osc, lblInput, lbrInput)) ? false : true
phFound = na(ta.pivothigh(osc, lblInput, lbrInput)) ? false : true
_inRange(cond) =>
bars = ta.barssince(cond == true)
lbRangeMinInput <= bars and bars <= lbRangeMaxInput
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- Define Plot & Line Colors ---------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
rsiColor = rsi >= rsiMA ? rsiColorInput : rsimaColorInput
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- Plot Lines ------------------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
// Create a horizontal line at a specific price level
myLine = line.new(bar_index , 75, bar_index, 75, color = color.rgb(187, 14, 14), width = 2)
bottom = line.new(bar_index , 50, bar_index, 50, color = color.rgb(223, 226, 28), width = 2)
mymainLine = line.new(bar_index , 60, bar_index, 60, color = color.rgb(13, 154, 10), width = 3)
hline(50, title='RSI Baseline', color=color.new(rsiBandColorInput, 50), linestyle=hline.style_solid, editable=false)
hline(rsiBandExtShowInput ? rsiUpperBandExtInput : na, title='RSI Upper Band', color=color.new(rsiBandColorInput, 10), linestyle=hline.style_dashed, editable=false)
hline(rsiBandShowInput ? rsiUpperBandInput : na, title='RSI Upper Band', color=color.new(rsiBandColorInput, 10), linestyle=hline.style_dashed, editable=false)
hline(rsiBandShowInput ? rsiLowerBandInput : na, title='RSI Upper Band', color=color.new(rsiBandColorInput, 10), linestyle=hline.style_dashed, editable=false)
hline(rsiBandExtShowInput ? rsiLowerBandExtInput : na, title='RSI Upper Band', color=color.new(rsiBandColorInput, 10), linestyle=hline.style_dashed, editable=false)
bgcolor(rsiHighlightShowInput ? rsi >= rsiUpperBandExtInput ? color.new(rsiColorInput, 70) : na : na, title="Show Extended Oversold Highlight", editable=false)
bgcolor(rsiHighlightShowInput ? rsi >= rsiUpperBandInput ? rsi < rsiUpperBandExtInput ? color.new(#64ffda, 90) : na : na: na, title="Show Overbought Highlight", editable=false)
bgcolor(rsiHighlightShowInput ? rsi <= rsiLowerBandInput ? rsi > rsiLowerBandExtInput ? color.new(#F43E32, 90) : na : na : na, title="Show Extended Oversold Highlight", editable=false)
bgcolor(rsiHighlightShowInput ? rsi <= rsiLowerBandInput ? color.new(rsimaColorInput, 70) : na : na, title="Show Oversold Highlight", editable=false)
maPlot = plot(maShowInput ? rsiMA : na, title='MA', color=color.new(maColorInput,0), linewidth=1)
rsiMAPlot = plot(showRSIMAInput ? rsiMA : na, title="RSI EMA", color=color.new(rsimaColorInput,0), editable=false, display=display.none)
rsiPlot = plot(rsiShowInput ? rsi : na, title='RSI', color=color.new(rsiColor,0), linewidth=1)
fill(rsiPlot, rsiMAPlot, color=color.new(rsiColor, 60), title="RSIMA Cloud")
plot(showStochRSI ? k : na, title='Stochastic K', color=colorK, linewidth=1)
plot(showStochRSI ? d : na, title='Stochastic D', color=colorD, linewidth=1)
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- Plot Divergence -------------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
// Regular Bullish
// Osc: Higher Low
oscHL = osc > ta.valuewhen(plFound, osc , 1) and _inRange(plFound )
// Price: Lower Low
priceLL = low < ta.valuewhen(plFound, low , 1)
bullCond = plotBullInput and priceLL and oscHL and plFound
plot(
plFound ? osc : na,
offset=-lbrInput,
title="Regular Bullish",
linewidth=2,
color=(bullCond ? bullColor : noneColor)
)
plotshape(
DivergenceShowInput ? bullCond ? osc : na : na,
offset=-lbrInput,
title="Regular Bullish Label",
text=" Bull ",
style=shape.labelup,
location=location.absolute,
color=bullColor,
textcolor=textColor
)
//------------------------------------------------------------------------------
// Hidden Bullish
// Osc: Lower Low
oscLL = osc < ta.valuewhen(plFound, osc , 1) and _inRange(plFound )
// Price: Higher Low
priceHL = low > ta.valuewhen(plFound, low , 1)
hiddenBullCond = plotHiddenBullInput and priceHL and oscLL and plFound
plot(
plFound ? osc : na,
offset=-lbrInput,
title="Hidden Bullish",
linewidth=2,
color=(hiddenBullCond ? hiddenBullColor : noneColor)
)
plotshape(
DivergenceShowInput ? hiddenBullCond ? osc : na : na,
offset=-lbrInput,
title="Hidden Bullish Label",
text=" H Bull ",
style=shape.labelup,
location=location.absolute,
color=bullColor,
textcolor=textColor
)
//------------------------------------------------------------------------------
// Regular Bearish
// Osc: Lower High
oscLH = osc < ta.valuewhen(phFound, osc , 1) and _inRange(phFound )
// Price: Higher High
priceHH = high > ta.valuewhen(phFound, high , 1)
bearCond = plotBearInput and priceHH and oscLH and phFound
plot(
phFound ? osc : na,
offset=-lbrInput,
title="Regular Bearish",
linewidth=2,
color=(bearCond ? bearColor : noneColor)
)
plotshape(
DivergenceShowInput ? bearCond ? osc : na : na,
offset=-lbrInput,
title="Regular Bearish Label",
text=" Bear ",
style=shape.labeldown,
location=location.absolute,
color=bearColor,
textcolor=textColor
)
//------------------------------------------------------------------------------
// Hidden Bearish
// Osc: Higher High
oscHH = osc > ta.valuewhen(phFound, osc , 1) and _inRange(phFound )
// Price: Lower High
priceLH = high < ta.valuewhen(phFound, high , 1)
hiddenBearCond = plotHiddenBearInput and priceLH and oscHH and phFound
plot(
phFound ? osc : na,
offset=-lbrInput,
title="Hidden Bearish",
linewidth=2,
color=(hiddenBearCond ? hiddenBearColor : noneColor)
)
plotshape(
DivergenceShowInput ? hiddenBearCond ? osc : na : na,
offset=-lbrInput,
title="Hidden Bearish Label",
text=" H Bear ",
style=shape.labeldown,
location=location.absolute,
color=bearColor,
textcolor=textColor
)
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- Check RSI Lineup ------------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
bullTF = rsi > rsi and rsi > rsi
bearTF = rsi < rsi and rsi < rsi
bullTF1 = rsi1 > rsi1_1 and rsi1_1 > rsi1_2
bearTF1 = rsi1 < rsi1_1 and rsi1_1 < rsi1_2
bullTF2 = rsi2 > rsi2_1 and rsi2_1 > rsi2_2
bearTF2 = rsi2 < rsi2_1 and rsi2_1 < rsi2_2
bullTF3 = rsi3 > rsi3_1 and rsi3_1 > rsi3_2
bearTF3 = rsi3 < rsi3_1 and rsi3_1 < rsi3_2
bullTF4 = rsi4 > rsi4_1 and rsi4_1 > rsi4_2
bearTF4 = rsi4 < rsi4_1 and rsi4_1 < rsi4_2
bbTxt(bull,bear) =>
bull ? "BULLISH" : bear ? "BEARISCH" : 'NO LINEUP'
bbColor(bull,bear) =>
bull ? bullishColor : bear ? bearishColor : nomatchColor
newTC(tBox, col, row, txt, width, txtColor, bgColor, txtHA, txtSize) =>
table.cell(table_id=tBox,column=col, row=row, text=txt, width=width,text_color=txtColor,bgcolor=bgColor, text_halign=txtHA, text_size=txtSize)
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- Define RSI Table Setting ----------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
width_c0 = 0
width_c1 = 0
if rsiShowTable
var tBox = table.new(position=rsiTablePosition, columns=5, rows=6, bgcolor=color.rgb(18,22,33,50), frame_color=color.black, frame_width=1, border_color=color.black, border_width=1)
newTC(tBox, 0,1,"RSI Current",width_c0,color.orange,color.rgb(0,0,0,100),'right',rsiTextSize)
newTC(tBox, 1,1,str.format(" {0,number,#.##} ", rsi),width_c0,vWhite,rsi < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
newTC(tBox, 4,1,bbTxt(bullTF, bearTF),width_c0,vWhite,bbColor(bullTF, bearTF),'center',rsiTextSize)
if rsiShowHist
newTC(tBox, 2,1,str.format(" {0,number,#.##} ", rsi ),width_c0,vWhite,rsi < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
newTC(tBox, 3,1,str.format(" {0,number,#.##} ", rsi ),width_c0,vWhite,rsi < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
if rsiShowTF1
newTC(tBox, 0,2,TF2txt(rsiTF1),width_c0,vWhite,color.rgb(0,0,0,100),'right',rsiTextSize)
newTC(tBox, 1,2,str.format(" {0,number,#.##} ", rsi1),width_c0,vWhite,rsi1 < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
newTC(tBox, 4,2,bbTxt(bullTF1, bearTF1),width_c0,vWhite,bbColor(bullTF1,bearTF1),'center',rsiTextSize)
if rsiShowHist
newTC(tBox, 2,2,str.format(" {0,number,#.##} ", rsi1_1),width_c0,vWhite,rsi1_1 < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
newTC(tBox, 3,2,str.format(" {0,number,#.##} ", rsi1_2),width_c0,vWhite,rsi1_2 < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
if rsiShowTF2
newTC(tBox, 0,3,TF2txt(rsiTF2),width_c0,vWhite,color.rgb(0,0,0,100),'right',rsiTextSize)
newTC(tBox, 1,3,str.format(" {0,number,#.##} ", rsi2),width_c0,vWhite,rsi2 < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
newTC(tBox, 4,3,bbTxt(bullTF2, bearTF2),width_c0,vWhite,bbColor(bullTF2,bearTF2),'center',rsiTextSize)
if rsiShowHist
newTC(tBox, 2,3,str.format(" {0,number,#.##} ", rsi2_1),width_c0,vWhite,rsi2_1 < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
newTC(tBox, 3,3,str.format(" {0,number,#.##} ", rsi2_2),width_c0,vWhite,rsi2_2 < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
if rsiShowTF3
newTC(tBox, 0,4,TF2txt(rsiTF3),width_c0,vWhite,color.rgb(0,0,0,100),'right',rsiTextSize)
newTC(tBox, 1,4,str.format(" {0,number,#.##} ", rsi3),width_c0,vWhite,rsi3 < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
newTC(tBox, 4,4,bbTxt(bullTF3, bearTF3),width_c0,vWhite,bbColor(bullTF3,bearTF3),'center',rsiTextSize)
if rsiShowHist
newTC(tBox, 2,4,str.format(" {0,number,#.##} ", rsi3_1),width_c0,vWhite,rsi3_1 < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
newTC(tBox, 3,4,str.format(" {0,number,#.##} ", rsi3_2),width_c0,vWhite,rsi3_2 < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
if rsiShowTF4
newTC(tBox, 0,5,TF2txt(rsiTF4),width_c0,vWhite,color.rgb(0,0,0,100),'right',rsiTextSize)
newTC(tBox, 1,5,str.format(" {0,number,#.##} ", rsi4),width_c0,vWhite,rsi4 < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
newTC(tBox, 4,5,bbTxt(bullTF4, bearTF4),width_c0,vWhite,bbColor(bullTF4,bearTF4),'center',rsiTextSize)
if rsiShowHist
newTC(tBox, 2,5,str.format(" {0,number,#.##} ", rsi4_1),width_c0,vWhite,rsi4_1 < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
newTC(tBox, 3,5,str.format(" {0,number,#.##} ", rsi4_2),width_c0,vWhite,rsi4_2 < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
//------------------------------------------------------
//--- Alerts -------------------------------------------
//------------------------------------------------------
Buy/Sell Volume Tracker [wjdtks255]Indicator Description
Function: Separates buy and sell volume based on candle direction (close ≥ open) and displays the buy−sell difference (hist_val) as a histogram.
Visuals: Buy/sell bars are distinguished by user-selectable colors and opacity; two moving averages (MA1 and MA2) are shown to smooth the flow.
Meaning: A positive histogram indicates buy dominance; a negative histogram indicates sell dominance.
Limitation: The current separation is estimated from candle direction and may differ from execution-side (tick/trade-side) based data.
Trading Rules (Summary)
Conservative trend-following long
Entry: Enter long when hist_val turns above 0 and MA1 crosses MA2 from below.
Stop-loss: Exit if hist_val falls back below 0 or MA1 drops below MA2.
Take-profit: Use a risk:reward of 1:1.5 or set targets based on ATR.
Short-term rebound long
Entry: Enter a short-term long when a large negative histogram region begins to narrow and shows a recovery sign.
Stop-loss: Exit if hist_val drops below the previous low or bearish candles continue.
Take-profit: Prefer quick partial profit-taking.
Short (sell) strategy
Entry: Enter short when hist_val falls below 0 and MA1 crosses MA2 from above.
Stop-loss / Take-profit: Apply the inverse rules of the long strategy.
Filters and risk management
Volume filter: Only accept signals when volume exceeds a fraction of average volume to reduce noise.
Entry strength: Require |hist_val| to exceed a historical average threshold (e.g., avg(|hist_val|, N) × factor) to strengthen signals.
Position sizing: Size positions so that account risk per trade is within limits (e.g., 1–2% of account equity).
Timeframe: Use short timeframes for scalping and 1h+ for swing trading.
BX-Indicator
The BX-ndicator is a comprehensive multi-timeframe technical analysis tool that combines trend-following, momentum, and volatility indicators to provide traders with clear visual signals for market analysis and decision-making.
Key Components
1. TEMA (Triple Exponential Moving Average)
TEMA21 (Yellow line): Fast-reacting trend indicator that reduces lag compared to traditional moving averages
TEMA55 (Red line): Medium-term trend confirmation line
These lines help identify short to medium-term trend direction and momentum shifts
2. Moving Average System
MA21 (Green): Short-term trend reference
MA34 (Orange): Swing trading reference
MA55 (Magenta): Medium-term trend line
MA89 (Blue): Intermediate trend filter
MA144 (Dark Red): Long-term trend baseline
3. Exponential Moving Averages (EMA)
EMA21 (Dark Green): Fast exponential trend
EMA55 (Purple): Medium exponential trend
EMA144 (Pink): Long-term exponential support/resistance
4. Dynamic Bands (Filled Zones)
Three colored bands provide visual trend zones:
Green Band (21-period): SMA21/EMA21 envelope - short-term volatility zone
Purple Band (55/62-period): SMA55/SMA62 envelope - medium-term consolidation zone
Red Band (144/233-period): EMA144/EMA233 envelope - long-term trend channel
5. VWAP (Volume Weighted Average Price)
White line representing the average price weighted by volume
Resets based on selected anchor period (Session/Week/Month/Year/All Time)
Critical reference point for institutional trading levels
6. Bollinger Bands
21-period SMA with 2 standard deviation bands (Cyan lines)
Measures price volatility and identifies overbought/oversold conditions
Helps identify potential breakout or mean reversion opportunities
Trading Applications
Trend Identification: Multiple MA/EMA crossovers confirm trend direction
Support/Resistance: Dynamic bands and VWAP provide key price levels
Volatility Assessment: Bollinger Bands measure market volatility expansion/contraction
Entry/Exit Timing: TEMA lines provide early trend reversal signals
Risk Management: Colored bands help visualize position relative to different timeframe trends
Yit BBIn this script the deviation is 1.25 the normal standard issue Bollinger band indicator uses 2. for my type of trading I don't have time price action to wait for a 2 STDRD DEV. this is a more aggressive type of indicator.
The MA is the 10 day.
Intraday Perpetual Premium & Z-ScoreThis indicator measures the real-time premium of a perpetual futures contract relative to its spot market and interprets it through a statistical lens.
It helps traders detect when funding pressure is building, when leverage is being unwound, and when crowding in the futures market may precede volatility.
How it works
• Premium (%) = (Perp – Spot) ÷ Spot × 100
The script fetches both spot and perpetual prices and calculates their percentage difference each minute.
• Rolling Mean & Z-Score
Over a 4-hour look-back, it computes the average premium and standard deviation to derive a Z-Score, showing how stretched current sentiment is.
• Dynamic ±2σ Bands highlight statistically extreme premiums or discounts.
• Rate of Change (ROC) over one hour gauges the short-term directional acceleration of funding flows.
Colour & Label Interpretation
Visual cue Meaning Trading Implication
🟢 Green bars + “BULL Pressure” Premium rising faster than mean Leverage inflows → momentum strengthening
🔴 Red bars + “BEAR Pressure” Premium shrinking Leverage unwind → pull-back or consolidation
⚠️ Orange “EXTREME Premium/Discount” Crowded trade → heightened reversal risk
⚪ Grey bars Neutral Balanced conditions
Alerts
• Bull Pressure Alert → funding & premium rising (momentum building)
• Bear Pressure Alert → premium falling (deleveraging)
• Extreme Premium Alert → crowded longs; potential top
• Extreme Discount Alert → capitulation; possible bottom
Use case
Combine this indicator with your Heikin-Ashi, RSI, and MACD confluence rules:
• Enter only when your oscillators are low → curling up and Bull Pressure triggers.
• Trim or exit when Bear Pressure or Extreme Premium appears.
• Watch for Extreme Discount during flushes as an early bottoming clue.
Yit's SMA'sThis is the first update to my original SMA indicators I've added the following:
10 Week SMA
40 Week SMA
3 Month SMA
18 Month SMA
I wanted to add more based on these being common indicators various types of trading uses.
There will probably be more in the future.
Livelli OI-PNCOI-PNC Levels is a script that displays the open interest (OI) and net short positions (PNC) of a selection of 20 of the most significant stocks in terms of traded value on the Italian market.
PNC are indicated by red dotted lines starting from the close of the last reported change date;
The most significant open interest by number of contracts (Top 10 Calls and Top 10 Puts) are displayed using labels, all on a single line (Strike, CALL, PUT);
A summary table can be activated.
the data is hardcoded using static arrays and must be updated periodically. Data updated of 03/11/2025
########### Italiano ############
Livelli OI-PNC è uno script che permette di visualizzare gli open interest (OI) e le Posizioni Nette Corte (PNC) di una selezione di 20 titoli tra i più significativi per controvalore movimentato del mercato italiano.
Le PNC vengono indicate tramite Linee tratteggiate rosse che partono dal close della data di ultima variazione comunicata;
Sono riportati tramite labels, gli Open Interest più significativi per num.Contratti (Top 10 Call e top 10 Put) tutto su una unica riga per ogni strike (Strike, CALL, PUT);
E' attivabile una Tabella di riepilogo.
Poiché Pine Script non può leggere direttamente file da URL esterni, i dati sono hardcorati tramite array statici e vanno aggiornati periodicamente. Dati aggiornati al 03/11/2025






















