Heikin Ashi vs. Standard Candles: Separate Trend Signals from Execution Prices

Video: Heikin Ashi vs. Standard Candles: Which Wins?
Creator: TopDogTrading
Original Video: Watch the original video
Difficulty: Beginner concepts with intermediate strategy research

The Big Idea

Two candles can describe the same time interval while displaying different prices. A standard candle records the interval’s open, high, low, and close from the selected market data. A Heikin Ashi candle transforms those observations into a smoother display.

TopDogTrading’s central warning is that the smoothed candle should not be mistaken for the actual prices available for an entry or exit. The presenter prefers standard-price information for entries and uses Heikin Ashi for trailing management. The supplied transcript does not define his trailing algorithm precisely or disclose the mathematics of his proprietary entry indicator.

The useful framework is market data → signal calculation → order → actual fill. A synthetic signal can guide a trade. Its plotted price is not an execution guarantee. The research question is whether its smoothing improves management enough to justify any additional delay or profit giveback.

If You Remember Only One Thing

Use Heikin Ashi as calculated information; evaluate fills and risk using actual market prices.

60-Second Summary

  • Heikin Ashi bodies and wicks use synthetic OHLC calculations.
  • Its open depends on the previous Heikin Ashi body, introducing memory.
  • Its high and low can equal actual extremes, but can also extend beyond the period’s traded range.
  • Long color runs can make trends easier to see; they do not establish profitable entries.
  • Smoothing can delay some reversal signals, without producing a universal one-bar delay.
  • Standard candles preserve opening gaps more directly.
  • The presenter favors a combination of standard-price entries and Heikin Ashi management.
  • The script below compares trailing rules while using actual OHLC for simulated execution.

What the Four Heikin Ashi Numbers Mean

Let O, H, L, and C denote actual open, high, low, and close. Let HA denote Heikin Ashi values. The standard recursive definitions are:

Displayed valueCalculationInterpretation
HA close(O + H + L + C) / 4An average of four current-bar observations, not the actual closing transaction.
HA open(Previous HA open + previous HA close) / 2The midpoint of the previous synthetic body, not the current opening transaction.
HA highmax(H, HA open, HA close)Can equal the actual high or extend above it.
HA lowmin(L, HA open, HA close)Can equal the actual low or extend below it.

The first bar requires an initialization convention; subsequent opens carry the recursive history forward. Display settings can also change candle coloring. This guide uses the ordinary bullish-body interpretation, HA close above HA open, rather than a custom color setting.

TradingView’s Heikin Ashi explanation (paid link) describes the averaged display and its difference from standard candles. The synthetic calculation does not make the chart meaningless. It changes what the chart measures.

A Candle Low That Was Never Traded in That Interval

Our hypothetical two-minute bar has actual O = 110, H = 114, L = 109, and C = 113. The previous HA open is 100 and previous HA close is 102. Its new HA values are:

ValueCalculationResult
HA open(100 + 102) / 2101
HA close(110 + 114 + 109 + 113) / 4111.5
HA highmax(114, 101, 111.5)114
HA lowmin(109, 101, 111.5)101

Actual trading during that interval stayed between 109 and 114, yet the Heikin Ashi candle extends to 101. A chart-based calculation that treats 101 as that period’s obtainable entry would invent an opportunity. Likewise, interpreting its body as an actual move from 101 to 111.5 would misread the market.

There is also a useful nuance: the HA high in this example equals the actual high. “Synthetic” does not mean every displayed number is always different. It means the calculation, not the appearance of the candle, determines what the value represents.

What “No Lower Wick” Really Says

The presenter highlights a green Heikin Ashi candle with no lower wick as a bullish signal. Under our conventional body definition, that means HA close exceeds HA open and HA low equals HA open. In the example above, the body begins at 101 and the synthetic low is also 101, so no lower wick appears.

That does not mean buyers defended 101 during those two minutes. Price never reached it. The shape summarizes a relationship between current prices and the previous synthetic body. A candle’s visual strength is a signal hypothesis, not evidence of a transaction at every displayed price.

Smoothing Helps Readability and Changes Timing

The previous synthetic body influences the next open, which influences the next candle’s color. That memory can keep a series green through small pullbacks that turn standard candles red. It can also keep a candle red after actual price has begun recovering.

Suppose a standard bar opens at 100 and closes at 101, but has a high of 102 and low of 98. Its HA close is 100.25. If HA open is 101, the standard candle is green while the HA candle is red. A color flip would therefore give different information despite using the same interval.

