设为首页 收藏本站 切换语言
| 发表于 2025-5-8 20:07:15 | 显示全部楼层 |复制链接
© 本贴为 My05613828 首发,严禁抄袭!

  1. //+------------------------------------------------------------------+
  2. //|                                                  M4EA 订单属性封装.mq4 |
  3. //|                                  Copyright 2024, MetaQuotes Ltd. |
  4. //|                                             https://www.mql5.com |
  5. //+------------------------------------------------------------------+
  6. #property copyright "Copyright 2024, MetaQuotes Ltd."
  7. #property link      "https://www.mql5.com"
  8. #property version   "1.00"
  9. #property strict
  10. //+------------------------------------------------------------------+
  11. //| Expert initialization function                                   |
  12. //+------------------------------------------------------------------+
  13. int OnInit()
  14.   {
  15. //--- create timer
  16.    EventSetTimer(60);
  17. //---
  18.    return(INIT_SUCCEEDED);
  19.   }
  20. //+------------------------------------------------------------------+
  21. //| Expert deinitialization function                                 |
  22. //+------------------------------------------------------------------+
  23. void OnDeinit(const int reason)
  24.   {
  25. //--- destroy timer
  26.    EventKillTimer();
  27.   }
  28. //+------------------------------------------------------------------+
  29. //| Expert tick function                                             |
  30. //+------------------------------------------------------------------+
  31. void OnTick()
  32.   {
  33. //---
  34.    long open_time = 获取订单的integer属性值(Symbol(),0,orderopentime);
  35.    double lots = 获取订单的double属性值(Symbol(),0,orderlots);
  36.    string comment = 获取订单的string属性值(Symbol(),0,ordercomment);
  37.    string time = TimeToString((datetime)open_time,TIME_DATE|TIME_MINUTES|TIME_SECONDS);
  38.    long history_open_time = 获取历史订单的integer属性值(Symbol(),0,orderopentime);
  39.    long history_close_time = 获取历史订单的integer属性值(Symbol(),0,orderclosetime);
  40.    string histoyr_open_times = TimeToString((datetime)history_open_time,TIME_DATE|TIME_MINUTES|TIME_SECONDS);
  41.    string histoyr_close_times = TimeToString((datetime)history_close_time,TIME_DATE|TIME_MINUTES|TIME_SECONDS);
  42.    Alert("开盘时间 ",histoyr_open_times," 关闭时间",histoyr_close_times);
  43. //Alert(time," &&手数",lots,"&&注释",comment);
  44.   }
  45. //+------------------------------------------------------------------+
  46. //| Timer function                                                   |
  47. //+------------------------------------------------------------------+
  48. void OnTimer()
  49.   {
  50. //---
  51.   }
  52. //+------------------------------------------------------------------+
  53. //+------------------------------------------------------------------+
  54. //|                                                                  |
  55. //+------------------------------------------------------------------+
  56. //+------------------------------------------------------------------+
  57. enum  ENUM_PROPERTY_INTEGER
  58.   {
  59.    orderopentime=0,
  60.    orderticket=1,
  61.    ordermagicnumber=2,
  62.    ordertype=3,
  63.    timecurrent_orderopentime=4,
  64.    orderclosetime=5
  65.   };
  66. enum ENUM_PROPERTY_DOUBLE
  67.   {
  68.    orderopenprice=0,
  69.    orderlots=1,
  70.    orderstoploss=2,
  71.    ordertakeprofit=3,
  72.    ordercloseprice=4,
  73.    orderprofit=5,
  74.    orderswap=6,
  75.    ordercommission=7
  76.   };
  77. enum ENUM_PROPERTY_STRING
  78.   {
  79.    ordersymbol=0,
  80.    ordercomment=1
  81.   };
  82. //+------------------------------------------------------------------+
  83. long GetInteger(ENUM_PROPERTY_INTEGER property)
  84.   {
  85.    if(property==orderopentime)
  86.       return OrderOpenTime();
  87.    if(property==orderticket)
  88.       return OrderTicket();
  89.    if(property==ordermagicnumber)
  90.       return OrderMagicNumber();
  91.    if(property==ordertype)
  92.       return OrderType();
  93.    if(property==timecurrent_orderopentime)
  94.       return TimeCurrent()-OrderOpenTime();
  95.    if(property==orderclosetime)
  96.       return OrderCloseTime();
  97.    return -1;
  98.   }
  99. //+------------------------------------------------------------------+
  100. double GetDouble(ENUM_PROPERTY_DOUBLE property)
  101.   {
  102.    if(property==orderopenprice)
  103.       return OrderOpenPrice();
  104.    if(property==orderlots)
  105.       return OrderLots();
  106.    if(property==orderstoploss)
  107.       return OrderStopLoss();
  108.    if(property==ordertakeprofit)
  109.       return OrderTakeProfit();
  110.    if(property==ordercloseprice)
  111.       return OrderClosePrice();
  112.    if(property==orderprofit)
  113.       return OrderProfit();
  114.    if(property==orderswap)
  115.       return OrderSwap();
  116.    if(property==ordercommission)
  117.       return OrderCommission();
  118.    return 0.0;
  119.   }
  120. //+------------------------------------------------------------------+
  121. //|                                                                  |
  122. //+------------------------------------------------------------------+
  123. string GetString(ENUM_PROPERTY_STRING property)
  124.   {
  125.    if(property==ordersymbol)
  126.       return OrderSymbol();
  127.    if(property==ordercomment)
  128.       return OrderComment();
  129.    return "";
  130.   }
  131. //+------------------------------------------------------------------+
  132. //|                                                                  |
  133. //+------------------------------------------------------------------+
  134. //+------------------------------------------------------------------+
  135. //+------------------------------------------------------------------+
  136. long 获取订单的integer属性值(string symbol,int magic,ENUM_PROPERTY_INTEGER property)
  137.   {
  138.    for(int i= OrdersTotal()-1; i>=0; i--)
  139.      {
  140.       if(OrderSelect(i,SELECT_BY_POS)&&order_type_choose(1))
  141.         {
  142.          if(OrderTicket()>0)
  143.             return GetInteger(property);
  144.         }
  145.      }
  146.    return -1;
  147.   }
  148. //+------------------------------------------------------------------+
  149. double 获取订单的double属性值(string symbol,int magic,ENUM_PROPERTY_DOUBLE property)
  150.   {
  151.    for(int i= OrdersTotal()-1; i>=0; i--)
  152.      {
  153.       if(OrderSelect(i,SELECT_BY_POS)&&order_type_choose(1))
  154.         {
  155.          if(OrderTicket()>0)
  156.             return GetDouble(property);
  157.         }
  158.      }
  159.    return 0.0;
  160.   }
  161. //+------------------------------------------------------------------+
  162. string 获取订单的string属性值(string symbol,int magic,ENUM_PROPERTY_STRING property)
  163.   {
  164.    for(int i= OrdersTotal()-1; i>=0; i--)
  165.      {
  166.       if(OrderSelect(i,SELECT_BY_POS)&&order_type_choose(1))
  167.         {
  168.          if(OrderTicket()>0)
  169.             return GetString(property);
  170.         }
  171.      }
  172.    return "";
  173.   }
  174. //+------------------------------------------------------------------+
  175. //+------------------------------------------------------------------+
  176. //+------------------------------------------------------------------+
  177. long 获取历史订单的integer属性值(string symbol,int magic,ENUM_PROPERTY_INTEGER property)
  178.   {
  179.    for(int i= OrdersHistoryTotal()-1; i>=0; i--)
  180.      {
  181.       if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)&&order_type_choose(2))
  182.         {
  183.          if(OrderTicket()>0)
  184.             return GetInteger(property);
  185.         }
  186.      }
  187.    return -1;
  188.   }
  189. //+------------------------------------------------------------------+
  190. double 获取历史订单的double属性值(string symbol,int magic,ENUM_PROPERTY_DOUBLE property)
  191.   {
  192.    for(int i= OrdersHistoryTotal()-1; i>=0; i--)
  193.      {
  194.       if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)&&order_type_choose(2))
  195.         {
  196.          if(OrderTicket()>0)
  197.             return GetDouble(property);
  198.         }
  199.      }
  200.    return 0.0;
  201.   }
  202. //+------------------------------------------------------------------+
  203. string 获取历史订单的string属性值(string symbol,int magic,ENUM_PROPERTY_STRING property)
  204.   {
  205.    for(int i= OrdersHistoryTotal()-1; i>=0; i--)
  206.      {
  207.       if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)&&order_type_choose(2))
  208.         {
  209.          if(OrderTicket()>0)
  210.             return GetString(property);
  211.         }
  212.      }
  213.    return "";
  214.   }
  215. //+------------------------------------------------------------------+
  216. bool order_type_choose(int choose)
  217.   {
  218.    if(choose ==1)
  219.       return OrderType()==OP_BUY||OrderType()==OP_SELL;
  220.    if(choose ==2)
  221.       return OrderType()==OP_BUYLIMIT||OrderType()==OP_SELLLIMIT||OrderType()==OP_BUYSTOP||OrderType()==OP_SELLSTOP;
  222.    return false;
  223.   }
  224. //+------------------------------------------------------------------+
