ICT Killzones & Pivots [TFO] [FJK]Originally by tradeforopp I added the concept of Open Ranges.
ToDo:
- configure alerts
- add more box style options
趨勢分析
📈 Pro EMA/SMA Buy Sell (Clean & Glowing) 📈 Pro EMA/SMA Buy Sell
This indicator plots a crossover-based buy/sell signal system using:
- A fast Exponential Moving Average (EMA)
- A slower Simple Moving Average (SMA)
🔹 BUY Signal: When EMA crosses above SMA
🔹 SELL Signal: When EMA crosses below SMA
Features:
✅ Clean glowing lines for EMA and SMA
✅ Transparent glowing BUY (green) and SELL (red) labels
✅ Real-time alert conditions for automated strategy triggers
Ideal for:
- Intraday and Swing Traders
- Beginners looking for trend-based signals
- Chart setups requiring minimal noise but powerful visuals
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)
Color Change EMA 200 (4H)200 Color Change EMA (4H Locked)
Overview
This indicator displays a 200-period Exponential Moving Average (EMA) that is locked to the 4-hour timeframe, regardless of what chart timeframe you're currently viewing. The EMA line changes color dynamically based on price action to provide clear visual trend signals.
Key Features
• Multi-Timeframe Capability : Always shows the 4H 200 EMA on any chart timeframe
• Dynamic Color Coding :
- Green: Price is above the 200 EMA (bullish condition)
- Red: Price is below the 200 EMA (bearish condition)
• Clean Visual Design : Bold 2-pixel line width for clear visibility
• Real-time Updates : Colors change instantly as price crosses above or below the EMA
How to Use
1. Add the indicator to any timeframe chart
2. The 4H 200 EMA will appear as a smooth line
3. Watch for color changes:
- When the line turns green, it indicates price strength above the key moving average
- When the line turns red, it suggests price weakness below the moving average
4. Use for trend identification, support/resistance levels, and entry/exit timing
Best Practices
• Combine with other technical analysis tools for confirmation
• Use the color changes as alerts for potential trend shifts
• Consider the 200 EMA as a major support/resistance level
• Works well for swing trading and position sizing decisions
Settings
• Length : Default 200 periods (customizable)
• Source : Default closing price (customizable)
Perfect for traders who want to keep the important 4H 200 EMA visible across all timeframes with instant visual trend feedback.
Smart Money Index (SMI) EnhancedSmart Money Index (SMI) Enhanced is an indicator that visualizes the behavior of "smart money" based on intraday price movements.
📌 Based on Don Hays’ classic formula:
SMI = Yesterday’s value – Morning movement + Late-day movement
🔍 Key Features:
Highlighted buy/sell zones for accumulation and distribution;
Alerts for crossovers between SMI and its moving average;
Supports multiple timeframes (hourly, daily, weekly).
✅ Useful for identifying institutional sentiment and potential market reversal points.
ℹ️ Works with stocks, indices, and cryptocurrencies.
This script is for educational purposes only and not financial advice.
EMA-MACD-Stoch by PashaThis indicator combines three popular technical analysis tools — EMA, MACD, and Stochastic — to generate strong and filtered buy/sell signals. It incorporates its own strategic logic and provides trade suggestions only when multiple confirmations align.
Developed by Mehmet (alias: Pasha), this indicator is designed for users seeking short-term entries in markets like BIST. It performs most effectively on the 30-minute timeframe, but can also be used across different timeframes.
GER40 BIAS Forecast [ML-Based]🎯 Purpose:
This indicator provides a daily directional bias (LONG / SHORT / FLAT) for the German DAX40 index (GER40) using a statistically optimized scoring model, developed with 6 years of historical data and verified through machine learning analysis.
🧠 How the Score Works (ML-derived):
Each trading day receives a bias score (0–3) for both long and short setups, based on these 3 factors from the daily candle:
Condition Long Score Logic Short Score Logic
1. Candle Direction Close > Open → +1 Close < Open → +1
2. VWAP Slope VWAP > VWAP → +1 VWAP < VWAP → +1
3. Volatility Strength Range > SMA(20) → +1 Close < Yesterday's Low → +1 (Rejection)
➡️ A score of 2 or more triggers a Long or Short Bias for the day.
These scoring rules are derived from a machine learning model trained on 6 years of DAX data, identifying the most predictive features for directional follow-through.
📘 Bias Interpretation:
Score Result Daily Bias Background Color
Long Score ≥ 2 LONG Green
Short Score ≥ 2 SHORT Red
Both < 2 FLAT Gray
📍 Indicator Features:
🎨 Background coloring to visualize daily bias directly on intraday charts
🔢 Optional score labels (e.g. “Long: 2 | Short: 1”) per calendar day
📈 VWAP line plotted for additional intraday context
❌ Entry signals removed – this version focuses solely on forecasting directional bias
💡 Use Case:
Morning planning aid
Filtering for high-probability intraday setups
Combining with session-based entry systems
ALMA Trend-boxThis indicator uses the ALMA (Arnaud Legoux Moving Average) – a special type of moving average that provides a smoother and more responsive trend line. Based on the slope (angle) of the ALMA line and the price position relative to it, the indicator:
Colors candles in three different ways (to reflect market structure),
Plots the ALMA line on the chart,
Detects consolidation and highlights it with blue candles, background shading, and horizontal "box" lines.
📘 Candle Colors – How to Interpret Them
Candle Color Meaning Interpretation
🟩 Green Uptrend ALMA is sloping upward and price is above ALMA – look for buying opportunities.
🟥 Red Downtrend ALMA is sloping downward and price is below ALMA – look for selling opportunities.
🔵 Blue Sideways (Consolidation) Weak or neutral trend – market is moving sideways or accumulating.
🔵 What Do Blue Candles and the “Trend-box” Mean?
Blue candles represent consolidation periods, which occur when:
The slope of the ALMA line is less than ±40°, indicating a lack of strong trend,
The price behavior is not consistent with the direction of the slope (e.g., price is below ALMA even though ALMA is pointing upward).
During this time:
Blue candles and a blue background appear to visually highlight the consolidation,
Two dashed horizontal lines (a “box”) are drawn at the high and low of the consolidation range.
📌 The Trend-box helps you visually spot ranging markets, which often precede strong breakouts.
📈 How to Use This Indicator in Practice
Trend Following Strategy:
When candles are green → consider long trades.
When candles are red → consider short trades.
Use additional indicators (like RSI, MACD, or volume) to confirm entries.
Breakout Trading:
When blue candles and the box appear, wait for the price to:
Break above the box → potential long breakout.
Break below the box → potential short breakout.
You can set pending orders (buy stop/sell stop) just outside the box range.
Avoiding Choppy Entries:
Blue candles signal uncertainty – avoid entering impulsively during this time. Wait for trend confirmation.
⚙️ Adjustable Settings
ALMA Length – controls how quickly the moving average reacts.
Slope Threshold – determines the minimum angle required to define a trend.
Candle Colors – fully customizable (green/red/blue by default).
✅ Conclusion
ALMA Trend-box is a powerful visual tool for identifying:
Trending conditions (bullish or bearish),
Sideways markets (consolidation),
Breakout setups with clearly marked zones.
It works well on its own or as part of a larger trading system. Blue candles tell you to be patient, while transitions into green/red candles indicate developing trends.
🔥 Volatility Squeeze Breakout Strategy (TP/SL in Points)This strategy is designed to catch explosive breakout moves from low-volatility consolidations using a "volatility squeeze" + breakout + momentum" approach. It identifies high-probability buy opportunities when the market is in a tight range and preparing for expansion.
✅ Entry Condition:
- Previous candle is in a squeeze
- Current candle breaks above channel high
- Momentum is positive (ROC)
🎯 Exit Conditions:
- Take Profit in fixed points above entry price
- Stop Loss in fixed points below entry price
🧰 Inputs:
- ATR Length for volatility
- Channel Length for breakout levels
- ROC Length for momentum
- Squeeze threshold (ATR/close)
- TP/SL in absolute price points
📊 Plots:
- Buy signals shown as green triangles
- Channel high/low plotted
- TP/SL levels shown as live lines when in position
Suitable for intraday breakout scalping or directional trades
when price expands from compression zones.
Macro Dashboard Multi-TickerThis indicator gives you a compact, high-impact overview of up to 10 custom assets — showing whether each is currently trading above or below a key moving average on a shared timeframe.
🟩 Above MA = colored bar
⬛ Below MA = dimmed bar
Features:
Monitor up to 10 symbols (stocks, crypto, ETFs, etc.)
Customize:
- Symbol
- Color
- Timeframe
- MA type (EMA/SMA)
- MA length
Shared logic keeps the layout clean and consistent.
Use Cases:
- Build a macro trend dashboard for SPY, QQQ, BTC, ETH, ARKK, IWM, DXY, VIX, etc.
- Confirm risk-on alignment
- Identify broad market rotation or weakness
- Pair with individual asset setups to stay in sync with the environment
This tool is ideal for traders who want a one-glance check on market strength without cluttering their main charts. It's fast, flexible, and highly visual.
SMA Trend BoxCalculates trend base on a short SMA and a long SMA and displays a text box with result on right-side of canvas.
Helpful when trading on intraday timeframes but you want to know what the bigger-picture trend is (i.e. if you always want to trade in the direction of primary trend).
JK's Inside DayEvaluates today’s candle only after it's closed
Keeps screener alignment and alerting accurate for daily after-hours workflows
Simplified STH-MVRVSTH-MVRV for MSTR
STH-MVRV compares the Market Value (current price × circulating supply) to the Realized Value (the total cost basis of coins held by short-term holders,
Inside DayOnly uses completed bars (high , low ) — ignores today's intraday bar.
Plots only after market close, not during the current session.
Designed for end-of-day screeners and alerts, reliable for after-hours analysis.
Inside DayCompares the current bar’s high and low to the previous day’s high and low.
Triggers when the current day is fully inside the prior day’s range.
Plots an orange label above the bar.
Volume Point of Control with Fib Based Profile🍀Description:
This indicator is a comprehensive volume profile analysis tool designed to identify key price levels based on trading activity within user-defined timeframes. It plots the Point of Control (POC), Value Area High (VAH), and Value Area Low (VAL), along with dynamically calculated Fibonacci levels derived from the developing period's range. It offers extensive customization for both historical and developing levels.
🍀Core Features:
Volume Profiling (POC, VAH, VAL):
Calculates and plots the POC (price level with the highest volume), VAH, and VAL for a selected timeframe (e.g., Daily, Weekly).
The Value Area percentage is configurable. 70% is common on normal volume profiles, but this script allows you to configure multiple % levels via the fib levels. I recommend using 2 versions of this indicator on a chart, one has Value Area at 1 (100% - high and low of lookback) and the second is a specified VA area (i.e. 70%) like in the chart snapshot above. See examples at the bottom.
Historical Levels:
Plots POC, VAH, and VAL from previous completed periods.
Optionally displays only "Unbroken" levels – historical levels that price has not yet revisited, which can act as stronger magnets or resistance/support.
The user can manage the number of historical lines displayed to prevent chart clutter.
Developing Levels:
Shows the POC, VAH, and VAL as they form in real-time during the current, incomplete period. This provides insight into intraday/intra-period value migration.
Dynamic Fibonacci Levels:
Calculates and plots Fibonacci retracement/extension levels based dynamically on the range between the developing POC and the developing VAH/VAL.
Offers 8 configurable % levels above and below POC that can be toggled on/off.
Visual Customization:
Extensive options for colors, line styles, and widths for all plotted levels.
Optional gradient fill for the Value Area that visualizes current price distance from POC - option to invert the colors as well.
Labels for developing levels and Fibonacci levels for easy identification.
🍀Characteristics:
Volume-Driven: Levels are derived from actual trading volume, reflecting areas of high participation and price agreement/disagreement.
Timeframe Specific: The results are entirely dependent on the chosen profile timeframe.
Dynamic & Static Elements: Developing levels and Fibs update live, while historical levels remain fixed once their period closes.
Lagging (Historical) & Potentially Leading: Historical levels are based on the past, but are often respected by future price action. Developing levels show current dynamics.
🍀How to Use It:
Identifying Support & Resistance: Historical and developing POCs, VAHs, and VALs are often key areas where price may react. Unbroken levels are particularly noteworthy.
Market Context & Sentiment: Trading above the POC suggests bullish strength/acceptance of higher prices, while trading below suggests bearishness/acceptance of lower prices.
Entry/Exit Zones: Interactions with these levels (rejections, breakouts, tests) can provide potential entry or exit signals, especially when confirming with other analysis methods.
Dynamic Targets: The Fibonacci levels calculated from the developing POC-VA range offer potential intraday/intra-period price targets or areas of interest.
Understanding Value Migration: Observing the movement of the developing POC/VAH/VAL throughout the period reveals where value is currently being established.
🍀Potential Drawbacks:
Input Sensitivity: The choice of timeframe, Value Area percentage, and volume resolution heavily influences the generated levels. Experimentation is needed for optimal settings per instrument/market. (I've found that Range Charts can provide very accurate volume levels on TV since the time element is removed. This helps to refine the accuracy of price levels with high volume.)
Volume Data Dependency: Requires accurate volume data. May be less reliable on instruments with sparse or questionable volume reporting.
Chart Clutter: Enabling all features simultaneously can make the chart busy. Utilize the line management inputs and toggle features as needed.
Not a Standalone Strategy: This indicator provides context and key levels. It should be used alongside other technical analysis tools and price action reading for robust decision-making.
Developing Level Fluctuation: Developing POC/VA/Fib levels can shift considerably, especially early in a new period, before settling down as more volume accumulates and time passes.
🍀Recommendations/Examples:
I recommend have this indicator on your chart twice, one has the VA set at 1 (100%) and has the fib levels plotted. The second has the VA set to 0.7 (70%) to highlight the defined VA.
Here is an example with 3 on a chart. VA of 100%, VA of 80%, and VA of 20%
RS Triple MA Confluence Signal (Lower Pane)This indicator outputs a binary signal (1 or 0) based on triple moving average confluence of an asset’s relative strength vs a benchmark (e.g., SPY, BTC, etc).
✅ A value of 1 indicates full confluence, where the asset's relative strength is above three customizable moving averages (short, medium, and long).
❌ A value of 0 indicates confluence is off.
This version is designed to be used in a lower pane for:
Quick visual scanning
Dashboard-style layouts
Systematic filtering or alerting
Pairs perfectly with the main overlay tool:
👉 Relative Strength Triple MA Confluence
Use that version for candle coloring and price-level signals, and this version for clean signal tracking and screening support.
RBD/DBR Zone HelperUpdated ORB that builds on prvious rendetions and forward thinkers to beat the retail markets
HTF 3rd Weekly High/LowThis indicator plots horizontal lines for the high and low of a selected past weekly candle, allowing traders to visualize higher time frame (HTF) structure on lower time frame charts (e.g., 1H, 4H, etc.).
Features:
Custom Weekly Range Selection: Use the dropdown to choose which weekly candle to reference — from the current week (0) to up to five weeks back.
Clean Horizontal Lines: High and low levels of the selected week are drawn as persistent horizontal lines.
Automatic Text Labels: Labels like Week-3H and Week-3L are shown on the right side of the chart, matching the week selected.
Customization:
Line colors
Line width and style (solid, dotted, dashed)
Text label offset
Automatic Refresh: Levels and labels are redrawn at the start of each new week to stay current with your selection.
Trend Persistence Counter (TPC) by riskcipher🧭 Trend Persistence Counter (TPC) – A Simple Price Action Trend Duration Tool
Trend Persistence Counter (TPC) is a lightweight indicator that counts how long a trend persists after a breakout.
It is entirely based on price action, without using any moving averages or smoothing. The goal is to give a simple, rule-based view of trend continuity.
🧠 How It Works (Logic Overview)
This indicator switches between two modes: bullish and bearish.
If close > previous high, the counter enters bullish mode, and starts at +1
While in bullish mode:
If close >= previous low → continue the uptrend → +1 each bar
If close < previous low → trend ends → reset to 0, switch to bearish mode
If close < previous low, the counter enters bearish mode, and starts at -1
While in bearish mode:
If close <= previous high → continue the downtrend → -1 each bar
If close > previous high → trend ends → reset to 0, switch to bullish mode
This provides a bar-by-bar count of trend persistence based on whether price holds structure.
🎯 Use Cases
Track how long a trend continues after a breakout
Quickly detect when trend structure breaks
Help visually filter “strong” vs “weak” moves
Build logic-based alerts (e.g., trend continues for N bars)
🔍 Why Use This Instead of Traditional Indicators?
This is not meant to replace moving averages or trend filters.
But it offers some advantages for those who prefer structure-based logic:
Feature TPC
Based on Price Action ✅ Yes
Uses Lagging Filters ❌ No moving average or smoothing
Trend Duration Measurement ✅ Counts valid consecutive moves
Complexity ⚪ Very simple and transparent
It’s a simple concept and easy to understand, but still useful when combined with other tools or visualized on its own.
⚙️ Technical Notes
Works on any timeframe or instrument
The value is positive during bullish persistence, negative during bearish
Value resets to 0 when trend structure breaks
All logic is calculated bar-by-bar, in real time
✅ Example Usage Ideas
Highlight candles when TPC value crosses a certain threshold (e.g., strong breakout continuation)
Use the zero-cross as a potential reversal warning
Filter trend signals in your existing strategies
Daily 10, 50, 150, 200 DMAIrrespective of the Chart, i.e be it weekly or monthly DMA will be displayed on Daily Values.
Do note that On a weekly chart, this gives you the DMA value from only one daily candle per week, usually Friday’s close. So if a DMA crossover (say, 10-DMA crossing 50-DMA) actually happens on Wednesday, you won’t see that reflected until Friday's value is displayed on the weekly chart. That causes crossover dates to appear wrong or delayed.
Up/Down Days Ratio - 6 Month RollingUp/Down Ratio for last 6 months
It helps to analyze the trend of the stock
Relative Strength Triple MA ConfluenceThis tool highlights moments of strong outperformance based on three customizable moving averages of an asset's relative strength vs a benchmark (SPY, BTC, etc).
✅ Green candles + triangle-up icon appear when relative strength is above all 3 MAs (short, medium, long)
❌ Red triangle-down appears when full confluence is lost
🔧 Fully customizable MA types (EMA or SMA), lengths, and benchmark
Ideal for traders seeking high-conviction confirmation based on stacked RS strength.