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

在TradingView Pine Editor中创建EMA与SMMA均线交叉脚本的问题

EMA5 与 SMMA7 均线交叉策略(Pine Script 实现)

一、SMMA 核心逻辑与实现

SMMA(平滑移动平均线)的计算规则是:

  • 首个周期值等于对应长度的 SMA(简单移动平均线)
  • 后续每个周期值 = (前一期 SMMA × (周期长度-1) + 当前收盘价) ÷ 周期长度

Pine Script 内置了 ta.smma() 函数可直接调用,也可以手动实现逻辑加深理解。

二、完整策略代码

//@version=5
strategy("EMA5 vs SMMA7 交叉策略", overlay=true, default_qty_type=strategy.cash, default_qty_value=10000, commission_type=strategy.commission.percent, commission_value=0.1)

// 计算周期5的EMA
ema5 = ta.ema(close, 5)

// 计算周期7的SMMA(两种方式二选一即可)
// 方式1:使用内置函数(推荐,简洁高效)
smma7 = ta.smma(close, 7)

// 方式2:手动实现SMMA逻辑
// smma7 = 0.0
// smma7 := bar_index >= 6 ? (smma7[1] * 6 + close) / 7 : ta.sma(close, 7)

// 绘制均线到图表
plot(ema5, color=color.blue, title="EMA5", linewidth=2)
plot(smma7, color=color.red, title="SMMA7", linewidth=2)

// 定义交叉信号
long_signal = ta.crossover(ema5, smma7)  // EMA5上穿SMMA7,做多
short_signal = ta.crossunder(ema5, smma7) // EMA5下穿SMMA7,做空

// 执行交易指令
if (long_signal)
    strategy.entry("做多", strategy.long)
if (short_signal)
    strategy.entry("做空", strategy.short)

三、关键代码说明

  • 均线计算:ta.ema() 和 ta.smma() 是Pine Script v5的内置指标函数,传入收盘价和周期长度即可完成计算。
  • 手动SMMA实现:通过 bar_index 判断是否达到初始化周期(第7根K线对应索引6),前6根用SMA初始化,后续按公式迭代更新。
  • 信号触发:ta.crossover() 和 ta.crossunder() 是专门检测均线交叉的函数,直接输出布尔值信号。
  • 策略配置:默认采用现金下单模式,佣金设置为0.1%,可根据实际需求调整参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 08:25:27