Pine Script技术问题:如何在交易策略中跳过首次开仓?
问题分析与解决方案
核心错误点
你的代码有两个关键问题导致逻辑失效:
- 变量赋值错误:
delay +1只是计算了一个值,但没有把结果赋值给delay,Pine Script中必须用:=来更新变量的值。 - 变量重置问题:
int delay = 0会在每根K线开始时重置为0,计数器永远无法累加,需要用var关键字声明变量,让它在脚本运行期间保持状态。
修正后的代码
//@version=5 strategy("CrossLong Counter Strategy", overlay=true) var int delay = 0 // 用var保持变量状态,不会每根K线重置 crossLong = ta.crossover(ta.sma(close, 5), ta.sma(close, 20)) // 示例crossLong条件,可替换为你的实际条件 if crossLong delay := delay + 1 // 正确赋值更新计数器 if crossLong and delay > 1 strategy.entry("Long", strategy.long) // 满足条件时开仓
是否需要循环?
不需要循环。Pine Script是逐K线运行的脚本语言,每根K线会自动依次执行代码逻辑,你只需要用带var的变量来跨K线保存计数器状态即可,无需手动编写循环遍历K线。
内容的提问来源于stack exchange,提问作者komo
相关产品推荐
相关产品推荐

