Smart Volatility Squeeze + Trend Filter
Smart Volatility Squeeze + Trend Filter
This advanced indicator detects low-volatility squeeze conditions and plots breakout signals, helping you spot strong price moves before they happen.
How it works
This script combines Bollinger Bands (BB) and the Keltner Channel (KC) — two popular volatility tools — to identify squeeze setups:
A squeeze occurs when the Bollinger Bands contract and move completely inside the Keltner Channel. This means the market is quiet and volatility is low — often right before a significant breakout.
When the squeeze condition is active, the background highlights the chart area with a soft color that gradually intensifies the longer the squeeze lasts. This gives a clear visual cue that pressure is building.
A breakout signal triggers when price crosses above the upper Bollinger Band (bullish) or below the lower Bollinger Band (bearish) — confirming that the squeeze has ended and a new impulse is likely starting.
To reduce false breakouts, you can enable the built-in trend filter. By default, it uses a simple EMA: breakouts are confirmed only if the price action aligns with the overall trend direction.
Key features
🔹 Bollinger Bands + Keltner Channel squeeze detection
🔹 Automatic squeeze marker and background shading
🔹 Breakout arrows for up and down signals
🔹 Optional trend filter with adjustable EMA length
🔹 Works on any market: crypto, stocks, forex, indices
🔹 Fully adjustable inputs for BB, KC and trend filter
🔹 Built-in ready-to-use alerts for breakouts
How to use
Watch for areas where the squeeze condition appears — the background will highlight them.
Wait for a breakout arrow to appear outside the bands.
Use the trend filter to focus only on breakouts in the dominant trend direction.
Combine with your existing risk management and confirmation tools.
Inputs
BB Length & StdDev: Control the Bollinger Bands settings.
KC EMA Length & ATR Multiplier: Control the Keltner Channel width.
Trend Filter Length: Adjust how smooth or sensitive the trend filter is.
Use Trend Filter: Enable or disable confirmation by trend direction.
Disclaimer
⚠️ This script is for educational purposes only and does not constitute financial advice. Always test any strategy thoroughly and trade at your own risk.
Breadth Indicators
MP AMS (100 bars)Indicator Name: ICT Nested Pivots: Advanced Structure with Color Control
Description:
This indicator identifies and labels nested pivot points across three levels of market structure:
Short-Term Pivots (STH/STL)
Intermediate-Term Pivots (ITH/ITL)
Long-Term Pivots (LTH/LTL)
It detects local highs and lows using a user-defined lookback period and categorizes them into short, intermediate, and long-term pivots based on their relative strength compared to surrounding pivots.
Key Features:
Multi-level pivot detection: Nested identification of short, intermediate, and long-term highs and lows.
Customizable display: Toggle visibility of each pivot level independently for both highs and lows.
Color control: Customize colors for high and low pivot labels and text for enhanced chart readability.
Clear labeling: Each pivot is marked with intuitive labels ("STH", "ITH", "LTH" for highs and "STL", "ITL", "LTL" for lows) placed above or below bars accordingly.
Safe plotting: Avoids errors by validating data and only plotting labels within the lookback range.
This tool helps traders visually analyze market structure and identify key turning points at different time scales directly on their price charts.
EMA Slope FilterEMA SLOPE FILTER....50EMA....You’ll see a line oscillating around zero; when it’s within ±0.1, treat the market as “flat.”
6868//@version=5
indicator(title='6868', shorttitle='ICHI', overlay=true)
// Version 1.1
// Created by NgheTrader
TS_D1 = input.int(9, minval=1, title='Tenkan-sen')
KS_D1 = input.int(17, minval=1, title='Kijun-sen')
TS_D2 = input.int(65, minval=1, title='Tenkan-sen')
KS_D2 = input.int(129, minval=1, title='Kijun-sen')
Chikou_Displacement = input.int(25, minval=1, title='Chikou-span')
SB = input.int(26, minval=1, title='Senko Span B')
donchian(len) =>
math.avg(ta.lowest(len), ta.highest(len))
Tenkan = donchian(TS_D1)
Kijun = donchian(KS_D1)
KumoA = math.avg(Tenkan, Kijun)
KumoB = donchian(SB)
DG65 = donchian(TS_D2)
DG129 = donchian(KS_D2)
plot(Tenkan, color=color.new(#0fc7db, 10), title='Tenkan-sen', linewidth=2)
plot(Kijun, color=color.new(#f00f0f, 10), title='Kijun-sen', linewidth=2)
plot(DG65, color=color.new(#f8e804e6, 10), title='dg65', linewidth=2)
plot(DG129, color=color.new(#f99b04, 10), title='DG129', linewidth=2)
plot(close, offset=-Chikou_Displacement, color=color.new(#9c27b0, 10), title='Chikou-span', linewidth=2)
p1 = plot(KumoA, offset=Chikou_Displacement, color=color.new(#0cb71a, 0), linewidth=1, title='Span A')
p2 = plot(KumoB, offset=Chikou_Displacement, color=color.new(#afaaaac5,0), linewidth=1, title='Span B')
fill(p1, p2, color=KumoA > KumoB ? color.new(#106323,80) : color.new(#e4e1e1,0), title='Kumo Cloud')
// Plot Future Lines
Midpoint_future1(len) =>
math.avg(ta.highest(len - 1), ta.lowest(len - 1))
Midpoint_future2(len) =>
math.avg(ta.highest(len - 2), ta.lowest(len - 2))
Midpoint_future3(len) =>
math.avg(ta.highest(len - 3), ta.lowest(len - 3))
Midpoint_future4(len) =>
math.avg(ta.highest(len - 4), ta.lowest(len - 4))
Midpoint_future5(len) =>
math.avg(ta.highest(len - 5), ta.lowest(len - 5))
Midpoint_future6(len) =>
math.avg(ta.highest(len - 6), ta.lowest(len - 6))
Midpoint_future7(len) =>
math.avg(ta.highest(len - 7), ta.lowest(len - 7))
Midpoint_future8(len) =>
math.avg(ta.highest(len - 8), ta.lowest(len - 8))
Midpoint_future9(len) =>
math.avg(ta.highest(len - 9), ta.lowest(len - 9))
Midpoint_future10(len) =>
math.avg(ta.highest(len - 10), ta.lowest(len - 10))
Midpoint_future11(len) =>
math.avg(ta.highest(len - 11), ta.lowest(len - 11))
Midpoint_future12(len) =>
math.avg(ta.highest(len - 12), ta.lowest(len - 12))
Midpoint_future13(len) =>
math.avg(ta.highest(len - 13), ta.lowest(len - 13))
Midpoint_future14(len) =>
math.avg(ta.highest(len - 14), ta.lowest(len - 14))
// Plot Future Daily Kijun
KJ_Next_1 = Midpoint_future1(KS_D1)
KJ_Next_2 = Midpoint_future2(KS_D1)
KJ_Next_3 = Midpoint_future3(KS_D1)
KJ_Next_4 = Midpoint_future4(KS_D1)
KJ_Next_5 = Midpoint_future5(KS_D1)
KJ_Next_6 = Midpoint_future6(KS_D1)
KJ_Next_7 = Midpoint_future7(KS_D1)
KJ_Next_8 = Midpoint_future8(KS_D1)
KJ_Next_9 = Midpoint_future9(KS_D1)
KJ_Next_10 = Midpoint_future10(KS_D1)
plot(KJ_Next_1, color=color.new(#f00f0f, 10), linewidth=1, offset=1, show_last=1, style=plot.style_circles)
plot(KJ_Next_2, color=color.new(#f00f0f, 10), linewidth=1, offset=2, show_last=1, style=plot.style_circles)
plot(KJ_Next_3, color=color.new(#f00f0f, 10), linewidth=1, offset=3, show_last=1, style=plot.style_circles)
plot(KJ_Next_4, color=color.new(#f00f0f, 10), linewidth=1, offset=4, show_last=1, style=plot.style_circles)
plot(KJ_Next_5, color=color.new(#f00f0f, 10), linewidth=1, offset=5, show_last=1, style=plot.style_circles)
plot(KJ_Next_6, color=color.new(#f00f0f, 10), linewidth=1, offset=6, show_last=1, style=plot.style_circles)
plot(KJ_Next_7, color=color.new(#f00f0f, 10), linewidth=1, offset=7, show_last=1, style=plot.style_circles)
plot(KJ_Next_8, color=color.new(#f00f0f, 10), linewidth=1, offset=8, show_last=1, style=plot.style_circles)
plot(KJ_Next_9, color=color.new(#f00f0f, 10), linewidth=1, offset=9, show_last=1, style=plot.style_circles)
plot(KJ_Next_10,color=color.new(#f00f0f, 10), linewidth=1, offset=10, show_last=1, style=plot.style_circles)
// Plot Future Daily Tenkan
TS_Next_1 = Midpoint_future1(TS_D1)
TS_Next_2 = Midpoint_future2(TS_D1)
TS_Next_3 = Midpoint_future3(TS_D1)
TS_Next_4 = Midpoint_future4(TS_D1)
TS_Next_5 = Midpoint_future5(TS_D1)
TS_Next_6 = Midpoint_future6(TS_D1)
TS_Next_7 = Midpoint_future7(TS_D1)
TS_Next_8 = Midpoint_future8(TS_D1)
plot(TS_Next_1, color=color.new(#0fc7db, 10), linewidth=1, offset=1, show_last=1, style=plot.style_circles)
plot(TS_Next_2, color=color.new(#0fc7db, 10), linewidth=1, offset=2, show_last=1, style=plot.style_circles)
plot(TS_Next_3, color=color.new(#0fc7db, 10), linewidth=1, offset=3, show_last=1, style=plot.style_circles)
plot(TS_Next_4, color=color.new(#0fc7db, 10), linewidth=1, offset=4, show_last=1, style=plot.style_circles)
plot(TS_Next_5, color=color.new(#0fc7db, 10), linewidth=1, offset=5, show_last=1, style=plot.style_circles)
plot(TS_Next_6, color=color.new(#0fc7db, 10), linewidth=1, offset=6, show_last=1, style=plot.style_circles)
plot(TS_Next_7, color=color.new(#0fc7db, 10), linewidth=1, offset=7, show_last=1, style=plot.style_circles)
plot(TS_Next_8, color=color.new(#0fc7db, 10), linewidth=1, offset=8, show_last=1, style=plot.style_circles)
// Plot Future Kumo A
Next_KumoA_1 = Midpoint_future1(TS_D2)
Next_KumoA_2 = Midpoint_future2(TS_D2)
Next_KumoA_3 = Midpoint_future3(TS_D2)
Next_KumoA_4 = Midpoint_future4(TS_D2)
Next_KumoA_5 = Midpoint_future5(TS_D2)
Next_KumoA_6 = Midpoint_future6(TS_D2)
Next_KumoA_7 = Midpoint_future7(TS_D2)
Next_KumoA_8 = Midpoint_future8(TS_D2)
Next_KumoA_9 = Midpoint_future9(TS_D2)
plot(Next_KumoA_1, color=color.new(#f8e804e6, 10), linewidth=1, offset=1, show_last=1, style=plot.style_circles)
plot(Next_KumoA_2, color=color.new(#f8e804e6, 10), linewidth=1, offset=2, show_last=1, style=plot.style_circles)
plot(Next_KumoA_3, color=color.new(#f8e804e6, 10), linewidth=1, offset=3, show_last=1, style=plot.style_circles)
plot(Next_KumoA_4, color=color.new(#f8e804e6, 10), linewidth=1, offset=4, show_last=1, style=plot.style_circles)
plot(Next_KumoA_5, color=color.new(#f8e804e6, 10), linewidth=1, offset=5, show_last=1, style=plot.style_circles)
plot(Next_KumoA_6, color=color.new(#f8e804e6, 10), linewidth=1, offset=6, show_last=1, style=plot.style_circles)
plot(Next_KumoA_7, color=color.new(#f8e804e6, 10), linewidth=1, offset=7, show_last=1, style=plot.style_circles)
plot(Next_KumoA_8, color=color.new(#f8e804e6, 10), linewidth=1, offset=8, show_last=1, style=plot.style_circles)
plot(Next_KumoA_9, color=color.new(#f8e804e6, 10), linewidth=1, offset=9, show_last=1, style=plot.style_circles)
// Plot Future Kumo B
KB_Next_1 = Midpoint_future1(KS_D2)
KB_Next_2 = Midpoint_future2(KS_D2)
KB_Next_3 = Midpoint_future3(KS_D2)
KB_Next_4 = Midpoint_future4(KS_D2)
KB_Next_5 = Midpoint_future5(KS_D2)
KB_Next_6 = Midpoint_future6(KS_D2)
KB_Next_7 = Midpoint_future7(KS_D2)
KB_Next_8 = Midpoint_future8(KS_D2)
KB_Next_9 = Midpoint_future9(KS_D2)
KB_Next_10 = Midpoint_future10(KS_D2)
KB_Next_11 = Midpoint_future11(KS_D2)
KB_Next_12 = Midpoint_future12(KS_D2)
KB_Next_13 = Midpoint_future13(KS_D2)
KB_Next_14 = Midpoint_future14(KS_D2)
plot(KB_Next_1, color=color.rgb(253, 173, 0), linewidth=1, offset=1, show_last=1, style=plot.style_circles)
plot(KB_Next_2, color=color.rgb(253, 173, 0), linewidth=1, offset=2, show_last=1, style=plot.style_circles)
plot(KB_Next_3, color=color.rgb(253, 173, 0), linewidth=1, offset=3, show_last=1, style=plot.style_circles)
plot(KB_Next_4, color=color.rgb(253, 173, 0), linewidth=1, offset=4, show_last=1, style=plot.style_circles)
plot(KB_Next_5, color=color.rgb(253, 173, 0), linewidth=1, offset=5, show_last=1, style=plot.style_circles)
plot(KB_Next_6, color=color.rgb(253, 173, 0), linewidth=1, offset=6, show_last=1, style=plot.style_circles)
plot(KB_Next_7, color=color.rgb(253, 173, 0), linewidth=1, offset=7, show_last=1, style=plot.style_circles)
plot(KB_Next_8, color=color.rgb(253, 173, 0), linewidth=1, offset=8, show_last=1, style=plot.style_circles)
plot(KB_Next_9, color=color.rgb(253, 173, 0), linewidth=1, offset=9, show_last=1, style=plot.style_circles)
plot(KB_Next_10, color=color.rgb(253, 173, 0), linewidth=1, offset=10, show_last=1, style=plot.style_circles)
plot(KB_Next_11, color=color.rgb(253, 173, 0), linewidth=1, offset=11, show_last=1, style=plot.style_circles)
plot(KB_Next_12, color=color.rgb(253, 173, 0), linewidth=1, offset=12, show_last=1, style=plot.style_circles)
plot(KB_Next_13, color=color.rgb(253, 173, 0), linewidth=1, offset=13, show_last=1, style=plot.style_circles)
plot(KB_Next_14, color=color.rgb(253, 173, 0), linewidth=1, offset=14, show_last=1, style=plot.style_circles)
var line greenLine = na
var line redLine = na
xGreen = bar_index - 8
xRed = bar_index - 16
// Dùng khoảng 100 nến gần nhất để lấy phạm vi giá hiện hành
lookback = 100
top = ta.highest(high, lookback)
bottom = ta.lowest(low, lookback)
if bar_index > 17
line.delete(greenLine)
line.delete(redLine)
greenLine := line.new( x1 = xGreen, y1 = top, x2 = xGreen, y2 = bottom, color=color.new(#0fc7db, 85), width = 4)
redLine := line.new( x1 = xRed, y1 = top, x2 = xRed, y2 = bottom,color =color.new(#f00f0f, 85), width = 4 )
3% Price RangeThe simplest way to track a 3% range is to calculate it directly:
Upper Limit: Current Spot Price * 1.03
Lower Limit: Current Spot Price * 0.97
Trendline Breakouts With Targets [ Chartprime ]The Trendline Breakouts With Targets indicator is meticulously crafted to improve trading decision-making by pinpointing trendline breakouts and breakdowns through pivot point analysis.
Here's a comprehensive look at its primary functionalities:
Upon the occurrence of a breakout or breakdown, a signal is meticulously assessed against a false signal condition/filter, after which the indicator promptly generates a trading signal. Additionally, it conducts precise calculations to determine potential target levels and then exhibits them graphically on the price chart.
Hybrid Cumulative DeltaWhat does this indicator show?
This script displays two types of CVD (Cumulative Volume Delta):
1. Simple Cumulative Delta Volume:
This is the basic method:
pinescript
Kopiraj
Uredi
deltaVolume = volume * (close > close ? 1 : close < close ? -1 : 0)
➡️ It increases cumulative volume if the candle closes higher, and decreases it if it closes lower.
It's a simple assumption:
If the candle is bullish → more buying.
If bearish → more selling.
Then it's accumulated with:
pinescript
Kopiraj
Uredi
cumulativeDeltaVolume = ta.cum(deltaVolume)
It's plotted as candlesticks, rising or falling based on delta volume.
2. Monster Cumulative Delta (advanced method):
Uses a more complex formula, taking into account:
Candle range (high - low),
Relationship between open, close, and wicks,
Distribution of volume inside the candle.
pinescript
Kopiraj
Uredi
U1 = (close >= open ...) ? ...
D1 = (close < open ...) ? ...
Delta = close >= open ? U1 : -D1
cumDelta := nz(cumDelta ) + Delta
➡️ Purpose: to more realistically estimate aggressive buyers/sellers.
This is a refined CVD, ideal for markets without real order book data (like forex).
📍 What does the indicator tell us?
➕ If cumulative delta is rising:
Buyers are in control (more aggressive market buys).
➖ If cumulative delta is falling:
Sellers dominate (more aggressive market sells).
📈 How to read it on the chart:
You’ll see 2 candlestick plots:
One for the simple delta (green/red delta volume candles),
One for the monster delta, which is often smoother.
👉 The key is to watch for divergence between price and CVD:
If price goes up but CVD goes down → buyers are weak = potential reversal.
If price drops and CVD rises → selling pressure is weak = potential bounce.
🕐 Best timeframe (interval) for forex?
Timeframe Purpose Recommendation
1m–15m Scalping / short-term flow ✅ Works well, but needs high-volume pairs (e.g., EUR/USD, GBP/USD)
1H–4H Swing trading / intraday ✅ Best balance – reveals smart money movements
1D Macro overview, long-term volume Usable, but less granular info
🔹 Recommendation for forex: 4H interval
Enough volume data to detect shifts in real pressure.
Less noise than lower timeframes.
Great for spotting swing setups (e.g., divergences at support/resistance).
DIVAP RSI by:TMThe DIVAP RSI by:TM is a precision-focused RSI-based indicator designed to identify high-confidence entry and exit points. It uses a faster RSI (length 7) combined with extended levels (20 and 80) to capture momentum reversals at extreme zones.
✅ Green arrows signal entries when RSI crosses above 20 (exit from oversold)
✅ Red arrows signal exits when RSI crosses below 80 (exit from overbought)
This minimalist tool is ideal for traders who prefer clean chart setups with clear, timely alerts.
🔧 This is a test version and is actively being improved. Feedback is welcome!
Bullish RSI Divergencebullish rsi divergence with a bullish pin bar. look for swing positions once alert goes off.
Today High/Low Lines [tzuriamos]Displays the current day's highs and lows that exist in the market.
Once a high or low is taken, it is updated.
Check List RSI Đồng Thuận Liền Kề + Gợi ý + Âm thanh + Vùngvào lệnh khung m15 Vợi sự đồng thuận của RSI ở các khung lớn hơn và nhỏ hơn liền kề : m5, m15,h1,h4
Elliott Wave Helper//@version=5
indicator("Elliott Wave Helper", overlay=true)
// Settings
pivotLength = input.int(5, "Pivot Length")
showLabels = input.bool(true, "Show Wave Labels")
zigzagColor = input.color(color.orange, "Zigzag Line Color")
// Find Pivot Highs and Lows
pivotHigh = ta.pivothigh(high, pivotLength, pivotLength)
pivotLow = ta.pivotlow(low, pivotLength, pivotLength)
// Store pivots
var float pivotPrices = array.new_float()
var int pivotBars = array.new_int()
if not na(pivotHigh)
array.push(pivotPrices, pivotHigh)
array.push(pivotBars, bar_index - pivotLength)
if not na(pivotLow)
array.push(pivotPrices, pivotLow)
array.push(pivotBars, bar_index - pivotLength)
// Draw zigzag line between pivots
for i = 1 to array.size(pivotBars) - 1
x1 = array.get(pivotBars, i - 1)
y1 = array.get(pivotPrices, i - 1)
x2 = array.get(pivotBars, i)
y2 = array.get(pivotPrices, i)
line.new(x1, y1, x2, y2, width=2, color=zigzagColor)
// Label waves as 1-5 or A-C (manual cycling)
if showLabels
waveLabels = array.from("1", "2", "3", "4", "5", "A", "B", "C")
labelText = array.get(waveLabels, (i - 1) % array.size(waveLabels))
label.new(x2, y2, text=labelText, style=label.style_label_up, textcolor=color.white, size=size.small, color=color.blue)
OBV MACD IndicatorI have added alert function providing the ability to add an alert when either a long or short signal is detected.
The original script is OBV MACD Indicator by RafaelZioni
High Volume Buyers/SellersThis indicator will help you indicate wether breakout happened with high volume or not
EMA TableSimple price vs. EMA state table describing where price resides relative to the 20, 50, 100, 200 EMA bands
Last xHL📈 Last xHL – Visualize Key Highs and Lows
This script highlights the most recent significant highs and lows over a user-defined period, helping traders quickly identify key support and resistance zones.
🔍 Features:
Highest High (HH) and Highest Close/Open (HC) lines
Lowest Low (LL) and Lowest Close/Open (LC) lines
Dynamic updates with each new bar
Gradient-filled zones between HH–HC and LL–LC for visual clarity
⚙️ Customization:
Adjustable lookback period (_length) to suit your trading style
Color-coded lines and fills for quick interpretation
🧠 Use Case:
This tool is ideal for traders who want to:
Spot potential breakout or reversal zones
Identify price compression or expansion areas
Enhance their technical analysis with visual cues
This script is for educational and informational purposes only. It does not constitute financial advice. Always do your own research before making trading decisions.
YAS GROUP✅ يحدد لك مناطق الـ Order Blocks القوية (على فريمات 15 دقيقة، 1 ساعة، و4 ساعات).
✅ حاطين فيبو داخل الـ OB عشان تأكد نقاط الارتداد بدقة.
✅ يعطيك إشارات شراء وبيع أدق من الصقر، وتقدر تشغل أو تطفي فلاتر الـ RSI والـ EMA/SMA حسب راحتك.
✅ بعد، فيه خطوط دعم ومقاومة ديناميكية، شغّالة ع آخر Pivot Highs & Lows.
✅ ينفع حق السكالبينج، التداول اليومي، وحتى الصفقات الطويلة.
🎯 من الإعدادات، تقدر تتحكم في الفلاتر والفريمات اللي تباها.
⚠️ ترى هالمؤشر مش نصيحة مالية مباشرة، دايم خلك حذر، وطبّق إدارة رأس مالك عدل.
🔔 ولاتنسى تحط التنبيهات، عشان توصلك الإشارات وأنت مرتاح.
بالتوفيق ، ورزقك إن شاء الله فوووق!
Hey brother, this indicator is fully loaded and super accurate! 🙌🔥
✅ Detects strong Order Blocks (15m, 1H, 4H).
✅ Adds Fibonacci levels inside OBs to confirm precise reversal points.
✅ Gives you super sharp Buy & Sell signals, with optional RSI and EMA/SMA filters you can toggle on/off.
✅ Also has dynamic Support & Resistance lines, based on the latest pivot highs & lows.
✅ Suitable for scalping, day trading, and swing trading.
🎯 You can easily customize filters and select the timeframes you want from the settings.
⚠️ Note: This is not financial advice — always use proper risk management and stay cautious.
🔔 Don't forget to set alerts so you never miss an opportunity.
Good luck and smash those profits! 🚀🔥
مع تحيات قروب ابو سلطان
Vùng đỉnh đáy chính theo phá vỡ (dùng line)Indicator Name:
🔺 Key Swing Zones Based on Breakouts (Line-Based)
Short Description:
This indicator automatically detects and visualizes key swing highs and lows based on the principle of candle close breaking the wick of the previous candle, then classifies the current market trend as uptrend, downtrend, or neutral. It draws horizontal lines representing key zones and adds visual labels to help traders analyze market structure more clearly.
How It Works:
🔹 Reversal Signal Logic:
In an uptrend, if a candle closes below the previous candle's low, it marks a swing low.
In a downtrend, if a candle closes above the previous candle's high, it marks a swing high.
🔹 Structure Break Detection:
Price breaking above a key high → confirms an uptrend.
Price breaking below a key low → confirms a downtrend.
If price breaks a zone but doesn't form a new high/low → switches to neutral.
🔹 Visual Display:
Draws two horizontal lines: one at the key high, one at the key low.
Adds labels "Key High" or "Key Low" at the breakout points.
Zone color representation:
🟢 Green = Uptrend
🔴 Red = Downtrend
⚪ White = Neutral
RSI EMA9 + WMA45The Relative Strength Index (RSI) is one of the most popular momentum oscillators used by traders. It's so widely adopted that every charting software package and professional trading system worldwide includes it as a core indicator. Not only is this indicator included in every charting package, but it's also highly likely to be part of the default settings in every system.
EMAs 60/125/250 + Swing-Struktur + CCI-AlertsEMAs 60/125/250 + Swing-Points + CCI-Alerts / crossover 100 /-100
3.RSI LIJO 45*55//@version=6
indicator(title="3.RSI LIJO 45*55", shorttitle="RSI-LIJO-45-55", format=format.price, precision=2, timeframe="", timeframe_gaps=true)
rsiLengthInput = input.int(9, minval=1, title="RSI Length", group="RSI Settings")
rsiSourceInput = input.source(close, "Source", group="RSI Settings")
calculateDivergence = input.bool(false, title="Calculate Divergence", group="RSI Settings", display=display.data_window, tooltip="Calculating divergences is needed in order for divergence alerts to fire.")
change = ta.change(rsiSourceInput)
up = ta.rma(math.max(change, 0), rsiLengthInput)
down = ta.rma(-math.min(change, 0), rsiLengthInput)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
// Change RSI line color based on bands
rsiColor = rsi > 50 ? color.green : rsi < 50 ? color.red : color.white
rsiPlot = plot(rsi, "RSI", color=rsiColor)
rsiUpperBand = hline(55, "RSI Upper Band", color=color.rgb(5, 247, 22))
midline = hline(50, "RSI Middle Band", color=color.new(#787B86, 50))
rsiLowerBand = hline(45, "RSI Lower Band", color=color.rgb(225, 18, 14))
fill(rsiUpperBand, rsiLowerBand, color=color.rgb(126, 87, 194, 90), title="RSI Background Fill")
midLinePlot = plot(50, color=na, editable=false, display=display.none)
fill(rsiPlot, midLinePlot, 100, 55, top_color=color.new(color.green, 0), bottom_color=color.new(color.green, 100), title="Overbought Gradient Fill")
fill(rsiPlot, midLinePlot, 45, 0, top_color=color.new(color.red, 100), bottom_color=color.new(color.red, 0), title="Oversold Gradient Fill")
// Smoothing MA inputs
GRP = "Smoothing"
TT_BB = "Only applies when 'SMA + Bollinger Bands' is selected. Determines the distance between the SMA and the bands."
maTypeInput = input.string("SMA", "Type", options= , group=GRP, display=display.data_window)
maLengthInput = input.int(31, "Length", group=GRP, display=display.data_window)
bbMultInput = input.float(2.0, "BB StdDev", minval=0.001, maxval=50, step=0.5, tooltip=TT_BB, group=GRP, display=display.data_window)
var enableMA = maTypeInput != "None"
var isBB = maTypeInput == "SMA + Bollinger Bands"
// Smoothing MA Calculation
ma(source, length, MAtype) =>
switch MAtype
"SMA" => ta.sma(source, length)
"SMA + Bollinger Bands" => ta.sma(source, length)
"EMA" => ta.ema(source, length)
"SMMA (RMA)" => ta.rma(source, length)
"WMA" => ta.wma(source, length)
"VWMA" => ta.vwma(source, length)
// Smoothing MA plots
smoothingMA = enableMA ? ma(rsi, maLengthInput, maTypeInput) : na
smoothingStDev = isBB ? ta.stdev(rsi, maLengthInput) * bbMultInput : na
plot(smoothingMA, "RSI-based MA", color=color.yellow, display=enableMA ? display.all : display.none, editable=enableMA)
bbUpperBand = plot(smoothingMA + smoothingStDev, title="Upper Bollinger Band", color=color.green, display=isBB ? display.all : display.none, editable=isBB)
bbLowerBand = plot(smoothingMA - smoothingStDev, title="Lower Bollinger Band", color=color.green, display=isBB ? display.all : display.none, editable=isBB)
fill(bbUpperBand, bbLowerBand, color=isBB ? color.new(color.green, 90) : na, title="Bollinger Bands Background Fill", display=isBB ? display.all : display.none, editable=isBB)
// Divergence
lookbackRight = 5
lookbackLeft = 5
rangeUpper = 60
rangeLower = 5
bearColor = color.red
bullColor = color.green
textColor = color.white
noneColor = color.new(color.white, 100)
_inRange(bool cond) =>
bars = ta.barssince(cond)
rangeLower <= bars and bars <= rangeUpper
plFound = false
phFound = false
bullCond = false
bearCond = false
rsiLBR = rsi
if calculateDivergence
//------------------------------------------------------------------------------
// Regular Bullish
// rsi: Higher Low
plFound := not na(ta.pivotlow(rsi, lookbackLeft, lookbackRight))
rsiHL = rsiLBR > ta.valuewhen(plFound, rsiLBR, 1) and _inRange(plFound )
// Price: Lower Low
lowLBR = low
priceLL = lowLBR < ta.valuewhen(plFound, lowLBR, 1)
bullCond := priceLL and rsiHL and plFound
//------------------------------------------------------------------------------
// Regular Bearish
// rsi: Lower High
phFound := not na(ta.pivothigh(rsi, lookbackLeft, lookbackRight))
rsiLH = rsiLBR < ta.valuewhen(phFound, rsiLBR, 1) and _inRange(phFound )
// Price: Higher High
highLBR = high
priceHH = highLBR > ta.valuewhen(phFound, highLBR, 1)
bearCond := priceHH and rsiLH and phFound
plot(
plFound ? rsiLBR : na,
offset = -lookbackRight,
title = "Regular Bullish",
linewidth = 2,
color = (bullCond ? bullColor : noneColor),
display = display.pane,
editable = calculateDivergence)
plotshape(
bullCond ? rsiLBR : na,
offset = -lookbackRight,
title = "Regular Bullish Label",
text = " Bull ",
style = shape.labelup,
location = location.absolute,
color = bullColor,
textcolor = textColor,
display = display.pane,
editable = calculateDivergence)
plot(
phFound ? rsiLBR : na,
offset = -lookbackRight,
title = "Regular Bearish",
linewidth = 2,
color = (bearCond ? bearColor : noneColor),
display = display.pane,
editable = calculateDivergence)
plotshape(
bearCond ? rsiLBR : na,
offset = -lookbackRight,
title = "Regular Bearish Label",
text = " Bear ",
style = shape.labeldown,
location = location.absolute,
color = bearColor,
textcolor = textColor,
display = display.pane,
editable = calculateDivergence)
alertcondition(bullCond, title='Regular Bullish Divergence', message="Found a new Regular Bullish Divergence, Pivot Lookback Right number of bars to the left of the current bar.")
alertcondition(bearCond, title='Regular Bearish Divergence', message='Found a new Regular Bearish Divergence, Pivot Lookback Right number of bars to the left of the current bar.')
Candle Emotion Oscillator [CEO]Candle Emotion Oscillator (CEO) - Revolutionary User Guide
🧠 World's First Market Psychology Oscillator
The Candle Emotion Oscillator (CEO) is a groundbreaking indicator that measures market emotions through pure candle price action analysis. This is the first oscillator ever created that translates candle patterns into psychological states, giving you unprecedented insight into market sentiment.
🚀 Revolutionary Concept
What Makes CEO Unique
100% Pure Price Action: No volume, no external data - just candle analysis
Market Psychology: Measures actual emotions: Fear, Greed, Panic, Euphoria
Never Been Done Before: First oscillator to analyze market emotions
Exhaustion Prediction: Detects emotional fatigue before reversals
Fast Response: Perfect for your 2-5 minute scalping setup
The Four Core Emotions
🟢 GREED (Positive Values)
What it measures: Market conviction and decisiveness
Candle Pattern: Large bodies, small wicks
Psychology: Traders are confident and decisive
Oscillator: Positive values (0 to +100)
Trading Implication: Trend continuation likely
🔴 FEAR (Negative Values)
What it measures: Market uncertainty and indecision
Candle Pattern: Small bodies, large wicks
Psychology: Traders are uncertain and hesitant
Oscillator: Negative values (0 to -100)
Trading Implication: Consolidation or reversal likely
🚀 EUPHORIA (Extreme Positive)
What it measures: Excessive optimism and buying pressure
Candle Pattern: Large green bodies with upper wicks
Psychology: Extreme bullish sentiment
Oscillator: Values above +60
Trading Implication: Overbought, reversal warning
💥 PANIC (Extreme Negative)
What it measures: Capitulation and selling pressure
Candle Pattern: Large red bodies with lower wicks
Psychology: Extreme bearish sentiment
Oscillator: Values below -60
Trading Implication: Oversold, reversal opportunity
📊 Visual Elements Explained
Main Components
Thick Colored Line: Primary emotion oscillator
Green: Greed (positive emotions)
Red: Fear (negative emotions)
Bright Green: Euphoria (extreme positive)
Dark Red: Panic (extreme negative)
Thin Blue Line: Emotion trend (longer-term context)
Background Gradient: Emotional intensity
Darker = stronger emotions
Lighter = weaker emotions
Diamond Signals: 🔶 Emotional exhaustion detected
Rocket Signals: 🚀 Extreme euphoria warning
Explosion Signals: 💥 Extreme panic warning
Information Table (Top Right)