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

如何在Pine Script V5中基于RTH时段所有K线计算标准差

Pine Script V5 基于RTH时段动态计算标准差

要实现基于RTH(常规交易时段)内所有K线计算标准差,且随新K线实时更新,你可以按以下步骤修改代码:

1. 定义可自定义的RTH时段参数

先添加时段输入控件,方便灵活设置常规交易时段的起止时间(默认以美股RTH为例,可自行调整):

// 定义RTH时段
rthStart = input.time("09:30", title="RTH开始时间")
rthEnd = input.time("16:00", title="RTH结束时间")

2. 动态统计当前RTH时段内的K线数量

通过判断当前K线是否处于RTH时段,实时累计时段内的K线数,新交易日开始时重置计数:

// 判断当前K线是否在RTH时段内
inRTH = time >= rthStart and time <= rthEnd

// 动态统计RTH内的K线数量
var int rthBarCount = 0
if ta.change(time("D"))  // 新交易日重置计数
    rthBarCount := 0
if inRTH  // 仅在RTH时段内累加
    rthBarCount := rthBarCount + 1

3. 用动态计数计算标准差

将原来的固定length替换为动态的rthBarCount,同时处理计数为0的情况避免函数报错:

// 标准差计算
mult = input(2.0, title = "Multiplier")
// 仅当RTH内有K线时计算,否则返回na
stdDev = rthBarCount > 0 ? ta.stdev(close, rthBarCount) : na

完整代码

//@version=5
indicator("RTH时段动态标准差", overlay=false)

// 定义RTH时段
rthStart = input.time("09:30", title="RTH开始时间")
rthEnd = input.time("16:00", title="RTH结束时间")

// 判断当前K线是否在RTH时段内
inRTH = time >= rthStart and time <= rthEnd

// 动态统计RTH内的K线数量
var int rthBarCount = 0
if ta.change(time("D"))  // 新交易日重置计数
    rthBarCount := 0
if inRTH  // 仅在RTH时段内累加
    rthBarCount := rthBarCount + 1

// 标准差计算
mult = input(2.0, title = "Multiplier")
stdDev = rthBarCount > 0 ? ta.stdev(close, rthBarCount) : na

// 输出标准差数值和可视化
plot(stdDev, color=color.blue, title="RTH标准差")
hline(0, "零线", color=color.gray)

关键说明

  • var关键字确保rthBarCount不会在每次K线刷新时重置,仅在新交易日触发重置
  • ta.change(time("D"))用于精准检测新交易日的开始,保证计数周期正确
  • 仅当RTH时段内有K线时才计算标准差,避免无数据场景下的函数报错
  • 随着RTH时段内新K线生成,rthBarCount会实时递增,标准差自动更新为当前时段所有K线的统计结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 09:45:06