以太坊在MT5的代码,用MQL5编写以太坊自动交易程序完整指南

博主:neragonerago 2026-10-08 20:03:33 3

随着加密货币市场的不断发展,越来越多的交易者希望在专业的交易平台上交易以太坊(Ethereum),MetaTrader 5(MT5)作为全球最受欢迎的交易平台之一,不仅支持外汇交易,还支持加密货币差价合约(CFD)交易,本文将详细介绍如何在MT5平台上编写以太坊交易代码,帮助您开启量化交易之旅。

MT5与以太坊交易的基础知识

1 什么 是MQL5

MQL5是MT5平台的内置编程语言,语法类似于C++,通过MQL5,交易者可以编写:

  • 智能交易系统(EA):自动执行交易策略的程序
  • 自定义指标:个性化的技术分析工具
  • 脚本:执行一次性操作的快捷工具

2 在MT5中找到以太坊交易品种

不同经纪商提供的以太坊代码可能不同,常见的包括:

  • ETHUSD
  • ETHUSDm
  • ETHUSDT
  • Ethereum

您可以在MT5的“市场报价”窗口右键选择“显示所有品种”,然后搜索"ETH"找到对应的交易品种。

以太坊MT5交易代码实战

1 基础环境搭建代码

//+------------------------------------------------------------------+
//|                                            ETH_Trading_EA.mq5    |
//|                                     以太坊均线交叉交易策略示例      |
//+------------------------------------------------------------------+
#property copyright "ETH Trading Example"
#property version   "1.00"
#property strict
// 输入参数设置
input string   EthSymbol   = "ETHUSD";   // 以太坊交易品种
input double   LotSize     = 0.1;        // 交易手数
input int      FastMAPeriod = 10;        // 快速均线周期
input int      SlowMAPeriod = 30;        // 慢速均线周期
input int      StopLoss    = 500;        // 止损点数
input int      TakeProfit  = 1000;       // 止盈点数
input ulong    MagicNumber = 20240101;   // 魔术号
// 全局变量
int fastMAHandle = INVALID_HANDLE;
int slowMAHandle = INVALID_HANDLE;
//+------------------------------------------------------------------+
//| EA初始化函数                                                      |
//+------------------------------------------------------------------+
int OnInit()
{
   // 检查以太坊品种是否存在并添加到市场报价
   if(!SymbolSelect(EthSymbol, true))
   {
      Print("错误:找不到以太坊交易品种 ", EthSymbol);
      return(INIT_FAILED);
   }
   // 创建移动平均线指标句柄
   fastMAHandle = iMA(EthSymbol, PERIOD_H1, FastMAPeriod, 0, MODE_EMA, PRICE_CLOSE);
   slowMAHandle = iMA(EthSymbol, PERIOD_H1, SlowMAPeriod, 0, MODE_EMA, PRICE_CLOSE);
   if(fastMAHandle == INVALID_HANDLE || slowMAHandle == INVALID_HANDLE)
   {
      Print("错误:创建指标句柄失败");
      return(INIT_FAILED);
   }
   Print("以太坊交易EA初始化成功!");
   return(INIT_SUCCEEDED);
}

2 核心交易逻辑代码

//+------------------------------------------------------------------+
//| EA反初始化函数                                                    |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
   if(fastMAHandle != INVALID_HANDLE) IndicatorRelease(fastMAHandle);
   if(slowMAHandle != INVALID_HANDLE) IndicatorRelease(slowMAHandle);
}
//+------------------------------------------------------------------+
//| 每个报价跳动时执行                                                |
//+------------------------------------------------------------------+
void OnTick()
{
   // 获取均线数值
   double fastMA[], slowMA[];
   ArraySetAsSeries(fastMA, true);
   ArraySetAsSeries(slowMA, true);
   if(CopyBuffer(fastMAHandle, 0, 0, 3, fastMA) < 3) return;
   if(CopyBuffer(slowMAHandle, 0, 0, 3, slowMA) < 3) return;
   // 获取以太坊当前价格
   double ask = SymbolInfoDouble(EthSymbol, SYMBOL_ASK);
   double bid = SymbolInfoDouble(EthSymbol, SYMBOL_BID);
   // 判断均线交叉信号
   bool buySignal  = (fastMA[1] > slowMA[1]) && (fastMA[2] <= slowMA[2]);
   bool sellSignal = (fastMA[1] < slowMA[1]) && (fastMA[2] >= slowMA[2]);
   // 检查是否已有持仓
   if(!HasOpenPosition())
   {
      if(buySignal)
      {
         OpenPosition(ORDER_TYPE_BUY, ask);
      }
      else if(sellSignal)
      {
         OpenPosition(ORDER_TYPE_SELL, bid);
      }
   }
}

3 下单与风控函数

//+------------------------------------------------------------------+
//| 检查是否有持仓                                                    |
//+------------------------------------------------------------------+
bool HasOpenPosition()
{
   for(int i = PositionsTotal() - 1; i >= 0; i--)
   {
      ulong ticket = PositionGetTicket(i);
      if
The End

发布于:2026-10-08,除非注明,否则均为区块链社区- 欧亿APP下载原创文章,转载请注明出处。