Momentum Trend Bands (MTB)📌 What Is the Momentum Trend Bands (MTB) Indicator?
The Momentum Trend Bands (MTB) is a custom-built trend detection indicator that blends momentum and volatility into a dynamic, visual system. Its core goal is to help traders identify the beginning and strength of a trend earlier than traditional tools like moving averages, while filtering out market noise.
🧠 What Is It Built On?
The indicator is built on two foundational concepts:
1. Rate of Change (ROC): This measures the speed at which the price is moving. We use a fast and a slow version of ROC and then calculate their difference. This difference gives us a momentum signal — it shows whether the price is gaining upward or downward strength.
2. Standard Deviation (Volatility): This shows how much the price fluctuates. By calculating it over a certain period, we can measure market noise and filter out weak, insignificant moves that might otherwise cause false signals.
Together, momentum shows direction, and volatility shows confidence.
🛠️ How Does It Work?
• The core of the indicator is a smoothed momentum signal, representing the net difference between fast and slow momentum.
• Around this signal, we build upper and lower bands — these are dynamic boundaries that expand or contract based on volatility.
• When the momentum breaks above or below these bands, it signals a strong directional move — suggesting the start or continuation of a trend.
The bands also serve a visual filter:
• If momentum stays within the bands, it implies the market is consolidating or ranging.
• When it exits the bands decisively, it implies strength in that direction.
📈 How to Use It?
1. Trend Entry:
o When the momentum signal rises above the upper band, it suggests a strong bullish trend may be starting.
o When the signal drops below the lower band, it indicates a bearish trend.
2. Stay Out of Chop:
o If the signal moves sideways within the bands, it’s best to avoid trading — the market is likely consolidating or ranging.
3. Visual Confirmation:
o The background color changes with the trend: green for bullish, red for bearish, gray for neutral. This makes it quick to read visually.
4. Signal Arrows:
o Small up or down arrows appear when trends begin, serving as early entry points.
⚙️ What Kind of Market Does It Work Best In?
• Trending Markets: MTB shines in markets with strong directional movement — whether up or down. It's designed to pick up momentum early and hold through trend continuation.
• Volatile Instruments: The built-in volatility filter helps in markets like crypto or commodities where price action is fast and erratic.
• Avoid Flat or Low-Volume Conditions: In sideways markets, MTB may stay gray or flip often — these are not ideal times to trade using this indicator alone.
💎 Why Is It Unique?
Unlike many indicators that react slowly (like moving averages) or trigger too often (like raw momentum), MTB balances early detection with reliability. Its unique combination of:
• ROC difference for directional intent,
• Smoothing for signal clarity,
• Bands scaled by volatility for robustness,
…makes it stand apart from commonly available indicators on platforms like TradingView.
Indicateurs et stratégies
21EMA Pullback (Simple)✅ Simplified 21EMA Pullback Screener (with Alert + Screener Output)
Criteria:
9EMA > 21EMA
21EMA > 50SMA
Price has either:
Touched the 21EMA (i.e., price's low ≤ 21EMA ≤ high), OR
Pierced and reclaimed (low < 21EMA and close > 21EMA)
VWAP + ADX Trend FilterVWAP + ADX Trend Identifier (Intraday)”
🔹 Description:
Write a short, clear summary like:
“This script combines VWAP and ADX to help identify intraday trend trades. Buy and sell signals appear when price crosses VWAP with ADX strength above a threshold, confirming directional bias.”
You can also include:
Best suited for NIFTY / BNIFTY
Ideal timeframe: 5–15 min
For educational or personal use
🔹 Visibility:
Public: Anyone can find it on TradingView. Must follow Pine Script Publishing Rules.
Invite-only: Useful if you want to share with selected people (like clients or premium users).
Private: Only you can see and use it.
📌 Important Tips for Publishing:
JK's Inside DayEvaluates today’s candle only after it's closed
Keeps screener alignment and alerting accurate for daily after-hours workflows
NP Screener with Alerts For Nifty 50 [NITIN PADALE]//@version=6
indicator('NP Screener with Alerts For Nifty 50 ', overlay = true)
////////////
// INPUTS //
filter_enabled = input.bool(false, '', group = 'Filter', inline = 'Filter')
filter_column = input.string('Price', title = 'Column', options = , group = 'Filter', inline = 'Filter')
filter_from = input.float(-9999999, 'From', group = 'Filter', inline = 'Filter')
filter_to = input.float(9999999, 'To', group = 'Filter', inline = 'Filter')
// SMA
rsi_len = input.int(14, title = 'RSI Length', group = 'Indicators')
rsi_os = input.float(30, title = 'RSI Overbought', group = 'Indicators')
rsi_ob = input.float(70, title = 'RSI Oversold', group = 'Indicators')
// TSI
tsi_long_len = input.int(25, title = 'TSI Long Length', group = 'Indicators')
tsi_shrt_len = input.int(13, title = 'TSI Short Length', group = 'Indicators')
tsi_ob = input.float(30, title = 'TSI Overbought', group = 'Indicators')
tsi_os = input.float(-30, title = 'TSI Oversold', group = 'Indicators')
// ADX Params
adx_smooth = input.int(14, title = 'ADX Smoothing', group = 'Indicators')
adx_dilen = input.int(14, title = 'ADX DI Length', group = 'Indicators')
adx_level = input.float(40, title = 'ADX Level', group = 'Indicators')
// SuperTrend
sup_atr_len = input.int(10, 'Supertrend ATR Length', group = 'Indicators')
sup_factor = input.float(3.0, 'Supertrend Factor', group = 'Indicators')
/////////////
// SYMBOLS //
u01 = input.bool(true, title = '', group = 'Symbols', inline = 's01')
u02 = input.bool(true, title = '', group = 'Symbols', inline = 's02')
u03 = input.bool(true, title = '', group = 'Symbols', inline = 's03')
u04 = input.bool(true, title = '', group = 'Symbols', inline = 's04')
u05 = input.bool(true, title = '', group = 'Symbols', inline = 's05')
u06 = input.bool(true, title = '', group = 'Symbols', inline = 's06')
u07 = input.bool(true, title = '', group = 'Symbols', inline = 's07')
u08 = input.bool(true, title = '', group = 'Symbols', inline = 's08')
u09 = input.bool(true, title = '', group = 'Symbols', inline = 's09')
u10 = input.bool(true, title = '', group = 'Symbols', inline = 's10')
s01 = input.symbol('HDFCBANK', group = 'Symbols', inline = 's01')
s02 = input.symbol('ICICIBANK', group = 'Symbols', inline = 's02')
s03 = input.symbol('RELIANCE', group = 'Symbols', inline = 's03')
s04 = input.symbol('INFY', group = 'Symbols', inline = 's04')
s05 = input.symbol('BHARTIARTL', group = 'Symbols', inline = 's05')
s06 = input.symbol('LT', group = 'Symbols', inline = 's06')
s07 = input.symbol('ITC', group = 'Symbols', inline = 's07')
s08 = input.symbol('TCS', group = 'Symbols', inline = 's08')
s09 = input.symbol('AXISBANK', group = 'Symbols', inline = 's09')
s10 = input.symbol('SBIN', group = 'Symbols', inline = 's10')
//////////////////
// CALCULATIONS //
filt_col_id = switch filter_column
'Price' => 1
'RSI' => 2
'TSI' => 3
'ADX' => 4
'SuperTrend' => 5
=> 0
// Get only symbol
only_symbol(s) =>
array.get(str.split(s, ':'), 1)
id_symbol(s) =>
switch s
1 => only_symbol(s01)
2 => only_symbol(s02)
3 => only_symbol(s03)
4 => only_symbol(s04)
5 => only_symbol(s05)
6 => only_symbol(s06)
7 => only_symbol(s07)
8 => only_symbol(s08)
9 => only_symbol(s09)
10 => only_symbol(s10)
=> na
// for TSI
double_smooth(src, long, short) =>
fist_smooth = ta.ema(src, long)
ta.ema(fist_smooth, short)
// ADX
dirmov(len) =>
up = ta.change(high)
down = -ta.change(low)
plusDM = na(up) ? na : up > down and up > 0 ? up : 0
minusDM = na(down) ? na : down > up and down > 0 ? down : 0
truerange = ta.rma(ta.tr, len)
plus = fixnan(100 * ta.rma(plusDM, len) / truerange)
minus = fixnan(100 * ta.rma(minusDM, len) / truerange)
adx_func(dilen, adxlen) =>
= dirmov(dilen)
sum = plus + minus
adx = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
adx
screener_func() =>
// RSI
rsi = ta.rsi(close, rsi_len)
// TSI
pc = ta.change(close)
double_smoothed_pc = double_smooth(pc, tsi_long_len, tsi_shrt_len)
double_smoothed_abs_pc = double_smooth(math.abs(pc), tsi_long_len, tsi_shrt_len)
tsi = 100 * (double_smoothed_pc / double_smoothed_abs_pc)
// ADX
adx = adx_func(adx_dilen, adx_smooth)
// Supertrend
= ta.supertrend(sup_factor, sup_atr_len)
// Set Up Matrix
screenerMtx = matrix.new(0, 6, na)
screenerFun(numSym, sym, flg) =>
= request.security(sym, timeframe.period, screener_func())
arr = array.from(numSym, cl, rsi, tsi, adx, sup)
if flg
matrix.add_row(screenerMtx, matrix.rows(screenerMtx), arr)
// Security call
screenerFun(01, s01, u01)
screenerFun(02, s02, u02)
screenerFun(03, s03, u03)
screenerFun(04, s04, u04)
screenerFun(05, s05, u05)
screenerFun(06, s06, u06)
screenerFun(07, s07, u07)
screenerFun(08, s08, u08)
screenerFun(09, s09, u09)
screenerFun(10, s10, u10)
///////////
// PLOTS //
var tbl = table.new(position.top_right, 6, 41, frame_color = #151715, frame_width = 1, border_width = 2, border_color = color.new(color.white, 100))
log.info(str.tostring(filt_col_id))
alert_msg = ''
if barstate.islast
table.clear(tbl, 0, 0, 5, 40)
table.cell(tbl, 0, 0, 'Symbol', text_halign = text.align_center, bgcolor = color.gray, text_color = color.white, text_size = size.small)
table.cell(tbl, 1, 0, 'Price', text_halign = text.align_center, bgcolor = color.gray, text_color = color.white, text_size = size.small)
table.cell(tbl, 2, 0, 'RSI', text_halign = text.align_center, bgcolor = color.gray, text_color = color.white, text_size = size.small)
table.cell(tbl, 3, 0, 'TSI', text_halign = text.align_center, bgcolor = color.gray, text_color = color.white, text_size = size.small)
table.cell(tbl, 4, 0, 'ADX', text_halign = text.align_center, bgcolor = color.gray, text_color = color.white, text_size = size.small)
table.cell(tbl, 5, 0, 'Supertrend', text_halign = text.align_center, bgcolor = color.gray, text_color = color.white, text_size = size.small)
if matrix.rows(screenerMtx) > 0
for i = 0 to matrix.rows(screenerMtx) - 1 by 1
is_filt = not filter_enabled or matrix.get(screenerMtx, i, filt_col_id) >= filter_from and matrix.get(screenerMtx, i, filt_col_id) <= filter_to
if is_filt
if str.length(alert_msg) > 0
alert_msg := alert_msg + ','
alert_msg
alert_msg := alert_msg + id_symbol(matrix.get(screenerMtx, i, 0))
rsi_col = matrix.get(screenerMtx, i, 2) > rsi_ob ? color.red : matrix.get(screenerMtx, i, 2) < rsi_os ? color.green : #aaaaaa
tsi_col = matrix.get(screenerMtx, i, 3) > tsi_ob ? color.red : matrix.get(screenerMtx, i, 3) < tsi_os ? color.green : #aaaaaa
adx_col = matrix.get(screenerMtx, i, 4) > adx_level ? color.green : #aaaaaa
sup_text = matrix.get(screenerMtx, i, 5) > 0 ? 'Down' : 'Up'
sup_col = matrix.get(screenerMtx, i, 5) < 0 ? color.green : color.red
table.cell(tbl, 0, i + 1, id_symbol(matrix.get(screenerMtx, i, 0)), text_halign = text.align_left, bgcolor = color.gray, text_color = color.white, text_size = size.small)
table.cell(tbl, 1, i + 1, str.tostring(matrix.get(screenerMtx, i, 1)), text_halign = text.align_center, bgcolor = #aaaaaa, text_color = color.white, text_size = size.small)
table.cell(tbl, 2, i + 1, str.tostring(matrix.get(screenerMtx, i, 2), '#.##'), text_halign = text.align_center, bgcolor = rsi_col, text_color = color.white, text_size = size.small)
table.cell(tbl, 3, i + 1, str.tostring(matrix.get(screenerMtx, i, 3), '#.##'), text_halign = text.align_center, bgcolor = tsi_col, text_color = color.white, text_size = size.small)
table.cell(tbl, 4, i + 1, str.tostring(matrix.get(screenerMtx, i, 4), '#.##'), text_halign = text.align_center, bgcolor = adx_col, text_color = color.white, text_size = size.small)
table.cell(tbl, 5, i + 1, sup_text, text_halign = text.align_center, bgcolor = sup_col, text_color = color.white, text_size = size.small)
if str.length(alert_msg) > 0
alert(alert_msg, freq = alert.freq_once_per_bar_close)
Clean Support/Resistance Rejection (Strict Filtering)Best buy and Sell signal based on support and resistance levels.
You can edit how many candle rejections you want after rejection on each level.
Enjoy!
MA20 / MA40 / MA100 / MA200LAchi1911@ MA20_MA100
Medias moviles en todos los periodos pra identificar tendencias
Breakout Strategy with EMA & VolumeA breakout strategy combined with EMA and Volume data to give you the best results.
Indicator includes:
EMA 20 and EMA 50
Volume indicator
RSI (14)
EMA Crossover + SuperTrend Retest//@version=5
indicator("EMA Crossover + SuperTrend Retest", overlay=true)
// Inputs for SuperTrend
atrLength = input.int(10, "ATR Length", minval=1)
Factor = input.float(3.0, "SuperTrend Multiplier", step=0.1)
// Calculate EMAs
ema13 = ta.ema(close, 13)
ema50 = ta.ema(close, 50)
ema200 = ta.ema(close, 200)
// Calculate SuperTrend
= ta.supertrend(Factor, atrLength)
// Plot EMAs
plot(ema13, "EMA 13", color=color.new(#FF6D00, 0))
plot(ema50, "EMA 50", color=color.new(#2962FF, 0))
plot(ema200, "EMA 200", color=color.new(#00BFA5, 0))
// Plot SuperTrend
plot(supertrend, "SuperTrend",
color=direction == 1 ? color.rgb(230, 13, 13) : color.rgb(17, 255, 0),
linewidth=2)
// Trend Conditions
uptrendFilter = ema50 > ema200 and close > supertrend
downtrendFilter = ema50 < ema200 and close < supertrend
// Crossover Conditions with Trend Filter
bullishCross = ta.crossover(ema13, ema50) and uptrendFilter
bearishCross = ta.crossunder(ema13, ema50) and downtrendFilter
// Retest Conditions (Both EMAs and SuperTrend)
bullishRetest = bullishCross and
(low <= ema50) and
(low <= ema200) and
(low <= supertrend)
bearishRetest = bearishCross and
(high >= ema50) and
(high >= ema200) and
(high >= supertrend)
// Plot Signals
plotshape(bullishRetest, "Bullish Signal", shape.triangleup,
location.belowbar, color=color.green, size=size.small)
plotshape(bearishRetest, "Bearish Signal", shape.triangledown,
location.abovebar, color=color.red, size=size.small)
// Alert Conditions
alertcondition(bullishRetest, "Bullish Alert",
"EMA13↑50 + Retest 50/200/SuperTrend")
alertcondition(bearishRetest, "Bearish Alert",
"EMA13↓50 + Retest 50/200/SuperTrend")
SDCALibraryMy Valuation Library for mostly crypto currency use, but some can be applied to other assets.
There are technical and on-chain indicator functions for use.
Technical Indicators:
1. **drawdown_zscore**
- **Summary**: Calculates the z-score of drawdowns over a specified lookback period.
- **Inputs**:
- `lookback_length` (int): Period for drawdown calculation.
- `zScoreLen` (int): Length for z-score calculation.
2. **sharpe_zscore**
- **Summary**: Computes the z-score of the Sharpe ratio using returns over a period and a smoothing length.
- **Inputs**:
- `length` (int): Period for returns calculation.
- `smalen` (int): Smoothing length for returns.
- `zScoreLen` (int): Length for z-score calculation.
3. **rsi_zscore**
- **Summary**: Calculates the z-score of the Relative Strength Index (RSI) with smoothing.
- **Inputs**:
- `length` (int): Period for RSI calculation.
- `smalen` (int): Smoothing length for RSI.
- `zScoreLen` (int): Length for z-score calculation.
4. **DFATH_zscore**
- **Summary**: Computes the z-score for a specific DFATH metric (details not specified).
- **Inputs**:
- `zScoreLen` (int): Length for z-score calculation.
5. **RTI_zscore**
- **Summary**: Calculates the z-score of a trend indicator based on data count and sensitivity.
- **Inputs**:
- `trend_data_count` (int): Number of data points for trend analysis.
- `trend_sensitivity_percentage` (int): Sensitivity threshold for trend detection.
- `zScoreLen` (int): Length for z-score calculation.
On-Chain (Crypto only, mostly BTC, ETH)
6. **SOPR_zscore**
- **Summary**: Computes the z-score of Spent Output Profit Ratio (SOPR) for a specific coin.
- **Inputs**:
- `zScoreLen` (int): Length for z-score calculation.
- `coin_sopr` (string): SOPR data for the specified coin.
7. **thermocap_zscore**
- **Summary**: Calculates the z-score of the Thermocap metric using moving average and coin-specific data.
- **Inputs**:
- `ma_len` (int): Length of the moving average.
- `ma_type` (string): Type of moving average.
- `zScoreLen` (int): Length for z-score calculation.
- `coin_index` (string): Coin index data.
- `coin_blocks_mined` (string): Data on blocks mined for the coin.
8. **MVRV_zscore**
- **Summary**: Computes the z-score of the Market Value to Realized Value (MVRV) ratio.
- **Inputs**:
- `zScoreLen` (int): Length for z-score calculation.
- `coin_MC` (string): Market capitalization data.
- `coin_MC_real` (string): Realized market capitalization data.
9. **supplyinprofit_zscore**
- **Summary**: Calculates the z-score of the percentage of coin supply in profit or loss, optionally adjusted for alpha decay.
- **Inputs**:
- `isAlphaDecayAdjusted` (bool): Whether to apply alpha decay adjustment.
- `zScoreLen` (int): Length for z-score calculation.
- `coin_profit_address_percent` (string): Percentage of addresses in profit.
- `coin_loss_address_percent` (string): Percentage of addresses in loss.
10. **realized_price_zscore**
- **Summary**: Computes the z-score of the realized price based on realized market cap and supply.
- **Inputs**:
- `zScoreLen` (int): Length for z-score calculation.
- `coin_MC_real` (string): Realized market capitalization data.
- `coin_supply` (string): Coin supply data.
11. **CVVD_zscore**
- **Summary**: Calculates the z-score of Cumulative Value Days Destroyed (CVVD) metric.
- **Inputs**:
- `zScoreLen` (int): Length for z-score calculation.
- `coin_MC_real` (string): Realized market capitalization data.
- `coin_total_volume` (string): Total volume data for the coin.
12. **NUPL_zscore**
- **Summary**: Computes the z-score of Net Unrealized Profit and Loss (NUPL) metric.
- **Inputs**:
- `zScoreLen` (int): Length for z-score calculation.
- `coin_MC` (string): Market capitalization data.
- `coin_MC_real` (string): Realized market capitalization data.
Moving AveragesThis indicator allows you to seamlessly apply one or multiple moving averages simultaneously on your chart. You can easily select from predefined periods: 10, 20, 50, 100, and 200.
It is pre-configured to use Exponential Moving Averages (EMA) by default, so there’s no need to input or adjust the type manually—just enable the ones you need and you're ready to go.
Ideal for traders who rely on dynamic trend analysis and want a quick, clutter-free setup for multiple EMAs
Quad Rotation - StochasticThis Indicator is a step up from the Triad Rotation Indicator previously made, as it has 4 Stochastic signals rather then 3.
It can be used mainly to identify potential reversal periods. If the Instrument becomes overbought, or oversold with all 4 stochastics a horizontal highlight will appear, either green or red. Green indicates the instrument is oversold, and may reverse soon, meaning you should take a buying positions, and red indicates an overbought position, where you may want to sell due to a reversal downward.
Additionally, you can set an alarm if all 4 stochastic indicators signal overbought or oversold. This will help reduce your need to watch each instrument, and reduce the likelihood of overtrading.
If you have comments regarding this indicator, if you found it helpful, or would like other improvements feel free to email me. If you are looking for other custom indicators, also feel free to email me. Email: thejak77@aol.com. This is an email rarely monitored, so please be patient, thank you!
All the best, and stay profitable!
Breakout Entry Signals//@version=5
indicator("Breakout Entry Signals", overlay=true)
length = input.int(20, title="Breakout Period")
highestHigh = ta.highest(high, length)
lowestLow = ta.lowest(low, length)
longCondition = close > highestHigh
shortCondition = close < lowestLow
plotshape(longCondition, location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(shortCondition, location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)
Average True Range (50%)This script is used to calculate and display the Average True Range (ATR) scaled down to 50% of its original value. ATR is a volatility indicator that measures how much the price of an asset moves within a certain period. This script allows users to choose a smoothing method to calculate the ATR, including RMA, SMA, EMA, or WMA.
Simple Position CalculatorThis indicator provides a real-time position sizing calculator designed for fast momentum trading. It instantly calculates optimal trade size based on your risk parameters, entry/exit prices, and exchange conditions (fees/slippage). Perfect for high-speed entries during candle closes and breakouts.
CPR-NIFTY-BUY-SELL-BY APRThis indicator will enable the Novice traders to find the write entry and exit for nifty option / spot trading.
Traders can use it carefully when the more option towards the expected direction. Take the entry after signal and hold it until you find the red candle close below the previous green candle for buy vice versa for sell trade.
if any updates or suggestion kindly send mail to jsbaskaran1@gmail.com
Double Inside Bar Alert (1-1 Only)Double Inside Bar Alert Indicator
Stay ahead of breakout opportunities with our Double Inside Bar Alert Indicator. This tool automatically scans your watchlist and notifies you in real-time whenever a double inside bar pattern appears—an advanced price action setup known for signaling strong potential breakouts or reversals.
Whether you’re a day trader or swing trader, this indicator helps you:
Spot consolidation zones early before major price moves
Receive instant alerts across your entire watchlist
Filter noise and focus on high-probability chart setups
Perfect for traders who rely on price action and want to catch momentum shifts as they form.
Pionex Signal Bot (Single Position)Pionex Signal Bot (Single Position) Script - Created by Jon (Pionex)
Basic code functionality for Pionex users to get started with Signal Bot
DJZS Session Tracker (PDT-Aligned)//@version=5
indicator("DJZS Session Tracker (PDT-Aligned)", overlay=true, max_lines_count=500)
// Extract current date/time
var int y = year(time)
var int mo = month(time)
var int d = dayofmonth(time)
// Convert local session times (PDT = UTC-7)
asia_start = timestamp("America/Los_Angeles", y, mo, d, 17, 0)
asia_end = timestamp("America/Los_Angeles", y, mo, d + 1, 2, 0)
london_start = timestamp("America/Los_Angeles", y, mo, d + 1, 0, 0)
london_end = timestamp("America/Los_Angeles", y, mo, d + 1, 9, 0)
ny_start = timestamp("America/Los_Angeles", y, mo, d + 1, 5, 0)
ny_end = timestamp("America/Los_Angeles", y, mo, d + 1, 14, 0)
in_session(start, end) =>
time >= start and time < end
asia = in_session(asia_start, asia_end)
london = in_session(london_start, london_end)
ny = in_session(ny_start, ny_end)
// Plot background for sessions
bgcolor(asia ? color.new(color.aqua, 85) : na)
bgcolor(london ? color.new(color.green, 85) : na)
bgcolor(ny ? color.new(color.orange, 85) : na)
// Track session highs/lows
var float asiaHigh = na
var float asiaLow = na
var float londonHigh = na
var float londonLow = na
var float nyHigh = na
var float nyLow = na
if asia
asiaHigh := na(asiaHigh) ? high : math.max(asiaHigh, high)
asiaLow := na(asiaLow) ? low : math.min(asiaLow, low)
else
asiaHigh := na
asiaLow := na
if london
londonHigh := na(londonHigh) ? high : math.max(londonHigh, high)
londonLow := na(londonLow) ? low : math.min(londonLow, low)
else
londonHigh := na
londonLow := na
if ny
nyHigh := na(nyHigh) ? high : math.max(nyHigh, high)
nyLow := na(nyLow) ? low : math.min(nyLow, low)
else
nyHigh := na
nyLow := na
// Plot session highs/lows
plot(asiaHigh, "Asia High", color=color.aqua, style=plot.style_linebr, linewidth=1)
plot(asiaLow, "Asia Low", color=color.aqua, style=plot.style_linebr, linewidth=1)
plot(londonHigh, "London High", color=color.green, style=plot.style_linebr, linewidth=1)
plot(londonLow, "London Low", color=color.green, style=plot.style_linebr, linewidth=1)
plot(nyHigh, "NY High", color=color.orange, style=plot.style_linebr, linewidth=1)
plot(nyLow, "NY Low", color=color.orange, style=plot.style_linebr, linewidth=1)
Choppiness ZONE OverlayPurpose
This script overlays choppiness zones directly onto the price chart to help traders identify whether the market is trending or ranging. It is designed to filter out low-probability trades during high choppiness conditions.
How It Works
Calculates the Choppiness Index over a user-defined period using ATR and price range.
Divides choppiness into four zones:
30 to 40: Low choppiness, possible trend initiation, shown in yellow.
40 to 50: Moderate choppiness, transition zone, shown in orange.
50 to 60: High choppiness, weakening momentum, shown in red.
60 and above: Extreme choppiness, avoid trading, shown in purple.
Highlights each zone with customizable color fills between the high and low of the selected range.
Triggers a real-time alert when choppiness exceeds 60.
Features
Customizable choppiness zones and color settings.
Real-time alert when market becomes extremely choppy (choppiness ≥ 60).
Visual zone overlay on the price chart.
Compatible with all timeframes.
Lightweight and responsive for scalping, intraday, or swing trading.
Tip
Use this tool as a volatility or trend filter. Combine it with momentum or trend-following indicators to improve trade selection.
MA Cross MTF Alert (Miu)This script extends the classic moving average crossover strategy with support for up to 8 user-defined symbols across 4 custom timeframes, combined with a visual and alert system designed for traders who monitor multiple assets simultaneously.
Unlike traditional MA crossover tools, this script enables traders to receive real-time alerts for crossovers across multiple assets and timeframes, even when the script is not actively displayed on the chart — ideal for passive monitoring in multi-asset strategies.
What it does:
This script calculates two customizable moving averages (SMA or EMA) for each selected symbol and timeframe.
It then tracks crossover events:
- Bullish crossover when the fast MA crosses above the slow MA
- Bearish crossunder when the fast MA crosses below the slow MA
On the chart, it also displays the crossover signals for the current symbol and timeframe using color-coded cross icons.
Key features:
- Select SMA or EMA type for both moving averages
- Customize MA lengths and colors
- Works with any asset and timeframe
- Alerts include symbol and timeframe info for easy identification
How to use:
1) Add the indicator to your chart.
2) Choose the moving average type and lengths.
3) Enable/disable any of the 8 symbols and 4 timeframes.
4) Set up TradingView alerts by clicking “Create Alert” and selecting one of the alert() calls.
5) You will receive a message like:
BTC (1h) | MA Crossover ▲ or ETH (15m) | MA Crossunder ▼
Technical note:
This script uses request.security() to retrieve moving average values from up to 8 different symbols and 4 different timeframes in real time.
Feel free to leave your feedback or suggestions in the comments section below.
Enjoy!
Avions Ultimate indicator70% wr backtest it yourself. works best on bitcoin 30m timeframe works the best for me
Momentum Contour Pulse [ApexLegion]🌊 Momentum Contour Pulse
*Advanced Multi-Layer Momentum Visualization with High-Precision Trend Reversal Detection*
📖 **OVERVIEW**
The **Momentum Contour Pulse** is a sophisticated momentum analysis tool that combines topographic-style visualization with precision trend reversal signals. This indicator creates dynamic "contour maps" of market momentum, similar to elevation maps, where color intensity and gradient effects reveal the strength and direction of underlying market forces.
**Key Innovation:** Unlike traditional momentum indicators that show simple lines or histograms, this system renders momentum as flowing, gradient-based bands that expand and contract with market volatility, providing an intuitive visual representation of market energy.
✨ **KEY FEATURES**
🎨 **Dynamic Contour Visualization**
- **20-Level Gradient System**: Creates smooth topographic-style momentum bands
- **Adaptive Color Intensity**: Glow effects strengthen with momentum conviction
- **Dual-Color Zones**: Cyan for bullish momentum, Purple for bearish momentum
- **Fade Effects**: Smooth visual transitions during momentum changes
⚡ **Precision Pulse Signals**
- **🟢 Bull Pulse**: Triggered at trend reversal to upward momentum + maximum intensity
- **🔴 Bear Pulse**: Triggered at trend reversal to downward momentum + maximum intensity
- **Professional Glow Effects**: Multi-layer plotshape rendering for premium visual quality
- **ATR-Based Positioning**: Signals placed at precise reversal points with volatility-adjusted spacing
🔧 **Advanced Technical Engine**
- **ATG Filter System**: Proprietary dual-timeframe EMA flow analysis with angular separation
- **Adaptive Volatility Bands**: Dynamic expansion/contraction based on market conditions
- **Multi-Condition Confirmation**: Combines trend detection, breakout analysis, and momentum strength
- **Intensity Filtering**: Only top 25% intensity signals qualify for pulse alerts
🚀 **HOW TO USE**
### **For Visual Analysis:**
1. **Contour Reading**: Brighter bands = stronger momentum, darker bands = weaker momentum
2. **Direction Assessment**: Cyan glow = bullish bias, Purple glow = bearish bias
3. **Momentum Tracking**: Watch band intensity changes to gauge momentum shifts
**For Flow Analysis:**
1. **🟢 Bull Pulse**: Monitor for upside pressure when pulse appears at support levels
2. **🔴 Bear Pulse**: Observe downside flow when pulse appears at resistance levels
3. **Confirmation**: Validate momentum expansion with other technical analysis for optimal engagement zones
**For Educational Purpose:**
1. Enable **"Show Debug Table"** to see all internal calculations
2. Enable **"Show Debug Lines"** to visualize trend zones and breakout levels
3. Study how momentum intensity correlates with price movements
⚙️ **CONFIGURATION GUIDE**
**ATG Filter Settings** 🎯
- **Short-Term Flow Length (21)**: Controls fast EMA sensitivity
- **Long-Term Flow Length (55)**: Controls slow EMA baseline
- **Volatility Expansion Multiplier (1.75)**: Adjusts breakout zone sensitivity
- **Trend Angle Threshold (25°)**: Sets minimum slope requirement for trend detection
**Visual Customization** 🎨
- **Upper Band Color**: Customize bullish momentum color (default: Cyan)
- **Lower Band Color**: Customize bearish momentum color (default: Purple)
- **Base Glow Intensity (3.0)**: Controls overall visual brightness
- **Momentum Boost Multiplier (1.3)**: Amplifies visual response to strong moves
**Learning Tools** 🔧
- **Show Debug Table**: Reveals all calculation steps and decision logic
- **Show Debug Lines**: Displays trend zones and breakout thresholds
- **Intensity Smoothing Period (8)**: Controls signal responsiveness vs stability
📚 **EDUCATIONAL VALUE**
This indicator serves as an excellent learning tool for understanding:
**Momentum Analysis Concepts:**
- How dual-timeframe EMA analysis reveals trend structure
- The relationship between volatility and trend confirmation
- Angular measurement techniques for trend strength assessment
**Advanced Pine Script Techniques:**
- Multi-level gradient rendering using fill() functions
- Dynamic color saturation based on calculated intensity
- Sophisticated fade effect systems using historical arrays
- Professional signal visualization with multi-layer plotshape
**Market Psychology:**
- How momentum builds and dissipates in trending markets
- Visual representation of market conviction through color intensity
- The relationship between breakout patterns and momentum confirmation
⚠️ **IMPORTANT NOTES**
**Analysis Guidelines:**
- Use on multiple timeframes for comprehensive momentum assessment
- Combine with support/resistance levels for enhanced flow initiation accuracy
- Consider overall market context when interpreting directional moves
**Important Notes:**
- Disable debug features for optimal chart performance
- Default settings are optimized for most market conditions
**Signal Interpretation:**
- Pulse signals indicate potential flow reversal points, not guaranteed outcomes
- Higher intensity signals generally show better momentum expansion reliability
- Always practice proper risk management regardless of directional move strength
⚠️ **Limitations**
1. **Backtesting Limitations**
This indicator is not a strategy and cannot perform official backtesting on TradingView's engine.
Pulse signals are visual cues only, not verified historical trades.
2. **Regression Band and ATG Filter Inherent Lag**
Linear regression bands are calculated from past data, creating natural lag.
The dual-timeframe EMA analysis (21/55) also requires sufficient data for trend establishment.
3. **High Intensity Threshold May Miss Signals**
The 75% intensity requirement filters for premium signals but may miss moderate opportunities.
In low-volatility periods, pulse signals may become infrequent.
4. **Single Indicator Dependency Risk**
Momentum Contour Pulse works best when combined with support/resistance analysis.
Relying solely on pulse signals without market context may reduce effectiveness.
5. **Parameter Sensitivity**
Modifying ATG filter settings or intensity thresholds should be done carefully.
Excessive sensitivity may produce false signals; excessive filtering may miss valid setups.
🎓 **TECHNICAL METHODOLOGY**
The indicator employs a sophisticated multi-step process:
1. **Flow Analysis**: Calculates dual-timeframe EMA separation and converts to angular measurements
2. **Threshold Adaptation**: Dynamically adjusts trend strength requirements based on historical volatility
3. **Breakout Detection**: Identifies price movements beyond adaptive volatility bands
4. **Intensity Calculation**: Normalizes momentum strength to 0-1 range with smoothing
5. **Visual Rendering**: Applies 20-level gradient system with dynamic transparency
6. **Signal Generation**: Filters for trend changes meeting maximum intensity criteria
**Core Algorithm:**
flowSeparation = math.atan(flowFast_ATG - flowSlow_ATG) * 180 / math.pi
- Converts dual-timeframe EMA separation into precise angular momentum measurement, enabling topographic-style visualization of market flow intensity.
! (i.imgur.com)
🎨 **Visual Features Showcase**
**Multi-Layer Contour Visualization in Action**
**Dynamic Gradient Bands:** Watch how the 20-level gradient system creates topographic-style momentum maps. The **emerald upper contours** represent bullish flow zones, while **violet lower contours** indicate bearish pressure areas. Notice how band intensity **glows brighter** during strong momentum phases and **fades** during consolidation.
**Precision Pulse Signal:** The **🟢 green pulse** (left side) demonstrates perfect trend reversal detection at the momentum flow initiation point. The multi-layer glow effect creates professional-grade signal visualization that stands out without cluttering the chart.
**Adaptive Band Expansion:** Observe how contour bands dynamically **expand during volatility** and **contract during calm periods**, automatically adjusting to market conditions using ATR-based calculations.
📊 **What You're Seeing:**
• **Emerald Glow Zones** → Bullish momentum dominance
• **Violet Flow Areas** → Bearish pressure regions
• **Gradient Intensity** → Real-time momentum strength
• **Pulse Signals** → High-conviction reversal points
• **Smooth Transitions** → Advanced fade effect system
✅ Usage Disclaimer
Momentum Contour Pulse is a visual analytics tool designed for educational and informational purposes only.
It is not financial advice, nor should its signals be interpreted as trading recommendations.
Users are solely responsible for their own trading decisions.
Always practice appropriate risk management and consult with a licensed financial professional when necessary.
The creator of this tool assumes no liability for any financial losses resulting from its use.