PineScript策略无开仓问题求助:ta.highest函数逻辑存疑
问题分析与解决方案
核心原因
你的策略无法开仓的问题出在对ta.highest()函数的理解上:ta.highest(high, 7)默认会包含当前K线的high值。而当前K线的high必然大于等于close,所以close > ta.highest(high, 7)这个条件永远无法成立——因为当前high已经被纳入最高值计算,close不可能超过它。
修改后的代码
要实现“收盘价高于前7日(不含当前K线)最高高点”的逻辑,需要用ta.highest(high, 7)[1]来引用上一根K线结束时的7周期最高值,排除当前K线的影响:
//@version=5 strategy("La mia strategia", overlay=true, initial_capital = 10000, default_qty_type = strategy.percent_of_equity, default_qty_value = 100 ) // 判断当前收盘价突破上一根K线的7周期最高值 longCondition = close > ta.highest(high, 7)[1] // 平仓条件同步修改逻辑 closeCondition= close < ta.lowest(low, 7)[1] if (longCondition) strategy.entry("My Long Entry Id", strategy.long) if closeCondition strategy.close("My Long Entry Id")
关键说明
ta.highest(source, length)的计算范围是当前K线往前数length根K线(包含当前),若要排除当前K线,必须通过[1]引用前一根K线的计算结果。- 平仓条件的
ta.lowest(low,7)也需要同步修改,否则会出现同样的逻辑失效问题。
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

