Pine Script多时间框架Stochastic策略security传hline报错解决方案问询
多时间框架Stochastic交易策略报错修复方案
错误原因
hline()是Pine Script的原生绘图函数,返回值为绘图对象类型,而security()的第三个入参要求传入可在目标时间框架计算的数值型表达式,二者类型不匹配因此触发报错。另外60、40属于固定阈值,完全不需要通过security()从小时级别拉取,你原来的写法本身就存在逻辑冗余。
修正后代码
// 从小时级别获取Stochastic的K、D值 htf_stoch_k = security(syminfo.tickerid,"60",sma(stoch(close, high, low, 14), 1),lookahead=barmerge.lookahead_on) htf_stoch_d = security(syminfo.tickerid,"60",sma(htf_stoch_k, 3),lookahead=barmerge.lookahead_on) // 直接定义固定阈值,不需要跨时间框架获取 stoch_upper_threshold = 60 stoch_lower_threshold = 40 // 阈值绘图(如果需要在当前15分钟图表显示的话) hline(stoch_upper_threshold, "Upper Band", color=#787B86) hline(stoch_lower_threshold, "Lower Band", color=#787B86)
后续逻辑说明
你要的信号判断直接用以下表达式即可:
- 多头触发条件:
htf_stoch_d < stoch_lower_threshold - 空头触发条件:
htf_stoch_d > stoch_upper_threshold
注意事项
- 你当前用的
barmerge.lookahead_on参数会引入未来函数,回测时会出现信号漂移,若用于实盘或需要准确回测结果,建议替换为barmerge.lookahead_off - 如果后续需要用到动态阈值,把阈值的数值计算逻辑放入
security()的第三个入参即可,不要把绘图类函数传入该参数
内容的提问来源于stack exchange,提问作者Ilzek
相关产品推荐
相关产品推荐

