如何在 MetaTrade 5 中编写交易机器人
这是一本全面而实用的指南,介绍如何使用 MQL5 语言在 MetaTrader 5 中编写、测试和部署交易机器人。.

如何在 MetaTrade 5 中编写交易机器人

本文将教您如何使用MQL5语言在MetaTrader 5平台编写、测试和部署智能交易系统(EA)。我们还将介绍一些关于安全性和性能方面的实用技巧。.
0 股票
0
0
0
0

 

您知道如何在 MetaTrader 5 中编写交易机器人并使其稳定运行吗?

本指南将循序渐进地帮助您熟悉环境。 MetaTrader 5 以及编程语言 MQL5 本书涵盖了智能交易系统(EA)的编写、测试和部署。此外,本书还包含一些实用技巧,例如如何在VPS/云服务器上全天候运行EA、如何选择延迟最低的服务器位置、如何进行安全监控以及如何进行监控,以确保您的智能交易系统在真实环境中稳定、低延迟地运行。.

 

MetaTrader 5 和 MQL5 技术简介

MetaTrader 5 (MT5) 这是一个先进的平台, MQL5 它被用作编写智能交易系统(EA)、指标和脚本的编程语言。结构 MQL5 它类似于 C++ 和类 CTrade 它用于发送订单和管理交易。.

前提条件:安装 MetaTrader 5/MetaEditor此外,还需要访问经纪商的数据馈送或模拟/真实账户;在服务器环境中,建议使用 ping 值低、正常运行时间高的 VPS。.

 

MQL5中EA的基本结构

一个简单的EA包含以下主要功能:

  • OnInit():用于初始化
  • OnDeinit()用于清洁
  • OnTick():针对每个价格变动点执行的函数
#include <Trade\Trade.mqh>
CTrade trade;

int OnInit() {
  // initialization
  return INIT_SUCCEEDED;
}

void OnDeinit(const int reason) {
  // cleanup resources
}

void OnTick() {
  // trading logic
}

 

发送订单和管理职位

MQL5 课堂 CTrade 用于提交订单。以下示例展示了一个简单的市价买入操作,并打印出可能出现的错误。.

double lot = 0.1;
if(trade.Buy(lot, _Symbol)) {
  Print("BUY executed");
} else {
  Print("Error Buy: ", GetLastError());
}

要平仓,您可以拿着票据并使用以下方法: 持仓关闭 使用:

ulong ticket = PositionGetTicket(0);
if(trade.PositionClose(ticket)) {
  Print("Position closed");
}

 

实际案例——交叉移动平均机器人

逻辑:当快速移动平均线从下向上穿过慢速移动平均线时买入;反之亦然,卖出。这个基本示例可以辅以风险管理、止损/止盈、追踪止损和市场时间过滤器等策略。.

input int FastPeriod = 10;
input int SlowPeriod = 50;
double FastMA, SlowMA;

int OnInit() {
  return INIT_SUCCEEDED;
}

void OnTick() {
  FastMA = iMA(_Symbol, PERIOD_M1, FastPeriod, 0, MODE_SMA, PRICE_CLOSE, 0);
  SlowMA = iMA(_Symbol, PERIOD_M1, SlowPeriod, 0, MODE_SMA, PRICE_CLOSE, 0);

  double prevFast = iMA(_Symbol, PERIOD_M1, FastPeriod, 0, MODE_SMA, PRICE_CLOSE, 1);
  double prevSlow = iMA(_Symbol, PERIOD_M1, SlowPeriod, 0, MODE_SMA, PRICE_CLOSE, 1);

  if(prevFast < prevSlow && FastMA > SlowMA) {
    trade.Buy(0.1, _Symbol);
  } else if(prevFast > prevSlow && FastMA < SlowMA) {
    trade.Sell(0.1, _Symbol);
  }
}

 

在服务器(VPS/云服务器)上安装并运行 MetaTrader 5

要让机器人全天候运行,建议使用虚拟专用服务器 (VPS) 或云服务器。两种常见方案:

  • Windows Server (MT5常见建议)
  • Linux + Wine (为了降低成本,但某些版本可能不兼容)

 

Windows VPS — 推荐设置

Windows Server 使用技巧推荐:

  • 安装 Windows Server 2019/2022
  • 启用 RDP 网络级认证
  • 安装 MetaTrader 5元编辑器
  • 手动管理自动更新以防止意外重启

 

Linux + Wine — 示例命令(Ubuntu)

如果您想在 Linux 系统上运行 MT5,以下示例命令可以帮助您入门。某些经纪商或插件在 Wine 环境下可能存在问题;建议您进行全面测试。.

