Summary: 黄金稳定EA是一款低风险、趋势感知的MQL4 EA,专为XAUUSD设计。不使用马丁格尔或网格,采用ATR止损止盈,并包含波动率过滤条件以减少回撤。




黄金稳定EA专为交易黄金(XAUUSD)设计,核心目标是保护资金。它结合了简单的移动平均线交叉和基于ATR的波动率过滤器,以避开震荡市场。仅在趋势方向明确且波动率高于安全阈值时开仓。每笔交易均设有基于当前ATR的固定止损和止盈。无马丁格尔,无网格,无高风险资金管理。

加载周期建议: M15(15分钟图)
交易逻辑:
  • 趋势过滤:快均线(10)上穿慢均线(30)做多,下穿做空。

  • 波动率过滤:当前ATR(14) > ATR阈值 * 过去50根K线的平均ATR(避开低波动盘整)。

  • 入场:新K线开盘时,两个过滤器同时确认后开仓。

  • 止损:入场价的1.5倍ATR(14)。

  • 止盈:入场价的2.5倍ATR(14)。

  • 每次仅持有一笔仓位。


  • 免责声明: 外汇和黄金交易涉及重大风险。本EA仅供教育用途。过往业绩不代表未来表现。使用风险自负。

    ```mql4
    //+------------------------------------------------------------------+
    //| GoldStabilityEA.mq4 |
    //| Copyright 2025, Gold EA Trader |
    //| https://www.example.com |
    //+------------------------------------------------------------------+
    #property copyright "Copyright 2025, Gold EA Trader"
    #property link "https://www.example.com"
    #property version "1.00"
    #property strict

    //+------------------------------------------------------------------+
    //| 输入参数 (可调节) |
    //+------------------------------------------------------------------+
    input double LotSize = 0.01; // 固定手数(低风险)
    input int FastMAPeriod = 10; // 快速均线周期(判断趋势方向)
    input int SlowMAPeriod = 30; // 慢速均线周期(判断趋势方向)
    input int ATRPeriod = 14; // ATR周期(用于止损止盈和波动率过滤)
    input double ATRMultiplierSL = 1.5; // 止损倍数 = ATR * 此值
    input double ATRMultiplierTP = 2.5; // 止盈倍数 = ATR * 此值
    input double ATRThreshold = 1.2; // 最小ATR比率(当前ATR / 过去50根平均ATR)
    input int MagicNumber = 202505; // EA唯一标识号
    input int Slippage = 30; // 滑点(点数)

    //+------------------------------------------------------------------+
    //| 全局变量 |
    //+------------------------------------------------------------------+
    double atrValue, avgATR50;
    int lastBarTime = 0;
    bool hasPosition = false;

    //+------------------------------------------------------------------+
    //| 初始化函数 |
    //+------------------------------------------------------------------+
    int OnInit()
    {
    if(FastMAPeriod >= SlowMAPeriod)
    {
    Print("错误: FastMAPeriod 必须小于 SlowMAPeriod");
    return(INIT_PARAMETERS_INCORRECT);
    }
    if(LotSize <= 0 || LotSize > 1.0)
    {
    Print("错误: LotSize 必须在 0.01 到 1.0 之间");
    return(INIT_PARAMETERS_INCORRECT);
    }
    lastBarTime = 0;
    hasPosition = false;
    return(INIT_SUCCEEDED);
    }

    //+------------------------------------------------------------------+
    //| 反初始化函数 |
    //+------------------------------------------------------------------+
    void OnDeinit(const int reason)
    {
    Comment("");
    }

    //+------------------------------------------------------------------+
    //| Tick主函数 |
    //+------------------------------------------------------------------+
    void OnTick()
    {
    // 检查新K线(M15)
    if(Time[0] == lastBarTime) return;
    lastBarTime = Time[0];

    // 刷新报价
    RefreshRates();

    // 检查是否已有持仓
    hasPosition = (OrderSelect(0, SELECT_BY_POS, MODE_TRADES) && OrderMagicNumber() == MagicNumber);
    if(hasPosition) return;

    // 计算指标
    double fastMA = iMA(Symbol(), 0, FastMAPeriod, 0, MODE_SMA, PRICE_CLOSE, 1);
    double slowMA = iMA(Symbol(), 0, SlowMAPeriod, 0, MODE_SMA, PRICE_CLOSE, 1);
    atrValue = iATR(Symbol(), 0, ATRPeriod, 1);

    // 计算过去50根K线的平均ATR(波动率基准)
    double sumATR = 0;
    for(int i=1; i<=50; i++)
    sumATR += iATR(Symbol(), 0, ATRPeriod, i);
    avgATR50 = sumATR / 50;

    // 波动率过滤:避免极低波动的盘整
    if(avgATR50 == 0 || atrValue < ATRThreshold * avgATR50) return;

    // 趋势过滤与开仓信号
    if(fastMA > slowMA) // 多头
    {
    double sl = Bid - atrValue * ATRMultiplierSL;
    double tp = Bid + atrValue * ATRMultiplierTP;
    if(sl > 0 && tp > Bid)
    {
    int ticket = OrderSend(Symbol(), OP_BUY, LotSize, Ask, Slippage, sl, tp, "黄金EA", MagicNumber, 0, clrGreen);
    if(ticket < 0) Print("买入订单失败: ", GetLastError());
    }
    }
    else if(fastMA < slowMA) // 空头
    {
    double sl = Ask + atrValue * ATRMultiplierSL;
    double tp = Ask - atrValue * ATRMultiplierTP;
    if(tp > 0 && sl > Ask)
    {
    int ticket = OrderSend(Symbol(), OP_SELL, LotSize, Bid, Slippage, sl, tp, "黄金EA", MagicNumber, 0, clrRed);
    if(ticket < 0) Print("卖出订单失败: ", GetLastError());
    }
    }
    }
    //+------------------------------------------------------------------+
    ```
    参考来源: 基于适合黄金品种的低风险趋势跟随原则。无马丁格尔,无网格。
    ```