CHoCH Indicator on TradingView: Swing Rules and Confirmation
A CHoCH indicator on TradingView labels a change in price structure according to its swing and breakout rules. The label describes what the script detected; it does not establish who traded, whether stops were taken, or whether a new trend will continue.
Before choosing settings, identify the exact script and its definition of a swing. Two indicators can label the same chart differently without either having a software error.
Define CHoCH and BOS before using them
For a concrete convention, define a bullish Change of Character as a break above the selected lower high in a downtrend. Define a bearish CHoCH as a break below the selected higher low in an uptrend. A Break of Structure in the current direction is a continuation label. These definitions require a rule for the current direction and for which swing counts.
| Decision | What must be specified |
|---|---|
| Swing selection | Pivot with left/right bars, rolling extreme, ZigZag, or another algorithm |
| Structure scale | Shorter internal swings or longer swings |
| Break condition | Wick beyond the level, closing price beyond it, or an explicit buffer |
| State transition | When the indicator changes its bullish/bearish bias |
| Repeated breaks | Whether a previously broken level can trigger again |
LuxAlgo's market-structure documentation is one author's example: it distinguishes internal and swing structures and different CHoCH labels. It also states that displayed swing points are retrospective. Do not assume every community script shares that implementation or terminology.
BOS after CHoCH establishes that another specified price event occurred. It does not prove that an apparent reversal is genuine. Adding FVG or order-block conditions also changes the rule; their labels alone do not supply independent evidence of institutional buying or selling.
The swing date is not necessarily the signal date
Consider a hypothetical pivot rule requiring three completed bars to the right of a candidate high. The high cannot be confirmed until those bars exist. Drawing a label back on the original candle does not make it available at that earlier time.
A historical screenshot can therefore make a structure detector look earlier than it was. Record both the candle being labeled and the time the label first became available. Never enter a simulated trade on the earlier date merely because the final chart places a marker there.
TradingView's repainting documentation explains how historical and realtime behavior can differ. Waiting for the current candle to close can address changes within that candle. It does not by itself fix later pivot revisions, backdated drawings, future leakage or an unfinished higher-timeframe value.
Choose a script by inspectable behavior
Search Indicators for CHoCH or market structure, then read the author's description and source when available. Check whether the script explains swing confirmation, drawing offsets and available alert events. Popularity is not a substitute for those details.
Start by recording the default settings. Change one defined input at a time if the original behavior does not match the rule you want to test. There is no evidence here that every default should be replaced or that a particular pivot length is best for Bitcoin, ES futures or another market.
| Setting | Consequence to examine |
|---|---|
| Longer swing window | Selects a different scale of structure; confirmation may arrive later |
| Closing-price break | Differs from an intrabar wick crossing; the later decision can have a different price |
| Break buffer | Changes which crossings qualify; define ticks, percent or volatility units explicitly |
| Higher-timeframe filter | Requires an availability rule for the higher-timeframe bar |
| Hidden intermediate labels | Changes the display; may conceal events needed for a complete test |
Build a reproducible observation log
- Fix the symbol, exchange feed, session, timeframe and script version.
- Write down the swing, break and state-transition rules before inspecting outcomes.
- Record every new CHoCH, including direction, selected level, actual detection time and confirmation state.
- Save observations before and after reload. Retain labels that changed or disappeared.
- If testing CHoCH followed by BOS, define which BOS qualifies and how long the sequence can remain active.
- Evaluate a separate period after selecting parameters. Keep the list of all variants tried.
A rule using a pullback also needs an expiry condition. Otherwise a missed entry can be retrospectively assigned to whichever later touch looked favorable. Define what happens when the target or invalidation is reached before the proposed entry.
Separate a structure test from a trade test
An illustration: a selected lower high is 100, and a later completed bar closes at 101. Under a closing-price convention, that is a break above 100. It says nothing about whether a limit order at 100 subsequently fills or whether a long position earns money.
To test the trade, specify entry timing, order type, stop, target, position size and maximum holding period. Include costs and the possibility of execution beyond a stop price. Moving a stop to the entry price does not make a trade risk-free: commissions, spread and gaps can still produce a loss.
TradingView's strategy documentation describes simulated order fills and cost settings. A demo forward test is also a simulation, not a measurement of every live broker's slippage. No fixed count of 100 trades or profit factor of 1.2 establishes that a strategy is ready for deployment.
Alerts and custom rules
Check which events the chosen script exposes. An alert named CHoCH may refer to internal structure, swing structure or a provisional event. Compare the alert timestamp with the observed chart event before connecting further automation.
TradingView stores a snapshot of a script and its settings when an alert is created. Recreate the alert after changing relevant inputs. Choosing a close-based alert frequency does not alter the script's underlying pivot or higher-timeframe calculations.
Pineify can help author a custom Pine Script once those rules are explicit. Inspect the generated swing logic and compare its timestamps with your specification. A generated script is not automatically equivalent to an existing community indicator.
Frequently asked questions
Is CHoCH a confirmed reversal?
It is confirmation of the indicator's specified structure-break condition. The market can reverse again or continue its previous trend.
Does waiting for a candle close prevent repainting?
It can remove changes caused by that candle's unfinished price. It does not eliminate delayed or revised pivots, backdated drawings or all higher-timeframe effects.
Which timeframe and pivot length should I use?
Choose them as part of a defined hypothesis and evaluate the detection delay, trade frequency and costs. This guide has no verified benchmark establishing a best market-specific preset.
Does a sweep prove that stop orders were taken?
A price chart can show a move beyond a prior level and a return. Without order-level evidence, it does not identify the orders involved or the participants' intentions.