sudo apt update && sudo apt install -y wine winetricks xvfb xrdp
# create a dedicated mt5 user
sudo useradd -m mt5user
sudo passwd mt5user
# run mt5 installer under the user with a virtual framebuffer
sudo -u mt5user xvfb-run wine mt5setup.exe

 

RDP 安全性和安全访问

为保护服务器访问安全,建议采取以下措施:

  • 更改默认 RDP 端口启用 NLA 并使用 VPN 或 SSH 隧道进行 RDP 连接
  • 使用防火墙限制访问,并将有效 IP 地址列入白名单。
  • 安装 失败2禁止 为了防止暴力攻击
sudo ufw allow from 203.0.113.0/24 to any port 3389 proto tcp
sudo ufw enable

 

机器人测试、优化和部署

策略测试器 MT5具备回测、优化和前瞻测试功能。您可以使用遗传算法优化参数,并受益于高质量数据(tick数据)。.

  • 使用真实的交易数据,可以获得接近实际情况的结果。.
  • 在正式账号运行之前,至少要在VPS和演示账号上测试几周。.

 

风险评估方法

衡量风险和可持续性的方法:

  • 前向分析:采用不同的时间间隔进行测试,以避免过拟合。.
  • 蒙特卡洛:通过模拟交易执行的变化来衡量稳定性。.
  • 评估指标:复合年增长率、夏普比率、最大回撤、盈利因子。.

 

CI/CD 和自动化部署

对于 EA 代码管理和自动化部署,您可以使用 GitLab 或 GitHub,并在您的 VPS 上设置 Runner 来自动化编译和传输 EX5 文件的过程。.

将 EX5 文件复制到终端文件夹的示例脚本:

# copy the compiled EA to MetaTrader 5 Experts folder
cp MyEA.ex5 "/home/mt5user/.wine/drive_c/Program Files/MetaTrader 5/MQL5/Experts/"
# restart terminal or signal reload

您还可以使用 API 或 ZeroMQ 在 Python 服务和 MT5 之间进行通信,将 AI/ML 数据传递给 EA。.

 

选择位置并配置交易员专用虚拟专用服务器 (VPS)

对于交易者而言,网络延迟和网络稳定性至关重要。选择服务器位置应基于与经纪商服务器或目标市场的距离。.

 

关键位置对比

  • 伦敦/曼彻斯特/法兰克福/阿姆斯特丹非常适合欧洲经纪商和欧洲ECN市场。.
  • 纽约/华盛顿适合美国经纪商,可在纽约市场快速执行。.
  • 新加坡/东京/香港为经纪商和亚洲市场提供低延迟。.
  • 最佳实践找到代理 IP 或 AS,并选择具有最短 BGP 路径的数据中心。.

我们公司拥有超过 全球85个地点 可以选择距离代理服务器最近的数据中心。.

 

推荐的交易用VPS配置

  • 中央处理器:2-4 个核心,固定引脚,高时钟频率。.
  • 内存:基本内存 4-8GB;大型 EA 需要 8-16GB。.
  • 贮存:NVMe SSD,实现快速 I/O。.
  • 网络:1Gbps 或更高;固定延迟和端口支持 BGP 和 DDoS 防护。.
  • 功能:快照、自动备份、7x24小时监控、防DDoS服务器和可靠的SLA。.

对于基于人工智能的策略或繁重的分析,您可能需要一台配备 GPU 的服务器来运行机器学习模型,然后将信号发送到 MT5。.

 

安全、监控和实用技巧

 

系统和网络保护

  • 启用本地防火墙(Windows 防火墙或 ufw/iptables)。.
  • 使用 VPN 或 IP 白名单进行 RDP 访问。.
  • 为该文件夹安装防病毒软件和文件完整性监控程序 MQL5.

 

监控和警报

设置监控服务(例如 普罗米修斯 + 格拉法纳) 对于检查 MT5 终端的 CPU、内存、网络和健康状况非常重要。.

建议在连接中断或发生严重错误时,通过电子邮件/Slack/Telegram 发送警报。.

 

防止滑移和跳弹

  • 选择延迟较低且靠近经纪商的VPS。.
  • 使用市价单和限价单并进行设置 最大滑点 在EA或MetaTrader设置中。.
  • 在EA中启用自动重连功能,以防止断线导致交易损失。.

 

摘要和技术方案

本指南涵盖基础知识。 MQL5 讨论了在 VPS 上进行测试、优化和部署,并探讨了安全性和选择合适位置的实用技巧。.

如果您需要一台服务器 全球85多个地点无论您是需要防 DDoS 服务器、NVMe 和 BGP 网络,还是需要 GPU 来实现 AI 策略,我们的支持团队都随时准备 24/7 为您提供响应,根据您的代理和策略推荐最合适的配置。.

 

常见问题解答

您可能也喜欢