复制代码


//+------------------------------------------------------------------+
//|                                                  M4EA 订单属性封装.mq4 |
//|                                  Copyright 2024, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2024, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- create timer
   EventSetTimer(60);

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- destroy timer
   EventKillTimer();

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   long open_time = 获取订单的integer属性值(Symbol(),0,orderopentime);
   double lots = 获取订单的double属性值(Symbol(),0,orderlots);
   string comment = 获取订单的string属性值(Symbol(),0,ordercomment);

   string time = TimeToString((datetime)open_time,TIME_DATE|TIME_MINUTES|TIME_SECONDS);



   long history_open_time = 获取历史订单的integer属性值(Symbol(),0,orderopentime);
   long history_close_time = 获取历史订单的integer属性值(Symbol(),0,orderclosetime);

   string histoyr_open_times = TimeToString((datetime)history_open_time,TIME_DATE|TIME_MINUTES|TIME_SECONDS);
   string histoyr_close_times = TimeToString((datetime)history_close_time,TIME_DATE|TIME_MINUTES|TIME_SECONDS);

   Alert("开盘时间 ",histoyr_open_times," 关闭时间",histoyr_close_times);
//Alert(time," &&手数",lots,"&&注释",comment);
  }
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
//---

  }
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+





//+------------------------------------------------------------------+
enum  ENUM_PROPERTY_INTEGER
  {
   orderopentime=0,
   orderticket=1,
   ordermagicnumber=2,
   ordertype=3,
   timecurrent_orderopentime=4,
   orderclosetime=5
  };