The video demonstrates an example where a standard-price signal appears earlier. It does not establish that Heikin Ashi always lags by exactly one bar, or that the first standard green candle is a reliable entry. Earlier signals can be false, and smoothing can suppress both noise and useful information.

Why Opening Gaps Deserve the Standard Chart

An opening gap compares the new actual open with the previous actual close. HA open instead begins at the previous synthetic body’s midpoint. Its wicks can bridge prices that the current period never traded, masking the opening discontinuity that a standard chart displays.

The presenter’s warning about gaps is useful as an execution caution. The underlying market can still gap; transforming its display does not remove that event or its risk. Anyone researching gap entries, overnight exposure, or stop slippage needs actual opening prices, rather than assuming adjacent HA candles show a continuous executable path.

A Synthetic Level Can Still Be Used for a Real Order

A moving average is also a calculated number. Traders can use it to set an order at a real price. The same principle applies to a Heikin Ashi-derived stop: its origin is synthetic, but the submitted stop price is a threshold for future market trading.

The mistake is assuming price already traded at that threshold inside the candle that created it, or assuming a fill is guaranteed there. For a long position, a newly calculated stop must become active after the calculation is available. A gap through the stop can fill below it.

TopDogTrading says he uses HA as a trailing stop, but does not specify whether he trails its lows, exits on a color change, or applies another rule. The experiment below chooses a low-based ratchet and labels it as ours. It does not claim to reconstruct his exact management system.

Why an HA-Low Trail May Be Looser

By definition, HA low is no higher than the actual low of the same candle. With the same buffer, a trail based on HA lows is therefore no tighter than a trail based on standard lows along the same observed position path. Taking a running maximum ratchets either stop upward without loosening it.

In our worked bar, before applying an existing stop floor, the HA-derived candidate is 101 while the standard-low candidate is 109. The HA candidate leaves eight more points of room. That may avoid an early exit during continuation, or permit a larger giveback before reversal. Longer holding time is not automatically a better outcome.

The comparison changes once one strategy exits and the other remains invested: their later entry opportunities can diverge. To isolate pure management effects, also compare paired entries with identical initial risk and prevent new trades until both test paths have completed.

What the Source Does and Does Not Establish

The transcript supports the distinction between actual prices and synthetic display, and describes the presenter’s preference for combining them. It supplies no complete performance dataset, controlled comparison, or reproducible specification for his cycle indicator. Claims of exceptional entry precision cannot be independently assessed from the text.

It also says markets trend about 20% of the time. No market universe, timeframe, definition of a trend, or measurement procedure is supplied. This guide treats that as the presenter’s unsupported estimate, not a universal 20/80 law. The usefulness of smoothing depends on the chosen task and conditions; “useless in chop” is too absolute to establish without a test.

Research Question: Does the Looser Trail Improve Net Outcomes?

View Pine Script Backtest Code
//@version=6
strategy("CandleChasers: Heikin Ashi vs actual-low trailing stops", overlay=true,
     initial_capital=100000, pyramiding=0,
     commission_type=strategy.commission.percent, commission_value=0.01,
     slippage=1, calc_on_every_tick=false, calc_on_order_fills=false,
     process_orders_on_close=false, use_bar_magnifier=true,
     fill_orders_on_standard_ohlc=true, margin_long=100, margin_short=100)

// The entry is an original research baseline, not TopDogTrading's indicator.
if not chart.is_standard
    runtime.error("Run on a standard time-based chart; signals require actual OHLC.")
string mode = input.string("Heikin Ashi low", "Trailing source", options=["Heikin Ashi low", "Standard low", "Initial stop only"])
int lookback = input.int(20, "Breakout lookback", minval=2)
int atrLength = input.int(14, "Initial risk ATR length", minval=2)
float atrMultiple = input.float(2.0, "Initial stop distance in ATR", minval=0.1, step=0.1)
int bufferTicks = input.int(1, "Trail buffer in ticks", minval=0)
int units = input.int(1, "Fixed shares/contracts/units", minval=1)
int maxHold = input.int(100, "Maximum completed holding bars", minval=1)

