You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pine脚本:为何策略在奇数索引K线入场(设定条件为偶数K线)?

Pine脚本偶数K线入场指令却在奇数K线成交的原因

你在代码中指定当bar_index % 2 == 0(偶数索引K线)时执行strategy.entry开多单,但实际入场成交发生在奇数索引K线,核心原因是Pine脚本策略的订单默认执行逻辑:

当你在某一根K线(bar_index=N)触发strategy.entry等订单指令时,该K线此时尚未走完(还没有最终的收盘价),策略无法在当前K线完成成交。因此,所有未指定成交价格的订单,默认会在下一根K线(bar_index=N+1)的开盘价执行成交。

对应你的代码:

  • 当bar_index为偶数时,发出入场指令
  • 指令会延迟到下一根K线(奇数索引)执行,所以你看到入场成交在奇数K线

你的代码

//@version=5
strategy("TEST STRATEGY 2", overlay=true)

backtestStartDate = input.time(timestamp("01 Apr 2023 12:05:00 GMT+02:00"), title="Start Date", group="Backtest Time Period")
backtestEndDate = input.time(timestamp("01 Apr 2023 12:15:00 GMT+02:00"), title="End Date", group="Backtest Time Period")
inTradeWindow = time > backtestStartDate and time <= backtestEndDate

if inTradeWindow

    if bar_index % 2 == 0
        strategy.entry("My Long Entry", strategy.long)
    else
        strategy.close("My Short Entry")

    a = str.tostring(bar_index)
    label.new(bar_index, na, a, yloc = yloc.abovebar, size = size.normal,textcolor = color.white)

验证与解决思路

如果想要让订单在当前偶数K线成交,你需要明确指定成交价格,比如使用当前K线的开盘价、收盘价或者某个特定价位,通过strategy.entry的limit或stop参数来实现。例如:

// 在当前偶数K线的收盘价成交
strategy.entry("My Long Entry", strategy.long, limit=close)

这样订单会尝试在当前K线的收盘价成交,就不会延迟到下一根K线了。

内容的提问来源于stack exchange,提问作者ailauli69

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 15:38:07