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

如何在Pine Script中获取特定时间框架的本地变量(无需request security)

Pine Script 特定时间框架变量实现(无需request.security)

核心逻辑

不用request.security()的前提下,只能在当前图表时间框架与目标时间框架匹配时计算对应指标变量——因为Pine Script是逐bar运行的,只有当当前bar属于目标时间框架时,才能生成该周期下的指标值。

修正后的代码示例

先补全你代码中缺失的MA定义(默认用EMA,参数可自行调整),再实现特定时间框架的MACD:

//@version=5
indicator(title="Multi-Timeframe MACD", shorttitle="MTF MACD", overlay=false, format=format.price, precision=4)

// MACD参数配置
fastLength = input.int(12, title="Fast EMA Length")
slowLength = input.int(26, title="Slow EMA Length")
signalMACDlen = input.int(9, title="Signal EMA Length")

// 计算基础均线
fastMA = ta.ema(close, fastLength)
slowMA = ta.ema(close, slowLength)

// 常规时间框架的MACD
macd = slowMA - fastMA
signal = ta.ema(macd, signalMACDlen)

// 15分钟周期MACD:仅在当前图表为15分钟时更新
var float macd15 = na
var float signal15 = na
if timeframe.is("15")
    macd15 := slowMA - fastMA
    signal15 := ta.ema(macd15, signalMACDlen)

// 5分钟周期MACD:仅在当前图表为5分钟时更新
var float macd5 = na
if timeframe.is("5")
    macd5 := slowMA - fastMA

// 指标输出示例
plot(macd, color=color.blue, title="MACD")
plot(signal, color=color.red, title="Signal")
plot(macd15, color=color.green, title="MACD 15min", style=plot.style_circles)
plot(signal15, color=color.orange, title="Signal 15min", style=plot.style_circles)
plot(macd5, color=color.purple, title="MACD 5min", style=plot.style_cross)

关键说明

  • 用timeframe.is("周期标识")判断当前bar是否属于目标时间框架,比如timeframe.is("15")对应15分钟周期,支持的标识包括"1"(1分钟)、"D"(日线)等。
  • 用var关键字声明变量,避免每次bar刷新重置数值,确保只在目标时间框架的bar上更新变量。
  • 局限性:如果当前图表不是目标时间框架,变量会保持na或最后一次更新的值,无法实时获取非当前框架的最新数据。若需在任意框架下跨周期获取数据,必须使用request.security(),这是Pine Script的机制限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 21:55:39