SAR Volume ScalperSAR Volume Scalper is a minimalist intraday scalping indicator designed for 1–2 minute charts, optimized for high-liquidity markets such as NASDAQ (NQ) and Gold (GC).
The indicator combines Parabolic SAR price crossings with a neutral volume participation filter (Volume ≥ EMA(Volume)), ensuring that signals appear only when the market is active, without relying on rare or aggressive volume spikes.
🔑 Core Logic
Parabolic SAR identifies precise micro-trend shifts
Trend EMA filters directional bias and reduces counter-trend trades
Neutral volume filter confirms market participation while preserving signal frequency
ATR-based targets adapt automatically to current volatility
🎯 Designed For
High-frequency scalping on 1–2 minute timeframes
Manual trade execution during active market sessions
Traders who prefer price and flow confirmation over heavy indicator stacking
⚠️ Disclaimer
This indicator is a decision-support tool and should not be used as standalone trading advice.
It is not intended for fully automated trading.
Indicators and strategies
HTF Candles on Lower Timeframes (Manual OHLC)Hi everyone, this indicator is designed to plot higher timeframes candles on the chart. Here are the details:
The data is built directly from OHLC values at specific time intervals, instead of using request.security.
It supports 1H / 2H / 4H / 8H / 1D higher timeframes, and can be viewed on lower timeframes such as 5m / 10m / 15m / 30m.
The main idea behind this chart is to serve as a foundation for building other indicators that need to operate on higher timeframes while still being visualized on lower timeframes.
Feel free to share your feedback or ideas for improvement in the comments below.
Breakdown Hold (1m) - Manual Level//@version=6
// =============================================================================
// EN — Script Overview
// Name: Breakdown Hold (1m) - Manual Level
// Purpose:
// Detect a simple pattern: price breaks below a manually set level, then
// stabilizes ("holds") within ~1 minute (default) without further dumping.
// When confirmed, it prints "HOLD OK" and triggers an alert.
//
// How it works:
// 1) You input a fixed price Level.
// 2) On the FIRST break below Level (LOW sweep by default), the script "arms".
// 3) For the next N bars on the 1-minute stream (default N=1):
// - If price drops too deep (beyond Max Further Drop), it fails.
// 4) When the window ends:
// - If it did NOT drop too deep AND it bounced from the window low by at
// least Min Bounce (and optional reclaim above Level), it confirms HOLD.
//
// Recommended usage:
// - Works best on a 1-minute chart.
// - If you are on another timeframe, keep "Force 1m Evaluation" enabled
// so the logic still evaluates on 1-minute data.
//
// Alert:
// - Condition title: breakdown_hold_confirm
//
// =============================================================================
// 中文 — 脚本说明
// 名称:Breakdown Hold (1m) - Manual Level
// 用途:
// 识别一个非常简单的“跌破手动固定价位后,约 1 分钟内踩住不再继续下跌”的形态。
// 确认后在图上打出 “HOLD OK”,并触发提醒。
//
// 原理:
// 1) 手动输入固定价位 Level。
// 2) 当价格第一次跌破 Level(默认按 LOW 刺破)后进入监测(armed)。
// 3) 在接下来 N 根 1分钟K(默认 N=1)内:
// - 若继续下探太深(超过允许最大继续下跌幅度),判定失败,不触发。
// 4) 窗口结束时:
// - 若未下探过深,且从窗口最低点出现至少 Min Bounce 的反弹
// (可选要求收盘站回 Level 上方),则判定“踩住确认”。
//
// 推荐用法:
// - 最推荐 1分钟图使用。
// - 如果你在其他周期图上用,请保持 “Force 1m Evaluation” 开启,
// 让判断仍然基于 1分钟数据进行。
//
// 提醒条件:
// - breakdown_hold_confirm
// =============================================================================
False Breakdown Long Confirm (dropthoughcashin)// =============================================================================
// EN — Script Introduction
// Name: False Breakdown Long Confirm (dropthoughcashin)
// Timeframe: Designed for 5-minute charts (works on other TFs but tuned for 5m)
//
// What this script does:
// This indicator detects a “false breakdown” (liquidity sweep) below a support
// level, followed by a reclaim and a retest-hold confirmation. When confirmed,
// it prints a label and triggers the alert condition: dropthoughcashin.
//
// Core logic (3 steps):
// 1) Define the support level (Key Level):
// - Pivot mode: uses the latest confirmed pivot low as support.
// - Manual mode: uses your manually entered support level.
// 2) False breakdown + reclaim:
// - Price sweeps below support (low < support),
// - The sweep must be shallow (limited by ATR multiple or fixed points),
// - Then price reclaims: close back above the support.
// 3) Retest-hold confirmation (within N bars after reclaim):
// - Price retests near the support (low <= support + tolerance),
// - And closes at/above the support (hold),
// - If confirmed within the window, signal triggers once.
//
// Key parameters:
// - Max Penetration: filters out “deep breakdowns” you do NOT want.
// - Retest tolerance: how close price must retest the support.
// - Confirm within N bars: time limit to confirm after reclaim.
//
// Notes / Limitations:
// - Pivot support is lagging by design (pivot is confirmed after pLen bars).
// - This is a signal/alert tool, not a full trading strategy.
// =============================================================================
//
// 中文 — 脚本介绍
// 名称:False Breakdown Long Confirm(dropthoughcashin)
// 周期:主要为 5分钟K 设计(其他周期也能用,但默认参数以 5m 优化)
//
// 脚本作用:
// 本指标用于识别“假跌破(扫流动性/扫止损)”形态:价格先刺破支撑位,随后快速收回
// 并在短时间内回踩踩住,形成做多确认。确认后会在图上打标签,并触发提醒条件:
// dropthoughcashin。
//
// 核心逻辑(3步):
// 1) 定义支撑位(Key Level):
// - Pivot 模式:用最近确认的 pivot low(局部低点)作为支撑。
// - Manual 模式:用你手动输入的固定支撑价位。
// 2) 假跌破 + 收回(reclaim):
// - 价格最低点刺破支撑(low < 支撑),
// - 但下穿幅度必须“浅”(用 ATR 倍数或固定点数限制),
// - 随后收盘重新站回支撑上方(close > 支撑)。
// 3) 回踩踩住确认(retest-hold):
// - 在收回之后的 N 根K内,价格回踩到支撑附近(low <= 支撑 + 容忍),
// - 且收盘守住支撑(close >= 支撑),
// - 满足则触发一次信号与提醒。
//
// 关键参数说明:
// - Max Penetration(最大下穿深度):过滤掉“下穿太深”的破位,避免误触发。
// - Retest tolerance(回踩容忍范围):定义回踩要贴近支撑到什么程度。
// - Confirm within N bars(确认窗口):收回后限定多少根K内必须完成回踩确认。
//
// 注意事项:
// - Pivot 支撑位天然滞后(需要 pLen 根K确认后才成立),属于“稳但晚”的设计。
// - 该脚本是信号/提醒工具,不是完整的交易策略(不包含止损止盈与仓位管理)。
Nikhil TimezoneNikhil Timezone Indicator
The Nikhil Timezone indicator is a time-based visual tool designed to help traders identify and analyze key intraday price behavior using Indian Standard Time (IST).
🔶 11:30–12:30 IST Body Range Zone
Automatically highlights the candle body range formed between 11:30 AM and 12:30 PM IST.
The zone is drawn using only open and close prices (not wicks), giving a clearer representation of real buying and selling pressure.
The box dynamically expands during the session to capture the highest and lowest candle bodies within this time window.
Useful for identifying midday consolidation, support/resistance zones, and potential breakout or rejection areas later in the session.
🔴 2:30 PM IST Candle Marker
Marks the 2:30 PM IST candle with a vertical dotted red line.
Adds a label for quick visual identification.
Helpful for traders who track late-session momentum, institutional activity, or pre-close setups.
📈 Best Use Cases
Intraday trading (especially index and liquid stocks)
Breakout and range-expansion strategies
Time-based market structure analysis
IST-focused trading workflows
This indicator is lightweight, non-repainting, and works seamlessly across intraday timeframes.
E9 MTF Candle Array E9 MTF Candle Array plots up to six selectable higher-timeframe candle sets (e.g., H1/H4/D1/W1) as “mini candles” stacked to the right of your chart for fast multi-TF context. For each HTF, it also draws a shaded High–Low range box on the main chart that spans the candle’s time window and updates in real time as the current HTF candle forms, then “locks” the prior box when a new HTF candle opens. Optional features include HTF labels and countdown timers, Open/Close/High/Low trace lines with price labels, day/interval markers, and imbalance highlighting (FVG/VI) on the displayed HTF candle array.
*Work in progress.
PA SystemPA System
短简介 Short Description(放在最上面)
中文:
PA System 是一套以 AL Brooks 价格行为为核心的策略(Strategy),将 结构(HH/HL/LH/LL)→ 回调(H1/L1)→ 二次入场(H2/L2 微平台突破) 串成完整可回测流程,并可选叠加 BoS/CHoCH 结构突破过滤 与 Liquidity Sweep(扫流动性)确认。内置风险管理:定风险仓位、部分止盈、保本、移动止损、时间止损、冷却期。
English:
PA System is an AL Brooks–inspired Price Action strategy that chains Market Structure (HH/HL/LH/LL) → Pullback (H1/L1) → Second Entry (H2/L2 via Micro Range Breakout) into a complete backtestable workflow, with optional BoS/CHoCH structure-break filtering and Liquidity Sweep confirmation. Built-in risk management includes risk-based sizing, partial exits, breakeven, trailing stops, time stop, and cooldown.
⸻
1) 核心理念 Core Idea
中文:
这不是“指标堆叠”,而是一条清晰的价格行为决策链:
结构确认 → 回调出现 → 小平台突破(二次入场)→ 风控出场。
策略把 Brooks 常见的“二次入场”思路程序化,同时用可选的结构突破与扫流动性模块提升信号质量、减少震荡误入。
English:
This is not an “indicator soup.” It’s a clear price-action decision chain:
Confirmed structure → Pullback → Micro-range breakout (second entry) → Risk-managed exits.
The system programmatically implements the Brooks-style “second entry” concept, and optionally adds structure-break and liquidity-sweep context to reduce chop and improve trade quality.
⸻
2) 主要模块 Main Modules
A. 结构识别 Market Structure (HH/HL/LH/LL)
中文:
使用 pivot 摆动点确认结构,标记 HH/HL/LH/LL,并可显示最近一组摆动水平线,方便对照结构位置。
English:
Uses confirmed pivot swings to label HH/HL/LH/LL and optionally plots the most recent swing levels for clean structure context.
B. 状态机 Market Regime (State Machine + “Always In”)
中文:
基于趋势K强度、EMA关系与波动范围,识别市场环境(Breakout/Channel/Range)以及 Always-In 方向,用于过滤不合适的交易环境。
English:
A lightweight regime engine detects Breakout/Channel/Range and an “Always In” directional bias using momentum and EMA/range context to avoid low-quality conditions.
C. 二次入场 Second Entry Engine (H1→H2 / L1→L2)
中文:
• H1/L1:回调到结构附近并出现反转迹象
• H2/L2:在 H1/L1 后等待最小 bars,然后触发 Micro Range Breakout(小平台突破)并要求信号K收盘强度达标
这一段是策略的“主发动机”。
English:
• H1/L1: Pullback into structure with reversal intent
• H2/L2: After a minimum wait, triggers on Micro Range Breakout plus a configurable close-strength filter
This is the main “entry engine.”
D. 可选过滤器 Optional Filters (Quality Boost)
BoS/CHoCH(结构突破过滤)
中文: 可识别 BoS / CHoCH,并可要求“入场前最近 N bars 必须有同向 break”。
English: Detects BoS/CHoCH and can require a recent same-direction break within N bars.
Liquidity Sweeps(扫流动性确认)
中文: 画出 pivot 高/低的流动性水平线,检测“刺破后收回”的 sweep,并可要求入场前出现同向 sweep。
English: Tracks pivot-based liquidity levels, confirms sweeps (pierce-and-reclaim), and can require a recent sweep before entry.
E. FVG 可视化 FVG Visualization
中文: 提供 FVG 区域盒子与管理模式(仅保留未回补 / 仅保留最近N),主要用于区域理解与复盘,不作为强制入场条件(可自行扩展)。
English: Displays FVG boxes with retention modes (unfilled-only or last-N). Primarily for context/analysis; not required for entries (you can extend it as a filter/target).
⸻
3) 风险管理 Risk Management (Built-In)
中文:
• 定风险仓位:按账户权益百分比计算仓位
• SL/TP:基于结构 + ATR 缓冲,且限制最大止损 ATR 倍
• 部分止盈:到达指定 R 后减仓
• 保本:到达指定 R 后推到 BE
• 移动止损:到达指定 R 后开始跟随
• 时间止损:持仓太久不动则退出
• 冷却期:出场后等待 N bars 再允许新单
English:
• Risk-based sizing: position size from equity risk %
• SL/TP: structure + ATR buffer with max ATR risk cap
• Partial exits at an R threshold
• Breakeven at an R threshold
• Trailing stop activation at an R threshold
• Time stop to reduce chop damage
• Cooldown after exit to avoid rapid re-entries
⸻
4) 推荐使用方式 Recommended Usage
中文:
• 推荐从 5m / 15m / 1H 开始测试
• 想更稳:开启 EMA Filter + Break Filter + Sweep Filter,并提高 Close Strength
• 想更多信号:关闭 Break/Sweep 过滤或降低 Swing Length / Close Strength
• 回测时务必设置合理的手续费与滑点,尤其是期货/指数
English:
• Start testing on 5m / 15m / 1H
• For higher quality: enable EMA Filter + Break Filter + Sweep Filter and increase Close Strength
• For more signals: disable Break/Sweep filters or reduce Swing Length / Close Strength
• Use realistic commissions/slippage in backtests (especially for futures/indices)
⸻
5) 重要说明 Notes
中文:
结构 pivot 需要右侧确认 bars,因此结构点存在天然滞后(确认后不会再变)。策略逻辑尽量避免不必要的对象堆叠,并对数组/对象做了稳定管理,适合长期运行与复盘。
English:
Pivot-based structure requires right-side confirmation (inherent lag; once confirmed it won’t change). The script is designed for stability and resource-safe object management, suitable for long sessions and review.
⸻
免责声明 Disclaimer(建议原样保留)
中文:
本脚本仅用于教育与研究目的,不构成任何投资建议。策略回测结果受市场条件、手续费、滑点、交易时段、数据质量等影响显著。使用者需自行验证并承担全部风险。过往表现不代表未来结果。
English:
This script is for educational and research purposes only and does not constitute financial advice. Backtest results are highly sensitive to market conditions, fees, slippage, session settings, and data quality. Use at your own risk. Past performance is not indicative of future results.
MES ORB Bulletproof + PSAR + SMA200 + BB(21) by PantelisMES ORB Bulletproof + PSAR + SMA200 + BB(21) by Pantelis
Ocean Master [JOAT]Ocean Master QE - Advanced Oceanic Market Analysis with Quantum Flow Dynamics
Overview
Ocean Master QE is an open-source overlay indicator that combines multiple analytical techniques into a unified market analysis framework. It uses ATR-based dynamic channels, volume-weighted order flow analysis, multi-timeframe correlation (quantum entanglement concept), and harmonic oscillator calculations to provide traders with a comprehensive view of market conditions.
What This Indicator Does
The indicator calculates and displays several key components:
Dynamic Price Channels - ATR-adjusted upper, middle, and lower channels that adapt to current volatility conditions
Order Flow Analysis - Separates buying and selling volume pressure to calculate a directional delta
Smart Money Index - Volume-weighted order flow metric that highlights potential institutional activity
Harmonic Oscillator - Weighted combination of 10 Fibonacci-period EMAs (5, 8, 13, 21, 34, 55, 89, 144, 233, 377) to identify trend direction
Multi-Timeframe Correlation - Measures price correlation across 1H, 4H, and Daily timeframes
Wave Function Analysis - Momentum-based state detection that identifies when price action becomes decisive
How It Works
The core channel calculation uses ATR with a configurable quantum sensitivity factor:
float atr = ta.atr(i_atrLength)
float quantumFactor = 1.0 + (i_quantumSensitivity * 0.1)
float quantumATR = atr * quantumFactor
upperChannel := ta.highest(high, i_length) - (quantumATR * 0.5)
lowerChannel := ta.lowest(low, i_length) + (quantumATR * 0.5)
midChannel := (upperChannel + lowerChannel) * 0.5
Order flow is calculated by separating volume into buy and sell components based on candle direction:
The harmonic oscillator weights shorter EMAs more heavily using inverse weighting (1/1, 1/2, 1/3... 1/10), creating a responsive yet smooth trend indicator.
Signal Generation
Confluence signals require multiple conditions to align:
Bullish: Harmonic oscillator crosses above zero + positive Smart Money Index + positive Order Flow Delta
Bearish: Harmonic oscillator crosses below zero + negative Smart Money Index + negative Order Flow Delta
Dashboard Panel (Top-Right)
Bias - Current market direction based on price vs mid-channel
Entanglement - Multi-timeframe correlation score (0-100%)
Wave State - COLLAPSED (decisive) or SUPERPOSITION (uncertain)
Volume - Current volume relative to 20-period average
Volatility - ATR as percentage of price
Smart Money - Volume-weighted order flow reading
Visual Elements
Ocean Depth Layers - Gradient fills between channel levels representing different price zones
Channel Lines - Upper (surface), middle, and lower (seabed) dynamic levels
Divergence Markers - Triangle shapes when harmonic oscillator crosses zero
Confluence Labels - BULL/BEAR labels when multiple factors align
Suggested Use Cases
Identify trend direction using the harmonic oscillator and channel position
Monitor order flow for potential institutional activity
Use multi-timeframe correlation to confirm trade direction across timeframes
Watch for confluence signals where multiple factors align
Input Parameters
Length (default: 14) - Base period for channel and indicator calculations
ATR Length (default: 14) - Period for ATR calculation
Quantum Depth (default: 3) - Complexity factor for calculations
Quantum Sensitivity (default: 1.5) - Channel width multiplier
Timeframe Recommendations
Works on all timeframes. Higher timeframes (4H, Daily) provide smoother signals; lower timeframes require faster reaction times and may produce more noise.
Limitations
Multi-timeframe requests add processing overhead
Order flow estimation is based on candle direction, not actual order book data
Correlation calculations require sufficient historical data
Open-Source and Disclaimer
This script is published as open-source under the Mozilla Public License 2.0 for educational purposes. It does not constitute financial advice. Past performance does not guarantee future results. Always use proper risk management and conduct your own analysis before trading.
- Made with passion by officialjackofalltrades
Minervini Trend Template upgrade - TP Minervini Trend Template (SMA/EMA + RS vs Major Indices)
Credits: Original script by © yogy.frestarahmawan (MPL 2.0).
Modified & updated by: © TradersPod (added MA selection + RS comparison vs major index futures).
This indicator is a simple checklist tool based on Mark Minervini’s “Trend Template” concept. It helps you quickly see if a stock is behaving like a leading stock in an uptrend by evaluating key trend and strength conditions.
What it does:
>The script checks 8 conditions and shows the results in a table panel on your chart:
>Price is above MA150 and MA200
>MA150 is above MA200 (a classic “healthy uptrend” structure)
>MA200 is rising vs ~1 month ago (uses 22 bars back)
>MA50 is above MA150 and MA200
>Price is above MA50
>Price is at least 25% above the 52-week low (stronger stocks tend to be far from lows)
>Price is within 25% of the 52-week high (leaders often stay near highs)
>RS is > Major Indices (TradersPod upgrade)
At the bottom, it also totals how many conditions are met: (X of 8).
TradersPod upgrades included
1) SMA/EMA selection
You can choose whether the trend template uses:
SMA (Simple Moving Average)
or
EMA (Exponential Moving Average)
This lets you match your preferred moving-average style without changing the logic.
2) RS must beat the major indices (futures)
Instead of the old “RS > 70” rule, this updated version requires the stock’s RS Rating to be greater than the strongest (highest RS) among:
-Nasdaq Futures (NQ)
-S&P 500 Futures (ES)
-Dow Jones Futures (YM)
The table shows the RS Rating for each index futures symbol and then confirms whether the stock is stronger than the best-performing major index.
In other words:
If the stock can’t outperform the major indices, it’s probably not a true “leader.”
Inputs / settings
MA Type: SMA or EMA
High/Low Lookback Length: default 260 bars (approx. 52 weeks on daily charts)
Show 52-week High/Low: toggle on/off
Major Indices Symbols: you can change the futures tickers if your broker/data feed uses different symbols
Panel Position: choose where the table appears
Notes (important)
The RS calculation uses the chart’s timeframe (ex: Daily, Weekly). On Weekly charts, the lookbacks become weeks (not days).
This tool is a trend/strength filter, not a full trading strategy. Always add your own risk management, entries, and exits.
MA Alignment DetectorMA Alignment Detector : If it is bullish MA alignment, the color becomes red, if it is bearlish MA alignment, the color become green.
Volume Weighted Average Pricendicator(title="Volume Weighted Average Price", shorttitle="VWAP", overlay=true, timeframe="", timeframe_gaps=true)
hideonDWM = input(false, title="Hide VWAP on 1D or Above", group="VWAP Settings", display = display.data_window)
var anchor = input.string(defval = "Session", title="Anchor Period",
options= , group="VWAP Settings")
src = input(title = "Source", defval = hlc3, group="VWAP Settings", display = display.data_window)
offset = input.int(0, title="Offset", group="VWAP Settings", minval=0, display = display.data_window)
BANDS_GROUP = "Bands Settings"
CALC_MODE_TOOLTIP = "Determines the units used to calculate the distance of the bands. When 'Percentage' is selected, a multiplier of 1 means 1%."
calcModeInput = input.string("Standard Deviation", "Bands Calculation Mode", options = , group = BANDS_GROUP, tooltip = CALC_MODE_TOOLTIP, display = display.data_window)
showBand_1 = input(true, title = "", group = BANDS_GROUP, inline = "band_1", display = display.data_window)
bandMult_1 = input.float(1.0, title = "Bands Multiplier #1", group = BANDS_GROUP, inline = "band_1", step = 0.5, minval=0, display = display.data_window, active = showBand_1)
showBand_2 = input(false, title = "", group = BANDS_GROUP, inline = "band_2", display = display.data_window)
bandMult_2 = input.float(2.0, title = "Bands Multiplier #2", group = BANDS_GROUP, inline = "band_2", step = 0.5, minval=0, display = display.data_window, active = showBand_2)
showBand_3 = input(false, title = "", group = BANDS_GROUP, inline = "band_3", display = display.data_window)
bandMult_3 = input.float(3.0, title = "Bands Multiplier #3", group = BANDS_GROUP, inline = "band_3", step = 0.5, minval=0, display = display.data_window, active = showBand_3)
cumVolume = ta.cum(volume)
if barstate.islast and cumVolume == 0
runtime.error("No volume is provided by the data vendor.")
isNewPeriod = switch anchor
"Earnings" =>
new_earnings_actual = request.earnings(syminfo.tickerid, earnings.actual, barmerge.gaps_on, barmerge.lookahead_on, ignore_invalid_symbol=true)
new_earnings_standardized = request.earnings(syminfo.tickerid, earnings.standardized, barmerge.gaps_on, barmerge.lookahead_on, ignore_invalid_symbol=true)
not na(new_earnings_actual) or not na(new_earnings_standardized)
"Dividends" =>
new_dividends = request.dividends(syminfo.tickerid, dividends.gross, barmerge.gaps_on, barmerge.lookahead_on, ignore_invalid_symbol=true)
not na(new_dividends)
"Splits" =>
new_split = request.splits(syminfo.tickerid, splits.denominator, barmerge.gaps_on, barmerge.lookahead_on, ignore_invalid_symbol=true)
not na(new_split)
"Session" => timeframe.change("D")
"Week" => timeframe.change("W")
"Month" => timeframe.change("M")
"Quarter" => timeframe.change("3M")
"Year" => timeframe.change("12M")
"Decade" => timeframe.change("12M") and year % 10 == 0
"Century" => timeframe.change("12M") and year % 100 == 0
=> false
isEsdAnchor = anchor == "Earnings" or anchor == "Dividends" or anchor == "Splits"
if na(src ) and not isEsdAnchor
isNewPeriod := true
float vwapValue = na
float upperBandValue1 = na
float lowerBandValue1 = na
float upperBandValue2 = na
float lowerBandValue2 = na
float upperBandValue3 = na
float lowerBandValue3 = na
if not (hideonDWM and timeframe.isdwm)
= ta.vwap(src, isNewPeriod, 1)
vwapValue := _vwap
stdevAbs = _stdevUpper - _vwap
bandBasis = calcModeInput == "Standard Deviation" ? stdevAbs : _vwap * 0.01
upperBandValue1 := _vwap + bandBasis * bandMult_1
lowerBandValue1 := _vwap - bandBasis * bandMult_1
upperBandValue2 := _vwap + bandBasis * bandMult_2
lowerBandValue2 := _vwap - bandBasis * bandMult_2
upperBandValue3 := _vwap + bandBasis * bandMult_3
lowerBandValue3 := _vwap - bandBasis * bandMult_3
plot(vwapValue, title = "VWAP", color = #2962FF, offset = offset)
displayBand1 = showBand_1 ? display.all : display.none
upperBand_1 = plot(upperBandValue1, title="Upper Band #1", color = color.green, offset = offset, display = displayBand1, editable = showBand_1)
lowerBand_1 = plot(lowerBandValue1, title="Lower Band #1", color = color.green, offset = offset, display = displayBand1, editable = showBand_1)
fill(upperBand_1, lowerBand_1, title="Bands Fill #1", color = color.new(color.green, 95), display = displayBand1, editable = showBand_1)
displayBand2 = showBand_2 ? display.all : display.none
upperBand_2 = plot(upperBandValue2, title="Upper Band #2", color = color.olive, offset = offset, display = displayBand2, editable = showBand_2)
lowerBand_2 = plot(lowerBandValue2, title="Lower Band #2", color = color.olive, offset = offset, display = displayBand2, editable = showBand_2)
fill(upperBand_2, lowerBand_2, title="Bands Fill #2", color = color.new(color.olive, 95), display = displayBand2, editable = showBand_2)
displayBand3 = showBand_3 ? display.all : display.none
upperBand_3 = plot(upperBandValue3, title="Upper Band #3", color = color.teal, offset = offset, display = displayBand3, editable = showBand_3)
lowerBand_3 = plot(lowerBandValue3, title="Lower Band #3", color = color.teal, offset = offset, display = displayBand3, editable = showBand_3)
fill(upperBand_3, lowerBand_3, title="Bands Fill #3", color = color.new(color.teal, 95), display = displayBand3, editable = showBand_3)
OR + PM + PD + Daily Pivot (Labels Fixed)//@version=5
indicator("OR + PM + PD + Daily Pivot (Labels Fixed)", overlay=true)
// -------------------- Time --------------------
h = hour(time)
m = minute(time)
newDay = ta.change(time("D"))
// -------------------- Premarket & Opening Range --------------------
isPremarket = (h >= 4 and h < 9) or (h == 9 and m < 30)
isOpenRange = h == 9 and m >= 30 and m <= 35
// -------------------- Previous Day High / Low --------------------
pdh = request.security(syminfo.tickerid, "D", high )
pdl = request.security(syminfo.tickerid, "D", low )
plot(pdh, color=color.red, title="PDH")
plot(pdl, color=color.green, title="PDL")
if newDay
label.new(bar_index, pdh, "PDH", style=label.style_label_left, color=color.red, textcolor=color.white)
label.new(bar_index, pdl, "PDL", style=label.style_label_left, color=color.green, textcolor=color.white)
// -------------------- Pre-Market High / Low --------------------
var float pmh = na
var float pml = na
var bool pmLabelsPlotted = false
if newDay
pmh := na
pml := na
pmLabelsPlotted := false
if isPremarket
pmh := na(pmh) ? high : math.max(pmh, high)
pml := na(pml) ? low : math.min(pml, low)
plot(pmh, color=color.orange, title="PMH")
plot(pml, color=color.orange, title="PML")
if not isPremarket and not na(pmh) and not pmLabelsPlotted
label.new(bar_index, pmh, "PMH", style=label.style_label_left, color=color.orange, textcolor=color.black)
label.new(bar_index, pml, "PML", style=label.style_label_left, color=color.orange, textcolor=color.black)
pmLabelsPlotted := true
// -------------------- 5-Min High / Low --------------------
fiveHigh = request.security(syminfo.tickerid, "5", high)
fiveLow = request.security(syminfo.tickerid, "5", low)
var float fiveH = na
var float fiveL = na
var bool fiveLabelsPlotted = false
if newDay
fiveH := na
fiveL := na
fiveLabelsPlotted := false
if isOpenRange
fiveH := na(fiveH) ? fiveHigh : math.max(fiveH, fiveHigh)
fiveL := na(fiveL) ? fiveLow : math.min(fiveL, fiveLow)
plot(fiveH, color=color.blue, title="5m High")
plot(fiveL, color=color.blue, title="5m Low")
if not isOpenRange and not na(fiveH) and not fiveLabelsPlotted
label.new(bar_index, fiveH, "5m H", style=label.style_label_left, color=color.blue, textcolor=color.white)
label.new(bar_index, fiveL, "5m L", style=label.style_label_left, color=color.blue, textcolor=color.white)
fiveLabelsPlotted := true
// -------------------- 15-M
ADR Dashboard with Move, Left and AlertsIndicator Name: ADR Dashboard with Move, Left and Alerts
Overview
The ADR Dashboard is a powerful real-time trading tool that tracks how much a stock, crypto, or other asset has moved today relative to its Average Daily Range (ADR). It provides a clear visual representation of:
1. Today’s price movement (Move)
2. Remaining potential movement left to reach ADR (Left)
3. Percentage of ADR covered (% Covered)
4.Additionally, it provides automated alerts for key movement thresholds.
A) What it Does
1.Calculates the Average Daily Range (ADR):
2. Uses True Range over a user-defined lookback period (default 14 days).
3. ADR measures typical daily volatility.
B) Tracks Today’s Move:
1. Move = Current Price – Today’s Open (Realtime)
2. Positive → bullish move, Negative → bearish move
C) Tracks Remaining Potential (Left):
1. Left = ADR – |Move| (Realtime)
2. Shows how much of the ADR is still available for today’s move
3. Percentage Covered:
4. % Covered = |Move| / ADR × 100
D) Color-coded for visual clarity:
1. Green (<50%) → small move, plenty of range left
2. Yellow (50–80%) → moderate move, watch for acceleration
3. Orange (80–100%) → strong move, ADR almost reached
4. Red (>100%) → ADR exceeded, momentum may be exhausted
E) Dashboard Table:
1. Columns: ADR | Move | Left | % Covered
2. Position: middle-right of the chart
F) Left column color-coded:
1. Green → some ADR left
2. Red → ADR fully reached or exceeded
3. Move column: usually yellow for visibility, but could be enhanced for positive/negative moves
G) Alerts
The indicator provides directional alerts:
Bullish Alerts (upward moves):
1. 90% ADR warning: fires when Move ≥ 90% of ADR → early warning of strong bullish momentum
2. 100% ADR breach: fires when Move ≥ ADR → full daily range reached
Bearish Alerts (downward moves):
1. 90% ADR warning: fires when Move ≤ -90% of ADR → early warning of strong bearish momentum
2. 100% ADR breach: fires when Move ≤ -ADR → full daily range reached
All alerts are unique and fire once per session per threshold.
H) How Traders Can Use This Indicator
Momentum Trading:
1. Identify strong intraday moves approaching ADR.
2. Enter positions early at 90% ADR warning or take profits near 100% ADR.
Scalping & Intraday Trading:
1. Gauge how much of today’s range is left for quick entries/exits.
2. Avoid trades when ADR is almost fully consumed → reduces risk of reversals.
Swing Trading:
1. Combine with trend indicators to see if today’s move is significant relative to historical volatility.
I) Risk Management:
1. Set profit targets or stop-loss levels based on Move and Left values.
Visual Efficiency:
At-a-glance view of Move, Left, % Covered, and alert status without manual calculations.
Key Features
1. Real-time Move and Left updates
2. Color-coded % Covered and Left for quick visualization
3. Alerts for 90% and 100% ADR levels, bullish and bearish
4. Clean dashboard table at middle-right of the chart
5. Works across stocks, crypto, forex, and other markets
J) Why This Indicator is Powerful
1. Combines volatility (ADR) with real-time price tracking
2. Provides visual clarity and actionable alerts
3. Helps traders stay ahead of intraday moves, manage risk, and time entries/exits effectively
ETH 1-2-3 Rigor Strategy Entry & 2:1 Risk-Rewar- By: Labaxuria Descrição em Inglês (Copy & Paste):
This script is a technical analysis tool designed specifically for ETH/USDT on Daily (1D) and Weekly (1W) timeframes. It identifies the classic 1-2-3 reversal pattern to provide high-probability entry points with a strictly disciplined risk management approach.
Core Features:
C3 Trigger Identification: The indicator highlights the "Candle 3" (Confirmation Candle) where the breakout of "Point 2" occurs, validating the market structure shift.
Automated 2:1 Risk-Reward: Upon a BUY or SELL signal, the script automatically plots a Red Line (Stop Loss) at the recent pivot and a Green Line (Take Profit) at a fixed 2:1 ratio. This ensures that every win is twice the size of a potential loss.
Trend Filtering (Gray Line): It includes a 20-period Moving Average to ensure trades are aligned with the prevailing market momentum.
Compression Detection (White Candles): Identifies "Inside Bars" by coloring the candle body or borders white. This warns the trader of price compression and potential volatility buildup before a breakout.
How to Use:
BUY + C3: Enter long when the price closes above Point 2, ideally while trading above the gray 20-SMA.
SELL + C3: Enter short when the price closes below Point 2, ideally while trading below the gray 20-SMA.
Exit Strategy: Follow the plotted levels strictly. Exit at the red line to protect capital or at the green line to book profits.
BTC - StableFlow: Pit-Stop & Refuel EngineBTC – StableFlow: Pit-Stop & Refuel Engine | RM
Strategic Context: The Institutional Gas Station In the high-speed race of the crypto markets, Stablecoins (USDT, USDC, DAI) represent the Fuel, and Bitcoin is the Race Car. Most traders only look at the car's speed (Price), but they ignore the gas tank. The StableFlow Engine is a telemetry dashboard designed to monitor the "Fuel Pressure" within the ecosystem, identifying exactly when the car is being refueled and when it is running on empty.
The Telemetry Logic: How to Read the Race
The indicator operates on a Relative Velocity model. We aren't just looking at how many Stablecoins exist; we are measuring the Acceleration of Stablecoin Market Cap relative to the Acceleration of BTC Price.
1. The Fuel Reservoir (The Histogram)
• Cyan Zones (Refuel): The gas station is open. Institutional "Dry Powder" is flowing into stables faster than it is being spent on BTC. The tank is filling up.
• Orange Zones (Exhaust): The "Overdrive." The car is driving faster than the gas can be pumped. Price is outperforming the stablecoin supply—this is unsustainable and usually precedes a stall.
2. Lap Transitions (The Grey Lines)
These vertical markers signify a Regime Shift . They trigger the moment the momentum crosses the zero-axis, visually distinguishing the transition between a "Net-Refueling" period and a "Net-Exhaustion" period. While not used as direct entry signals, they define the Macro Lap we are currently in.
Operational Playbook: The Pit-Stop Signals
We don't just buy because the tank is full; we buy when the car exits the pits and begins to accelerate. This is captured by our proprietary Pit-Stop Pips.
• Blue Pip (Pit-Stop Buy): Triggered when the Refuel momentum has peaked and is now rotating back into the market. The refuel is complete; the car is rejoining the race with a full tank.
• Red Pip (Exhaust Sell): Triggered when the price acceleration has overextended relative to its fuel source and begins to "roll over." The tank is near empty; time for a tactical pull-back.
Settings & Calibration: The Pit Wall Dashboard
Signal Mode & Logic The engine features a dual-mode signaling system to adapt to different market conditions (or your personal preferred logic):
• Consecutive Mode: Best for high-velocity trends. Fires a pip after n bars of momentum reversal (Default: 2 bars).
• Percentage (%) Mode: Best for structural fades. Fires a pip when the momentum retraces by a specific percentage (e.g., 15%) from its local peak, regardless of the bar count.
Recommended Calibration
While the engine is versatile across various timeframes, the Weekly (1W) chart is the preferred setting for identifying high-conviction macro signals. Lower timeframes provide tactical speed, but the 1W frame offers significantly cleaner signals by filtering out the daily market noise.
Weekly (1W) — The Macro Signal (Preferred): * Velocity Lookback: 20 | Smoothing: 5.
Peak Lookback: 25 (Represents roughly half a year of telemetry data). This is a good starting point for identifying major cycle rotations.
Daily (1D) — The Tactical Pulse: * Velocity Lookback: 20 | Smoothing: 5.
Peak Lookback: 25 (Represents one trading month of telemetry). Useful for active swing traders looking for entry/exit timing within an established macro trend.
Technical Documentation
Data Sourcing & Aggregation The script utilizes request.security to aggregate a "Big Three" Stablecoin Market Cap (USDT + USDC + DAI). This prevents "False Exhaustion" signals caused by capital simply migrating between different stablecoin assets.
Mathematical Foundation The core engine calculates the Rate of Change (ROC) for the Aggregate Stablecoin Supply and BTC Price over a synchronized lookback window.
Formula Logic: Fuel Pressure = EMA ( ROC(Stables) - ROC(BTC) )
The Pit-Stop Pips utilize a local peak-finding algorithm via ta.highest and ta.lowest within a rolling 25-bar window to calculate the Relative Retracement Magnitude . This ensures signals are mathematically tied to the volatility of the current market regime.
The Dual-Fuel Framework: StableFlow x Liquisync
The StableFlow Engine is designed to function as the tactical counterpart to the Liquisync: Macro Pulse Engine . While Liquisync monitors the Global Supply Line (the "Tanker Truck" of M2 Liquidity moving from Central Banks toward the track with a 60-day lead), StableFlow measures the Immediate Fuel Pressure (the "Dry Powder" already in the pit lane, ready to be pumped into the car).
By using both indicators in tandem, you can follow the Dual-Fuel Strategy: Liquisync identifies the fundamental macro regime, while StableFlow identifies the specific "Refuel" and "Exhaustion" pivots within that regime. We will be providing a comprehensive breakdown of this synchronized telemetry in our upcoming Substack Masterclass: The Dual-Fuel Architecture.
Risk Disclaimer & Credits
The StableFlow is a thematic macro tool tracking on-chain liquidity proxies. Stablecoin data is subject to exchange reporting delays. This is not financial advice; it is a telemetry model for institutional education. Rob Maths is not liable for losses incurred via use of this model.
Tags:
indicator, bitcoin, btc, stablecoins, usdt, flow, liquidity, macro, refuel, institutional, robmaths, Rob Maths
Hookes Kinetics | IkkeOmarHooke's Kinetics: A Physics-Based Volatility System
This indicator applies the principles of Hooke's Law to financial time series data to model market volatility as a system of potential and kinetic energy.
Theoretical Foundation: Hooke's Law In physics, Hooke's Law states that the force (F) needed to extend or compress a spring by some distance (x) scales linearly with respect to that distance: F = -kx, where k is the spring constant.
Potential Energy (PE): PE = 0.5 * k * x^2 Kinetic Energy (KE): Energy possessed due to motion.
In this system, we treat Price Action as a spring. Compression (Potential Energy): When price consolidates, volatility compresses. The "spring" is being wound up. Energy is accumulated, not released. Release (Kinetic Energy): When price breaks out of compression, potential energy transforms into kinetic energy. The spring snaps back, driving price motion.
Indicator Mechanics The Hooke's Kinetics oscillator visualizes this energy transfer cycle to identify trend origins and exhaustion points.
Accumulating Energy (Potential): The Blue Area represents the buildup of Potential Energy. This occurs during periods of low volatility (consolidation). The algorithm detects when price variance drops below a threshold (representing spring compression) and aggregates this "stored force" over time. As long as the price remains compressed, the Blue potential energy grows.
Energy Conversion (Kinetic Release): The Red Histogram represents Kinetic Energy. When volatility expands significantly (a breakout), the system triggers a release event. The accumulated Blue potential energy is discharged and converted into the Red kinetic spike. This marks the moment the "spring" is released.
Trend Direction & Decay: Once the Kinetic Energy (Red spike) appears, the "explosive" phase is active. As the Red histogram decays (lowers back to zero), the market enters a coasting phase. The trend direction is established by the price movement during the initial Kinetic release. Traders observe the price vector as the Red energy dissipates to confirm the prevailing trend.
Reversion Signals (Bonus): Extreme peaks in Kinetic Energy (exceptionally high Red spikes) indicate a maximum extension of the spring. Just as a physical spring oscillates, extreme kinetic release often precedes a mean reversion. If price action opposes the direction of the Kinetic decay, it signals a likely reversal.
Visual Reference Referencing the chart above: Blue Ramp: Note the linear buildup of the blue area during sideways price action. This is the "loading" phase. Red Spike: Note the immediate drop in Blue and spike in Red coinciding with the green highlight circles on the chart. These are the breakout points. Green Circles: These highlight the specific candles where Potential converted to Kinetic, marking the optimal entry or decision points.
Code Description
The system defines market state using a composite variable "k" (Stiffness), which combines Price Volatility (NATR) and Relative Volume (RVOL).
k_price = range_natr != 0 ? 1.0 - ((natr - lowest_natr) / range_natr) : 0 k = (k_price * price_weight) + (k_vol * vol_weight) Here, we normalize volatility relative to a historical lookback. High values of "k" indicate high compression—this is the "winding" of the spring.
if is_compressed potential_energy := potential_energy + k kinetic_energy := kinetic_energy * DECAY_RATE When the market is tighter than the user-defined "stiff_thresh", the system accumulates Potential Energy. Note that Kinetic Energy actively decays during this phase, simulating friction or inertia slowing down price movement.
else drain_factor = (1.0 - k) transfer = potential_energy * drain_factor potential_energy := potential_energy - transfer kinetic_energy := (kinetic_energy * DECAY_RATE) + (transfer * ENERGY_MULT) This acts as the conservation of energy. We do not reset Potential to zero instantly; we drain it. The "drain_factor" ensures that a violent expansion (low k) drains potential energy faster than a mild move. This transferred energy is scaled up and added to the Kinetic state.
Note - AMPLITUDE MATTERS!
Observe the amplitude of the Kinetic Energy - higher peaks are more significant. Lower values are usually artifacts, but they can indicate mean reversion on a smaller scale while price remains within a range.
CryptoFlux Dynamo [JOAT]CryptoFlux Dynamo: Velocity Scalping Strategy
WHAT THIS STRATEGY IS
CryptoFlux Dynamo is an open-source Pine Script v6 strategy designed for momentum-based scalping on cryptocurrency perpetual futures. It combines multiple technical analysis methods into a unified system that adapts its behavior based on current market volatility conditions.
This script is published open-source so you can read, understand, and modify the complete logic. The description below explains everything the strategy does so that traders who cannot read Pine Script can fully understand how it works before using it.
HOW THIS STRATEGY IS ORIGINAL AND WHY THE INDICATORS ARE COMBINED
This strategy uses well-known indicators (MACD, EMA, RSI, MFI, Bollinger Bands, Keltner Channels, ATR). The originality is not in the individual indicators themselves, but in the specific way they are integrated into a regime-adaptive system. Here is the detailed justification for why these components are combined and how they work together:
The Problem Being Solved:
Standard indicator-based strategies use fixed thresholds. For example, a typical MACD strategy might enter when the histogram crosses above zero. However, in cryptocurrency markets, volatility changes dramatically throughout the day and week. A MACD crossover during a low-volatility consolidation period has very different implications than the same crossover during a high-volatility trending period. Using the same entry thresholds and stop distances in both conditions leads to either:
Too many false signals during consolidation (if thresholds are loose)
Missing valid opportunities during expansion (if thresholds are tight)
Stops that are too tight during volatility spikes (causing premature exits)
Stops that are too wide during compression (giving back profits)
The Solution Approach:
This strategy first classifies the current volatility regime using normalized ATR (ATR as a percentage of price), then dynamically adjusts ALL other parameters based on that classification. This creates a context-aware system rather than a static threshold comparison.
How Each Component Contributes to the System:
ATR-Based Regime Classification (The Foundation)
The strategy calculates ATR over 21 periods, smooths it with a 13-period EMA to reduce noise from wicks, then divides by price to get a normalized percentage. This ATR% is classified into three regimes:
- Compression (ATR% < 0.8%): Market is consolidating, breakouts are more likely but false signals are common
- Expansion (ATR% 0.8% - 1.6%): Normal trending conditions
- Velocity (ATR% > 1.6%): High volatility, larger moves but also larger adverse excursions
This regime classification then controls stop distances, profit targets, trailing stop offsets, and signal strength requirements. The regime acts as a "meta-parameter" that tunes the entire system.
EMA Ribbon (8/21/34) - Trend Structure Detection
The three EMAs establish trend direction and structure. When EMA 8 > EMA 21 > EMA 34, the trend structure is bullish. The slope of the middle EMA (21) is calculated over 8 bars and converted to degrees using arctangent. This slope measurement quantifies trend strength, not just direction.
Why these specific periods? The 8/21/34 sequence follows Fibonacci-like spacing and provides good separation on 5-minute cryptocurrency charts. The fast EMA (8) responds to immediate price action, the mid EMA (21) represents the short-term trend, and the slow EMA (34) acts as a trend filter.
The EMA ribbon works with the regime classification: during compression regimes, the strategy requires stronger ribbon alignment before entry because false breakouts are more common.
MACD (8/21/5) - Momentum Measurement
The MACD uses faster parameters (8/21/5) than the standard (12/26/9) because cryptocurrency markets move faster than traditional markets. The histogram is smoothed with a 5-period EMA to reduce noise.
The key innovation is the adaptive histogram baseline. Instead of using a fixed threshold, the strategy calculates a rolling baseline from the smoothed absolute histogram value, then multiplies by a sensitivity factor (1.15). This means the threshold for "significant momentum" automatically adjusts based on recent momentum levels.
The MACD works with the regime classification: during velocity regimes, the histogram baseline is effectively higher because recent momentum has been stronger, preventing entries on relatively weak momentum.
RSI (21 period) and MFI (21 period) - Independent Momentum Confirmation
RSI measures momentum using price changes only. MFI (Money Flow Index) measures momentum using price AND volume. By requiring both to confirm, the strategy filters out price moves that lack volume support.
The 21-period length is longer than typical (14) to reduce noise on 5-minute charts. The trigger threshold (55 for longs, 45 for shorts) is slightly offset from 50 to require momentum in the trade direction, not just neutral readings.
These indicators work together: a signal requires RSI > 55 AND MFI > 55 for longs. This dual confirmation reduces false signals from price manipulation or low-volume moves.
Bollinger Bands (1.5 mult) and Keltner Channels (1.8 mult) - Squeeze Detection
When Bollinger Bands contract inside Keltner Channels, volatility is compressing and a breakout is likely. This is the "squeeze" condition. When the bands expand back outside the channels, the squeeze "releases."
The strategy uses a 1.5 multiplier for Bollinger Bands (tighter than standard 2.0) and 1.8 for Keltner Channels. These values were chosen to identify meaningful squeezes on 5-minute cryptocurrency charts without triggering too frequently.
The squeeze detection works with the regime classification: squeeze releases during compression regimes receive additional signal strength points because breakouts from consolidation are more significant.
Volume Impulse Detection - Institutional Participation Filter
The strategy calculates a volume baseline (34-period SMA) and standard deviation. A "volume impulse" is detected when current volume exceeds the baseline by 1.15x OR when the volume z-score exceeds 0.5.
This filter ensures entries occur when there is meaningful market participation, not during low-volume periods where price moves are less reliable.
Volume impulse is required for all entries and adds points to the composite signal strength score.
Cycle Oscillator - Trend Alignment Filter
The strategy calculates a 55-period EMA as a cycle basis, then measures price deviation from this basis as a percentage. When price is more than 0.15% above the cycle basis, the cycle is bullish. When more than 0.15% below, the cycle is bearish.
This filter prevents counter-trend entries. Long signals require bullish cycle alignment; short signals require bearish cycle alignment.
BTC Dominance Filter (Optional) - Market Regime Filter
The strategy can optionally use BTC.D (Bitcoin Dominance) as a market regime filter. When BTC dominance is rising (slope > 0.12), the market is in "risk-off" mode and long entries on altcoins are filtered. When dominance is falling (slope < -0.12), short entries are filtered.
This filter is optional because the BTC.D data feed may lag during low-liquidity periods.
How The Components Work Together (The Mashup Justification):
The strategy uses a composite scoring system where each signal pathway contributes points:
Trend Break pathway (30 points): Requires EMA ribbon alignment + positive slope + price breaks above recent structure high
Momentum Surge pathway (30 points): Requires MACD histogram > adaptive baseline + MACD line > signal + RSI > 55 + MFI > 55 + volume impulse
Squeeze Release pathway (25 points): Requires BB inside KC (squeeze) then release + momentum bias + histogram confirmation
Micro Pullback pathway (15 points): Requires shallow retracement to fast EMA within established trend + histogram confirmation + volume impulse
Additional modifiers:
+5 points if volume impulse is present, -5 if absent
+5 points in velocity regime, -2 in compression regime
+5 points if cycle is aligned, -5 if counter-trend
A trade only executes when the composite score reaches the minimum threshold (default 55) AND all filters agree (session, cycle bias, BTC dominance if enabled).
This scoring system is the core innovation: instead of requiring ALL conditions to be true (which would generate very few signals) or ANY condition to be true (which would generate too many false signals), the strategy requires ENOUGH conditions to be true, with different conditions contributing different weights based on their reliability.
HOW THE STRATEGY CALCULATES ENTRIES AND EXITS
Entry Logic:
1. Calculate current volatility regime from ATR%
2. Calculate all indicator values (MACD, EMA, RSI, MFI, squeeze, volume)
3. Evaluate each signal pathway and sum points
4. Check all filters (session, cycle, dominance, kill switch)
5. If composite score >= 55 AND all filters pass, generate entry signal
6. Calculate position size based on risk per trade and regime-adjusted stop distance
7. Execute entry with regime name as comment
Position Sizing Formula:
RiskCapital = Equity * (0.65 / 100)
StopDistance = ATR * StopMultiplier(regime)
RawQuantity = RiskCapital / StopDistance
MaxQuantity = Equity * (12 / 100) / Price
Quantity = min(RawQuantity, MaxQuantity)
Quantity = round(Quantity / 0.001) * 0.001
This ensures each trade risks approximately 0.65% of equity regardless of volatility, while capping total exposure at 12% of equity.
Stop Loss Calculation:
Stop distance is ATR multiplied by a regime-specific multiplier:
Compression regime: 1.05x ATR (tighter stops because moves are smaller)
Expansion regime: 1.55x ATR (standard stops)
Velocity regime: 2.1x ATR (wider stops to avoid premature exits during volatility)
Take Profit Calculation:
Target distance is ATR multiplied by regime-specific multiplier and base risk/reward:
Compression regime: 1.6x ATR * 1.8 base R:R * 0.9 regime bonus = approximately 2.6x ATR
Expansion regime: 2.05x ATR * 1.8 base R:R * 1.0 regime bonus = approximately 3.7x ATR
Velocity regime: 2.8x ATR * 1.8 base R:R * 1.15 regime bonus = approximately 5.8x ATR
Trailing Stop Logic:
When adaptive trailing is enabled, the strategy calculates a trailing offset based on ATR and regime:
Compression regime: 1.1x base offset (looser trailing to avoid noise)
Expansion regime: 1.0x base offset (standard)
Velocity regime: 0.8x base offset (tighter trailing to lock in profits during fast moves)
The trailing stop only activates when it would be tighter than the initial stop.
Momentum Fail-Safe Exits:
The strategy closes positions early if momentum reverses:
Long positions close if MACD histogram turns negative OR EMA ribbon structure breaks (fast EMA crosses below mid EMA)
Short positions close if MACD histogram turns positive OR EMA ribbon structure breaks
This prevents holding through momentum reversals even if stop loss hasn't been hit.
Kill Switch:
If maximum drawdown exceeds 6.5%, the strategy disables new entries until manually reset. This prevents continued trading during adverse conditions.
HOW TO USE THIS STRATEGY
Step 1: Apply to Chart
Use a 5-minute chart of a high-liquidity cryptocurrency perpetual (BTC/USDT, ETH/USDT recommended)
Ensure at least 200 bars of history are loaded for indicator stabilization
Use standard candlestick charts only (not Heikin Ashi, Renko, or other non-standard types)
Step 2: Understand the Visual Elements
EMA Ribbon: Three lines (8/21/34 periods) showing trend structure. Bullish when stacked upward, bearish when stacked downward.
Background Color: Shows current volatility regime
- Indigo/dark blue = Compression (low volatility)
- Purple = Expansion (normal volatility)
- Magenta/pink = Velocity (high volatility)
Bar Colors: Reflect signal strength divergence. Brighter colors indicate stronger directional bias.
Triangle Markers: Entry signals. Up triangles below bars = long entry. Down triangles above bars = short entry.
Dashboard (top-right): Real-time display of regime, ATR%, signal strengths, position status, stops, targets, and risk metrics.
Step 3: Interpret the Dashboard
Regime: Current volatility classification (Compression/Expansion/Velocity)
ATR%: Normalized volatility as percentage of price
Long/Short Strength: Current composite signal scores (0-100)
Cycle Osc: Price deviation from 55-period EMA as percentage
Dominance: BTC.D slope and filter status
Position: Current position direction or "Flat"
Stop/Target: Current stop loss and take profit levels
Kill Switch: Status of drawdown protection
Volume Z: Current volume z-score
Impulse: Whether volume impulse condition is met
Step 4: Adjust Parameters for Your Needs
For more conservative trading: Increase "Minimum Composite Signal Strength" to 65 or higher
For more aggressive trading: Decrease to 50 (but expect more false signals)
For higher timeframes (15m+): Increase "Structure Break Window" to 12-15, increase "RSI Momentum Trigger" to 58
For lower liquidity pairs: Increase "Volume Impulse Multiplier" to 1.3, increase slippage in strategy properties
To disable short selling: Uncheck "Enable Short Structure"
To disable BTC dominance filter: Uncheck "BTC Dominance Confirmation"
STRATEGY PROPERTIES (BACKTEST SETTINGS)
These are the exact settings used in the strategy's Properties dialog box. You must use these same settings when evaluating the backtest results shown in the publication:
Initial Capital: $100,000
Justification: This amount is higher than typical retail accounts. I chose this value to demonstrate percentage-based returns that scale proportionally. The strategy uses percentage-based position sizing (0.65% risk per trade), so a $10,000 account would see the same percentage returns with 10x smaller position sizes. The absolute dollar amounts in the backtest should be interpreted as percentages of capital.
Commission: 0.04% (commission_value = 0.04)
Justification: This reflects typical perpetual futures exchange fees. Major exchanges charge between 0.02% (maker) and 0.075% (taker). The 0.04% value is a reasonable middle estimate. If your exchange charges different fees, adjust this value accordingly. Higher fees will reduce net profitability.
Slippage: 1 tick
Justification: This is conservative for liquid pairs like BTC/USDT on major exchanges during normal conditions. For less liquid altcoins or during high volatility, actual slippage may be higher. If you trade less liquid pairs, increase this value to 2-3 ticks for more realistic results.
Pyramiding: 1
Justification: No position stacking. The strategy holds only one position at a time. This simplifies risk management and prevents overexposure.
calc_on_every_tick: true
Justification: The strategy evaluates on every price update, not just bar close. This is necessary for scalping timeframes where waiting for bar close would miss opportunities. Note that this setting means backtest results may differ slightly from bar-close-only evaluation.
calc_on_order_fills: true
Justification: The strategy recalculates immediately after order fills for faster response to position changes.
RISK PER TRADE JUSTIFICATION
The default risk per trade is 0.65% of equity. This is well within the TradingView guideline that "risking more than 5-10% on a trade is not typically considered viable."
With the 12% maximum exposure cap, even if the strategy takes multiple consecutive losses, the total risk remains manageable. The kill switch at 6.5% drawdown provides additional protection by halting new entries during adverse conditions.
The position sizing formula ensures that stop distance (which varies by regime) is accounted for, so actual risk per trade remains approximately 0.65% regardless of volatility conditions.
SAMPLE SIZE CONSIDERATIONS
For statistically meaningful backtest results, you should select a dataset that generates at least 100 trades. On 5-minute BTC/USDT charts, this typically requires:
2-3 months of data during normal market conditions
1-2 months during high-volatility periods
3-4 months during low-volatility consolidation periods
The strategy's selectivity (requiring 55+ composite score plus all filters) means it generates fewer signals than less filtered approaches. If your backtest shows fewer than 100 trades, extend the date range or reduce the minimum signal strength threshold.
Fewer than 100 trades produces statistically unreliable results. Win rate, profit factor, and other metrics can vary significantly with small sample sizes.
STRATEGY DESIGN COMPROMISES AND LIMITATIONS
Every strategy involves trade-offs. Here are the compromises made in this design and the limitations you should understand:
Selectivity vs. Opportunity Trade-off
The 55-point minimum threshold filters many potential trades. This reduces false signals but also misses valid setups that don't meet all criteria. Lowering the threshold increases trade frequency but decreases win rate. There is no "correct" threshold; it depends on your preference for fewer higher-quality signals vs. more signals with lower individual quality.
Regime Classification Lag
The ATR-based regime detection uses historical data (21 periods + 13-period smoothing). It cannot predict sudden volatility spikes. During flash crashes or black swan events, the strategy may be classified in the wrong regime for several bars before the classification updates. This is an inherent limitation of any lagging indicator.
Indicator Parameter Sensitivity
The default parameters (MACD 8/21/5, EMA 8/21/34, RSI 21, etc.) are tuned for BTC/ETH perpetuals on 5-minute charts during 2024 market conditions. Different assets, timeframes, or market regimes may require different parameters. There is no guarantee that parameters optimized on historical data will perform similarly in the future.
BTC Dominance Filter Limitations
The CRYPTOCAP:BTC.D data feed may lag during low-liquidity periods or weekends. The dominance slope calculation uses a 5-bar SMA, adding additional delay. If you notice the filter behaving unexpectedly, consider disabling it.
Backtest vs. Live Execution Differences
TradingView backtesting does not replicate actual broker execution. Key differences:
Backtests assume perfect fills at calculated prices; real execution involves order book depth, latency, and partial fills
The calc_on_every_tick setting improves backtest realism but still cannot capture sub-bar price action or order book dynamics
Commission and slippage settings are estimates; actual costs vary by exchange, time of day, and market conditions
Funding rates on perpetual futures are not modeled in backtests and can significantly impact profitability over time
Exchange-specific limitations (position limits, liquidation mechanics, order types) are not modeled
Market Condition Dependencies
This strategy is designed for trending and breakout conditions. During extended sideways consolidation with no clear direction, the strategy may generate few signals or experience whipsaws. No strategy performs well in all market conditions.
Cryptocurrency-Specific Risks
Cryptocurrency markets operate 24/7 without session boundaries. This means:
No natural "overnight" risk reduction
Volatility can spike at any time
Liquidity varies significantly by time of day
Exchange outages or issues can occur at any time
WHAT THIS STRATEGY DOES NOT DO
To be straightforward about limitations:
This strategy does not guarantee profits. Past backtest performance does not indicate future results.
This strategy does not predict the future. It reacts to current conditions based on historical patterns.
This strategy does not account for funding rates, which can significantly impact perpetual futures profitability.
This strategy does not model exchange-specific execution issues (partial fills, requotes, outages).
This strategy does not adapt to fundamental news events or black swan scenarios.
This strategy is not optimized for all market conditions. It may underperform during extended consolidation.
IMPORTANT RISK WARNINGS
Past performance does not guarantee future results. The backtest results shown reflect specific historical market conditions and parameter settings. Markets change constantly, and strategies that performed well historically may underperform or lose money in the future. A single backtest run does not constitute proof of future profitability.
Trading involves substantial risk of loss. Cryptocurrency derivatives are highly volatile instruments. You can lose your entire investment. Only trade with capital you can afford to lose completely.
This is not financial advice. This strategy is provided for educational and informational purposes only. It does not constitute investment advice, trading recommendations, or any form of financial guidance. The author is not a licensed financial advisor.
You are responsible for your own decisions. Before using this strategy with real capital:
Thoroughly understand the code and logic by reading the open-source implementation
Forward test with paper trading or very small positions for an extended period
Verify that commission, slippage, and execution assumptions match your actual trading environment
Understand that live results will differ from backtest results
Consider consulting with a qualified financial advisor
No guarantees or warranties. This strategy is provided "as is" without any guarantees of profitability, accuracy, or suitability for any purpose. The author is not responsible for any losses incurred from using this strategy.
OPEN-SOURCE CODE STRUCTURE
The strategy code is organized into these sections for readability:
Configuration Architecture: Input parameters organized into logical groups (Core Controls, Optimization Constants, Regime Intelligence, Signal Pathways, Risk Architecture, Visualization)
Helper Functions: calcQty() for position sizing, clamp01() and normalize() for value normalization, calcMFI() for Money Flow Index calculation
Core Indicator Engine: EMA ribbon, ATR and regime classification, MACD with adaptive baseline, RSI, MFI, volume analytics, cycle oscillator, BTC dominance filter, squeeze detection
Signal Pathway Logic: Trend break, momentum surge, squeeze release, micro pullback pathways with composite scoring
Entry/Exit Orchestration: Signal filtering, position sizing, entry execution, stop/target calculation, trailing stop logic, momentum fail-safe exits
Visualization Layer: EMA plots, regime background, bar coloring, signal labels, dashboard table
You can read and modify any part of the code. Understanding the logic before deployment is strongly recommended.
- Made with passion by officialjackofalltrades
Custom Sector Comparison Index (CSCI)Compare any stock against a custom basket of its true peers.
Most traders compare stocks to broad indexes like the S&P 500 (SPY) or the Nasdaq (QQQ). But if you are analyzing a niche sector—like Residential REITs, Gold Miners, or AI Semis—broad indexes are too noisy.
This indicator allows you to build your own Custom Equal-Weight Index made up of up to 12 specific symbols. It then plots the performance of the stock you are currently viewing against that custom index, starting from a specific "Anchor Date" of your choosing.
Why use this?
Standard relative strength tools force you to compare against a single symbol (like SPY). But if you want to know if Centerspace (CSR) is lagging its direct competitors, comparing it to SPY (which contains Tech and Healthcare) is useless. Comparing it to VNQ (which contains Cell Towers and Malls) is also imperfect.
With this tool, you can create a "Pure Residential REIT" index and see exactly how your stock is performing against the group.
Key Features:
Fully Configurable: Input up to 12 different symbols to build your custom index.
Smart Filtering: Automatically ignores blank slots. You can build a basket of 3 stocks or 12 stocks without breaking the math.
Custom Anchor Date: Set the specific start date for the comparison (e.g., YTD, Q3 start, or a specific market event).
Visual Performance Gap: Green shading indicates your stock is outperforming the basket; Red shading indicates underperformance.
Example Use Case: Residential REITs
I developed this to analyze the "Residential REIT" sector. I wanted to see if Invitation Homes (INVH) was trading at a discount due to fundamentals or if the whole sector was down.
I configured the basket with 9 of its closest peers:
NYSE:VRE, NYSE:UDR, NYSE:MAA
NYSE:EQR, NYSE:CSR, NYSE:ESS
NYSE:CPT, NYSE:AVB, NYSE:AMH
The Result: The indicator draws a gray line representing the average return of those 9 "Big Boys." I can then load CSR on the chart and immediately see if it is lagging the pack (a potential value buy) or leading it.
How to Use:
Add the indicator to your chart.
Open Settings (Double-click the line).
Start Date: Set the date you want the "race" to begin (where all returns reset to 0%).
Symbols: Type in the tickers for your custom basket (e.g., NVDA, AMD, INTC). Leave unused slots blank.
Analyze:
Gray Line: The average performance of your basket.
Blue Line: The performance of the current symbol on your chart.
Pro Tip: You can save different "Presets" in the indicator settings for different sectors (e.g., save one preset as "Semis" and another as "Oil Majors") so you don't have to re-type symbols every time.
Trend Strength Matrix [JOAT]Trend Strength Matrix — Multi-Timeframe Confluence Analysis System
This indicator addresses a specific analytical challenge: how to efficiently compare multiple technical measurements across different timeframes while accounting for their varying scales and interpretations. Rather than managing separate indicator windows with different scales, this tool normalizes four distinct analytical approaches to a common -1 to +1 scale and presents them in a unified matrix format.
Why This Combination Adds Value
The core problem this indicator solves is analytical fragmentation. Traders often use multiple indicators but struggle with:
1. **Scale Inconsistency**: RSI ranges 0-100, MACD has no fixed range, ADX ranges 0-100 but measures strength not direction
2. **Timeframe Coordination**: Checking multiple timeframes requires switching between charts or cramming multiple indicators
3. **Cognitive Load**: Processing different indicator types simultaneously creates mental overhead
4. **Confluence Assessment**: Determining when multiple approaches agree requires manual comparison
This indicator specifically addresses these issues by creating a standardized analytical framework where different measurement approaches can be directly compared both within and across timeframes.
Originality and Technical Innovation
While the individual components (RSI, MACD, ADX, Moving Average) are standard, the originality lies in:
1. **Unified Normalization System**: Each component is mathematically transformed to a -1 to +1 scale using component-specific normalization that preserves the indicator's core characteristics
2. **Multi-Timeframe Weighting Algorithm**: Higher timeframes receive proportionally more weight (40% current, 25% next, 20% third, 15% fourth) based on the principle that longer timeframes provide more significant context
3. **Real-Time Confluence Scoring**: The composite calculation provides an instant assessment of how much the different analytical approaches agree
4. **Adaptive Visual Encoding**: The heatmap format allows immediate pattern recognition of agreement/disagreement across both indicators and timeframes
How the Components Work Together
Each component measures a different aspect of market behavior, and their combination provides a more complete analytical picture:
**Momentum Component (RSI-based)**: Measures the velocity of price changes by comparing average gains to losses
**Trend Component (MACD-based)**: Measures the relationship between fast and slow moving averages, indicating trend acceleration/deceleration
**Strength Component (ADX-based)**: Measures trend strength regardless of direction, then applies directional bias
**Position Component (MA-based)**: Measures price position relative to a reference average
The mathematical relationship between these components creates a comprehensive view:
- When all four agree (similar colors), it suggests multiple analytical approaches are aligned
- When they disagree (mixed colors), it highlights analytical uncertainty or transition periods
- The composite score quantifies the degree of agreement numerically
Detailed Component Analysis
**1. Momentum Oscillator Component**
This component transforms RSI into a centered oscillator by subtracting 50 and dividing by 50, creating a -1 to +1 range where 0 represents equilibrium between buying and selling pressure.
// Momentum calculation normalized to -1 to +1 scale
float rsi = ta.rsi(close, rsiLength)
float rsiScore = (rsi - 50) / 50
// Result: 0 at equilibrium, +1 at extreme overbought, -1 at extreme oversold
**2. Moving Average Convergence Component**
MACD is normalized by its own volatility (standard deviation) to create a bounded oscillator. This prevents the unbounded nature of MACD from dominating the composite calculation.
// MACD normalized by its historical volatility
= ta.macd(close, macdFast, macdSlow, macdSignal)
float macdStdev = ta.stdev(macdLine, 100)
float macdScore = macdStdev != 0 ? math.max(-1, math.min(1, macdLine / (macdStdev * 2))) : 0
**3. Directional Movement Component**
This combines ADX (strength) with directional movement (+DI vs -DI) to create a directional strength measurement. ADX alone shows strength but not direction; this component adds directional context.
// ADX-based directional strength
= calcADX(adxLength)
float adxStrength = math.min(adx / 50, 1) // Normalize ADX to 0-1
float adxDirection = plusDI > minusDI ? 1 : -1 // Direction bias
float adxScore = adxStrength * adxDirection // Combine strength and direction
**4. Price Position Component**
This measures price deviation from a moving average, weighted by the magnitude of deviation to distinguish between minor and significant displacements.
// Price position relative to moving average
float ma = ta.sma(close, maLength)
float maDirection = close > ma ? 1 : -1
float maDeviation = math.abs(close - ma) / ma * 10 // Percentage deviation scaled
float maScore = math.max(-1, math.min(1, maDirection * math.min(maDeviation, 1)))
Multi-Timeframe Integration Logic
The multi-timeframe system uses a weighted average that gives more influence to higher timeframes:
// Timeframe weighting system
float currentTF = composite * 0.40 // Current timeframe: 40%
float higherTF1 = composite_tf2 * 0.25 // Next higher: 25%
float higherTF2 = composite_tf3 * 0.20 // Third higher: 20%
float higherTF3 = composite_tf4 * 0.15 // Fourth higher: 15%
float multiTFComposite = currentTF + higherTF1 + higherTF2 + higherTF3
This weighting reflects the principle that higher timeframes provide more significant context for market direction, while lower timeframes provide timing precision.
What the Dashboard Shows
The heatmap displays a grid where:
Each row represents a timeframe
Each column shows one component's normalized reading
Colors indicate the value: green shades for positive, red shades for negative, gray for neutral
The rightmost column shows the composite average for that timeframe
Visual Elements
Moving Average Line — A simple moving average plotted on the price chart
Background Tint — Subtle coloring based on the composite score
Shift Labels — Markers when the composite crosses threshold values
Dashboard Table — The main heatmap display
Inputs
Calculation Parameters:
Momentum Length (default: 14)
MACD Fast/Slow/Signal (default: 12/26/9)
Directional Movement Length (default: 14)
Moving Average Length (default: 50)
Timeframe Settings:
Enable/disable multi-timeframe analysis
Select additional timeframes to display
How to Read the Display
Similar colors across a row indicate the components are showing similar readings
Mixed colors indicate the components are showing different readings
The composite percentage shows the average of all four components
Alerts
Composite crossed above/below threshold values
Strong readings (above 50% or below -50%)
Important Limitations and Realistic Expectations
This indicator displays current analytical conditions—it does not predict future price movements
Agreement between components indicates current analytical alignment, not future price direction
All four components are based on historical price data and inherently lag price action
Market conditions can change rapidly, making current readings irrelevant
Different parameter settings will produce different readings and interpretations
No combination of technical indicators can reliably predict future market behavior
Strong readings in one direction do not guarantee continued movement in that direction
The composite score reflects mathematical relationships, not market fundamentals or sentiment
This tool should be used as one input among many in a comprehensive analytical approach
Appropriate Use Cases
This indicator is designed for:
- Analytical organization and efficiency
- Multi-timeframe confluence assessment
- Pattern recognition in indicator relationships
- Educational study of how different analytical approaches relate
- Supplementary analysis alongside other methods
This indicator is NOT designed for:
- Standalone trading signals
- Guaranteed profit generation
- Market timing precision
- Replacement of fundamental analysis
- Automated trading systems
— Made with passion by officialjackofalltrades
DAILY INTRADAY KEY LEVELS by TenAMTrader📌 DAILY INTRADAY KEY LEVELS — by TenAMTrader
DAILY INTRADAY KEY LEVELS is a precision-built intraday mapping tool designed to keep traders aligned with the most important price references used by institutions and active day traders.
This indicator automatically plots Previous Day RTH levels, Overnight levels, and the Opening Range (ORB) using New York session timing, so your levels remain consistent and reliable across all intraday timeframes.
🔑 Levels Included
Previous Day (RTH)
PDH – Previous Day Regular Trading Hours High
PDL – Previous Day Regular Trading Hours Low
(Locked at the RTH close for accuracy)
Overnight Session (16:00–09:30 NY)
ONH – Overnight High
ONL – Overnight Low
(Tracks live overnight and finalizes at the cash open)
Opening Range (09:30–09:45 NY)
ORBH – Opening Range High
ORBM – Opening Range Midpoint
ORBL – Opening Range Low
🎯 Why These Levels Matter
These price levels frequently act as:
Liquidity targets
Support & resistance
Decision points for continuation vs. rejection
Bias filters for trend days vs. range days
The Opening Range, in particular, is a cornerstone of many institutional and professional trading models.
⚙️ Customization & Controls
Toggle each level on/off independently
Choose solid lines or line-with-breaks
Adjustable line width and colors
Optional future-extending rays
Clean single-label system (no clutter)
Text-only or boxed labels
Configurable label side, size, and offsets
Optional current-day-only view to keep charts clean
All values remain timeframe-independent, meaning your levels will not change when switching chart intervals.
📈 Best Use Cases
Futures, Index, and Equity day trading
Opening drive & ORB strategies
Fade vs. continuation decision-making
Level confluence with VWAP, trend, or volume tools
⚠️ Disclaimer
This indicator is for educational and informational purposes only. It does not constitute financial advice or trade recommendations. Trading involves risk, and past performance is not indicative of future results. Always manage risk and trade according to your own plan.
Built for traders who plan first, execute second, and respect key levels.
— TenAMTrader






















