图表上策略警报触发与策略指令不匹配的常见原因

使用以下列出的策略功能可能会导致实时交易和历史交易中的订单执行方式不同(即重新定价)。

因此,策略警报触发可能与图表上的策略订单不匹配。

1) 启用 `calc_on_every_tick` 选项

如果禁用此选项,策略将在历史交易和实时交易中,于每根K线收盘时重新计算一次。

如果启用此选项,策略将在K线构建期间的每个tick实时重新计算。

这种K线内重新计算可能会导致额外的订单被下单和执行(这些订单在历史交易的重新计算中不会出现),从而导致警报和图表上的策略计算结果不同。

2) 启用 `calc_on_order_fills` 选项

在这种情况下,如果在K线构建期间执行了订单,则会重新计算策略,并考虑执行时已知的开盘价、最高价、最低价和收盘价 (OHLC)。

如果您等到K线收盘后再刷新页面,策略也会在该K线成交时重新计算。不过,这次会考虑K线收盘时已知的OHLC(开盘价、最高价、最低价和收盘价),因为通常情况下,在历史K线数据上重新计算策略时,没有K线内价格波动的信息。

这意味着实时计算和历史计算中的下单方式可能不同。因此,策略计算结果在提示信息和图表上可能不一致。

3) 使用追踪单

追踪单的执行级别取决于K线内价格波动和trail_offset参数。

在实时交易中,这些波动可能是任意的:价格可能会反复上涨和下跌。计算历史数据时,没有K线内价格波动的信息。因此,服务器会根据文章( https://cn.tradingview.com/pine-script-docs/v5/concepts/strategies/#broker-emulator )中所述的行情走势做出假设。

实际的盘中行情走势与预估的盘中行情走势之间的差异意味着,追踪订单在实时数据和历史数据中的成交价格可能不同。

这反过来又会导致警报和图表中显示的策略计算结果有所不同。