Pine Script如何实现上次交易后等待指定K线数再触发买入条件
问题根因
ta.barssince() 函数的特性是:当传入的判断条件在历史K线中从未触发过时,返回值为 na 空值。空值和任意数值做逻辑比较的结果均为假,因此策略第一次开仓前,wait 变量会一直处于不满足的状态,自然无法触发任何交易。
修复代码
你只需要在wait变量的判断逻辑里新增初始空值状态的兼容处理即可:
barsfromclose = ta.barssince(strategy.position_size[1] > 0) barstowait = input.int(title = "Bars to Wait", defval = 3) // 兼容首次开仓的无历史持仓场景 wait = na(barsfromclose) or barsfromclose > barstowait
逻辑说明
- 当策略还没有任何历史持仓记录时,
na(barsfromclose)结果为真,wait条件直接成立,保证第一次开仓可以正常触发 - 当策略有过持仓记录后,逻辑会自动切换为「上一次持仓为正的K线距离当前的数量大于设置的等待K线数」才满足
wait条件,和你原本的需求一致
内容的提问来源于stack exchange,提问作者JasonCF
相关产品推荐
相关产品推荐

