• 【时间之外】EA交易代码入门


    目录

    MetaEditor简介

    最简单的EA交易代码

    代码编译

    EA附加到图表

    EA测试

    EA正式上线

    注意事项


    本不打算写这篇文章,后来看到CSDN里有很多介绍交易软件的文章,平时也碰到很多人问我自动化交易的问题,还是写一篇科普文章,毕竟EA交易也是编程工作中的一种。

    做过外汇交易的人都知道MT4是可以做到自动交易,俗称EA。本文以一个最简单的EA代码(已测试可用)为例,简单说明如何进行EA交易的步骤。

    MetaEditor简介

    在MetaEditor中编写程序代码,可以使用MQL4语言完成。可以参考MT4提供的标准库函数和示例程序来编写自己的EA程序。

    使用MetaEditor很简单,只要在MT4中工具菜单里,打开MQ语言编辑器即可,如下图:

    打开的界面,也很简单,左边是目录树,右边就是写代码的地方,下面就直接进入编写代码:

    最简单的EA交易代码

    假如我们想EA自动执行买入交易,条件是:当前价格高于前一根K线的最高点时进行买入,代码很简单,如下所示:

    1. double last_high = High[1]; // 获取前一根K线的最高价
    2. double cur_price = Ask; // 获取当前卖出价
    3. // 判断是否满足条件进行买入操作
    4. if (cur_price > last_high) {
    5. int ticket = OrderSend(Symbol(), OP_BUY, 0.1, Ask, 3, Bid - StopLoss * Point, Bid + TakeProfit * Point, "Buy", MagicNumber, 0, Green);
    6. if (ticket > 0) {
    7. Alert("Buy order opened. Ticket: ", ticket);
    8. } else {
    9. Alert("Error opening buy order. Error code: ", GetLastError());
    10. }
    11. }

    在上述代码中,我们使用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账户进行模拟交易,待模拟交易能够稳定盈利的时候,再加载到正式账户中去。

    由于国内现在是不能进行外汇保证金交易的,所以上述代码仅供学习,不推荐任何平台。

    还有很多细节,考虑到是入门,这里就不详细说了,有兴趣的朋友,可以一起交流。 

  • 相关阅读:
    大语言模型
    prerender-spa-plugin报错处理,prerender-spa-plugin-next长江后浪
    WebGL 选中一个表面
    面试官:Redis中有序集合的内部实现方式是什么?
    mmdetection3d
    如何理解springboot的自动注入
    【DNS服务器的配置】
    java基于微信小程序的鲜花销售购物商城 uniapp 小程序
    软件设计模式系列之十六——命令模式
    leetcode 33.搜索旋转排序数组 二分法
  • 原文地址:https://blog.csdn.net/hehuii/article/details/133632489