库、外部输入与Magic Number
一、加载库文件与声明库对象
在编写EA前,需加载MT5提供的内置库文件,这些库封装了交易、仓位、订单管理等高频使用到的功能,避免重复造轮子。
1. 常用库文件
cpp
#property strict
#include <Trade/Trade.mqh>
- 库的作用:将复杂功能封装为可复用的类/函数,例如:
CTrade
:提供Buy()
/Sell()
等开仓函数,自动处理订单参数。CPositionInfo
:获取持仓的开仓价、止损、止盈等信息。COrderInfo
:获取挂单的开仓价、止损、止盈等信息。
2. 声明库对象
cpp
CTrade trade; // 交易对象
CPositionInfo posInfo; // 仓位信息对象
COrderInfo orderInfo; // 订单信息对象
二、外部输入:参数配置与用户交互
通过input
关键字声明可配置参数,支持用户在MT5界面动态调整,分为可优化参数与固定参数。
1. 参数分组(input group)
cpp
// sinput 和 input的区别 sinput是不可以做参数优化的参数
input group "设置参数";
sinput int MagicNum = 12345; // EA的唯一编号
sinput int SlType = 1; // 止损方式(1:固定金额{100}美金 2:账户{1}% 3:固定{0.1}手
// 4:按照子账户{10000}1%止损)
sinput int SlParam =100; // 止损依据(根据上方【止损方式】的不同,所代表的含义也不同)
三、Magic Number:
1. 核心定义
- 本质:唯一整数(如
12345
),用于标识EA的专属交易,避免多策略订单混淆。 - 作用:
- 订单区分:同一品种上运行多个EA时,通过魔术号筛选属于当前策略的订单。
- 持仓管理:平仓/修改止损时,仅操作带有指定魔术号的持仓。