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

如何基于白银MACD信号制定黄金交易策略并在Pine Script中回测?

基于白银MACD信号触发黄金交易的实现方案

核心思路

本质是实现跨品种指标调用:在黄金的交易策略/图表中,获取白银品种的MACD指标数据,以此作为黄金交易的判定条件。以下是主流交易平台的具体实现方法:


MT4/MT5 平台实现

MT4/MT5的MQL语言支持通过内置函数直接调用其他品种的指标数据,无需额外添加独立指标。

  1. 跨品种获取白银MACD数据
    使用iMACD()函数指定白银品种代码(如XAGUSD)、时间周期及MACD参数,获取其MACD主线和信号线数值:

    // 获取1小时周期白银的MACD主线与信号线(当前K线)
    double silverMACD = iMACD("XAGUSD", PERIOD_H1, 12, 26, 9, PRICE_CLOSE, MODE_MAIN, 0);
    double silverSignal = iMACD("XAGUSD", PERIOD_H1, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, 0);
    // 获取上一根K线的白银MACD数据(用于判断交叉)
    double silverMACD_prev = iMACD("XAGUSD", PERIOD_H1, 12, 26, 9, PRICE_CLOSE, MODE_MAIN, 1);
    double silverSignal_prev = iMACD("XAGUSD", PERIOD_H1, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, 1);
    
  2. 将白银MACD作为黄金交易触发条件
    基于获取到的白银MACD数据编写交易逻辑,例如当白银MACD上穿信号线时开黄金多单:

    // 判断白银MACD上穿信号线
    bool silverMACDUpCross = (silverMACD > silverSignal) && (silverMACD_prev < silverSignal_prev);
    if(silverMACDUpCross) {
        // 执行黄金多单开仓(示例)
        OrderSend(Symbol(), OP_BUY, 0.1, Ask, 3, Bid - 50*Point, Bid + 100*Point, "Silver MACD Trigger", 0, 0, Green);
    }
    
  3. 注意事项

    • 确保平台已加载白银品种的历史数据,否则iMACD()会返回错误值;
    • 时间周期需与你分析的白银MACD周期一致(如上述代码的PERIOD_H1对应1小时线)。

TradingView 平台实现

TradingView的Pine Script通过request.security()函数实现跨品种数据调用,可直接在黄金图表中嵌入白银MACD的触发逻辑。

  1. 编写跨品种MACD调用脚本
    创建Pine Script指标或策略,调用白银的MACD数据并生成交易信号:

    //@version=5
    strategy("Silver MACD Gold Strategy", overlay=true, default_qty_type=strategy.cash, default_qty_value=1000)
    
    // 配置参数:白银品种代码、MACD周期
    silver_ticker = input.symbol("XAGUSD", "Silver Ticker")
    fast_len = input.int(12, "Fast Length")
    slow_len = input.int(26, "Slow Length")
    signal_len = input.int(9, "Signal Length")
    
    // 跨品种获取白银MACD数据(与当前黄金图表周期一致)
    [silver_macd, silver_signal, _] = request.security(silver_ticker, timeframe.period, ta.macd(close, fast_len, slow_len, signal_len))
    
    // 定义交易触发条件
    buy_signal = ta.crossover(silver_macd, silver_signal)
    sell_signal = ta.crossunder(silver_macd, silver_signal)
    
    // 执行交易
    if(buy_signal)
        strategy.entry("Gold Long", strategy.long)
    if(sell_signal)
        strategy.entry("Gold Short", strategy.short)
    
    // 图表标记信号
    plotshape(buy_signal, title="Buy", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
    plotshape(sell_signal, title="Sell", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")
    
  2. 注意事项

    • 确认白银品种代码与平台内一致(部分交易所可能用SILVER而非XAGUSD);
    • 若需固定白银MACD的时间周期(如1小时,不受黄金图表周期影响),可将timeframe.period替换为"60"。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 22:40:24