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

如何在Pine Script中处理request.security_lower_tf数组数据以计算并绘制EMA?

问题分析

你遇到的报错是因为request.security_lower_tf返回的是数组类型(float[]),而ta.ema()要求输入的是序列类型(series float)——这两种数据类型不兼容,导致无法直接传入计算。

request.security_lower_tf的作用是获取当前主时间框架K线内包含的所有低时间框架数据,比如在5分钟K线上调用它获取1分钟数据,会返回当前5分钟K线对应的5根1分钟收盘价组成的数组,而非逐根K线的序列数据。

解决方案

根据你的需求,分两种场景给出修正方案:

场景1:计算低时间框架的EMA,映射到主时间框架显示

如果你的目标是先在低时间框架(比如1分钟)计算EMA,再把结果显示在主时间框架(比如5分钟)上,直接在request.security_lower_tf内部完成EMA计算即可,此时返回的是序列类型,符合plot()的要求:

//@version=5
indicator("MTF EMA")

// 设置参数:EMA长度、低时间框架
emaLength = input.int(20, title="EMA Length 1")
lowerTimeframe = input.timeframe("1", title="Lower Timeframe") // 示例:1分钟

// 直接在低时间框架内计算EMA,再拉取到主框架(返回series float)
ema1 = request.security_lower_tf(syminfo.tickerid, lowerTimeframe, ta.ema(close, emaLength))

// 绘图
plot(ema1, color=color.blue, title="Lower TF EMA")

场景2:用低时间框架的收盘价序列,在主时间框架计算EMA

如果需要基于低时间框架的收盘价序列,在主时间框架上计算EMA,应该使用request.security而非request.security_lower_tf——前者返回的是低时间框架的序列数据(每个主K线对应低框架的一个最新值):

//@version=5
indicator("EMA from Lower TF Close")

emaLength = input.int(20, title="EMA Length 1")
lowerTimeframe = input.timeframe("1", title="Lower Timeframe")

// 获取低时间框架的收盘价序列(返回series float)
lowerClose = request.security(syminfo.tickerid, lowerTimeframe, close)
// 基于低框架收盘价计算EMA
ema1 = ta.ema(lowerClose, emaLength)

plot(ema1, color=color.blue, title="EMA on Lower TF Close")
关键区别
  • request.security_lower_tf:返回当前主K线内的低框架数据数组,适合统计当前主K线内的低框架数据特征(比如高低点、成交量总和)。
  • request.security:返回低框架的序列数据,适合跨时间框架的指标计算与绘图。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 17:53:29