string haTicker = ticker.heikinashi(syminfo.tickerid)
float haLow = request.security(haTicker, timeframe.period, low, gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_off)
float atr = ta.atr(atrLength)
float priorHigh = ta.highest(high, lookback)[1]
bool breakout = close > priorHigh and close[1] <= priorHigh[1]
bool closedThisBar = ta.change(strategy.closedtrades) > 0
var int riskTicks = na
var float trailingStop = na
bool signal = false

if barstate.isconfirmed and strategy.position_size == 0
    trailingStop := na
    if breakout and not closedThisBar and not na(atr)
        riskTicks := int(math.max(1, math.round(atr * atrMultiple / syminfo.mintick)))
        strategy.entry("Long", strategy.long, qty=units)
        // Protective stop exists with entry and anchors to its actual fill.
        strategy.exit("Protective", from_entry="Long", loss=riskTicks)
        signal := true

if strategy.position_size > 0 and barstate.isconfirmed
    float initialStop = strategy.position_avg_price - riskTicks * syminfo.mintick
    trailingStop := na(trailingStop) ? initialStop : trailingStop
    if mode != "Initial stop only"
        float sourceLow = mode == "Heikin Ashi low" ? haLow : low
        float candidate = math.round_to_mintick(sourceLow - bufferTicks * syminfo.mintick)
        if not na(candidate)
            trailingStop := math.max(trailingStop, candidate)
    // Same exit ID replaces the initial relative stop with a ratcheting stop.
    // Current candle information affects only subsequent simulated ticks.
    strategy.exit("Protective", from_entry="Long", stop=trailingStop)
    int entryBar = strategy.opentrades.entry_bar_index(0)
    if bar_index - entryBar + 1 >= maxHold
        strategy.close("Long", comment="Holding timeout")

plot(strategy.position_size > 0 ? trailingStop : na, "Stop submitted after this close", color=color.red, style=plot.style_linebr)
plot(haLow, "Synthetic Heikin Ashi low", color=color.new(color.blue, 65))
plotshape(signal, title="Entry submission, not fill", style=shape.triangleup, location=location.belowbar, color=color.lime, size=size.tiny)

Use the same standard-price breakout rule and compare an HA-low ratchet with a standard-low ratchet. Our hypothesis is that the HA version may extend holding time and capture some continuations, at the cost of greater giveback. It can be wrong: the standard trail may produce better net results.

Source Rules vs Experimental Definitions vs Implementation ShortcutsBaseline implementation
Source-derived ideaUse actual-price information for entries and Heikin Ashi information for management.
Our entry definitionA standard candle closes above the prior 20-bar high after the preceding close was not above its own prior 20-bar high.
Our initial protectionTwo ATR of stop distance, captured on the signal bar and attached to the actual fill.
Our trailing definitionAfter each completed holding bar, ratchet the stop to the selected low minus one tick, subject to the existing stop floor.
Implementation shortcutsLongs only; one position; fixed units; no proprietary entry indicator, profit target, scale-out, or session filter.

This code tests one objective interpretation of the source’s concept. Any mechanical definitions introduced here are ours and are not necessarily the creator’s exact rules.

What This Code Actually Tests

Run the strategy on a standard time-based chart. It obtains same-timeframe HA lows as a separate data series, with future lookup disabled, and evaluates decisions only on completed bars. An actual-OHLC breakout submits a market entry and initial protective stop. Relative stop distance anchors to the simulated fill, not the signal close.

When an open position becomes visible at a completed bar, the script initializes the stop floor from the actual average entry minus the captured risk distance. It then updates the same protective exit using either the HA low, standard low, or initial-stop-only mode. The stop never moves downward. Updates affect subsequent ticks; they are not credited as protection earlier inside the candle that generated them.

A holding timeout closes positions after the configured number of completed bars. There is no target because the comparison concerns trailing exits. Signal markers show order submission, not the fill price. The plotted stop is the level submitted after that bar’s close.

What This Code Does Not Test

It does not reproduce TopDogTrading’s cycle indicator, his illustrated entry, a color-change exit, no-wick entries, short trades, or a quantified trend/range classifier. It does not establish that one chart type wins generally. It tests our low-based trailing interpretation following one transparent baseline entry.

Execution Assumptions That Matter

Market entries and timeout exits normally fill on the next available simulated tick, often the following bar’s open. The initial stop accompanies entry, so the model need not wait for another close to create protection. Subsequent ratchets are calculated at bar close. Gaps can move fills beyond the requested stop.

