Pine Script如何给buyDB、sellDB信号添加1根K线触发延迟
你只需要通过Pine Script的历史数据偏移语法[1],引用上一根K线的交叉判定结果即可,这样信号就会在交叉发生后的下一根K线生效。
修改方案1:直接修改原有变量定义
如果不需要保留交叉发生当时的原始信号,直接在原有交叉判断语句末尾加[1]即可:
buyDB = crossover(close, TopBox)[1] sellDB = crossunder(close, BottomBox)[1]
修改方案2:分开定义原始信号和延迟触发信号
如果后续逻辑还需要用到交叉发生当下的信号,可以分开定义两个变量,逻辑更清晰:
// 原始交叉信号:交叉发生的K线返回true rawBuyDB = crossover(close, TopBox) rawSellDB = crossunder(close, BottomBox) // 延迟触发信号:交叉发生后的下一根K线返回true buyDB = rawBuyDB[1] sellDB = rawSellDB[1]
逻辑说明
Pine Script中序列变量后接[n]代表取该变量前n根K线的取值。上述写法的本质是:只有上一根K线发生了对应交叉时,当前K线的buyDB/sellDB才会返回真,刚好匹配你要的「交叉K线收盘后下一根K线再触发」的规则。
内容的提问来源于stack exchange,提问作者Parabolic1
相关产品推荐
相关产品推荐

