广告合作
  • 今日头条

    今日头条

  • 百度一下

    百度一下,你就知道

  • 新浪网

    新浪网 - 提供新闻线索,重大新闻爆料

  • 搜狐

    搜狐

  • 豆瓣

    豆瓣

  • 百度贴吧

    百度贴吧——全球领先的中文社区

  • 首页 尚未审核订阅工具 订阅

    MQL4编程:巧用订单“魔术编号”进行选择性平仓

    来源:网络收集  点击:  时间:2024-04-08
    【导读】:
    在使用MQL4语言编写EA自动化交易程序时,我们会遇到一个叫“魔术编号”或“魔术编码”的名词,许多朋友也许还弄不清楚这是什么;我刚开始接触EA编程时也是一样,但经过一段时间的摸索,发现这个“魔术编号”如果用好了,可以提高我们编写程序的效率,下面就给大家分享一下我的心得……工具/原料more电脑MQL语言编辑器思路和行动方法/步骤1/6分步阅读

    在采用MQL4语言编写的自动交易程序中,“发出订单”函数OrderSend()的参数中有一个“int magic”参数,习惯上我们直译为“魔术编号”或“魔术编码”,它和“订单号”不一样,不是由系统自动生成的,而是用户可以采取一定的规则,自定义的数字编码。

    2/6

    在日常外汇交易中,我们平仓的类型无非就是“全部平仓”和“选择性平仓”;

    全部平仓就是“不再持仓”,即不再持有任何仓单,这样的空仓实现起来很简单,在这里就不赘述了;

    选择性平仓又分为两种:一种是对某一货币对的平仓,这可以通过判断货币对的值做到;另一种是达到盈亏条件的平仓,在这种情况下,如果持有的仓单数量多、货币对种类比较杂,在判断时就比较麻烦了……,这时,如果能巧用“发出订单”函数OrderSend()的“int magic”参数(魔术编号),会意想不到地简化操作……

    3/6

    为了举例,我这里用一种简单的”魔术编码“的编码规则:

    1、编码长度为7位,即每个码都是”*******“的形式;

    2、编码前3位代表货币对,各不相同,分别为:100 USDCHF;200 USDCAD;300 EURUSD……,(因为是举例,我这里只编3种,大家可以总结更好的方法……O~O);

    3、编码后4位代表开仓的序号,按开仓时间的先后,从0开始递增;

    4/6

    在电脑上打开MQL4语言编辑器(MetaEditor 4);

    点击工作区左上方的“文件”,选择“新建”,然后建立一个“magicdemo的例程序;

    5/6

    首先,我们在主函数 OnTick()中输入下列语句,买入”USDCHF“3笔:

    int c; static int b=1000000; if(b1000003) { c=OrderSend(USDCHF,OP_BUY,0.01,Ask,0,0,0,magicdemo,b,0,Yellow); if(c0) b++;

    然后点击上方的”编译运行“键;

    可以看到,程序为我们买入了3笔”USDCHF“订单;

    6/6

    这时,我们可以知道,魔术编号为“1000003”的订单是我们最后成交的,所以,我们可以通过它,对最后一笔订单进行平仓,为此我们在主函数 OnTick()中继续输入下列语句:

    int a; for(a=0;aOrdersTotal();a++) { if(OrderSelect(a,SELECT_BY_POS)==true) { if(OrderMagicNumber()=b) { OrderClose(OrderTicket(),OrderLots(),Bid,0,White); } } }

    然后点击上方的”编译运行“键;

    可以看到,程序已经把刚才的最后一笔持仓平掉了;

    怎么样,这比用什么“遍历”、“比较成交时间”要方便多了吧……^O^……

    注意事项

    欢迎有兴趣的朋友留言交流,必复!

    MQL4编程EA交易交易机器人外汇量化交易
    本文关键词:

    版权声明:

    1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。

    2、本站仅提供信息发布平台,不承担相关法律责任。

    3、若侵犯您的版权或隐私,请联系本站管理员删除。

    4、文章链接:http://www.1haoku.cn/art_468364.html

    相关资讯

    ©2019-2020 http://www.1haoku.cn/ 国ICP备20009186号05-05 09:40:46  耗时:0.028
    0.0277s