如何让TradingView中橙色回归线自动从图表起始处开始?
如何让橙色回归线自动从图表起始位置绘制(自动计算K线数量替代手动输入)
我希望橙色回归线能自动从图表的起始位置开始绘制,目前需要手动计算图表上现有K线的数量并输入到设置里。我尝试了两段代码来计算K线数量,现在想知道能不能实现这个自动化流程。
我当前使用的代码如下:
var int total_candles = 0 if barstate.islast total_candles := bar_index + 1 numBars2 = math.sum(total_candles,2) numBars = int(numBars2)
numBars // type series int
使用以下代码也能得到相同结果:
start = input.time(timestamp('1800-01-01'), title='Start calculations',group='Backtest Period') end=input.time(timestamp('2050-01-01'), title='End calculations',group='Backtest Period') temps = time >= start and time <= end var numCandles = array.new_int() array.push(numCandles, 0) if temps array.push(numCandles, 1) int result = 0 for [index, value] in numCandles if value == 1 result := result+1 result
解决方案
完全可以实现自动化,无需手动输入数值,以下是优化后的实现方案:
1. 简化K线数量计算
你当前的计算逻辑可以大幅简化,直接利用Pine Script内置的bar_index即可高效获取K线数量:
- 全局图表总K线数(从加载的第一根K线到最新K线):
var int total_candles = na if barstate.islast total_candles := bar_index + 1 // bar_index从0开始,总数量需+1 - 指定时间范围内的K线数:
start = input.time(timestamp("1800-01-01"), title="Start calculations", group="Backtest Period") end = input.time(timestamp("2050-01-01"), title="End calculations", group="Backtest Period") in_range = time >= start and time <= end var int total_in_range = 0 if in_range total_in_range += 1
2. 自动绘制从起始位置出发的回归线
假设你使用ta.linreg函数计算回归线,只需将回溯周期设置为计算得到的总K线数,就能让回归线自动从图表起始位置开始绘制:
// 计算全局总K线数 var int total_candles = na if barstate.islast total_candles := bar_index + 1 // 自动计算并绘制橙色回归线 orange_regression = ta.linreg(close, total_candles, 0) plot(orange_regression, color=color.orange, title="橙色回归线", linewidth=2)
这段代码会让回归线始终从图表加载的第一根K线开始计算,无需手动输入任何数值;实时行情中,新K线生成时total_candles会自动更新,回归线范围也会同步调整。
内容的提问来源于stack exchange,提问作者John Doe
相关产品推荐
相关产品推荐

