突破策略编写求助:如何让收盘价高于前20根K线的最高高点?
解决“收盘价突破过去20根K线(不含当前)最高点”的Pine Script代码问题
你的核心问题是ta.highest(high, 20)会包含当前K线的高点,导致当当前K线试图突破时,计算出的高点已经包含了当前K线的价格,自然无法触发close > hh的条件(收盘价不可能超过当前K线的高点)。
修正方案
要计算不含当前K线的过去20根K线最高点,需要将计算范围向前偏移1根K线,使用high[1]引用上一根K线的高点,再取过去20根的最大值:
//@version=5 strategy("20周期突破策略", overlay=true) // 计算过去20根K线(不含当前)的最高高点 hh = ta.highest(high[1], 20) // 当收盘价突破该高点时开多单 if close > hh strategy.entry('long', strategy.long) // 可选:在图表上绘制计算的高点,方便验证 plot(hh, color=color.red, title="过去20根K线最高点", linewidth=2)
逻辑说明
high[1]:引用当前K线的上一根K线的高点,确保计算范围从倒数第1根到倒数第20根K线,完全排除当前K线的价格数据。ta.highest(high[1], 20):遍历上述20根K线的高点,取最大值作为突破阈值。- 当当前K线收盘价超过这个阈值时,就满足“突破过去20根K线最高点”的策略条件,触发多单入场。
内容的提问来源于stack exchange,提问作者rjuku
相关产品推荐
相关产品推荐