Defaults assume 0.01% commission per side and one tick of slippage on applicable fills, adjustable in Strategy Properties. Spread, financing, partial fills, and every venue-specific fee are not separately reproduced. Fixed units mean variable monetary risk as ATR changes. The $100,000 capital and 100% emulator margin are research assumptions, not broker requirements.

Bar Magnifier is requested where lower-timeframe data is available; fills still depend on historical data and emulator assumptions. The script rejects nonstandard chart inputs and additionally enables standard-OHLC fills. Enabling actual-price fills alone does not convert synthetic entry logic into actual-price entry logic. TradingView’s strategy documentation (paid link) explains the synthetic-chart warning, while its nonstandard-data documentation (paid link) shows how to request HA series separately.

Re-entry is suppressed on bars where a trade has just closed. Modes can still produce different later trade populations because only one position is allowed. There are no pending chart zones to replace; each breakout is a new event. Positions can span sessions and overnight gaps.

Validation status: This script has not been compiled in TradingView or run against historical data here. No performance results are claimed. Static review checks actual-price inputs, signal timing, initial protection, and non-loosening trailing state.

Backtest Lab

Compile first and inspect individual signals, next-tick entries, initial stops, and ratchet updates. Then hold market, timeframe, date range, unit size, entry rule, initial risk, and costs constant.

ExperimentChangeMeasure
Primary trailing comparisonHA low versus standard lowNet expectancy, drawdown, holding time, and profit giveback.
Management baselineEach trail versus initial stop onlyWhether either ratchet improves the same entry framework.
Buffer sensitivity0, 1, 2, 4 ticksWhether results depend on one exact stop offset.
Initial protection1, 2, 3 ATRWhether the initial floor dominates the trailing source.
Cost stressSlippage 1, 2, 4 ticks, fees fixedWhether an apparent advantage survives poorer fills.

Record trade count, mean net trade, average winner and loser, win rate, profit factor, maximum drawdown, and bars held. For paired trades, record maximum favorable excursion and the amount returned before exit. Greater holding time with lower net expectancy supports the claim that the trail is looser, not that it is economically better.

Use separate development and evaluation periods. Include both persistent trends and sideways conditions under a definition declared in advance. A favorable trend example cannot represent an entire market. Inspect sensitivity across neighboring settings rather than selecting only the most profitable historical combination.

Try It Yourself: Audit One HA Candle Against Actual Prices

Choose ten completed intervals with synchronized standard and HA charts, including an opening gap and a reversal. Record actual OHLC, previous HA open and close, calculated HA OHLC, candle colors, and whether a synthetic extreme lies outside the actual range. Do not compare different sessions or mismatched timestamps.

Then identify one proposed entry and one stop. Write when the signal was knowable, when the order could be submitted, and which subsequent actual prices could fill it. A historical chart location and an executable order are different pieces of evidence.

Calculation exercise: prior HA open is 105 and prior HA close is 107; actual O/H/L/C is 110/113/109/112. HA open = 106, HA close = 111, HA high = 113, HA low = 106. The low is synthetic and lies three points below the interval’s actual low.

Check Your Understanding

  1. Is HA close the period’s actual final price? No. It averages current actual OHLC.
  2. Can an HA high equal the actual high? Yes. Synthetic calculation does not require a different result every time.
  3. Does no lower wick prove buyers traded at HA open? No. The open can lie outside the actual interval’s range.
  4. Can a calculated HA level be a real stop threshold? Yes, if submitted as an order for future actual trading; the requested fill remains uncertain.
  5. Why must trailing updates wait until after calculation? A completed candle’s final values were unavailable earlier within that candle.
  6. Does longer holding time establish a better strategy? No. Costs, giveback, losses, and net expectancy determine the tradeoff.

Final Takeaway

The source’s strongest lesson is to distinguish smoothed trend information from actual execution prices. Heikin Ashi can organize a view of direction, while standard OHLC preserves the price observations needed to assess orders. Neither chart type is a universal winner. Test one clearly defined management rule with actual-price fills, then decide whether its extra room improves outcomes or mainly returns profit to the market.


Risk Disclosure: This material is for educational and research purposes only and is not financial or investment advice. Trading can result in substantial losses. Backtests are hypothetical and depend on assumptions. Synthetic signals, fees, spreads, slippage, gaps, liquidity, data quality, and order behavior can materially affect live results.

This article is an independent educational companion to the video and is not affiliated with, sponsored by, endorsed by, or authorized by TopDogTrading.

As an Amazon Associate I earn from qualifying purchases.