程序库: MT4Orders - 页 50

 
// 更改列表:
// 10.06.2020
// 添加:在 OrderPrint() 中添加毫秒并删除价格和数量的四舍五入。
// 13.08.2020
// 添加:增加了通过 MT4ORDERS_BENCHMARK_MINTIME 宏检查库部件性能的可能性。
 

我的滞后计数超标,所以我这样做。

sinput int inMT4OrdersMinTimeAlert = 0; // 以毫秒为单位的警报阈值
  
#define  MT4ORDERS_BENCHMARK_MINTIME inMT4OrdersMinTimeAlert // 最低警报-生产率 Spratabyte 时间。

我过滤小滞后的警报。

 
fxsaber:

过滤掉因轻微滞后而触发的警报器。

当输出滞后时间大于 30 毫秒时,也会出现类似的结果。

2020.08.18 05:12:20.760 Alert: Time[MT4Orders.mqh 1746: ::PositionGetTicket(Index)] = 45 ms.
2020.08.18 06:08:07.116 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 38 ms.
2020.08.18 06:44:57.080 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 59 ms.
2020.08.18 07:01:37.171 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 33 ms.
2020.08.18 07:04:19.996 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 34 ms.
2020.08.18 07:04:55.020 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 43 ms.
2020.08.18 07:30:07.414 Alert: Time[MT4Orders.mqh 1746: ::PositionGetTicket(Index)] = 37 ms.
2020.08.18 07:38:31.913 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 40 ms.
2020.08.18 07:44:08.415 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 36 ms.
2020.08.18 07:45:22.918 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 38 ms.
2020.08.18 08:00:37.016 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 40 ms.
2020.08.18 08:01:36.007 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 33 ms.
2020.08.18 08:08:26.948 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 34 ms.
2020.08.18 08:18:41.664 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 33 ms.
2020.08.18 08:48:51.114 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 32 ms.
2020.08.18 09:12:33.762 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 49 ms.
2020.08.18 09:28:42.364 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 47 ms.
2020.08.18 09:28:42.364 Alert: Time[MT4Orders.mqh 1808: ::PositionSelectByTicket(Ticket)] = 38 ms.
2020.08.18 09:30:30.665 Alert: Time[MT4Orders.mqh 1746: ::PositionGetTicket(Index)] = 40 ms.
2020.08.18 09:33:50.114 Alert: Time[MT4Orders.mqh 1746: ::PositionGetTicket(Index)] = 44 ms.
2020.08.18 09:38:41.204 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 77 ms.
 

对于使用异步操作的用户来说,了解账户中未处理异步操作的最大可能数量的设置是非常有用的。

要知道这一点并不难。

Alert: 60 - Too many trade requests


小心,你可能会遇到限制。


获取此类信息的一种可能的变体。

// 如果为 "true","数量 "包含最大可能数量
// 整个终端未处理的异步请求。
bool GetMaxAsync( const TICKET_TYPE TicketPending, int &Amount )
{
  const bool Res = OrderSelect(TicketPending);
  
  if (Res)
    for (Amount = 0; !IsStopped() && OrderDeleteAsync(TicketPending); Amount++)
      ;
      
  return(Res);
}

void OnStart()
{
  for (int i = OrdersTotal() - 1; i >= 0; i--)
    if (OrderSelect(i, SELECT_BY_POS) && (OrderType() > OP_SELL))
    {
      int Amount = 0;
      
      if (GetMaxAsync(OrderTicket(), Amount))
        Alert((string)Amount + " - " + MT4ORDERS::LastTradeResult.comment);
                
      break;
    }
}
 
// 更改列表:
// 20.08.2020
// 修正:对检测到的部分订单执行的特殊性进行说明。

这不是一件简单的事。只是功能之一

ZY 自图书馆出版以来,四年多过去了。而且还在强行定稿。不是简单的 MT5。

Особенности языка mql5, тонкости и приёмы работы
Особенности языка mql5, тонкости и приёмы работы
  • 2020.08.02
  • www.mql5.com
В данной теме будут обсуждаться недокументированные приёмы работы с языком mql5, примеры решения тех, или иных задач...
 

论坛上流行的 MT5 有趣变体。

发布一个 mq4多货币智能交易系统,并将其放在演示版上进行监控。维护一个主题。人们进行讨论。

通过连接转换库发布 mq5 变体。人们被迫(多货币)在真实点数上运行 MT5-Tester 并陷入困境。与此同时,人们意识到为 MT5 编写程序与为 MT4 编写程序一样简单。

 
fxsaber:

在论坛上推广 MT5 的有趣选择。

发布一个 mq4 多货币智能交易系统,并将其放在演示版上进行监控。维护一个主题。大家对其进行讨论。

通过转换库的连接发布了 mq5 变体。人们被迫(多币种)在真实点数上运行 MT5-Tester 并陷入困境。与此同时,人们意识到为 MT5 编写程序与为 MT4 编写程序一样简单。

是的,就测试质量而言,MT5 测试仪的信息量和质量要好几十倍。

感谢您提供的资料库!

 
fxsaber:

发布 mq4 多币种智能交易系统,并对其进行演示和监控。有一个分支机构。人们在讨论。

唉,这是交易者缺乏教育的结果,这是一个非常普遍的误解,即在策略测试器中 进行测试不同于在模拟账户中进行几个星期的测试,多货币智能交易系统与此无关。

fxsaber:

人们被迫(多币种)在真实点数上运行 MT5-Tester,结果卡住了。同时意识到在 MT5 和 4 下一样容易编写。

MK 的自尊心不允许您做出适当的决定,您做了一份工作,使您可以在 MT5 上编写交易策略,而无需花时间研究 MT5 订单系统,但可惜的是,在这个论坛上,"半程序员的技巧 "比交易策略的开发和测试更重要。

 
Igor Makanu:

唉,这是交易者缺乏教育的结果,一个非常普遍的误解是,在策略测试仪 上测试不同于在模拟账户上测试几个星期,多货币交易与此无关。

MK 的自尊心不允许做出适当的决定,您所做的工作使您可以在 MT5 上编写交易策略,而无需花时间研究 MT5 订单系统,但可惜的是,在这个论坛上 "撼动半程序员的技能 "比交易策略的开发和测试 更重要,我认为。

有什么联系?

 
Vitaly Muzichenko:

有什么联系?

4 的订单系统简洁明了--它允许您 "即时 "编写策略,而不必为解决订单的基本操作而分心。

如果您愿意,可以在 MT5 订单系统上练习执行简单的订单操作:


Igor Makanu:

如何使用记忆单

了解:

1. 头寸是否关闭?

平仓的交易类型是什么?

3. 需要同时处理 9 个订单

我在 "MT5 初学者的问题 "主题中提出了这个问题,得到的回答是 "为什么需要它?",MT5 订单系统的解决方案只能由一个人编写,那就是本主题的作者;)