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

Pine Script策略问题:如何在K线内部而非收盘价开多单

问题分析与解决方案

你的代码存在两个核心问题,导致无法在K线内部触发开仓:

1. ta.crossover 参数逻辑错误

ta.crossover(a, b) 用于检测a从下向上穿过b,但你传入的第一个参数是固定值15343,第二个是K线的low。由于15343是常量,它的前值和当前值完全相同,永远无法满足“从下向上穿过”的条件。即便你想检测low上穿15343,low是K线的最低价(仅在K线收盘后确定),也无法在K线内部的tick级触发。

2. strategy.entry 参数误用

你设置的stop=5是将止损价设为5,而非入场触发价,这会导致开仓逻辑混乱。

修正后的代码

要在K线内部(tick级)触发开仓,需要用当前tick的最新价(close在tick级模式下代表最新价)来判断,并确保calc_on_every_tick=true生效:

//@version=5
strategy(title = 'Simple Strategy', shorttitle = 'Simple Strategy', overlay = true, calc_on_every_tick = true)

// 检测当前tick最新价上穿15343
is_long_trigger = ta.crossover(close, 15343)

if (is_long_trigger)
    // 市价开多,可根据需求添加止损/止盈
    strategy.entry(id = "Long", direction = strategy.long, qty = 1, comment = str.tostring(close))

补充说明

  • calc_on_every_tick=true 确实会让脚本在每个tick实时计算,但必须配合tick级的价格条件(比如用close而非bar级的low/high)才能在K线内部触发动作。
  • 如果需要在价格触及15343时挂单开仓,可改用limit或stop参数指定入场价,例如:
    if (ta.close < 15343)
        // 挂限价单,价格到15343时开多
        strategy.entry(id = "Long", direction = strategy.long, qty = 1, limit = 15343)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 17:10:19