Indicator
Pine utilities
Hyperbolic Hull Moving Average (HHMA) [QuantAlgo]🟢 Overview
Hyperbolic Hull Moving Average is a trend-following indicator that replaces the linear weighting kernel inside a Hull Moving Average with a hyperbolic sine function, producing a moving average that concentrates weight on recent bars in a non-linear, exponentially accelerating curve rather than a straight ramp. Where a standard WMA assigns weight proportionally across the lookback, the sinh kernel creates a steep recency gradient that responds meaningfully to genuine momentum shifts while remaining more resistant to brief noise spikes, because distant bars lose influence at a compounding rate rather than a constant one. The result is a Hull-style construction with faster directional detection and smoother curvature than its conventional counterpart.
🟢 How It Works
The indicator is built across three passes of the same sinh weighting function. The core kernel computes a weighted average where each bar's weight is determined by the hyperbolic sine of its normalized position within the lookback, scaled by a tension parameter:
float _x = (_len - i) / _len * _t
float _w = (math.exp(_x) - math.exp(-_x)) / 2
Higher tension values push more of the total weight toward the most recent bars. At the default tension of 2.0 across a 24-period window, the most recent bar carries roughly 44 times the weight of the oldest bar. A standard WMA across the same window would assign the newest bar only 24 times the weight of the oldest, so the sinh kernel naturally produces a steeper bias toward recent price action at any equivalent length setting.
The Hull construction then runs two sinh-weighted averages at different periods, a fast pass at half the length and a slow pass at the full length, before combining them in the same denoising formula Alan Hull originally described:
fastSinh = f_sinh_weight(src, halfLen, tension)
slowSinh = f_sinh_weight(src, length, tension)
rawHull = 2 * fastSinh - slowSinh
hhma = f_sinh_weight(rawHull, sqrtLen, tension)
The raw Hull output is then passed through a final sinh-weighted smoothing pass at the square root of the full length, which removes the lagging noise the doubling step introduces.
Trend direction is determined by a simple slope check on the final output. This keeps state detection clean and unambiguous, with direction changes triggering alerts and visual updates the bar they occur.
🟢 Signal Interpretation
▶ Bullish Trend (Rising HHMA, Green): When the HHMA turns upward, all visual elements switch to the bullish colour, indicating a confirmed uptrend. Because the sinh kernel front-loads weight on recent bars, the line responds quickly to genuine upside momentum without needing price to sustain a move for many bars before registering a directional shift. Trend state remains bullish on each subsequent bar the HHMA continues to rise, allowing traders to hold positions through normal intra-trend oscillation without being shaken out by minor hesitations in the line.
▶ Bearish Trend (Falling HHMA, Red): When the HHMA turns downward, all visual elements switch to the bearish colour, confirming a downtrend or a breakdown from a prior uptrend. The same recency weighting that accelerates bullish detection also means the line will respond relatively quickly to sustained selling pressure, reducing the lag that causes conventional Hull variants to stay bullish well into a reversal. The trend remains bearish on each bar the HHMA continues to fall.
🟢 Features
▶ Preconfigured Presets: Three optimised parameter sets cover different trading approaches. "Default" is calibrated for swing trading on 4-hour and daily charts, balancing responsiveness with noise rejection. "Fast Response" shortens the lookback and increases recency bias for intraday and scalping use on 5-minute to 1-hour charts. "Smooth Trend" extends the period and flattens the weighting curve for position trading on daily and weekly charts where fewer, higher-conviction direction changes are preferred.
▶ Built-in Alerts: Three alert conditions support automated monitoring without requiring constant chart supervision. "Bullish Trend Signal" fires on the bar the HHMA slope turns upward. "Bearish Trend Signal" fires on the bar it turns downward. "Trend Direction Changed" covers both transitions with a single alert for traders who want a unified notification regardless of direction.
▶ Visual Customization: Six colour presets (Classic, Aqua, Cosmic, Cyber, Neon, and Custom) provide coordinated bullish and bearish colour pairs suited to different chart themes and backgrounds. Optional bar colouring tints price bars with the active trend colour at an adjustable transparency level, offering immediate visual confirmation of trend state across all open chart timeframes without requiring the indicator line itself to be in view.
Indicator
Relative Strength Index DineshThis is based on RSI movements and it can work on multitime frame and RR 1:2 and it can used only for BTC future only.
Indicator
Liquidity Sweep Detector [QuantAlgo]🟢 Overview
The Liquidity Sweep Detector is a swing-based liquidity tracking tool that identifies moments when price wicks beyond a confirmed swing high or low and closes back inside, then tracks the remaining unswept levels as forward-projecting lines and zones on your chart. It classifies each event by direction (Bullish or Bearish) and maintains a running registry of swing levels that have not yet been visited by price, giving you a live map of where resting stop clusters may still be sitting across any timeframe and market.
🟢 How It Works
The indicator identifies swing highs and lows using a pivot detection window that requires a configurable number of bars to the left and right to confirm a valid structural point. The active pivot length and minimum wick penetration are resolved from the selected preset before any detection runs:
active_len = preset_config == 'Scalp' ? 5 : preset_config == 'Swing' ? 20 : pivot_len
active_min_pct = preset_config == 'Scalp' ? 0.0 : preset_config == 'Swing' ? 0.05 : min_wick_pct
A bearish sweep is confirmed when price wicks above the most recent swing high by at least the minimum penetration percentage and closes back below it. A bullish sweep mirrors this on the downside:
bearSweep = not na(lastSwingHigh) and high > lastSwingHigh * (1 + active_min_pct / 100) and close < lastSwingHigh
bullSweep = not na(lastSwingLow) and low < lastSwingLow * (1 - active_min_pct / 100) and close > lastSwingLow
Every confirmed swing point is simultaneously stored in an unswept level registry. Levels are removed when the full candle closes beyond them, or immediately when a sweep is confirmed on that level, so the chart only shows levels price has not yet visited:
if bearSweep and array.size(unsweptHighs) > 0
for i = array.size(unsweptHighs) - 1 to 0
if array.get(unsweptHighs, i) == lastSwingHigh
array.remove(unsweptHighs, i)
array.remove(unsweptHighBars, i)
break
The indicator also detects when price enters the zone around an unswept level without yet confirming a full sweep. Edge detection ensures the alert fires once on entry rather than on every bar price remains inside the zone:
buySideEntry = enteredBuySide and not enteredBuySide
sellSideEntry = enteredSellSide and not enteredSellSide
🟢 Key Features
▶ Three Preset Configurations: The indicator includes three presets that override the manual pivot length and minimum wick penetration settings.
1. Default/Custom: A general-purpose configuration suited to swing trading on 4H and daily charts. Confirms swing points that require a reasonable structural context before a sweep is flagged.
2. Scalp: A faster configuration for intraday charts from 1 minute to 15 minutes. Shorter pivot windows capture local swing points that form and get swept within a single session.
3. Swing: A more conservative configuration for daily and weekly charts that requires a more deliberate wick extension before confirming a sweep, filtering out shallow tags at swing levels.
▶ Built-in Alert System: Pre-configured alert conditions cover bearish sweeps, bullish sweeps, any sweep, price entering a buy-side zone, price entering a sell-side zone, and price entering any unswept zone.
▶ Visual Customisation: Choose from five colour presets (Classic, Aqua, Cosmic, Cyber, Neon) or set your own custom colours. Optional candle background highlighting marks sweep bars directly on the chart, and label text size is configurable across four options to suit different chart layouts.
🟢 Important Considerations
▶ Sweep detection references only the most recently confirmed swing high or low at the time each bar closes. On lower timeframes with frequent swing formation, raising the pivot length focuses detection on more structurally significant levels and reduces signal frequency on choppy charts.
▶ The indicator works best as a contextual layer within an existing trading framework. Sweep signals indicate that price has moved beyond a swing level and closed back inside, which is a useful data point, but should be read alongside your system and market context rather than used as a standalone trigger.
Indicator
Backtest Template [Backtest Terminal]Overview — What Is This Script?
Backtest Template (BTT) is an open-source strategy framework designed to let traders test their own indicator logic without building the backtest infrastructure from scratch. Instead of writing stop loss management, session filters, alert systems, and trailing stops yourself, BTT handles all of that automatically. You bring your signal idea — BTT handles the rest.
The template is designed for all markets: stocks, Forex, gold (XAUUSD), crypto spot, and crypto futures. It ships with a pre-built Moving Average Cross trigger and Moving Average Trend filter as working examples that you replace with your own logic.
What Makes It Original
Most backtest templates on PulseWire are fixed strategies that test one specific indicator. BTT introduces a User Zone architecture: a single clearly marked section near the top of the script where the user replaces one pre-built trigger and one pre-built filter with their own Pine Script code. The engine below reads four fixed variable names and runs automatically — the user never needs to touch strategy orders, stop management, session logic, or the alert system.
This design means a complete beginner can run their first backtest by changing fewer than ten lines of code, while an advanced user can plug in arrays, multi-timeframe calculations, or complex signal logic and the engine handles it identically.
What The Engine Handles Automatically
Once your signal is connected through the User Zone, the following run without any additional code:
Stop Loss and Take Profit — three unit modes: percentage of price, fixed points (Forex / CFD), or fixed dollar amount (crypto / stocks)
Stop Mode — Fixed (original level), Trailing (follows price), or Breakeven (moves to entry price)
Trailing Stop — configurable distance and activation offset, each with matching %, point, and dollar unit inputs consistent with your Stop/Target Mode selection
Breakeven Stop — configurable activation offset in the same unit system
Disable Take Profit — when using Trailing mode, an optional toggle removes the fixed TP so the trailing stop becomes the sole exit
Trade Direction — Long only, Short only, or Both
Backtest Date Range — start and end date inputs
Trading Day Filter — enable or disable any day of the week
Trade Session Hours — exchange server time filter (HHMM-HHMM format)
Trade Windows — four configurable local-time windows each independently set to Off, Blackout, or Trade Only mode with full timezone support
Entry Signal Markers — green and red triangles that only appear when all conditions pass, so chart visuals exactly match what the strategy trades
App Alerts — pre-formatted alert messages with ticker, direction, stop and target prices
Custom JSON Alerts — four separate input fields for webhook bot integration, one per order event
How To Use It — Quick Start
Open the script in Pine Editor
Find the User Zone near the top — it is clearly marked with a visual border and is the only section you need to edit
Replace the pre-built Moving Average Cross trigger block with your own indicator signal, assigning your long condition to userLong and your short condition to userShort — always add and confirmed to both
Replace the pre-built Moving Average Trend filter block with your own market condition, assigning to userFilterLong and userFilterShort
Add to chart and open Strategy Tester
User Zone Contract
The engine connects to your signal through exactly four variables. Do not rename them:
userLong → true on the bar you want to enter Long
userShort → true on the bar you want to enter Short
userFilterLong → true when Long entries are allowed
userFilterShort → true when Short entries are allowed
Always add and confirmed (barstate.isconfirmed) to userLong and userShort. This ensures the signal locks in only when the bar closes, preventing signals from changing value mid-bar.
Setting userFilterLong = true disables the Long filter entirely. Setting it to a condition like close > ta.ema(close, 200) means Long entries are only allowed when price is above that EMA. Long and Short filters are independent — you can filter one direction while leaving the other open.
Stop Loss and Take Profit — Three Unit Modes
The Stop/Target Mode setting controls how SL and TP distances are measured:
% (Percentage) — distance as a percentage of price. Suitable for stocks and crypto. Stop source can be the close price or the candle High/Low. Take profit is derived from stop distance × Risk:Reward ratio.
Point - Forex / CFD — distance in instrument ticks (syminfo.mintick). Suitable for XAUUSD, EURUSD, and other Forex/CFD instruments. Example: 100 points on EURUSD (mintick = 0.00001) = 1 pip.
Dollar - Crypto / Stock — fixed dollar distance from entry. Suitable for BTCUSD and US stocks.
All trailing and breakeven offset inputs follow the same three-unit system. Use the , , or input that matches your selected Stop/Target Mode. Using the wrong unit input will result in a mismatch between your intended stop distance and the actual calculation.
Stop Mode — Fixed, Trailing, Breakeven
Fixed — stop loss stays at the original level from entry until hit or TP is reached
Trailing — stop follows price at a configurable distance, locking in profit as price moves. The trailing activation offset controls how far price must move before trailing begins (shown as a yellow line on chart). Enable "Disable Take Profit" to let the trailing stop manage the entire exit without a fixed TP ceiling
Breakeven — stop moves to the exact entry price once price moves a configurable distance in your favour (shown as a white line on chart)
Trade Windows — Off, Blackout, Trade Only
Each of the four time windows (Tokyo, London, New York, Custom) has an independent mode selector:
Off — this window has no effect on entries (default for all four)
Blackout — block all new entries while the current time is inside this window. Useful for avoiding high-volatility opens or news events
Trade Only — only allow new entries while the current time is inside this window. Useful for targeting specific sessions or news event windows such as NFP or Fed announcements
All times are entered in your local timezone selected from the My Timezone dropdown. The engine converts to UTC internally.
Logic rules:
Multiple Blackout windows use AND NOT logic — entries are blocked if the current time is inside any Blackout window
Multiple Trade Only windows use OR logic — entries are allowed when the current time is inside any one Trade Only window
If no windows are set to Trade Only, there is no time restriction on entries (same as all Off)
Blackout and Trade Only can be combined: for example, set London to Trade Only and New York to Blackout to only trade the London session while avoiding NY volatility
Trading Day and Session
Trading Days — enable or disable any individual day of the week. Disabling a day prevents new entries — open positions are still managed on disabled days.
Trade Session — set allowed hours in exchange server time (HHMM-HHMM format). Default 0000-0000 means 24 hours with no restriction. This uses exchange server time, not your local time.
Alert System — App Alert and Custom JSON
How to activate alerts:
Set the alert mode to App Alert or Custom in the settings panel
Create a PulseWire alert on the chart (right-click → Add Alert)
In the alert message box, paste exactly: {{strategy.order.alert_message}}
This placeholder delivers the correct message for each order event automatically
App Alert mode sends a pre-formatted text message for each event:
ENTRY LONG : {price}
STOP LOSS : {stop level}
TARGET PRICE : {target level}
Exit alerts include a PNL percentage. No additional setup is required.
Custom mode — JSON webhook for bot integration:
Four separate input fields accept a single-line JSON string — one per order event:
Long Entry — fires when a Long position opens
Long Exit — fires when a Long position closes (TP, SL, or trailing stop)
Short Entry — fires when a Short position opens
Short Entry — fires when a Short position opens
Short Exit — fires when a Short position closes (TP, SL, or trailing stop)
Paste your JSON as a single line into each field. PulseWire's input.string stores the content as a single line regardless of how it was formatted, making it safe for all webhook receivers.
Settings Guide — Commission, Slippage, Margin
Default values are conservative starting points. Edit the strategy() declaration at the top of the script to match your broker and market. Detailed inline comments in the script explain every parameter.
Commission defaults (0.1% per side, 2 ticks slippage):
Stocks zero-commission broker → 0.0%
Stocks SET Thailand → 0.16%
Crypto spot (Binance) → 0.1%
Crypto futures (Binance taker) → 0.04%
XAUUSD $7 per standard lot → change commission_type to strategy.commission.cash_per_contract and commission_value to 0.07 ($7 ÷ 100 oz)
Position sizing (default 2% of equity):
For lot-based markets (Forex, XAUUSD) change default_qty_type to strategy.fixed and default_qty_value to the number of units. On XAUUSD: 1 unit = 1 oz, so 0.01 lot = value of 1, 0.10 lot = value of 10, 1.00 lot = value of 100.
Margin/leverage simulation:
Both margin_long and margin_short are 0 by default (no margin simulation). Formula: margin value = 100 / leverage ratio. Example: 1:500 leverage → margin_long = 0.2. These values cannot be set from the input panel — edit them directly in the strategy() call.
Repainting Warning
Before connecting any indicator to the User Zone, verify it does not repaint. A repainting indicator places signal arrows on past bars using data from future bars that did not exist at the time — backtest results will look excellent while live trading produces nothing like it.
How to check using Bar Replay:
Open the indicator on your chart and find a signal arrow in the past
Open Bar Replay and rewind to before that signal appeared
Step forward one bar at a time using Shift + →
Do not use the Play button (Shift + ↓) — bars move too fast to catch a disappearing arrow
If the arrow appears and stays permanently → safe to use. If the arrow appears then disappears or moves as you advance → repainting confirmed, do not use in a strategy.
How to check using Alert Log:
Enable the indicator's built-in alert, wait for it to fire on a live bar, then compare the alert log entry to the signal arrow on the chart. If they do not match in timing or direction → repainting.
Disclaimer
This script is published for educational purposes only. It is a framework and template — not a complete trading system and not financial advice. Backtest results shown in Strategy Tester reflect historical data only and do not guarantee future performance. Past performance is not indicative of future results.
All trading involves significant risk of loss. Do not trade with money you cannot afford to lose. The results produced by this template depend entirely on the signal logic the user provides — the author accepts no responsibility for any trading decisions made using this script or any modifications of it.
Before using any strategy in live trading, you should fully understand how it works, verify its logic independently, and test it thoroughly on a demo account. Always consult a qualified financial advisor before making investment decisions.
The pre-built Moving Average Cross trigger and Moving Average Trend filter included in the User Zone are provided as examples only — they are not recommendations to trade any specific method.
Strategy
Zuri FVG Imbalance Reaction ZonesZuri FVG Imbalance Reaction Zones highlights fair value gaps and tracks how price interacts with them in real time.
Each imbalance is projected forward and remains active until price confirms invalidation with a close beyond the opposite side of the zone, using a configurable buffer. This avoids premature removal from simple wick fills and gives a more accurate read of whether the imbalance is still in play.
Zones update based on behavior:
Fresh zones show untouched imbalances
Tapped zones indicate price has entered the gap
Reaction zones highlight when price responds in the expected direction after a tap
This makes it easier to quickly identify:
Untouched liquidity
Valid reaction areas
Failed imbalances that no longer matter
Built for intraday execution, this keeps the chart clean while focusing on the imbalances that are actually influencing price.
Indicator
GC / MGC / GLD Cash-Close Ladder JessnatThis indicator builds a dynamic price ladder for Gold Futures (GC / MGC) based on the relationship with GLD (Gold ETF) using the previous U.S. cash session close.
It mirrors ETF-to-futures alignment, allowing you to visualize where gold futures are trading relative to their implied GLD value.
⸻
How it works
• The script captures the previous cash close (3:59–4:00 PM New York time) for:
• GC1! (Gold Futures)
• GLD (Gold ETF)
• It calculates a fixed daily ratio:
GC / GLD
• Using this ratio, the script:
• Converts the current GC/MGC price into an implied GLD value
• Rounds it to your selected step size
• Builds a ladder of levels above and below
• Converts those levels back into GC/MGC price levels
⸻
What appears on chart
• Horizontal levels plotted on GC or MGC charts
• Each level represents a GLD-equivalent value
• Labels display the corresponding GLD price
• Center level reflects the current rounded implied GLD
• Symmetrical structure above and below the center
⸻
Why use this
• Identify structured levels derived from ETF alignment
• Spot potential mean reversion and extension zones
• Understand how futures are trading relative to cash-based value
• Useful for intraday structure, execution, and bias
⸻
Key concept
Gold futures (GC / MGC) and GLD move together, but not on a 1:1 scale.
This script normalizes that relationship into a structured ladder based on actual market closes rather than arbitrary levels.
⸻
Notes
• Designed for GC and MGC charts
• Uses GC1! as the futures anchor for both contracts
• Ratio updates once per day after the New York cash close
• Levels are based on price, not contract size
Indicator
Indicator
Indicator
ICT Killzones & Pivots [TFO] - Traditional Chinese VersionICT 殺戮區與樞紐點 — 繁體中文版
ICT Killzones & Pivots — Traditional Chinese Edition
📌 概述 | Overview
本指標為廣受交易者使用的「ICT Killzones & Pivots 」之繁體中文本地化版本,完整保留原版所有功能,並將全部介面文字、設定選單、標籤與警報訊息翻譯為繁體中文,大幅降低中文使用者的操作門檻。
This is a Traditional Chinese localization of the well-known "ICT Killzones & Pivots " indicator. All original functionalities are fully preserved, with every interface element — including settings panels, labels, and alert messages — translated into Traditional Chinese to improve accessibility for Mandarin-speaking traders.
🕐 殺戮區(Killzones)| Session Killzones
根據 ICT(Inner Circle Trader)概念,機構資金最活躍的時段稱為「殺戮區」。本指標預設標記以下五個關鍵時段(以紐約時間為基準):
Based on ICT (Inner Circle Trader) concepts, the periods of highest institutional activity are known as "Killzones." The following five key sessions are marked by default (New York time):
時段 Session時間 Time (ET)🔵 亞洲盤 Asia20:00 – 00:00🔴 倫敦盤 London02:00 – 05:00🟢 紐約早盤 NY AM09:30 – 11:00🟡 紐約午休 NY Lunch12:00 – 13:00🟣 紐約下午盤 NY PM13:30 – 16:00
每個時段皆可個別啟用/停用,並自訂名稱與顏色。
Each session can be individually toggled, renamed, and color-customized.
📐 核心功能 | Core Features
殺戮區方塊 | Session Boxes
以半透明色塊標示各殺戮區範圍,清晰呈現每個時段的高低點震盪區間。
Translucent boxes highlight each killzone's high-to-low range, providing a clear visual of intraday price structure.
樞紐點線 | Pivot Lines
自動標記每個殺戮區結束後的最高點與最低點,並在未被突破前持續延伸,協助識別關鍵支撐與壓力位。
Automatically marks the high and low of each completed killzone session. Lines extend until the level is mitigated, helping identify key support and resistance.
中間點 | Midpoint Lines
可選擇顯示每個殺戮區的50%均衡價位,常作為潛在回撤目標。
An optional display of the 50% equilibrium level within each killzone, commonly used as a retracement target.
振幅統計表 | Range Table
即時顯示各殺戮區的當前振幅與歷史平均振幅,協助評估當日市場波動性。
A real-time table displaying the current and historical average range of each killzone, useful for assessing daily market volatility.
日/週/月開盤線與高低點 | D/W/M Open & High/Low Lines
標記日、週、月級別的開盤價、前高與前低,提供多時間框架的重要參考價位。
Marks the open price and prior high/low for daily, weekly, and monthly timeframes as key multi-timeframe reference levels.
開盤價格線 | Custom Opening Price Lines
最多支援8條自訂時間的水平開盤線,可自行設定任意時間點(如真實日開盤00:00、倫敦開盤等)。
Up to 8 custom horizontal open price lines, configurable for any time (e.g., True Day Open at 00:00, London open, etc.).
星期標籤 | Day-of-Week Labels
在圖表底部或頂部自動顯示星期幾標籤,輔助辨識每日結構。
Automatically displays day-of-week labels at the top or bottom of the chart to assist with daily structural analysis.
時間戳記線 | Timestamp Vertical Lines
最多可設定4條自訂垂直時間線,標記任意重要時間節點(如經濟數據公布時間、特定開盤時間等)。
Up to 4 custom vertical timestamp lines to mark important time events such as economic releases or specific session opens.
突破警報 | Break Alerts
當價格突破殺戮區樞紐高低點,或日/週/月高低點時,自動觸發 PulseWire 警報通知。
Automatically triggers PulseWire alerts when price breaks through killzone pivot levels or D/W/M high/low levels.
⚙️ 主要設定 | Key Settings
繪圖保留天數:控制圖表上各類繪圖的最大顯示筆數
時間框架上限:超過指定時間框架後自動隱藏所有繪圖
時區:支援全球主要時區,預設為紐約時間
繪圖截止時間:可設定樞紐線與開盤線的自動停止延伸時間
樞紐延伸模式:「直到被突破」或「突破後繼續」兩種模式可選
Session Drawing Limit: Controls the maximum number of drawings retained on the chart
Timeframe Limit: Automatically hides all drawings above the specified timeframe
Timezone: Supports all major global timezones, defaulting to New York (ET)
Drawing Cutoff Time: Optionally stops pivot and open lines from extending at a set time
Pivot Extension Mode: Choose between "Until Mitigated" or "Past Mitigation"
🌐 本地化說明 | Localization Notes
本版本為原作者 @tradeforopp 所著「ICT Killzones & Pivots 」之繁體中文翻譯版,依據 Mozilla Public License 2.0 授權發佈。所有交易邏輯、核心演算法與功能設計之著作權均歸屬於原作者。本版本僅對使用者介面文字進行在地化處理,未更動任何核心程式邏輯。
This is a Traditional Chinese translation of "ICT Killzones & Pivots " originally authored by @tradeforopp, published under the Mozilla Public License 2.0. All trading logic, core algorithms, and functional design remain the intellectual property of the original author. This version only localizes the user interface text without modifying any core logic.
⚠️ 免責聲明 | Disclaimer
本指標僅供技術分析參考用途,不構成任何投資建議。交易涉及風險,請依據個人風險承受能力審慎決策。
This indicator is provided for technical analysis reference purposes only and does not constitute investment advice. Trading involves risk; please make decisions according to your own risk tolerance.
原始腳本 Original Script:ICT Killzones & Pivots by @tradeforopp
授權 License:Mozilla Public License 2.0
Indicator
Fashionably Late ScalpFashionably Late Scalp — FL Scalp
The Fashionably Late Scalp is an intraday momentum strategy originally developed by SMB Capital. This indicator fully automates the setup detection, entry signal, and trade management levels directly on your chart.
📖 How the Strategy Works
The edge behind this scalp is momentum divergence followed by convergence:
A stock "In Play" makes a sustained move in one direction, causing the 9 EMA and VWAP to diverge
Price puts in a distinct low (for longs) or distinct high (for shorts) — known as "The Turn"
Price begins retracing, and the 9 EMA starts converging back toward VWAP
The entry trigger fires when the 9 EMA crosses VWAP — you are entering fashionably late, after the momentum is already confirmed and building
🎯 Entry, Stop & Target Rules
Long entry: Upsloping 9 EMA crosses above a flat-to-downsloping VWAP
Short entry: Downsloping 9 EMA crosses below a flat-to-upsloping VWAP
Stop Loss: 1/3 of the distance from the cross point back to the divergence extreme (tight stop — momentum should be on your side immediately)
Take Profit: 1 full measured move above (or below) the cross point — equal to the distance from the divergence low/high to the entry
R:R is calculated dynamically based on your actual entry price (close of the signal candle), so it reflects the real risk/reward of each specific setup
⚙️ Indicator Features
✅ Session filter — signals only fire during regular market hours (9:30 AM – 4:00 PM ET, configurable)
✅ One trade at a time — no new signal fires while a trade is still open; waits for TP or SL to be hit first
✅ Auto TP/SL lines — drawn at signal time and automatically trimmed when the trade closes
✅ TP & SL hit markers — labels placed on the bar where price touched the level
✅ Live dashboard — shows trade state, entry price, active TP/SL, real-time R:R, EMA/VWAP slope, and divergence phase
✅ Timestamp-anchored objects — all lines and labels use xloc.bar_time so they never shift when zooming
✅ 5 alert conditions — Long signal, Short signal, Any signal, TP hit, SL hit
✅ Slope filters — EMA must be sloping in the signal direction; VWAP must be flat or opposite
⚠️ Best Timeframes
Designed for intraday scalping on 1-minute or 2-minute charts. Works best on stocks that are In Play — significant news catalyst, elevated relative volume (3× or more), and trading near a key technical level.
This indicator is for educational purposes only and does not constitute financial advice. Past performance of any strategy is not indicative of future results. Always use proper risk management.
Indicator
Ultimate Indicator Dashboard [MTF]MTF Indicator Status Dashboard
Overview
The MTF Indicator Status Dashboard is a comprehensive technical analysis tool designed to provide a real-time "health check" of any asset across multiple indicators. Instead of cluttering your chart with multiple oscillators and moving averages, this script condenses the state of RSI, Stochastic, Momentum, MACD, and key Moving Averages into a clean, customizable table.
It doesn’t just show where the indicator is; it interprets the momentum and trend quality to categorize the market state into 5 levels: Strong Buy (CF), Buy (C), Neutral (N), Sell (V), and Strong Sell (VF).
How It Works: The Logic
The dashboard evaluates the following indicators based on the timeframe currently selected on your chart:
RSI (Relative Strength Index):
Strong Buy/Sell: Triggered when the RSI is in extreme oversold/overbought territory and starts to reverse.
Trend Shifts: Detects 50-level crosses for early trend confirmation.
Stochastic Oscillator:
Precision Entries: Identifies bullish/bearish crosses specifically within the extreme zones (<20 or >80).
Momentum:
Acceleration: Differentiates between a positive momentum that is accelerating (Strong Buy) versus one that is fading (Neutral/Sell).
MACD:
Trend Convergence: Tracks the relationship between the MACD Line and the Signal Line, prioritizing crosses that occur below or above the zero line for high-probability signals.
Moving Averages (EMA 50 & SMA 200):
Provides instant visual feedback (▲/▼) on whether the price is trading above or below the short-term (50) and long-term (200) trend filters.
Customization & Inputs
The script is designed to be fully adaptable to your personal trading strategy:
Visual Configuration:
Position: Move the table to any corner of your chart (Top Right, Bottom Left, etc.) to avoid overlapping with your price action.
Size: Choose between Tiny, Small, or Normal text sizes depending on your screen resolution.
Oscillator Parameters:
Fully adjustable lengths for RSI, Momentum, and MACD.
Fine-tune the Stochastic smoothing (%K, %D, and Smooth) to reduce noise.
Moving Averages:
The lengths for the EMA and SMA are customizable, allowing you to switch from the default 50/200 to other popular pairs like 20/50 or 9/21.
Signal Legend
CF (Strong Buy): Deep green. High-probability bullish reversal or strong trend acceleration.
C (Buy): Light green. Bullish bias or positive indicator cross.
N (Neutral): Grey. Range-bound or lack of clear momentum.
V (Sell): Light red. Bearish bias or negative indicator cross.
VF (Strong Sell): Dark red. High-probability bearish reversal or strong trend exhaustion.
▲ / ▼: Price position relative to the EMA 50 and SMA 200.
Disclaimer
This indicator is for educational and informational purposes only. Past performance is not indicative of future results. Always use proper risk management.
Indicator
CBC Engine [MMT]CBC Engine is a Candle-By-Candle (CBC) Flip strategy indicator for PulseWire, specifically optimized for the 3-minute chart with a 10-minute higher-timeframe (HTF) bias.
It is based on the CBC Flip method originally popularized by MapleStax . The core idea is simple yet powerful: a new directional bias is established the moment price closes beyond the previous candle’s extreme.
Core Logic – CBC Flip
Bullish Flip (Long) : Current candle closes above the previous candle’s High
Bearish Flip (Short) : Current candle closes below the previous candle’s Low
If neither happens, the previous CBC state persists (no new flip).
Strong Flip (optional, higher accuracy):
Long : Price first sweeps below the previous low (liquidity grab), then closes above the previous high.
Short : Price first sweeps above the previous high, then closes below the previous low.
Key Filters & Enhancements
1. Trend Environment (EMA + VWAP)
Longs are only allowed when the Slow EMA > VWAP (bullish environment)
Shorts are only allowed when the Slow EMA < VWAP (bearish environment)
You can also display a Pullback EMA for extra context.
2. Dual Timeframe Bias (3m + 10m)
The 10-minute chart provides the overall bias using its own CBC state.
Primary rule: Only take 3m flips that align with the 10m CBC bias.
Bounce Override (very useful): If the 3m flip goes against the 10m bias, it can still fire only if price bounces off the 10m EMA band (Fast & Slow EMA) while that band is trending in the direction of the trade.
3. Stop Loss Logic
Long SL = Lowest low of the last N candles (default N=2)
Short SL = Highest high of the last N candles
The SL is plotted on the chart and tracked internally. The position is invalidated if price closes beyond the SL.
Visual & Usability Features
- Background Coloring : Shows the current 10m HTF bias (green = bullish, red = bearish, gray = neutral).
- EMA Cloud : Filled areas between 9/13 and 13/21 EMAs to visualize trend strength and pullbacks.
- VWAP : Session-anchored VWAP with customizable style.
- Signals :
Main aligned signals → Lime ▲ LONG or Red ▼ SHORT labels with SL level.
Bounce overrides → Blue ▲ BOUNCE or Orange ▼ REJECT labels.
Weak flips (when “Show ALL Flip Arrows” is on) → small faint triangles for context.
- Dashboard : Shows 10m Bias, 3m State, EMA/VWAP environment, Current Position (Main or Bounce), Stop Loss, and Mode (Strong Flip vs All Flips).
- Session Filter : Optional intraday session (default 09:30–16:00).
Best Use Case
Primary setup : 3-minute chart for entries + 10-minute for bias.
Works best in trending markets where the HTF bias is clear.
The bounce override makes it more flexible in choppy or ranging conditions by allowing counter-bias entries when price respects the HTF EMA band.
“Strong Flips Only” mode significantly reduces noise but gives fewer signals.
Indicator
Strategy
Indicator
Dynamic Grid BOT EngineWHAT IT DOES
Dynamic Grid Engine (DGE) is a fully original grid trading visualization
indicator built in Pine Script v6. It automatically calculates and draws
a dynamic price grid on your chart, where each grid level adapts to
current market volatility using ATR (Average True Range).
Unlike static grid indicators that use fixed dollar or percentage steps,
DGE adjusts its grid spacing in real time based on how volatile the market
currently is. In a high-volatility environment the grid widens. In a
low-volatility environment the grid narrows. This means the grid always
reflects realistic entry and exit zones for the current market condition.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
WHAT MAKES IT ORIGINAL
Most grid indicators on PulseWire use either a fixed price step or a
fixed percentage step between levels. DGE introduces three original
components that are not combined in any existing public script:
1.ATR-based dynamic spacing
Grid step = ATR(length) x multiplier. This links grid spacing directly
to market volatility, making the grid self-adjusting without any manual
input after setup.
2.Built-in profit calculator
Each grid level displays the estimated profit in dollars for one
completed buy-sell cycle at that level, calculated from your defined
position size. This removes the need for external calculators.
3. Neutral zone visualization
A highlighted box between B1 and S1 shows the area directly around
the current price where no orders are active. This helps traders
visually identify the price range where the grid is waiting.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
HOW TO USE
Step 1 Set your grid size
In the Grid Settings panel, choose how many levels per side you want
(1 to 50). A common setup is 5 to 15 levels per side depending on
your capital allocation. More levels = wider coverage but more capital
required per active grid.
Step 2 Set grid spacing
Grid spacing (ATR x) controls how far apart each level is. A multiplier
of 0.5 means each level is half an ATR away from the next. A multiplier
of 1.0 means one full ATR per step. For crypto on 4H, 0.3 to 0.7 is
typical. For forex, 0.5 to 1.5 works well.
Step 3 Set position size
In the Profit Calculator panel, enter how many dollars you allocate per
grid order. DGE will then show the estimated dollar profit next to each
level label. For example, if position size is $1000 and grid step is
0.43%, each completed grid cycle earns approximately $4.30.
Step 4 Read the chart
Buy levels (green, labeled B1 B2 B3...) are below the current price.
These are where your buy orders sit. Sell levels (red, labeled S1 S2 S3)
are above. The white neutral zone box between B1 and S1 shows the
current spread around price where no active orders exist.
The nearest Buy and Sell levels are highlighted with a thicker line
and an arrow label (BUY here / SELL here) for instant identification.
Step 5 Monitor the dashboard
The top-right panel shows: Grid Step size and percentage, Total Range
covered on each side, Upper and Lower bounds of the full grid, Grid
Center price, whether price is currently inside or outside the grid,
Position Size, Profit per Grid cycle, Total potential profit if all
levels complete, and current ATR value.
Step 6 Use auto-recenter
When Auto-recenter is enabled, the grid automatically repositions its
center to the current price whenever price moves beyond the outer
boundary. This keeps the grid relevant without manual adjustment.
When disabled, the grid stays fixed at the price where it was placed.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
CALCULATION LOGIC
Grid step:
grid_step = ATR(atr_length) x atr_multiplier
Grid levels:
Sell level i = grid_center + grid_step x i
Buy level i = grid_center - grid_step x i
Percentage distance from current price:
Sell % = (level - close) / close x 100
Buy % = (close - level) / close x 100
Profit per grid cycle:
profit = position_usd x (grid_step / level_price)
Total potential profit (all levels):
total = profit_per_grid x grid_levels x 2
Neutral zone:
Top = grid_center + grid_step x 1 (S1 level)
Bottom = grid_center - grid_step x 1 (B1 level)
Auto-recenter trigger:
Fires when close > grid_center + grid_step x grid_levels
OR when close < grid_center - grid_step x grid_levels
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
SETTINGS OVERVIEW
Grid Settings:
Levels per side - number of buy and sell levels (1 to 50)
ATR Length - period for ATR calculation (default 14)
Grid spacing ATR x - multiplier for grid step width (0.1 to 5.0)
Auto-recenter - automatically move grid when price exits range
Visual:
Buy / Sell / Mid colors
Extend lines (bars) - how far right the grid lines extend
Neutral Zone:
Show neutral zone box - toggle the B1-S1 highlight box
Zone color
Profit Calculator:
Show profit per level - toggle $ profit labels on each level
Position size ($) - dollar amount per grid order
Nearest Level:
Show nearest BUY/SELL arrow - highlights the closest active level
Dashboard:
Show Dashboard - toggle the info panel
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ALERTS INCLUDED
Price crossed a grid level
Price outside grid range
Price above upper bound
Price below lower bound
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
COMPATIBILITY
Works on all assets - Crypto, Forex, Stocks, Futures, Indices.
Works on all timeframes.
Recommended timeframes: 15m to 4H for active grid trading.
No repainting. All calculations on bar close.
No request.security() calls. No lookahead bias.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
IMPORTANT NOTES
This indicator is a visualization tool only. It does not place any
orders or connect to any broker or exchange. The profit calculations
are estimates based on the ATR-derived grid step and your input
position size. Actual results will vary depending on execution,
fees, and market conditions.
Grid trading carries significant risk especially in strongly trending
markets where price moves in one direction beyond the grid range.
Always use proper risk management and never allocate more capital
to a grid than you can afford to lose entirely.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
DISCLAIMER
This indicator is provided for educational and informational purposes
only. It does not constitute financial advice or a recommendation to
buy or sell any asset. Past performance of any grid configuration is
not indicative of future results. The author is not responsible for
any trading losses incurred from use of this indicator.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Indicator
SPY / QQQ Reference Ladder (Cash Close Anchored)Description:
This indicator overlays a dynamic reference ladder on futures charts by mapping SPY (for ES) and QQQ (for NQ) levels onto price.
The ladder is anchored using the previous regular trading hours (RTH) cash close:
• ES/MES → SPY
• NQ/MNQ → QQQ
A fixed ratio is calculated from the prior session close and remains constant throughout the trading day. This allows traders to view equivalent SPY or QQQ price levels directly on futures charts.
Key features:
• Fixed daily mapping based on prior RTH close
• Automatically detects ES or NQ charts
• Displays horizontal ladder levels aligned to futures price
• Labels positioned to the right for quick reference near the price ladder
• Fully customizable colors, spacing, and text size
• Optional display of ticker prefix (SPY / QQQ)
This tool is designed for traders who reference ETF levels while executing on futures, helping align decision-making across correlated instruments.
Indicator
CM_MacD_Ult_MTF_crossesCM MACD Ultimate MTF is a technical indicator based on the classic MACD with several visual enhancements:
What it does:
Calculates the standard MACD (fast EMA - slow EMA) and its signal line (SMA of MACD)
Allows using the current chart timeframe or selecting a different one (multi-timeframe)
Visual elements:
MACD Line — changes color (green/red) based on whether it's above or below the signal line
Signal Line — always yellow
Histogram with 4 colors:
Aqua → rising above zero
Blue → falling but still above zero
Red → falling below zero
Maroon → rising but still below zero
Dots/circles at MACD/Signal crossovers, with the custom filter applied:
Green dot only when a bullish cross occurs while MACD is below zero
Red dot only when a bearish cross occurs while MACD is above zero
Cross filter logic:
The filtered crosses highlight higher-quality signals — a bullish crossover is more meaningful when MACD is still in negative territory (recovering momentum), and vice versa for bearish crosses.
Indicator
Any Oscillator Overlay [TGPT]This indicator projects any oscillator's key levels — midpoint, signal lines, overbought/oversold zones — directly onto the price chart. Tested with RSI, MACD, CCI, Stochastic, Williams %R, and many others, including custom oscillators — without needing to know their internal formula.
The Problem
Traders watch oscillators for midpoint crosses (usually, zero line or 50), overbought/oversold zone entries, and signal line crosses. A cross in the oscillator pane tells you when momentum flipped — but not what price was actually doing at that moment. How many of those crosses happened while price was chopping inside a range, with the oscillator hovering near its midpoint? How many were immediately reversed? How deep did price wick through the oscillator level before recovering? None of this is visible in the oscillator pane. It requires switching back and forth between panes and mentally reconstructing each event in context.
This indicator attempts to collapse those two coordinate systems into one. When oscillator levels are projected onto the price chart, interpretation becomes immediate: you can more clearly see whether a zero cross coincided with a clean directional move or with indecisive ranging; whether price respected the projected signal line or sliced through it repeatedly; whether wicks are constantly piercing overbought and oversold levels — the kind of behavior that looks seemingly clean or unnoticeable in the oscillator pane but tells a different story when projected onto price. Context that would otherwise require mentally switching between panes is visible at a glance across the entire chart history.
The goal is not to replace the oscillator pane. It is to make oscillator behavior readable and interpretable on the price chart itself — something that is usually impossible without knowing the oscillator's internal formula, and often difficult even then.
What makes this possible without being tied to any specific oscillator is a universal normalization method that operates purely on the oscillator's output — no knowledge of its internal formula required. This is what separates this approach from oscillator-specific overlays. The reconstruction works on any oscillator; the visual defaults — overbought/oversold zones, signal line, midpoint conventions — are tuned for what is commonly watched on momentum oscillators, and can be adjusted for other cases.
Prior Approaches
Prior overlay approaches plot the oscillator as a scaled visual proxy positioned above or below price action — the oscillator's values are mapped into the recent high/low price range, then offset from price entirely to avoid interfering with it. This is a deliberate and honest design choice: the projection is treated as a display convenience, not a coordinate transform. The visual sits near price but remains a separate pane in spirit.
Some implementations skip the offset entirely and overlay the rescaled oscillator directly on the candles. Without a meaningful coordinate transform this creates visual noise — the line intersects price arbitrarily, crossovers mean nothing, and the result is harder to read than the original oscillator pane.
The approach here takes the problem seriously as a coordinate transform: oscillator levels are projected directly onto price with structural exactness. When the oscillator crosses zero or its signal line, price crosses the corresponding reconstructed line. The levels are stable across all market conditions and work identically regardless of which oscillator is connected.
How It Works
Projecting an oscillator onto the price chart requires answering one question at every bar:
"What price level corresponds to this oscillator's key levels right now?"
This is a coordinate transform problem. Oscillator units vary by type — RSI is in percentage points, CCI in deviation units, MACD in price difference units. Price lives in its own space. Attempting a direct reconstruction produces wild instability — projected lines flying off the chart, collapsing to a point, or jittering unpredictably as the underlying relationship between oscillator and price shifts. Filtering or smoothing the oscillator values might help avoid the instability but would produce an inaccurate reconstruction — at that point it is a different signal altogether, not the oscillator's levels projected onto price. There is no universal closed-form inversion between the two without knowing the oscillator's internal formula.
The approach implemented here — z-score normalization mapped to price standard deviation — solves the explosion problem mathematically rather than by filtering or smoothing.
Universality — Why Any Oscillator Works
Most oscillator overlay attempts are oscillator-specific. They work by exploiting knowledge of the oscillator's internal formula — for example, knowing that an oscillator is derived from a specific price transform, one can algebraically invert it back into a price level. This approach is precise but narrow: it breaks entirely when applied to a different oscillator, and does not work at all for oscillators not derived from price.
This indicator achieves universality by operating exclusively on the output of the oscillator — the plotted series — without any knowledge of or assumption about its internal construction. This is possible because of two observations:
Observation 1: Most oscillators share a common structural grammar.
Regardless of how they are computed, most oscillators share a common behavioral structure: they oscillate around a reference level (typically zero or 50), they have a signal line (typically a moving average of themselves), and their distance from that reference reflects the strength of the underlying signal. RSI oscillates around 50, CCI around 0, Stochastic around 50 — the absolute scale differs but the grammar is identical.
The z-score transform (osc / stdev(osc)) maps any oscillator's output into this common grammar, expressed in standard deviation units. After normalization, a reading of +1 means the same thing regardless of whether the source was RSI, CCI, or a custom oscillator: the oscillator is one standard deviation above its recent mean. The native scale — percentage points, index units, or whatever it may be — is completely abstracted away.
Observation 2: Price volatility is the natural unit of price-space distance.
Once the oscillator is in z-score units, it needs to be mapped to a price distance. The natural unit for price distance is the price series' own standard deviation — stdev(close, N). This is not an arbitrary choice: the standard deviation of price is the statistical measure of how much price typically moves over the same window used to normalize the oscillator. Mapping one oscillator σ to one price σ creates a dimensionally consistent relationship that self-calibrates to any instrument (BTC/USDT, EUR/USD, SPX, a penny stock) and any timeframe (1-minute, daily, weekly) without any manual scaling.
The product of these two observations is the core formula:
zeroLine = close − (osc / stdev(osc)) × stdev(close) × sensitivity
This formula has no hard-coded constants specific to any oscillator. No lookup tables, no conditional branches for different oscillator types, no instrument-specific parameters. Its inputs are: the oscillator's output series, the price series, a window length, and a sensitivity multiplier. Given any oscillator series as input, it produces a geometrically consistent price-space projection.
The only assumption made is that the oscillator's zero line (or midpoint) represents momentum equilibrium — a condition that holds across all momentum oscillators by design. For bounded oscillators like RSI or Stochastic where equilibrium is at 50 rather than 0, the Oscillator midpoint parameter shifts the reference accordingly. Internally, (osc − midpoint) is normalized rather than osc directly — so setting midpoint to 50 makes the zero line correspond to RSI = 50, and the signal line to RSI signal crossovers, with no other changes required.
Because the method works purely on the output series, it is not even limited to oscillators in the strict sense. Any zero-based or midpoint-based series — exchange funding rates, open interest deltas, custom composite signals — can be projected onto price through the same formula. An example using funding rate is shown further down in Creative Uses .
As noted earlier, the reconstruction itself is universal. Visual conventions (fills, colors, zones) may need adjustment for oscillators outside the typical momentum family — ADX, for example, benefits from different fill and color logic — but the underlying projection works without modification.
Below is MACD on BTCUSDT weekly, with the MACD histogram zero line projected onto price. Settings: Oscillator source: MACD Histogram, Normalization window: 26 (matching MACD slow length), Midpoint: 0.
Below is Williams %R on BTCUSDT weekly, with the midpoint and overbought/oversold zones projected onto price. Settings: Oscillator source: Williams %R, Normalization window: 14 (matching Williams %R length), Midpoint: −50, Overbought level / extreme: −20 / 0, Oversold level / extreme: −80 / −100.
Below is CCI on BTCUSDT weekly, with the CCI zero line projected onto price. Settings: Oscillator source: CCI, Normalization window: 20 (matching CCI length), Midpoint: 0.
The Math
Step 1 — Z-Score Normalization
oscStd = stdev(osc, N)
oscNorm = clamp((osc − midpoint) / oscStd, −6, +6)
The oscillator is divided by its own rolling standard deviation over window N. This converts any oscillator — regardless of its native scale — into standard deviation units (z-score). The result is dimensionless and bounded in practice: z-scores beyond ±6 are statistically rare and are hard-clamped to prevent outlier distortion.
This solves the scale problem : RSI, CCI, and any custom oscillator all produce a normalized value in the same range, making the subsequent price mapping universal.
Step 2 — Price Standard Deviation Mapping
priceStd = stdev(close, N)
step = priceStd × sensitivity
zeroLine = close − oscNorm × step
The normalized oscillator is multiplied by the price series' own standard deviation (scaled by a user-controlled sensitivity factor, 1.0 by default). This maps one unit of oscillator z-score to one standard deviation of price movement — a dimensionally consistent relationship.
When the oscillator is at its midpoint (oscNorm = 0), zeroLine = close exactly. The zero line sits on price. When the oscillator is at +1σ (oscNorm = 1), the zero line sits one price standard deviation below close, reflecting that price is one sigma above its momentum equilibrium. The distance is always expressed in the instrument's own volatility units — no arbitrary scaling.
Why it cannot explode. Given that reconstructing an oscillator in price space is prone to the kind of wild instability described earlier, it is worth stating explicitly why this formulation is well-behaved. There is no division by a potentially-zero slope. The denominator oscStd is non-negative, and the zero case (a constant oscillator) is handled explicitly rather than dividing. The product oscNorm × step is bounded by 6 × priceStd × sensitivity — a finite, always-defined quantity.
Step 3 — Signal Line Reconstruction
diff = osc − sigSrc
diffStd = stdev(diff, N)
diffNorm = clamp(diff / diffStd, −6, +6)
sigLine = close − diffNorm × step
When osc = sigSrc (a crossover), diff = 0, diffNorm = 0, and sigLine = close. The signal line sits on price at the moment of a crossover, exactly as the zero line sits on price at a zero crossing. This is the correct structural equivalence.
Using osc − sigSrc rather than normalizing sigSrc directly is important: it measures the gap between oscillator and signal, which is the quantity that crosses zero on a signal crossover — not the signal's absolute level.
A second signal line is supported through the same construction. This is primarily useful for custom oscillators with two independent signal sources, or for advanced setups — for example, applying an external moving average to the oscillator and feeding that back in as a second signal. The reconstruction treats each signal as its own osc − sigSrc gap and projects it accordingly.
What Else You Can Read From It
Volatility-Normalized Distance
One practical benefit of projecting oscillator levels onto price is that the visual gap between price and the zero line becomes a direct, volatility-adjusted reading of momentum strength — something the oscillator pane does not provide.
In the oscillator pane, a reading of RSI 60 occupies the same visual distance from 50 whether the market is in a tight consolidation or a wide trending move. The absolute value looks identical across different volatility regimes. On the overlay, the same reading produces a larger or smaller gap depending on priceStd at that moment — the distance self-scales to current market conditions. A wide gap signals that momentum is far from equilibrium relative to how much price is actually moving. A narrow gap signals that momentum is near neutral relative to current volatility, even if the raw oscillator number appears elevated.
This makes the overlay useful not just for identifying crossover events but for assessing their weight. A zero line cross accompanied by a wide, expanding gap carries different context than one where price and the zero line have been trading close together — the former reflects a genuine momentum shift in the context of active price movement, the latter may reflect a cross in a low-energy, low-conviction environment.
The EMA Layer
The optional EMA of the zero line is a different signal from the zero line itself.
In the oscillator pane, an EMA of the zero line is a constant — the EMA of a fixed level carries no information. On the price chart, the zero line is not fixed: it drifts with price as momentum conditions change. An EMA of that drifting series tracks where momentum equilibrium has been spending its time in price space over the EMA window — a smoothed reference for recent neutral momentum.
This creates two distinct signals:
Zero line — where momentum equilibrium is right now , bar by bar.
EMA of zero line — where momentum equilibrium has been on average over the recent window. A slowly rising EMA indicates the neutral momentum level has been drifting upward in price space — consistent with a gradual bullish bias. It can also help filter noise: a zero line cross that does not pull the EMA in the same direction may reflect a low-conviction move that is unlikely to develop into a sustained shift.
Creative Uses
The reconstruction does not care whether the input series is a traditional oscillator. Any zero-based or midpoint-based series can be used as a source and projected onto price through the same formula. A practical example is exchange funding rate: a zero-based series that reflects perpetual futures positioning, with no built-in signal line of its own.
The setup below uses an indicator-on-indicator trick that PulseWire supports natively. First, a standard EMA is applied to the funding rate series in its own pane (an indicator applied to another indicator). Then, in Any Oscillator Overlay , funding rate is selected as the oscillator source and the EMA of funding rate is selected as Signal source 1. The overlay projects the gap between the two onto price — so when funding rate crosses its EMA, price crosses the projected signal line exactly. Only the signal line is visualized here; the midpoint is disabled to keep the chart focused on the crossover events.
Below is ETHUSDT.P 1h with Binance funding rate as the oscillator source and an EMA(15) of funding rate as the signal line. Settings: Oscillator source: Funding Rate, Signal source 1: EMA(15) of Funding Rate, Midpoint: 0, Midpoint line: hidden, Signal Line 1: visible.
Parameters
General
Oscillator source — Select the main plot of your oscillator. Accepts any series regardless of native scale: MACD, RSI, CCI, Stochastic, volume-based oscillators, or any custom oscillator.
Signal source 1 — The oscillator's signal line. If your oscillator has no signal line, leave as close and keep the signal line hidden (hidden by default).
Signal source 2 — Optional second signal line. Useful for custom oscillators with two independent signal sources, or for advanced setups like feeding an external EMA of the oscillator back in as a signal. Leave as close and hide if not needed.
Oscillator midpoint — The oscillator value representing momentum equilibrium. 0 for zero-based oscillators (MACD, CCI). 50 for bounded oscillators (RSI, Stochastic, MFI).
Normalization window — Rolling window for stdev(osc) and stdev(close). Range: 10–2000. Longer = more structural, slower to adapt. Shorter = more reactive, noisier levels. Match to your oscillator's primary lookback length.
Sensitivity — Multiplier on priceStd. At 1.0, one oscillator σ maps to one price σ. Increase to widen spacing between levels; decrease to tighten. Range: 0.1–5.0. Does not affect crossover accuracy.
Z-score clamp — Maximum z-score before hard clamping. Default 6.0. Increase if overbought/oversold lines behave unreliably — this happens when the oscillator's standard deviation is small relative to the distance to OB/OS levels.
Midpoint
Line — Projects the oscillator's midpoint (zero line or 50) onto price. When the oscillator crosses its midpoint, price crosses this line exactly. Bull/bear color by price position relative to the line.
Fill — Fills the area between price and the projected midpoint. Bull color when price is above, bear color when below.
EMA — Optional EMA of the projected midpoint. Length is configurable. Tracks where momentum equilibrium has been drifting in price space. Bull/bear color by price position.
EMA fill — Fills the area between price and the midpoint EMA.
Signal Line 1 / Signal Line 2
Line — Projects the signal line crossover level onto price. When the oscillator crosses its signal line, price crosses this line exactly. Bull/bear color by price position.
Fill — Fills the area between price and the projected signal line.
EMA — Smoothed version of the signal line. Length is configurable. A slower-moving reference for where recent crossover activity has been centered.
EMA fill — Fills the area between price and the signal line EMA.
Overbought / Oversold Zones
Overbought level / extreme — Level: the oscillator value considered overbought (e.g. 70 for RSI, 100 for CCI). Extreme: the oscillator's absolute maximum (e.g. 100 for RSI). The fill zone spans between these two projected levels when price is inside that zone.
Overbought line — Shows the projected overbought level line. If it behaves unreliably, increase the Z-score clamp.
Overbought fill — Fills the zone between the overbought level and extreme only when price is inside that zone.
Oversold level / extreme — Level: the oscillator value considered oversold (e.g. 30 for RSI, −100 for CCI). Extreme: the oscillator's absolute minimum (e.g. 0 for RSI).
Oversold line — Shows the projected oversold level line.
Oversold fill — Fills the zone between the oversold level and extreme only when price is inside that zone.
Setup
RSI is a good starting point for getting familiar with the indicator. Add it to the chart, connect it as the oscillator source, set the midpoint to 50, and the zero line will immediately track RSI's equilibrium level on price. Connect the signal line. Toggle overbought/oversold on. The same approach then generalizes to any oscillator.
Add your oscillator of choice to the chart
Add Any Oscillator Overlay to the same chart
In indicator settings → Oscillator source : select the main plot of your oscillator
In indicator settings → Signal source 1 : select the signal line plot of your oscillator (hidden by default; leave as close and keep hidden if no signal exists)
Set Oscillator midpoint to match your oscillator's neutral level (0 for CCI/MACD, 50 for RSI/Stochastic). Setting this incorrectly will produce a meaningless reconstruction
Tune Normalization window to match your oscillator's primary lookback length
Adjust Sensitivity until zero and signal lines feel proportionally spaced relative to typical price movement on your instrument. The default of 1.0 works well on most oscillators
If OB/OS levels look unreliable on the chart, increase the Z-score clamp
Limitations
Intended use. This indicator is intended for reading trend context, zero line crosses, signal line crosses, and overbought/oversold level monitoring. Zero and signal line crosses are structurally exact: when the oscillator crosses zero or its signal line, price crosses the corresponding reconstructed line with no approximation. Overbought/oversold levels are reliable when the Z-score clamp is set appropriately — if OB/OS lines appear to behave unreliably, increase the Z-score clamp in General settings.
Divergence detection is outside the scope of this indicator. Detecting divergence requires precise comparison of price and oscillator pivots — a problem sensitive to source consistency and pivot detection methodology. The z-score normalization used here adds a volatility layer that can mask or exaggerate pivot differences, making it unsuitable for divergence analysis. Dedicated divergence tools should be used instead.
The mapping is exact but the relationship it encodes is a modeling choice. The computation is precise — the zero line is always exactly where the formula places it. What the formula encodes is a specific assumption: one oscillator standard deviation maps to one price standard deviation. This is a principled choice, not a mathematical inversion of the oscillator's internal formula, and like any modeling assumption it carries trade-offs. Similar trade-offs are present in virtually every technical indicator. Critically, crossover events are unaffected: when the oscillator crosses zero or its signal line, the reconstructed line crosses price exactly, regardless of the scaling assumption.
Normalization window sensitivity. The choice of N affects both the oscillator normalization and the price mapping. A window that is too short may produce unstable stdev estimates; a window too long may lag structural changes in volatility. There is no universally optimal value — match it to the oscillator's own primary lookback length.
Repainting. This indicator does not repaint by itself — it is a wire, transforming whatever is fed into it from the oscillator pane to the price pane. If the source oscillator repaints, you will see that behavior here as well; if it does not, neither will this.
Educational Use
Beyond live analysis, this indicator is a practical tool for building intuition about oscillator behavior. By loading historical data and attaching any oscillator, a trader can immediately audit how reliable a given crossover strategy has actually been on that instrument — visually, on the price chart. How often did the zero cross coincide with a sustained move? How frequently did price wick through the projected signal line and reverse? Were overbought levels actually respected, or did price spend extended time above them? These questions are answerable at a glance in a way the oscillator pane alone does not allow.
Once oscillator levels live on the price pane, they can be read in relation to everything else already there. A zero line cross that coincides with a key moving average, a major support/resistance level, or a volume profile node reads very differently from one occurring in open space. That kind of confluence is invisible when the oscillator is isolated in its own pane — it becomes immediately visible here.
This makes the indicator particularly useful for traders who are evaluating an oscillator-based approach before committing to it — or for those trying to understand why a seemingly clean oscillator system has underperformed in practice.
This indicator is published for educational and analytical purposes. It does not generate trade signals on its own — it relies entirely on the connected oscillator — and does not constitute financial advice. The overlay encodes a specific modeling choice, not a mathematical inversion of the oscillator. Validate behavior on your specific oscillator and instrument before drawing conclusions.
Indicator
AG Pro Inducement & Trap Quality [AGPro Series]AG Pro Inducement & Trap Quality
OVERVIEW / WHAT IT DOES
AG Pro Inducement & Trap Quality is an overlay tool built to map short-lived trap behavior around smaller inducement levels rather than broad market structure alone. The script focuses on moments where price appears to invite participation through a nearby internal level, briefly pushes beyond that level, and then reclaims it quickly enough to suggest failed continuation pressure.
In practical terms, this tool is designed to highlight a very specific type of behavior: local liquidity engineering around minor swing references. Instead of treating every sweep as equally meaningful, it evaluates whether the move shows the characteristics of a more deliberate trap sequence. This helps separate routine noise from cleaner rejection events that may deserve closer attention.
The script identifies compact inducement references, monitors whether those levels are exceeded, and then evaluates the quality of the reclaim using a rules-based scoring model. The output is intentionally visual and compact: trap labels, score readouts, engineered-liquidity context, and a lightweight status panel that keeps the chart readable while still surfacing the most important state information.
This is not a broad “smart money everything” overlay, and it is not a general market-structure engine. Its role is narrower and more specific: to help users study micro trap behavior around inducement levels with a structured, visual framework.
UNIQUE EDGE
Many trap-style overlays simply mark local sweeps or label wick rejections without distinguishing between low-quality noise and more organized rejection behavior. This script takes a narrower path.
Its core distinction is that it is built around inducement-first logic. The process begins with smaller internal swing references that may function as local liquidity magnets. From there, the script evaluates whether price briefly runs that level and reclaims it with enough quality to qualify as a more meaningful trap event.
This makes the script materially different from tools that primarily map:
- full structure breaks,
- broad liquidity sweeps across larger swing highs and lows,
- order blocks or fair value gaps,
- or generic reversal candles.
The objective here is not to classify the whole market. The objective is to organize one specific event class: short-lived inducement failure and trap quality around internal levels.
METHODOLOGY
1) Inducement level detection
The script scans for smaller swing references that can function as local inducement levels. These are not intended to replace major support or resistance logic. They serve as nearby internal references around which short-term trap behavior may form.
2) Sweep and reclaim logic
After an inducement level is identified, the script monitors whether price briefly trades beyond that level. A trap candidate is only considered when the move fails to sustain beyond the level and price reclaims the reference within a limited confirmation window.
3) Quality model
Each trap candidate is scored using a rules-based quality framework. The score is not arbitrary. It is derived from components such as:
- reclaim speed,
- relative volume behavior,
- wick proportion,
- and overshoot control.
The purpose of the score is not prediction. It is prioritization. A higher score suggests that the rejection characteristics were cleaner according to the script’s internal rules.
4) Engineered liquidity context
When inducement logic becomes active, the script can visualize engineered-liquidity context so users can see where price is interacting with a recently relevant internal level. This is meant to improve readability and sequencing, not to imply certainty.
5) Visual decluttering and presentation controls
To keep the overlay usable, the script includes compact labeling, importance filtering, label spacing controls, and a small status panel. These features are presentation tools designed to reduce clutter without changing the underlying trap logic.
SIGNALS & ALERTS
The script can visualize bull and bear trap events after inducement-level interaction and reclaim confirmation.
Typical readouts include:
- TRAP labels,
- quality score values,
- inducement / engineered-liquidity context,
- and panel status information such as recent trap state and current watch state.
Alert conditions are designed around deterministic script events rather than discretionary interpretation. As with any alert-based study, users should confirm how they want to use those events inside their own workflow before relying on them in live conditions.
KEY INPUTS
Important controls typically include:
- inducement swing sensitivity,
- confirmation window / reclaim timing,
- volume and wick weighting inputs,
- overshoot tolerance,
- compact label display,
- importance filtering,
- panel visibility and position,
- and vertical label offset controls.
These settings allow the user to decide whether they want broader coverage or a stricter, more selective readout.
HOW THIS DIFFERS FROM OTHER AG PRO TOOLS
This script is intentionally specialized.
It is not a BOS / CHoCH engine and does not attempt to label full structural transitions.
It is not an order block tool and does not frame the chart through block logic.
It is not a fair value gap map and does not organize imbalance zones as its primary lens.
It is not a broad liquidity sweep tool built around larger external swing raids.
Instead, this script concentrates on micro inducement behavior: smaller internal references, brief level violations, fast reclaim structure, and the relative quality of the resulting trap.
That narrower scope is the point. The script is designed to help users study one recurring behavior class in a more disciplined and readable way.
LIMITATIONS & TRANSPARENCY
This script is a visual and analytical aid. It does not know intent, news context, execution conditions, or participant positioning.
A trap label does not guarantee reversal.
A higher quality score does not guarantee continuation.
A low-quality score does not mean the area is irrelevant.
Internal inducement levels can vary in significance depending on volatility regime, instrument behavior, and timeframe selection.
Like any rules-based overlay, this script is sensitive to parameter choices. More permissive settings may surface more events but also more noise. Stricter settings may improve selectivity while naturally reducing signal frequency.
Users should also understand that inducement and trap concepts are interpretive by nature. This script translates those ideas into a deterministic ruleset for chart study. That conversion is useful, but it is still a model.
RISK DISCLOSURE
This script is for chart analysis and educational use. It is not financial advice, not a trade signal service, and not a promise of outcome.
All trading and investing involve risk. Market conditions can change quickly, and no indicator or overlay can eliminate uncertainty. Users should evaluate signals in context, apply their own risk management, and avoid treating any single chart tool as a complete decision system.
WHAT THIS SCRIPT IS NOT
To make the scope clear, this script is not:
- a guaranteed reversal detector,
- a one-click trade system,
- a full market-structure replacement,
- or a standalone execution model.
It is a focused overlay for studying inducement-driven trap behavior with a cleaner visual framework.
NOTES
Best use cases typically come from combining this script with context that the user already trusts, such as trend structure, higher-timeframe location, or broader execution rules. The tool is intended to improve organization and observation around inducement and trap sequences, not to replace judgment.
If you prefer a cleaner chart, use the compact display and importance filter settings. If you prefer a more exploratory workflow, relax the filter and study how the scoring reacts across different conditions.
Indicator
Custom Open LineDaily Open Line (Custom Timezone)
Plots a horizontal line at a user-defined daily open time with full timezone control. Designed to work across equities, futures, forex, and crypto without being locked to a specific exchange session.
Most “daily open” indicators are hardcoded to New York time. This script removes that limitation and lets you define exactly what “open” means for your market.
The script includes customizable timezone selection such as Chicago, New York, London, and UTC, along with adjustable open hour and minute inputs. The default is set to 08:30 Central Time, which aligns with the 09:30 Eastern equity market open. Users can modify this to match any session including London open, Asia open, or forex rollover.
Each day, the script detects the bar matching the selected time and plots a horizontal line at that bar’s open price. The line extends forward and remains on the chart based on the selected lookback period. Visual settings such as line color, width, and style are fully customizable, and an optional label can display the exact open price.
This tool is useful for tracking key intraday levels, identifying directional bias relative to the open, and supporting price action strategies such as mean reversion or breakout trading. It also allows traders to align different markets using a consistent time reference.
This script works best on intraday timeframes such as 1-minute to 15-minute charts. On higher timeframes, the exact open bar may not exist depending on the data feed. For forex and crypto markets, users should select a timezone and time that matches their specific trading model.
Indicator
GOLDEN Candle-MTF Pro 🔷 GOLDEN Candle-MTF Pro
A professional Multi-Timeframe Candle Visualization tool that allows you to track higher timeframe candles directly on your lower timeframe chart with advanced volume-based insights.
This indicator reconstructs higher timeframe candles in real-time and enhances them using volume rank analysis, helping you understand not just direction — but strength and participation behind each move.
🔹 Key Features
📊 MTF Candle Overlay
Display higher timeframe candles (H1, H4, Daily, etc.) on any chart with accurate real-time aggregation.
🎯 Volume Rank Shading
Each candle is dynamically colored based on its relative volume strength (Percentile or Buy/Sell dominance).
⏱ Live Countdown Timer
See exactly how much time remains before the current higher timeframe candle closes.
🔍 Advanced Volume Breakdown
Estimate buy vs sell pressure within each candle using internal volume distribution logic.
🎨 Fully Customizable
Control candle style, colors, rank mode, label display, and visual preferences.
🔹 Why Use It?
Identify strong vs weak candles instantly
Understand higher timeframe structure without switching charts
Combine time + volume + price context in one clean view
Perfect for scalping, intraday, and multi-timeframe analysis
⚠️ Disclaimer
This indicator is a visual analysis tool and does not provide direct buy/sell signals. Trading involves risk and is not suitable for all users.
Indicator
AI MES Globex Overnight StrategyWhat makes this different from the Asian and London scripts:
News blackout window — this is the biggest addition unique to Globex. Economic releases like CPI, jobless claims, and Fed speakers drop during the 8:00–9:30am ET window and can instantly blow through stops. The blackout defaults to 8:15–8:45am and is shown as a red background on the chart. You can adjust the window or toggle it off entirely in settings.
Three entry types — the alert message tells you exactly which fired: Range Breakout, Trend/Pivot Break, or Mean Reversion Fade. This is useful for tracking which setup performs best in your backtest.
Wider ATR multiplier (2.0×) — Globex spreads are wider and price action choppier than regular hours, so the default stop floor is wider than the Asian or London scripts to avoid getting shaken out on normal overnight noise.
Max range size filter (25pts) — if the opening range is wider than 25 points it usually means a news event already hit at the open, making the range levels unreliable. No trades fire in that case.
Run this on the 5-minute timeframe — the overnight session moves too slowly for 3-minute to add meaningful value, and the wider stops mean you want the confirmed bar closes that 5-minute provides.
Strategy























