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

基于Pine Script实现多时间周期EMA指标趋势一致性信号构建

多周期EMA同向趋势信号Pine Script脚本

以下脚本实现了需求:获取同一标的1日、4小时、1小时、30分钟周期的EMA指标当前值与前一周期值,判断各周期趋势方向,当所有周期趋势完全一致时生成信号。

//@version=5
indicator("多周期EMA同向信号", overlay=true, shorttitle="Multi-Timeframe EMA Signal")

// 自定义EMA参数,可根据需求调整
emaLength = input.int(20, title="EMA周期长度")

// 获取各周期EMA当前值与前一周期值
// 1日周期
ema1d = request.security(syminfo.tickerid, "D", ta.ema(close, emaLength))
ema1d_prev = request.security(syminfo.tickerid, "D", ta.ema(close, emaLength)[1])
// 4小时周期
ema4h = request.security(syminfo.tickerid, "240", ta.ema(close, emaLength))
ema4h_prev = request.security(syminfo.tickerid, "240", ta.ema(close, emaLength)[1])
// 1小时周期
ema1h = request.security(syminfo.tickerid, "60", ta.ema(close, emaLength))
ema1h_prev = request.security(syminfo.tickerid, "60", ta.ema(close, emaLength)[1])
// 30分钟周期
ema30m = request.security(syminfo.tickerid, "30", ta.ema(close, emaLength))
ema30m_prev = request.security(syminfo.tickerid, "30", ta.ema(close, emaLength)[1])

// 判断各周期趋势方向:向上/向下
trend1d_up = ema1d > ema1d_prev
trend1d_down = ema1d < ema1d_prev

trend4h_up = ema4h > ema4h_prev
trend4h_down = ema4h < ema4h_prev

trend1h_up = ema1h > ema1h_prev
trend1h_down = ema1h < ema1h_prev

trend30m_up = ema30m > ema30m_prev
trend30m_down = ema30m < ema30m_prev

// 所有周期趋势一致条件
all_up = trend1d_up and trend4h_up and trend1h_up and trend30m_up
all_down = trend1d_down and trend4h_down and trend1h_down and trend30m_down

// 绘制信号
plotshape(all_up, title="全周期向上信号", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(all_down, title="全周期向下信号", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)

// 可选:在图表上显示各周期EMA趋势状态
var table statusTable = table.new(position.top_right, 2, 5)
if barstate.islast
    table.cell(statusTable, 0, 0, "周期", text_color=color.white, bgcolor=color.blue)
    table.cell(statusTable, 1, 0, "趋势方向", text_color=color.white, bgcolor=color.blue)
    table.cell(statusTable, 0, 1, "1D", text_color=color.white)
    table.cell(statusTable, 1, 1, trend1d_up ? "向上" : trend1d_down ? "向下" : "持平", text_color=trend1d_up ? color.green : trend1d_down ? color.red : color.gray)
    table.cell(statusTable, 0, 2, "4H", text_color=color.white)
    table.cell(statusTable, 1, 2, trend4h_up ? "向上" : trend4h_down ? "向下" : "持平", text_color=trend4h_up ? color.green : trend4h_down ? color.red : color.gray)
    table.cell(statusTable, 0, 3, "1H", text_color=color.white)
    table.cell(statusTable, 1, 3, trend1h_up ? "向上" : trend1h_down ? "向下" : "持平", text_color=trend1h_up ? color.green : trend1h_down ? color.red : color.gray)
    table.cell(statusTable, 0, 4, "30M", text_color=color.white)
    table.cell(statusTable, 1, 4, trend30m_up ? "向上" : trend30m_down ? "向下" : "持平", text_color=trend30m_up ? color.green : trend30m_down ? color.red : color.gray)

关键说明

  • 使用request.security()函数跨周期获取数据,参数中"D"代表1日、"240"代表4小时(分钟数)、"60"代表1小时、"30"代表30分钟
  • 可通过输入框调整EMA周期长度,默认设置为20
  • 当所有周期EMA当前值均大于前一周期值时,在K线下方绘制绿色向上三角形信号;当所有周期EMA当前值均小于前一周期值时,在K线上方绘制红色向下三角形信号
  • 脚本右上角的表格会实时显示各周期的趋势状态,方便快速查看

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 01:45:26