TradingView Pine脚本:var跨K线保存变量异常问题咨询
TradingView Pine脚本var变量历史高值问题解析
这是因为TradingView的Pine脚本运行逻辑是对图表上所有历史K线进行回溯计算,而非只从你加载脚本的那一刻开始逐根K线实时执行。
你的代码逻辑本身没问题,但脚本首次加载时,会从图表的第一根K线开始遍历:
- 初始
topp为0,第一根K线的high必然大于0,topp会被更新为该K线高点 - 接着遍历第二根K线,若
high大于当前topp则更新,以此类推直到最新K线
最终你看到的topp是遍历完所有历史K线后的全局最高值,而非从加载脚本时的0开始逐步记录后续新高。
如果想要实现从加载脚本时开始记录后续新高,需要添加触发条件隔离历史K线,比如结合barstate.islast标记实时运行阶段:
// 标记脚本进入实时运行状态 var bool isRealTime = false if barstate.islast isRealTime := true var float topp = 0 float curr = high // 仅在实时阶段更新新高 if isRealTime and curr > topp topp := curr
注:该方式仅在实时K线更新时生效,回测场景下仍会遍历历史K线;若要完全隔离历史,可通过input设置起始日期来限定计算范围。
内容的提问来源于stack exchange,提问作者Россарх
相关产品推荐
相关产品推荐