enum ENUM_PROPERTY_DOUBLE
  {
   orderopenprice=0,
   orderlots=1,
   orderstoploss=2,
   ordertakeprofit=3,
   ordercloseprice=4,
   orderprofit=5,
   orderswap=6,
   ordercommission=7
  };

enum ENUM_PROPERTY_STRING
  {
   ordersymbol=0,
   ordercomment=1
  };

//+------------------------------------------------------------------+
long GetInteger(ENUM_PROPERTY_INTEGER property)
  {
   if(property==orderopentime)
      return OrderOpenTime();
   if(property==orderticket)
      return OrderTicket();
   if(property==ordermagicnumber)
      return OrderMagicNumber();
   if(property==ordertype)
      return OrderType();
   if(property==timecurrent_orderopentime)
      return TimeCurrent()-OrderOpenTime();
   if(property==orderclosetime)
      return OrderCloseTime();
   return -1;
  }
//+------------------------------------------------------------------+
double GetDouble(ENUM_PROPERTY_DOUBLE property)
  {
   if(property==orderopenprice)
      return OrderOpenPrice();
   if(property==orderlots)
      return OrderLots();
   if(property==orderstoploss)
      return OrderStopLoss();
   if(property==ordertakeprofit)
      return OrderTakeProfit();
   if(property==ordercloseprice)
      return OrderClosePrice();
   if(property==orderprofit)
      return OrderProfit();
   if(property==orderswap)
      return OrderSwap();
   if(property==ordercommission)
      return OrderCommission();
   return 0.0;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
string GetString(ENUM_PROPERTY_STRING property)
  {
   if(property==ordersymbol)
      return OrderSymbol();
   if(property==ordercomment)
      return OrderComment();
   return "";
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
long 获取订单的integer属性值(string symbol,int magic,ENUM_PROPERTY_INTEGER property)
  {
   for(int i= OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS)&&order_type_choose(1))
        {
         if(OrderTicket()>0)
            return GetInteger(property);
        }
     }
   return -1;
  }

