目录
MetaEditor简介
最简单的EA交易代码
代码编译
EA附加到图表
EA测试
EA正式上线
注意事项
本不打算写这篇文章,后来看到CSDN里有很多介绍交易软件的文章,平时也碰到很多人问我自动化交易的问题,还是写一篇科普文章,毕竟EA交易也是编程工作中的一种。
做过外汇交易的人都知道MT4是可以做到自动交易,俗称EA。本文以一个最简单的EA代码(已测试可用)为例,简单说明如何进行EA交易的步骤。
MetaEditor简介
在MetaEditor中编写程序代码,可以使用MQL4语言完成。可以参考MT4提供的标准库函数和示例程序来编写自己的EA程序。
使用MetaEditor很简单,只要在MT4中工具菜单里,打开MQ语言编辑器即可,如下图:
打开的界面,也很简单,左边是目录树,右边就是写代码的地方,下面就直接进入编写代码:
最简单的EA交易代码
假如我们想EA自动执行买入交易,条件是:当前价格高于前一根K线的最高点时进行买入,代码很简单,如下所示:
double last_high = High[1]; // 获取前一根K线的最高价
double cur_price = Ask; // 获取当前卖出价
// 判断是否满足条件进行买入操作
if (cur_price > last_high) {
int ticket = OrderSend(Symbol(), OP_BUY, 0.1, Ask, 3, Bid - StopLoss * Point, Bid + TakeProfit * Point, "Buy", MagicNumber, 0, Green);
if (ticket > 0) {
Alert("Buy order opened. Ticket: ", ticket);
} else {
Alert("Error opening buy order. Error code: ", GetLastError());
}
}
在上述代码中,我们使用High[1]获取前一根K线的最高价,并使用Ask获取当前卖出价。然后,我们判断当前价格是否高于前一根K线的最高价,如果满足条件,则使用OrderSend函数进行买入操作。
其中,OrderSend函数第一个参数为交易品种,第二个参数为交易类型(此处为OP_BUY表示买入),第三个参数为交易量,第四个参数为开仓价,第五个参数为止损值,第六个参数为止盈值,第七个参数为订单备注,第八个参数为魔术数字(用于区分不同EA或信号),第九个参数为订单注释(可选),第十个参数为订单颜色(可选)。
在代码中,我们使用Alert函数输出开仓提示信息,如果买入订单未成功开仓,则输出错误信息。
代码编译
代码完成以后,如何进行测试呢?
首先要继续编辑,生成MT4的可执行文件。
编译成功,则说明代码没有问题,否则首先要保证代码的正确,否则就没有办法进行测试。
虽然MT4提供了单步调整的功能,但个人更习惯于在MT4中直接进行复盘的测试。
EA附加到图表
首先需要把编译通过的EA代码附加到你需要交易的图表上,比如要附加到黄金交易,实现黄金交易的自动化。附加操作需要回到MT4界面上,首先打开黄金交易的图表,然后点击导航菜单后,会出现下面的菜单,只要在你刚才编写的EA上右键(无法截图),会出现附加到图表的按钮。
成功附加后,会出现如下截图:
这个时候,右边还不是笑脸,即还不能进行自动交易。
EA测试
当然,我们在没有测试之前,也不能交易,首先用F6进入EA测试的界面:
需要确认上面三个箭头所指向的内容,前面两个容易理解,就是你的EA代码名称和图表名称。最后一个是测试的方式,推荐选择默认方式,虽然测试的时候会比较慢,但是测试结果比较准确。其他的方式虽然测试速度很快,但是结果会与实际差异很大。
都确认以后,点击开始按钮,就可以进行测试了。测试完成以后,可以看日志和统计报表。
为了测试方便,选择国庆节几天的交易作为测试,出来的结果还不错。不过,一个EA的好坏,仅仅凭这几天是很难判断的,需要长期的实际交易才可以。
EA正式上线
当测试都完成以后,就可以小试牛刀了,打开MT4上面的自动交易按钮就可以正式上线了。
注意事项
在正式上线后,最好是能够盯盘的时段开启EA,或者把仓位设置成最小,比如0.01,这样可以避免因为EA不过关造成大的损失。
个人一般都是现在demo账户进行模拟交易,待模拟交易能够稳定盈利的时候,再加载到正式账户中去。
由于国内现在是不能进行外汇保证金交易的,所以上述代码仅供学习,不推荐任何平台。
还有很多细节,考虑到是入门,这里就不详细说了,有兴趣的朋友,可以一起交流。