Skip to main content

Plot marker displacement

Plot position above/below bar with tick offset, per data series (affects indicator developers)

1 comment

Log in to comment and vote

Comments1

  • Robert

    •

    May 30

    Follow-up on this request — clarification on why a native property is needed vs. the existing workaround

    After researching the ATAS API and reviewing public indicator examples, I'm aware that tick-based displacement is already achievable today by baking the offset directly into the stored series value:

    decimal _tick = ChartInfo.PriceChartContainer.Step; _buySeries[bar] = candle.Low - (_tick * offset); // plots N ticks below low _sellSeries[bar] = candle.High + (_tick * offset); // plots N ticks above high 

    This works visually, and several indicators in the wild use it. However, it introduces a fundamental data integrity problem: the value stored in the series is no longer the actual signal price — it is the signal price plus an arbitrary rendering offset.

    This matters because the series value is consumed in multiple places beyond just the chart renderer:

    • Tooltips — hovering a bar shows the offset price, not the price where the signal fired

    • Price axis label — the "current value" label on the Y-axis shows the shifted price

    • Alerts — alert messages that reference the series value report the wrong price

    • Other indicators — any indicator that reads this series as a source gets the offset value, not the true price

    • Data export / logging — recorded values are incorrect for any post-trade analysis

    What we are asking for is a TickOffset (or PriceOffset) property on ValueDataSeries that separates the stored value from the rendered position:

    _buySeries.TickOffset = -5; // render 5 ticks below the stored value, value itself unchanged 

    With this, _buySeries[bar] = candle.Low stores the real signal price, and the renderer handles the visual displacement independently. Every consumer of the series — tooltips, alerts, other indicators, logs — sees the correct price.

    This is the same model used by most mature charting platforms (e.g. the Displacement property on NinjaTrader data series). It's a small API addition that eliminates a data integrity tradeoff that currently forces developers to choose between correct visuals and correct values.