//+------------------------------------------------------------------+
double 获取订单的double属性值(string symbol,int magic,ENUM_PROPERTY_DOUBLE property)
  {
   for(int i= OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS)&&order_type_choose(1))
        {
         if(OrderTicket()>0)
            return GetDouble(property);
        }
     }
   return 0.0;
  }

//+------------------------------------------------------------------+
string 获取订单的string属性值(string symbol,int magic,ENUM_PROPERTY_STRING property)
  {
   for(int i= OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS)&&order_type_choose(1))
        {
         if(OrderTicket()>0)
            return GetString(property);
        }
     }
   return "";
  }
//+------------------------------------------------------------------+




//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
long 获取历史订单的integer属性值(string symbol,int magic,ENUM_PROPERTY_INTEGER property)
  {
   for(int i= OrdersHistoryTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)&&order_type_choose(2))
        {
         if(OrderTicket()>0)
            return GetInteger(property);
        }
     }
   return -1;
  }

//+------------------------------------------------------------------+
double 获取历史订单的double属性值(string symbol,int magic,ENUM_PROPERTY_DOUBLE property)
  {
   for(int i= OrdersHistoryTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)&&order_type_choose(2))
        {
         if(OrderTicket()>0)
            return GetDouble(property);
        }
     }
   return 0.0;
  }

//+------------------------------------------------------------------+
string 获取历史订单的string属性值(string symbol,int magic,ENUM_PROPERTY_STRING property)
  {
   for(int i= OrdersHistoryTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)&&order_type_choose(2))
        {
         if(OrderTicket()>0)
            return GetString(property);
        }
     }
   return "";
  }
//+------------------------------------------------------------------+
bool order_type_choose(int choose)
  {
   if(choose ==1)
      return OrderType()==OP_BUY||OrderType()==OP_SELL;
   if(choose ==2)
      return OrderType()==OP_BUYLIMIT||OrderType()==OP_SELLLIMIT||OrderType()==OP_BUYSTOP||OrderType()==OP_SELLSTOP;
   return false;
  }
//+------------------------------------------------------------------+

M4EA 订单属性封装.mq4

15.83 KB, 下载次数: 0, 下载积分: 活跃度 -5 售价: 10 H币  [记录]  [购买]

评分
  • 1
  • 2
  • 3
  • 4
  • 5
平均分:NAN    参与人数:0    我的评分:未评 下载时遇到问题?
如果有帮助,就支持一下我呗
举报

评论 使用道具

精彩评论1

xinhua123
DDD
| 发表于 2025-5-16 00:07:42 | 显示全部楼层
很好源码
举报

点赞 评论 使用道具

发新帖
EA交易
您需要登录后才可以评论 登录 | 立即注册

简体中文
繁體中文
English(英语)
日本語(日语)
Deutsch(德语)
Русский язык(俄语)
بالعربية(阿拉伯语)
Türkçe(土耳其语)
Português(葡萄牙语)
ภาษาไทย(泰国语)
한어(朝鲜语/韩语)
Français(法语)