返回顶部
  • 发帖数2765
  • 粉丝0

愿您早日建立自己的稳定盈利的交易系统!

  • 最佳新人

    注册账号后积极发帖的会员
  • 活跃会员

    经常参与各类话题的讨论,发帖内容较有主见
  • 热心会员

    经常帮助其他会员答疑
  • 推广达人

    积极宣传本站,为本站带来更多注册会员
  • 宣传达人

    积极宣传本站,为本站带来更多的用户访问量
  • 灌水之王

    经常在论坛发帖,且发帖量较大
  • 突出贡献

    长期对论坛的繁荣而不断努力,或多次提出建设性意见
  • 优秀版主

    活跃且尽责职守的版主
  • EA邦VIP

    EA邦vip会员
  • 论坛元老

    为论坛做出突出贡献的会员

MT5CTP程序化交易开发11:获取均线值

[复制链接]
唐老师Lv.9 显示全部楼层 发表于 2021-9-13 18:14:09 |阅读模式 打印 上一主题 下一主题
MT5CTP的视频教学可以到网站上关于我们栏目的EA邦的各视频平台里观看。
这是第11课的代码:EA文件代码: 双均线交叉_EA_v1.0.mq5 (5.94 KB, 下载次数: 2)
  1. //+------------------------------------------------------------------+
  2. //|                                      Copyright 2020, EA邦        |
  3. //|                                     http://www.eabang.com        |
  4. //+------------------------------------------------------------------+
  5. #define __MT5CTP__
  6. // 包含库
  7. #ifdef __MT5CTP__
  8. #include <mt5ctp\mt5toctp.mqh>
  9. #endif

  10. #property copyright "Copyright 2021, MetaQuotes Ltd."
  11. #property link      "https://www.eabang.com"
  12. #property version   "1.00"
  13. //--- input parameters
  14. input int      短均线=5;
  15. input int      长均线=10;
  16. input double   开仓量=1.0;
  17. input int      止盈=100;
  18. input int      止损=100;
  19. //+------------------------------------------------------------------+
  20. //| Expert initialization function                                   |
  21. //+------------------------------------------------------------------+
  22. int OnInit()
  23.   {
  24. //--- create timer
  25.    EventSetTimer(60);

  26. //---
  27.    return(INIT_SUCCEEDED);
  28.   }
  29. //+------------------------------------------------------------------+
  30. //| Expert deinitialization function                                 |
  31. //+------------------------------------------------------------------+
  32. void OnDeinit(const int reason)
  33.   {
  34. //--- destroy timer
  35.    EventKillTimer();

  36.   }
  37. //+------------------------------------------------------------------+
  38. //| Expert tick function                                             |
  39. //+------------------------------------------------------------------+
  40. void OnTick()
  41.   {
  42. //---
  43.    if(ddsl(0)==0)
  44.      {
  45.       //定义均线交叉
  46.      }

  47.    Print("多单数量=",ddsl(0));
  48.    Print("空单数量=",ddsl(1));
  49.   }
  50. //+------------------------------------------------------------------+
  51. //| Timer function                                                   |
  52. //+------------------------------------------------------------------+
  53. void OnTimer()
  54.   {
  55. //---

  56.   }
  57. //+------------------------------------------------------------------+
  58. double ma(string sym,ENUM_TIMEFRAMES zhouqi,int zhi,int bias,ENUM_MA_METHOD method,ENUM_APPLIED_PRICE price,int k) //获取均线
  59.   {
  60.    double buf[];
  61.    ArraySetAsSeries(buf,true);
  62.    int a=iMA(sym,zhouqi,zhi,bias,method,price);
  63.    int copied=CopyBuffer(a,0,0,k+1,buf);
  64.    return(buf[k]);
  65.   }
  66. //+------------------------------------------------------------------+
  67. //|                                                                  |
  68. //+------------------------------------------------------------------+
  69. int ddsl(int path)
  70.   {
  71.    int a=0;
  72.    int ddzs=mt5ctp::MT5PositionsTotal();
  73.    for(int i=0; i<ddzs; i++)
  74.      {
  75.       ulong ticket = 0;
  76.       mt5ctp::MT5PositionGetTicket(i,ticket);
  77.       MT5CTPOrders order_mt5;
  78.       ZeroMemory(order_mt5);
  79.       if(!mt5ctp::MT5PositionSelectByTicket(ticket,order_mt5))
  80.          continue;
  81.       string pos_symbol = ::CharArrayToString(order_mt5.symbol);
  82.       int digit_symbol = (int)::SymbolInfoInteger(pos_symbol,SYMBOL_DIGITS);

  83.       if(order_mt5.type==path)
  84.         {
  85.          a++;
  86.         }
  87.       //Print("编号=",i);
  88.       //Print("品种=",pos_symbol);
  89.       //Print("订单号=",order_mt5.ticket);
  90.       //Print("开仓时间=",order_mt5.time);
  91.       //Print("持仓方向=",order_mt5.type);
  92.       //Print("开仓量=",order_mt5.volume);
  93.       //Print("开仓价=",order_mt5.price,digit_symbol);
  94.       //Print("止损价=",order_mt5.sl,digit_symbol);
  95.       //Print("止盈价=",order_mt5.tp,digit_symbol);
  96.       //Print("盈亏=",order_mt5.profit);
  97.       //Print("魔术码=",order_mt5.magic);
  98.       //Print("注释=",CharArrayToString(order_mt5.comment));
  99.      }

  100.    return(a);
  101.   }
  102. //+------------------------------------------------------------------+
