如何在TradingView Pine Script中添加最后一根K线后的K线并延伸指标?
直接实现(以TradingView Pine Script为例)
如果使用TradingView,你可以通过Pine Script手动追加自定义K线数据到原始序列中,让指标计算包含这些新增K线,同时将其绘制在最后一根原始K线之后。以下是针对你需求的示例代码:
//@version=5 indicator("自定义延伸K线与SMA", overlay=true) // 提取原始K线数据 orig_open = open orig_high = high orig_low = low orig_close = close // 定义要添加的自定义K线(示例OHLC) custom_open = 27360 custom_high = 27460 custom_low = 27160 custom_close = 27260 // 合并原始数据与自定义数据,用于指标计算 extended_close = array.new_float() // 将原始收盘价全部加入数组 for i = 0 to bar_index array.push(extended_close, orig_close[i]) // 添加自定义收盘价 array.push(extended_close, custom_close) // 计算延伸后的200周期SMA sma_extended = ta.sma(array.get(extended_close, array.size(extended_close)-1), 200) // 绘制原始K线 plotcandle(orig_open, orig_high, orig_low, orig_close, color=color.new(color.blue, 0)) // 绘制自定义K线(offset=1 放在最后一根原始K线之后) plotcandle(custom_open, custom_high, custom_low, custom_close, color=color.new(color.red, 0), offset=1) // 绘制延伸后的SMA线 plot(sma_extended, color=color.new(color.green, 0), title="SMA200 延伸版", linewidth=2)
这段代码的核心逻辑是:把自定义K线的收盘价追加到原始收盘价序列中,让SMA计算时包含这根新增K线;同时通过offset参数将自定义K线绘制在原始K线的右侧,实现视觉上的延伸。
如果是MT4/MT5平台,你可以通过扩展K线数据数组的方式实现:先获取当前K线数组,使用ArrayResize扩展数组长度,然后给新增的数组元素赋值自定义OHLC数据,最后基于修改后的数组重新计算SMA指标。
替代方案(若平台限制无法添加K线)
如果所用TA工具不允许修改原始K线数据,可以用以下更简便的方法:
指标值直接模拟计算
不需要添加K线,直接通过公式推导未来指标值。以SMA200为例:
假设当前最后一根K线的SMA200值为current_sma,第200根前的收盘价为oldest_close,未来K线的收盘价为future_close,则新增K线后的SMA200为:future_sma = (current_sma * 200 - oldest_close + future_close) / 200你可以直接在计算器或表格中快速算出结果,或者写个简单的脚本自动计算。
利用平台自带的指标延伸功能
很多TA工具(如TradingView、Thinkorswim)自带指标延伸工具,比如TradingView的"Projection"功能,或者在指标设置中开启"Extend"选项,手动输入假设的未来价格,就能直接看到指标的延伸走势,无需修改K线。Excel表格手动推演
把最后200根收盘价导出到Excel,添加假设的未来K线数据,用AVERAGE函数计算SMA200,直观对比不同未来价格下的指标变化,适合快速验证分析逻辑。
内容的提问来源于stack exchange,提问作者丶 Limeー来夢 丶

