RAHA Indicator📈 RAHA Indicator
Roni's Adjusted Hybrid Average
The indicator developed by Aaron Roni Pesach combines an innovative RAHA average - an adjusted hybrid average with smart trend analysis, using additional oscillators in a sophisticated way.
LONG and SHORT signals are given only when:
✅ Technical conditions confirm
✅ And the long-term trend is consistent
RAHA Indicator helps traders identify entry points while filtering out noise and market anomalies.
📈 RAHA Indicator
Roni's Adjusted Hybrid Average
האינדיקטור שפותח על ידי אהרון רוני פסח משלב ממוצע חדשני מסוג RAHA - ממוצע היברידי מתואם עם ניתוח מגמה חכם, באמצעות שימוש במתנדים נוספים באופן מתוחכם.
איתותי LONG ו‑SHORT ניתנים רק כאשר:
✅ התנאים הטכניים מאשרים
✅ והמגמה בטווח ארוך תואמת
RAHA Indicator מסייע לסוחרים לזהות נקודות כניסה תוך סינון רעשים וחריגות שוק.
Indicators and strategies
RSI Overbought ScannerRSI Overbought Scanner
Description
The RSI Overbought Scanner is a Pine Script indicator designed to identify potential overbought conditions across multiple timeframes (1-minute, 5-minute, and 15-minute) using the Relative Strength Index (RSI). This tool is ideal for traders looking to spot stocks or assets that may be overextended to the upside, potentially signaling a reversal or pullback opportunity.
Key Features
Multi-Timeframe Analysis: Evaluates RSI on 1m, 5m, and 15m timeframes to confirm overbought conditions (RSI > 70).
Visual Output: Plots a binary result (1 for overbought, 0 otherwise) for easy integration with TradingView's screener.
Debugging Table: Displays a table in the top-right corner showing RSI values and overbought status for each timeframe, with color-coded indicators (red for overbought, green for not overbought).
Alert Integration: Includes an alert condition that triggers when all three timeframes are overbought, providing a customizable message with the ticker symbol.
How It Works
RSI Calculation: Computes RSI with a default length of 14 for the 1m timeframe and retrieves RSI values for 5m and 15m timeframes using request.security.
Overbought Condition: Checks if RSI exceeds 70 on all three timeframes.
Output: Plots a value of 1 when all conditions are met, otherwise 0. A table updates on the last confirmed bar to show RSI values and overbought status.
Alerts: Triggers an alert when all timeframes are overbought, notifying users of potential trading opportunities.
Usage
Add the indicator to your chart and use it with TradingView's screener to filter assets meeting the overbought criteria.
Customize the RSI length or overbought level (default 70) in the indicator settings to suit your trading strategy.
Set up alerts to receive notifications when the overbought condition is met across all timeframes.
Notes
This script is written in Pine Script v6.
Best used in conjunction with other technical analysis tools to confirm signals.
The table is for debugging and visual confirmation, updating only on the last confirmed bar to avoid performance issues.
WCWebhookLibraryLibrary "WCWebhookLibrary"
The webhook message library provides several functions for building JSON payloads
method buildWebhookJson(msg, constants)
Builds the final JSON payload from a webhookMessage type.
Namespace types: webhookMessage
Parameters:
msg (webhookMessage) : (webhookMessage) A prepared webhookMessage.
constants (CONSTANTS)
Returns: A JSON Payload.
method buildTakeProfitJson(msg)
Builds the takeProfit JSON message to be used in a webhook message.
Namespace types: takeProfitMessage
Parameters:
msg (takeProfitMessage) : (takeProfitMessage)
Returns: A JSON takeProfit payload.
method buildStopLossJson(msg, constants)
Builds the stopLoss JSON message to be used in a webhook message.
Namespace types: stopLossMessage
Parameters:
msg (stopLossMessage) : (stopLossMessage)
constants (CONSTANTS)
Returns: A JSON stopLoss payload.
CONSTANTS
Constants for payload values.
Fields:
ACTION_BUY (series string)
ACTION_SELL (series string)
ACTION_EXIT (series string)
ACTION_CANCEL (series string)
ACTION_ADD (series string)
SENTIMENT_BULLISH (series string)
SENTIMENT_BEARISH (series string)
SENTIMENT_LONG (series string)
SENTIMENT_SHORT (series string)
SENTIMENT_FLAT (series string)
STOP_LOSS_TYPE_STOP (series string)
STOP_LOSS_TYPE_STOP_LIMIT (series string)
STOP_LOSS_TYPE_TRAILING_STOP (series string)
EXTENDED_HOURS (series bool)
webhookMessage
Final webhook message.
Fields:
ticker (series string)
action (series string)
sentiment (series string)
price (series float)
quantity (series int)
takeProfit (series string)
stopLoss (series string)
extended_hours (series bool)
takeProfitMessage
Take profit message.
Fields:
limitPrice (series float)
percent (series float)
amount (series float)
stopLossMessage
Stop loss message.
Fields:
type (series string)
percent (series float)
amount (series float)
stopPrice (series float)
limitPrice (series float)
trailPrice (series float)
trailPercent (series float)
Options Strategy V1.3📈 Options Strategy V1.3 — EMA Crossover + RSI + ATR + Opening Range
Overview:
This strategy is designed for short-term directional trades on large-cap stocks or ETFs, especially when trading options. It combines classic trend-following signals with momentum confirmation, volatility-based risk management, and session timing filters to help identify high-probability entries with predefined stop-loss and profit targets.
🔍 Strategy Components:
EMA Crossover (Fast/Slow)
Entry signals are triggered by the crossover of a short EMA above or below a long EMA — a traditional trend-following method to detect shifts in momentum.
RSI Filter
RSI confirms the signal by avoiding entries in overbought/oversold zones unless certain momentum conditions are met.
Long entry requires RSI ≥ Long Threshold
Short entry requires RSI ≤ Short Threshold
ATR-Based SL & TP
Stop-loss is set dynamically as a multiple of ATR below (long) or above (short) the entry price.
Take-profit is placed as a ratio (TP/SL) of the stop distance, ensuring consistent reward/risk structure.
Opening Range Filter (Optional)
If enabled, the strategy only triggers trades after price breaks out of the 09:30–09:45 EST range, ensuring participation in directional moves.
Session Filters
No trades from 04:00 to 09:30 and from 16:00 to 20:00 EST, avoiding low-liquidity periods.
All open trades are closed at 15:55 EST, to avoid overnight risk or expiration issues for options.
⚙️ Built-in Presets:
You can choose one of the built-in ticker-specific presets for optimal conditions:
Ticker EMAs RSI (Long/Short) ATR SL×ATR TP/SL
SPY 8/28 56 / 26 14 1.4× 4.0×
TSLA 23/27 56 / 33 13 1.4× 3.6×
AAPL 6/13 61 / 26 23 1.4× 2.1×
MSFT 25/32 54 / 26 14 1.2× 2.2×
META 25/32 53 / 26 17 1.8× 2.3×
AMZN 28/32 55 / 25 16 1.8× 2.3×
You can also choose "Custom" to fully configure all parameters to your own market and strategy preferences.
📌 Best Use Case:
This strategy is especially suited for intraday options trading, where timing and risk control are critical. It works best on liquid tickers with strong trends or clear breakout behavior.
Tuga SupertrendDescription
This strategy uses the Supertrend indicator enhanced with commission and slippage filters to capture trends on the daily chart. It’s designed to work on any asset but is especially effective in markets with consistent movements.
Use the date inputs to set the backtest period (default: from January 1, 2018, through today, June 30, 2025).
The default input values are optimized for the daily chart. For other timeframes, adjust the parameters to suit the asset you’re testing.
Release Notes
June 30, 2025
• Updated default backtest period to end on June 30, 2025.
• Default commission adjusted to 0.1 %.
• Slippage set to 3 ticks.
• Default slippage set to 3 ticks.
• Simplified the strategy name to “Tuga Supertrend”.
Default Parameters
Parameter Default Value
Supertrend Period 10
Multiplier (Factor) 3
Commission 0.1 %
Slippage 3 ticks
Start Date January 1, 2018
End Date June 30, 2025
MaxEvolved Japanese CloseShow the closing price of the Japanese candle. Usefull with Heiken Ashi.
Afficher le prix de fermeture de la chandelle japonaise. Utile pour Heiken Ashi.
Volatility Strategy 01a quantitative volatility strategy (especially effective in trend direction on the 15min chart on the s&p-index)
the strategy is a rule-based setup, which dynamically adapts to the implied volatility structure (vx1!–vx2!)
context-dependent mean reversion strategy based on multiple timeframes in the vix index
a signal is provided under following conditions:
1. the vvix/vix spread has deviated significantly beyond one standard deviation
2. the vix is positioned above or below 3 moving averages on 3 minor timeframes
3. the trade direction is derived from the projected volatility regime, measured via vx1! and vx2! (cboe)
Civan Ali'nin Sihirli Çizgisi🧙♂️ Civan Ali’s Magic Line
Sense the trends, don’t miss the moves!
This strategy is built on two magically effective foundations:
📏 Moving Averages (WMA 50 & 200) and
🧠 CCI signals powered by the IFT Combo filter.
How It Works
🔹 When price starts accelerating upward and the short-term average (WMA50) crosses above the long-term (WMA200), a potential long signal forms.
🔻 If it crosses downward, a short signal is considered.
But it doesn’t jump in immediately!
🎯 To avoid “noisy” market moves, the system uses an Inverse Fisher Transform (IFT) filter.
Only when momentum is truly strong does it allow trades.
Why It’s Different
✅ Detects trend direction
✅ Filters out weak signals
✅ Manages risk and profit intelligently
And while doing all that, it warns you with magical labels and emojis on the chart.
In short: It’s both effective and entertaining. 🎯
TRADING GURU LIVE FLASHHi guys,
If you are looking to add some watermark into your charts. You can use this indicator.
You can add add a title and a subtitle, if you want to write in diferents lines, you can use as you can see in the script.
This is just a watermark, which follows my personal style an aesthetic when it comes to Pinescript tools. I like to keep my charts clean to focus on Time and price, and I love to have a reminder to remain disciplined.
Homo Faber Fortunae Suae is a Latin maxim which loosely translates to: Humans Are The Makers Of Their Own Destiny.
So make your own destiny, master yourself and the charts!
All the features are customizable: position, text size, text color, background.
Enjoy it.
4H Crypto System – EMAs + MACD//@version=5
indicator("4H Crypto System – EMAs + MACD", overlay=true)
// EMAs
ema21 = ta.ema(close, 21)
ema50 = ta.ema(close, 50)
ema200 = ta.ema(close, 200)
// MACD Settings (standard)
fastLength = 12
slowLength = 26
signalLength = 9
= ta.macd(close, fastLength, slowLength, signalLength)
// Plot EMAs
plot(ema21, title="EMA 21", color=color.orange, linewidth=1)
plot(ema50, title="EMA 50", color=color.blue, linewidth=1)
plot(ema200, title="EMA 200", color=color.purple, linewidth=1)
// Candle coloring based on MACD trend
macdBull = macdLine > signalLine
barcolor(macdBull ? color.new(color.green, 0) : color.new(color.red, 0))
// Buy/Sell signal conditions
buySignal = ta.crossover(macdLine, signalLine) and close > ema21 and close > ema50 and close > ema200
sellSignal = ta.crossunder(macdLine, signalLine) and close < ema21 and close < ema50 and close < ema200
// Alerts
alertcondition(buySignal, title="Buy Alert", message="Buy Signal: MACD bullish crossover and price above EMAs")
alertcondition(sellSignal, title="Sell Alert", message="Sell Signal: MACD bearish crossover and price below EMAs")
Multi-TF S/R Lines by Pivots - 15min Chart//@version=5
indicator('Multi-TF S/R Lines by Pivots - 15min Chart', overlay=true, max_lines_count=32)
// تنظیمات کاربری
pivot_lookback = input.int(5, 'تعداد کندل دو طرف پیوت')
search_bars = input.int(200, 'تعداد کندل چکشونده در هر تایمفریم')
line_expire = input.int(40, 'حداکثر کندل بیتست تا پنهان کردن سطح')
h4_color = color.new(color.teal, 0)
h1_color = color.new(color.green, 0)
d1_color = color.new(color.blue, 0)
w1_color = color.new(color.red, 0)
plot_labels = input.bool(true, 'نمایش لیبل')
label_size = input.string('tiny', 'سایز لیبل', )
var float w1_pivothighs = array.new_float(0)
var float w1_pivotlows = array.new_float(0)
var float d1_pivothighs = array.new_float(0)
var float d1_pivotlows = array.new_float(0)
var float h4_pivothighs = array.new_float(0)
var float h4_pivotlows = array.new_float(0)
var float h1_pivothighs = array.new_float(0)
var float h1_pivotlows = array.new_float(0)
//----------------------
// تابع پیوتی (true اگر کندل مرکزی، پیوت سقف/کف باشد)
pivot(cF, length, dir) =>
// dir = 'high' یا 'low'
var bool isP = true
for i = 1 to length
if dir == 'high'
isP := isP and cF > cF and cF > cF
if dir == 'low'
isP := isP and cF < cF and cF < cF
isP
// جمعآوری پیوتها در تایمفریم انتخابی
get_pivots(tf, bars_limit, look, dir) =>
var float pivs = array.new_float(0)
pivs := array.new_float(0) // reset each call: همیشه آخرین ۲۰۰ کندل
h = request.security(tf, 'high', high)
l = request.security(tf, 'low', low)
arr = dir == 'high' ? h : l
// فقط کندلهای وسط برگردد (نه اول و آخر)
for i=look to (bars_limit - look)
if pivot(arr, look, dir)
array.unshift(pivs, arr )
pivs
// بروزرسانی آرایه پیوتها (آخرین سطوح)
if barstate.islastconfirmedhistory
w1_pivothighs := get_pivots('W', search_bars, pivot_lookback, 'high')
w1_pivotlows := get_pivots('W', search_bars, pivot_lookback, 'low')
d1_pivothighs := get_pivots('D', search_bars, pivot_lookback, 'high')
d1_pivotlows := get_pivots('D', search_bars, pivot_lookback, 'low')
h4_pivothighs := get_pivots('240', search_bars, pivot_lookback, 'high')
h4_pivotlows := get_pivots('240', search_bars, pivot_lookback, 'low')
h1_pivothighs := get_pivots('60', search_bars, pivot_lookback, 'high')
h1_pivotlows := get_pivots('60', search_bars, pivot_lookback, 'low')
//--------------
// تابع رسم سطح
draw_lines(pivArr, line_color, label_txt, expiry) =>
int count = math.min(array.size(pivArr), 8)
for i=0 to (count-1)
y = array.get(pivArr, i)
// بررسی در 40 کندل اخیر برخورد بوده یا نه؟
touched = false
for c=0 to (expiry-1)
touched := touched or (low <= y and high >= y)
if touched
l = line.new(bar_index-expiry, y, bar_index, y, color=line_color, width=2, extend=extend.right)
if plot_labels
label.new(bar_index, y, label_txt, color=line_color, style=label.style_label_right, textcolor=color.white, size=label_size)
// اگر طی پیشفرض expiry کندل برخورد نشده بود، خط و لیبل رسم نشود (مخفی شود)
// رسم همه خطوط
draw_lines(w1_pivothighs, w1_color, 'W1', line_expire)
draw_lines(w1_pivotlows, w1_color, 'W1', line_expire)
draw_lines(d1_pivothighs, d1_color, 'D1', line_expire)
draw_lines(d1_pivotlows, d1_color, 'D1', line_expire)
draw_lines(h4_pivothighs, h4_color, 'H4', line_expire)
draw_lines(h4_pivotlows, h4_color, 'H4', line_expire)
draw_lines(h1_pivothighs, h1_color, 'H1', line_expire)
draw_lines(h1_pivotlows, h1_color, 'H1', line_expire)
ORB NormanORB with adjustable times for up to 3 ORB's.
High and Low for each defined timeframe with adjustable lenghts for each day.
Advanced Day Separator with Future ProjectionsThe general indicator works on historical data, meaning they develop after the fact. The same is for indicators that show day separation. I was always forced to manually draw in vertical lines for the upcoming week. This indicator I built solves that issue by projecting vertical day separations for the upcoming week. Enjoy! :-)
VARNI-LINE-CHART//@version=5
indicator("VARNI-LINE-CHART",shorttitle = "VARNI-LINE-CHART", overlay=false)
// Input for Index and Expiry Date
spot_ = input.string("BANKNIFTY", title = "Spot Symbol", options = , group = "Index")
tooltip_day = "Enter the day of the expiry. Add 0 in front if the day is a single digit. For example: 05 instead of 5"
tooltip_month = "Enter the month of the expiry. Add 0 in front if the month is a single digit. For example: 06 instead of 6"
tooltip_year = "Enter the year of the expiry. Use the last two digits of the year. For example: 24 instead of 2024"
_day = input.string("13", title = "Expiry Day", tooltip = tooltip_day, group="Expiry Date")
_month = input.string("02", title = "Expiry Month", tooltip = tooltip_month, group="Expiry Date")
_year = input.string("25", title = "Expiry Year", tooltip = tooltip_year, group="Expiry Date")
// Input for Strikes
tooltip_ = "You can select any Strike, and choose to include both strikes or just one"
strike_ce = input.int(23500, "Call Strike", tooltip = tooltip_,step = 50, group = "Select Strike")
strike_pe = input.int(23500, "Put Strike", tooltip = tooltip_,step = 50, group = "Select Strike")
var string spot = na
if spot_ == "SENSEX"
spot := "BSX"
else if spot_ == "BANKEX"
spot := "BKX"
else
spot := spot_
// Option to include both strikes
strike_choice = input.string("Combined", title = "Select Strike", options = , group = "Select Strike")
// Generate symbols for Call and Put options
var string symbol_CE = spot + _year + _month + _day + "C" + str.tostring(strike_ce)
var string symbol_PE = spot + _year + _month + _day + "P" + str.tostring(strike_pe)
// Request security data for both Call and Put options
= request.security(symbol_CE, timeframe.period, )
= request.security(symbol_PE, timeframe.period, )
call_volume = request.security( symbol_CE, timeframe.period , volume )
put_volume = request.security( symbol_PE, timeframe.period , volume )
var float combined_open = 0
var float combined_high = 0
var float combined_low = 0
var float combined_close = 0
var float combined_vol = 0
// Calculate combined premium based on strike choice
if strike_choice == "Combined"
combined_open := call_open + put_open
combined_close := call_close + put_close
combined_high := math.max(combined_open, combined_close)
combined_low := math.min(combined_open, combined_close)
combined_vol := call_volume + put_volume
else if strike_choice == "Only Call"
combined_open := call_open
combined_close := call_close
combined_high := call_high
combined_low := call_low
combined_vol := call_volume
else
combined_open := put_open
combined_close := put_close
combined_high := put_high
combined_low := put_low
combined_vol := put_volume
// Plot combined premium as a line chart
plot(combined_close, title = "Combined Premium", color = combined_close > combined_open ? color.green : color.red, linewidth = 2)
// Indicator selection
use_ema_crossover = input.bool(false, title = "Use EMA Crossover", group = "Indicators")
use_supertrend = input.bool(false, title = "Use Supertrend", group = "Indicators")
use_vwap = input.bool(true, title = "Use VWAP", group = "Indicators")
use_rsi = input.bool(false, title = "Use RSI", group = "Indicators")
use_sma = input.bool(false, title = "Use SMA", group = "Indicators")
pine_supertrend_value(factor, atrPeriod) =>
src = combined_close
atr = ta.atr(atrPeriod)
upperBand = src + factor * atr
lowerBand = src - factor * atr
prevLowerBand = nz(lowerBand )
prevUpperBand = nz(upperBand )
lowerBand := lowerBand > prevLowerBand or combined_close < prevLowerBand ? lowerBand : prevLowerBand
upperBand := upperBand < prevUpperBand or combined_close > prevUpperBand ? upperBand : prevUpperBand
int _direction = na
float superTrend = na
prevSuperTrend = superTrend
if na(atr )
_direction := 1
else if prevSuperTrend == prevUpperBand
_direction := combined_close > upperBand ? -1 : 1
else
_direction := combined_close < lowerBand ? 1 : -1
superTrend := _direction == -1 ? lowerBand : upperBand
superTrend
pine_supertrend_dir(factor, atrPeriod) =>
src = combined_close
atr = ta.atr(atrPeriod)
upperBand = src + factor * atr
lowerBand = src - factor * atr
prevLowerBand = nz(lowerBand )
prevUpperBand = nz(upperBand )
lowerBand := lowerBand > prevLowerBand or combined_close < prevLowerBand ? lowerBand : prevLowerBand
upperBand := upperBand < prevUpperBand or combined_close > prevUpperBand ? upperBand : prevUpperBand
int _direction = na
float superTrend = na
prevSuperTrend = superTrend
if na(atr )
_direction := 1
else if prevSuperTrend == prevUpperBand
_direction := combined_close > upperBand ? -1 : 1
else
_direction := combined_close < lowerBand ? 1 : -1
superTrend := _direction == -1 ? lowerBand : upperBand
_direction
// Input for EMA lengths
fastLength = input.int(7, 'Fast EMA Length', group = "EMA")
slowLength = input.int(12, 'Slow EMA Length', group = "EMA")
// Input for SuperTrend
atrLength = input.int(7, 'ATR Length', group = "SuperTrend")
fac = input.float(2, 'Factor', group = "SuperTrend")
// Input for RSI
rsi_length = input.int(7, 'Length', group="RSI")
rsi_ob_level = input.int(80, 'Overbought', group="RSI")
rsi_os_level = input.int(20, 'Oversold', group="RSI")
// Input for SMA
sma_length = input.int(7, 'SMA Length', group = "SMA")
var float fast_ema = na
var float slow_ema = na
var float supertrend = na
var int direction = na
var float rsi_val = na
var float sma_val = na
var float sumPriceVolume = na
var float sumVolume = na
var float vwap = na
// Fast EMA
if use_ema_crossover
fast_ema := ta.ema(combined_close, fastLength)
slow_ema := ta.ema(combined_close, slowLength)
// Supertrend
if use_supertrend
supertrend := pine_supertrend_value( fac, atrLength)
direction := pine_supertrend_dir( fac, atrLength)
// VWAP
if use_vwap
if (dayofweek != dayofweek )
sumPriceVolume := 0.0
sumVolume := 0.0
vwap := 0.0
sumPriceVolume += combined_close * combined_vol
sumVolume += combined_vol
vwap := sumPriceVolume / sumVolume
// RSI
if use_rsi
rsi_val := ta.rsi(combined_close, rsi_length)
// SMA
if use_sma
sma_val := ta.sma(combined_close, sma_length)
plot(fast_ema, title='Fast EMA', color=color.blue, linewidth=2)
plot(slow_ema, title='Slow EMA', color=color.yellow, linewidth=2)
plot(direction < 0 ? supertrend : na, "Up direction", color = color.green, style=plot.style_linebr)
plot(direction > 0 ? supertrend : na, "Down direction", color = color.red, style=plot.style_linebr)
plot(vwap, title='VWAP', color=color.purple, linewidth=2)
plot(sma_val, title='SMA', color=color.maroon, linewidth=2)
// Define buy and sell conditions based on selected indicators
var bool buy = false
var bool sell = false
var int buyC = 0
var int sellC = 0
if dayofweek != dayofweek
buyC := 0
sellC := 0
if use_ema_crossover
buy := ( ta.crossover(fast_ema, slow_ema) ) and buyC == 0
sell := ( ta.crossunder(fast_ema, slow_ema) ) and sellC == 0
if use_vwap
buy := ( buy ? buy and (combined_close > vwap and combined_close <= vwap ) : (combined_close > vwap and combined_close <= vwap )) and buyC == 0
sell := ( sell ? sell and (combined_close < vwap and combined_close >= vwap ) : (combined_close < vwap and combined_close >= vwap )) and sellC == 0
if use_rsi
buy := ( buy ? buy and ta.crossover(rsi_val, rsi_ob_level) : ta.crossover(rsi_val, rsi_ob_level) ) and buyC == 0
sell := ( sell ? sell and ta.crossunder(rsi_val, rsi_os_level) : ta.crossunder(rsi_val, rsi_os_level) ) and sellC == 0
if use_sma
buy := ( buy ? buy and ta.crossover(combined_close, sma_val) : ta.crossover(combined_close, sma_val) ) and buyC == 0
sell := ( sell ? sell and ta.crossunder(combined_close, sma_val) : ta.crossunder(combined_close, sma_val) ) and sellC == 0
if use_supertrend
buy := ( buy ? direction == -1 : direction == -1 and direction == 1 ) and buyC == 0
sell := ( sell ? direction == 1 : direction == 1 and direction == -1 ) and sellC == 0
if buy
buyC := 1
sellC := 0
if sell
sellC := 1
buyC := 0
// Plot buy and sell signals
plotshape(buy, title = "Buy", text = 'Buy', style = shape.labeldown, location = location.top, color= color.green, textcolor = color.white, size = size.small)
plotshape(sell, title = "Sell", text = 'Sell', style = shape.labelup, location = location.bottom, color= color.red, textcolor = color.white, size = size.small)
// Alert conditions
alertcondition(buy, "Buy Alert", "Buy Signal")
alertcondition(sell, "Sell Alert", "Sell Signal")
📈 DhanOne3 | RSI Colored Bars📈 DhanOne3 | RSI Colored Bars
This indicator visually highlights price bars based on RSI conditions. Green bars indicate overbought levels (RSI > 70), and red bars indicate oversold levels (RSI < 30). It helps traders quickly spot momentum shifts and potential reversal zones directly on the chart without opening a separate RSI panel.
Sessioni Colorate come ScreenshotPre-Market and Post-Market Session Highlighter (US)
This script highlights the Pre-Market and Post-Market trading sessions for US stocks and indices by coloring the background directly on the chart.
Time zone: UTC
• Pre-Market: 09:00 – 13:30 UTC
• Regular Session: 13:30 – 20:00 UTC (not highlighted)
• Post-Market: 20:00 – 00:00 UTC
Useful for identifying price behavior outside regular trading hours.
SDR Dashboard v3.1: 结构距离与节奏SDR Dashboard v3.1: User Guide & Trading Strategy
1. Introduction
The SDR Dashboard is a comprehensive technical indicator designed to identify high-probability trend-following trade opportunities. It is built on the core principle of "buying the dip in an uptrend" and "selling the rally in a downtrend."
To achieve this, the indicator combines three key elements of market analysis:
Rhythm (The Long-Term Trend): Determines the overall market direction.
Distance (The Pullback Location): Identifies when the price has pulled back to an area of potential value.
Momentum (The Entry Trigger): Provides the final confirmation to enter a trade.
A signal is only generated when all three conditions align, providing a clear and disciplined approach to trading.
2. Core Components Explained
The indicator's logic is visualized through the background color and the oscillator at the bottom of the chart.
Rhythm: The Background Color
The background color is determined by the 200-period Exponential Moving Average (EMA), which defines the long-term trend.
🟦 Blue Background: The price is above the 200 EMA. The market is in an uptrend. You should ONLY look for BUY signals.
🟥 Red Background: The price is below the 200 EMA. The market is in a downtrend. You should ONLY look for SELL signals.
⬜ Gray Background: The price is hovering around the 200 EMA. The trend is unclear or the market is in a consolidation phase. You should STAY OUT and wait for a clear trend to establish.
Distance: The Oscillator & Zones
The multi-colored line at the bottom is the "Distance Oscillator." It measures how overbought or oversold the price is relative to its recent range (defaulting to the last 50 bars).
Overbought Zone (Red Area > +80): In a downtrend, this indicates the price has rallied to a potential resistance level and may be due for a turn back down.
Oversold Zone (Green Area < -80): In an uptrend, this indicates the price has dipped to a potential support level and may be due for a turn back up.
Momentum: The Stochastic Cross (The Hidden Trigger)
This indicator uses a standard Stochastic Oscillator in the background (not plotted to keep the chart clean) as the final entry trigger.
A bullish crossover (K-line crossing above D-line) confirms that downside momentum is fading and buying pressure is returning.
A bearish crossunder (K-line crossing below D-line) confirms that upside momentum is fading and selling pressure is returning.
3. How to Use: Trading Rules
BUY Signal (Long Entry)
Look for a green "▲" arrow below a candle. This signal appears ONLY when the following three conditions are met in order:
Rhythm is Bullish: The chart background must be BLUE.
Distance is Oversold: The Distance Oscillator must have recently dipped into the green "Support Zone" (below -80) within the last 3 bars. This shows a pullback has occurred.
Momentum Confirms: The Stochastic Oscillator has just executed a bullish crossover. This is the trigger.
Strategy: In a clear uptrend (blue background), wait for a price dip into the support area. Enter when the green arrow appears, confirming the dip is likely over and the uptrend is resuming.
SELL Signal (Short Entry)
Look for a red "▼" arrow above a candle. This signal appears ONLY when the following three conditions are met in order:
Rhythm is Bearish: The chart background must be RED.
Distance is Overbought: The Distance Oscillator must have recently pushed into the red "Resistance Zone" (above +80) within the last 3 bars. This shows a rally has occurred.
Momentum Confirms: The Stochastic Oscillator has just executed a bearish crossunder. This is the trigger.
Strategy: In a clear downtrend (red background), wait for a price rally into the resistance area. Enter when the red arrow appears, confirming the rally is likely over and the downtrend is resuming.
4. Best Practices & Risk Management
No Indicator is Perfect: This tool provides high-probability setups, not guaranteed wins. Always use proper risk management, including setting a stop-loss for every trade.
Context is Key: The indicator works best in trending markets. Be cautious during periods of low volatility or sideways chop (gray background).
Parameter Tuning: The default settings are a balanced starting point. Feel free to experiment with the lookback periods and thresholds in the indicator's settings to optimize for different assets and timeframes.
Pivot Points Standard 4-Hour TimeFrame VersionPivot Points Standard Modified to Suit the 4H Time Frame.
Taken as the original source code of the Pivot Points Standard and Modified.
📈 Linearity (ER 0–1) + ADRMAX % Table
This indicator combines two powerful concepts to help traders assess trend efficiency and intraday thrust strength:
🔹 1. Linearity (Kaufman Efficiency Ratio)
Measures how efficiently price has trended over a selected lookback period.
Values range from 0 to 1, where:
1.0 = perfectly trending market (no noise)
0.0 = completely choppy market (all noise)
Optional method: New High Persistence (fraction of bars in the period that hit a new high).
🔹 2. ADRMAX % (Average Daily Range Max as %)
Calculates the average of top % biggest green daily candles (measured as % range: (high - low) / low × 100) over a given lookback.
Projects this ADRMAX % above current lows as a thrust-level expectation.
Marks candles exceeding this dynamic threshold, helping identify unusual momentum.
📊 On-Chart Table Display
Real-time display of:
Linearity (0–1 scale)
ADRMAX %
Table is color-coded and position-customizable.
🛠️ Use Cases:
Trend-following filters: only act when ER > 0.75.
Thrust detection: breakout days with range > ADRMAX.
Adaptive entries: combine both for better timing.
TRADING GURU - WatermarkHi guys,
If you are looking to add some watermark into your charts. You can use this indicator.
You can add add a title and a subtitle, if you want to write in diferents lines, you can use as you can see in the script.
All the features are customizable: position, text size, text color, background.
Enjoy it.