复制代码

脚本文件代码: 测试脚本.mq5 (6.38 KB, 下载次数: 1)
  1. //+------------------------------------------------------------------+
  2. //|                                                      ProjectName |
  3. //|                                      Copyright 2020, CompanyName |
  4. //|                                       http://www.companyname.net |
  5. //+------------------------------------------------------------------+
  6. #define __MT5CTP__
  7. // 包含库
  8. #ifdef __MT5CTP__
  9. #include <mt5ctp\mt5toctp.mqh>
  10. #endif
  11. //+------------------------------------------------------------------+
  12. //|                                      Copyright 2020, EA邦        |
  13. //|                                     http://www.eabang.com        |
  14. //+------------------------------------------------------------------+
  15. #property copyright "Copyright 2021, MetaQuotes Ltd."
  16. #property link      "https://www.mql5.com"
  17. #property version   "1.00"
  18. //+------------------------------------------------------------------+
  19. //| Script program start function                                    |
  20. //+------------------------------------------------------------------+
  21. void OnStart()
  22.   {
  23. //---
  24.    Print("多单数量=",ddsl(0));
  25.    Print("空单数量=",ddsl(1));
  26.    double 均线55=ma(_Symbol,PERIOD_CURRENT,55,0,MODE_EMA,PRICE_CLOSE,0);
  27.    double 均线233=ma(_Symbol,PERIOD_CURRENT,233,0,MODE_EMA,PRICE_CLOSE,0);
  28.    Print("均线55=",均线55);
  29.    Print("均线233=",均线233);
  30.   }
  31. //+------------------------------------------------------------------+
  32. //|                                                                  |
  33. //+------------------------------------------------------------------+
  34. double ma(string sym,ENUM_TIMEFRAMES zhouqi,int zhi,int bias,ENUM_MA_METHOD method,ENUM_APPLIED_PRICE price,int k) //获取均线
  35.   {
  36.    double buf[];
  37.    ArraySetAsSeries(buf,true);
  38.    int a=iMA(sym,zhouqi,zhi,bias,method,price);
  39.    int copied=CopyBuffer(a,0,0,k+1,buf);
  40.    return(buf[k]);
  41.   }
  42. //+------------------------------------------------------------------+
  43. //|                                                                  |
  44. //+------------------------------------------------------------------+
  45. int ddsl(int path) //订单数量
  46.   {
  47.    int a=0;
  48.    int ddzs=mt5ctp::MT5PositionsTotal();
  49.    for(int i=0; i<ddzs; i++)
  50.      {
  51.       ulong ticket = 0;
  52.       mt5ctp::MT5PositionGetTicket(i,ticket);
  53.       MT5CTPOrders order_mt5;
  54.       ZeroMemory(order_mt5);
  55.       if(!mt5ctp::MT5PositionSelectByTicket(ticket,order_mt5))
  56.          continue;
  57.       string pos_symbol = ::CharArrayToString(order_mt5.symbol);
  58.       int digit_symbol = (int)::SymbolInfoInteger(pos_symbol,SYMBOL_DIGITS);

  59.       if(order_mt5.type==path)
  60.         {
  61.          a++;
  62.         }
  63.       //Print("编号=",i);
  64.       //Print("品种=",pos_symbol);
  65.       //Print("订单号=",order_mt5.ticket);
  66.       //Print("开仓时间=",order_mt5.time);
  67.       //Print("持仓方向=",order_mt5.type);
  68.       //Print("开仓量=",order_mt5.volume);
  69.       //Print("开仓价=",order_mt5.price,digit_symbol);
  70.       //Print("止损价=",order_mt5.sl,digit_symbol);
  71.       //Print("止盈价=",order_mt5.tp,digit_symbol);
  72.       //Print("盈亏=",order_mt5.profit);
  73.       //Print("魔术码=",order_mt5.magic);
  74.       //Print("注释=",CharArrayToString(order_mt5.comment));
  75.      }

  76.    return(a);
  77.   }
  78. //+------------------------------------------------------------------+
复制代码

+10
要有能够持续稳定盈利的交易策略,再进行实盘交易,建议先用历史数据回测和模拟盘进行仔细验证。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

EA邦和EACTP仅为EA程序化交易软件服务供应商,使用EA工具进行交易,在使用前应该清楚的阅读和浏览软件相关的教程,使用软件是一种自发行为,所引发的一切法律后果,包括用户在使用过程中导致的任何损失均与EA软件开发者无关。
  • 微信

  • 微信公众号

  • 微信视频号

  • Powered by Discuz! X3.5 | Copyright © 2017-2024, Tencent Cloud. | EABANG.COM
  • 和仲科技有限公司| 川公网安备 51019002005489号 | 蜀ICP备17026493号