You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pine Script如何实现锚定指定K线的动态周期移动平均

Pine Script 动态周期锚定移动平均实现方案

Pine 自带的绝大多数移动平均类内置函数均要求传入固定周期参数,比如各类常用移动平均线指标,都需要提前设定好参与计算的K线数量。

你需要的非固定周期移动平均(业内通用术语为动态长度或可变长度移动平均,区别于常规的固定长度移动平均)完全可以手动编码实现,尤其是你提到的锚定特定K线、参与平均的周期数等于锚定K线以来流逝K线数量的需求,实现逻辑非常简单:

核心原理是从锚定条件触发的K线开始,累计需要参与平均的价格总和,以及累计参与计算的K线数量,每根K线更新这两个值后,用价格总和除以K线数量即可得到对应的锚定平均值。

可直接运行的Pine v5示例代码如下:

//@version=5
indicator("自定义锚定移动平均", overlay=true)

// 自定义锚定触发条件,示例为收盘价上穿20日均线,可自行修改
anchor_condition = ta.crossover(close, ta.sma(close, 20))

// 定义累计变量
var float total_price = 0
var int bar_count = 0

// 锚定条件触发时重置累计值,否则累加
if anchor_condition
    total_price := ohlc4
    bar_count := 1
else if not na(ta.barssince(anchor_condition))
    total_price := total_price + ohlc4
    bar_count := bar_count + 1

// 计算锚定平均,无有效锚定点时返回空值
anchored_ma = bar_count > 0 ? total_price / bar_count : na

// 绘制结果
plot(anchored_ma, color=color.blue, linewidth=2, title="锚定移动平均")

如果需要实现和TradingView内置锚定VWAP工具相同的逻辑,只需要把累计逻辑调整为累计「典型价 * 成交量」的总和,以及累计成交量总和,两者相除即可,得到的结果和内置工具完全一致,可直接在策略中作为信号判断条件使用。


内容的提问来源于stack exchange,提问作者Alejandro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 14:45:00