The HeikenAshi[High/Low/Close/Open] implementation in SQX differs from that of MultiCharts.
In MultiCharts the open is computed without shift:
haOpen = (haOpen [1] + haClose [1])/2 ; //
//avg open/close 1 bar ago
Note that this misses the Shift parameter.
In SQX:
public double OnBlockEvaluate(int relativeShift) throws TradingException {
return Math.min(Chart.Low(relativeShift + Shift),
Math.min(Strategy.Indicators.HeikenAshi(Chart).HAOpen.getRounded(relativeShift + Shift),
Strategy.Indicators.HeikenAshi(Chart).HAClose.getRounded(relativeShift + Shift)));
}
Note that this uses shift in its computation.
I suspect this one evaded because the HeikenAshi[High/Low/Close/Open] are not testable in SQX. They extend ValueBlock, which does not allow for indicator tests.
I've tested by constructing a class extending IndicatorBlock (that also uses the logic in HeikenAshi base class), then using exported file + import. I've also confirmed with plots of the indicator in MultiCharts and SQX.