如何调整Pine Script代码标记最近9根K线?能否用ta.barssince()?
解决方案
可以通过ta.barssince()实现需求,同时保留原有功能。核心思路是计算当前K线距离最后一根K线的间隔,判断是否属于最后9根,再结合原有的buySetup条件,实现双重标记逻辑。
修改后的代码
//@version=5 indicator("Mark Last 9 Bars + BuySetup", overlay=true) var int buySetup = na buySetup := if close < close[4] if close[1] > close[5] or 0 < nz(buySetup[1]) nz(buySetup[1]) + 1 else 0 else 0 // 计算当前K线到最后一根K线的距离,最后一根K线返回0,倒数第二根返回1,依此类推 bars_from_end = ta.barssince(ta.barstate.islast) // 判断是否属于最后9根K线 is_last_9_bars = bars_from_end < 9 // 保留原有buySetup完成时的标记逻辑(修正原代码数字4、5的offset顺序错误) plotchar(buySetup == 9, char='9', color=color.red, location=location.abovebar) plotchar(buySetup == 9, char='8', color=color.red, location=location.abovebar, offset = -1) plotchar(buySetup == 9, char='7', color=color.red, location=location.abovebar, offset = -2) plotchar(buySetup == 9, char='6', color=color.red, location=location.abovebar, offset = -3) plotchar(buySetup == 9, char='5', color=color.red, location=location.abovebar, offset = -4) plotchar(buySetup == 9, char='4', color=color.red, location=location.abovebar, offset = -5) plotchar(buySetup == 9, char='3', color=color.red, location=location.abovebar, offset = -6) plotchar(buySetup == 9, char='2', color=color.red, location=location.abovebar, offset = -7) plotchar(buySetup == 9, char='1', color=color.red, location=location.abovebar, offset = -8) // 新增最后9根K线的标记逻辑 plotchar(is_last_9_bars, char=str.tostring(9 - bars_from_end), color=color.blue, location=location.belowbar)
代码说明
- 原有功能保留:继续通过
buySetup == 9的条件,在满足计数完成的9根K线上方标记红色数字1-9,同时修正了原代码中数字4、5的offset顺序错误。 - 新增最后9根标记:
ta.barssince(ta.barstate.islast):返回从最后一根K线到当前K线的间隔数,最后一根K线为0,倒数第二根为1,直到倒数第九根为8。is_last_9_bars:判断当前K线是否属于最后9根范围。- 通过
9 - bars_from_end计算对应数字,在最后9根K线下方标记蓝色数字1-9,和原有标记区分开。
如果希望两种标记样式一致,只需调整color和location参数即可。
内容的提问来源于stack exchange,提问作者Tuff Fish
相关产品推荐
相关产品推荐

