如何在TradingView的Pine Script中于最新价格上方绘制振荡器
在价格面板将振荡器固定在最新价格上方的实现方案
核心实现代码
要让振荡器始终显示在最新价格的正上方,关键是让所有K线的偏移基准都等于当前最后一根K线的收盘价,而非历史K线收盘价或仅在最后一根赋值。可以用ta.valuewhen()函数获取最新收盘价作为统一偏移基准:
// 获取最新收盘价(所有K线都使用这个值作为偏移基准) latest_close = ta.valuewhen(barstate.islast, close, 0) // 计算缩放后的振荡器值(1000为你原代码的缩放系数,可按需调整) scaled_bbr = bbr / 1000 + latest_close // 绘制振荡器 plot(scaled_bbr, "%B Scaled")
为什么你之前的方法无效?
- 使用
var float bbr_plot_pos = close[0]:var关键字仅在脚本初始化时赋值一次,也就是第一根K线的收盘价,后续所有K线都沿用这个旧值,导致振荡器固定在历史第一根K线的价格位置。 - 使用
if barstate.islast bbr_plot_pos = close:仅最后一根K线会更新变量值,历史K线的bbr_plot_pos仍为初始默认值(未初始化时为na,或var初始化的第一根K线收盘价),导致历史段振荡器位置混乱。
优化建议
如果想让振荡器和最新价格之间保留固定间隙避免重叠,可在偏移基准上额外加一个自定义间距值:
offset_spacing = 3 # 根据品种价格区间调整,比如股票用3、加密货币用50等 scaled_bbr = bbr / 1000 + latest_close + offset_spacing plot(scaled_bbr, "%B Scaled")
内容的提问来源于stack exchange,提问作者Giorgio Partesana
相关产品推荐
相关产品推荐

