程序库: MT4Orders - 页 15

 
Aleksey Vyazmikin:

在哪里可以获得最新的资料库?

最新版本始终可以在程序库页面上找到。

因为我的 EA 运行速度很慢。

使用程序库

2017.08.23 12:03:00.097 Core 3 Si Splice,M1: 992989 ticks, 248280 bars generated.环境同步时间为 0:00:00.078。测试在 0:01:24.069 时通过(包括 0:00:00.421 时的刻度预处理)。

无库

2017.08.23 12:06:38.022 Core 3 Si Splice,M1: 已生成 992989 个刻度,248280 个条形图。环境同步时间为 0:00:00.079。测试在 0:01:09.186 时通过(包括 0:00:00.421 时的刻度预处理)。

唯一不同的是类,它在去初始化期间工作,通过关闭订单运行 - 它是在 MT4 上编写的。

这样的类应该在几毫秒内就能运行。

 
fxsaber:

最新版本可随时从库页面获取。

这样的类应该在几毫秒内就能运行。


更新了库,效果更好

2017.08.23 14:02:22.204 Core 3 Si Splice,M1: 992989 ticks, 248280bars generated.环境同步时间为 0:00:00.062。测试在 0:01:10.341 时通过(包括 0:00:00.437 时的刻度预处理)。


 
Aleksey Vyazmikin:

更新库,效果更好

考虑到这一细微差别。很多人是这样写的

for (int i = 0; i < OrdersHistoryTotal(); i++)
  if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
    // ...

这会导致每次循环时都调用 OrdersHistoryTotal()。该函数经过优化,执行速度很快,但每次仍会检查历史记录中的变化。这显然是不必要的,而且会占用宝贵的时间。所以这样写才是正确的

const int Total = OrdersHistoryTotal();

for (int i = 0; i < Total; i++)
  if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
    // ...

速度更快。

 
// 更改列表:
// 26.08.2017:
// 添加:已添加 OrderOpenTimeMsc() 和 OrderCloseTimeMsc() - 以毫秒为单位的相应时间。
// 修复:以前所有交易单据都是 int 类型,与 MT4 相同。由于在 MT5 中出现了超出 int 类型的情况,交易单类型已改为 long。
// 因此,OrderTicket 和 OrderSend 返回长值。与 MT4 相同类型的返回模式(int)可通过以下方式启用
// 在 #include <MT4Orders.mqh> 之前写下一行

// #define MT4_TICKET_TYPE // 责成 OrderSend 和 OrderTicket 返回与 MT4 相同类型的值 - int。
 
// 更改列表:
// 03.09.2017:
// 添加:已添加 OrderTicketOpen() - MT5 仓位开仓交易票据
// OrderOpenReason() - MT5 开仓交易的原因(开仓原因)
// OrderCloseReason() - MT5 平仓交易的原因(平仓原因)
 

// if (MT4ORDERS::OrderSendBug)
// // {
//Alert("BUG!!!!!!");
//
// //mt4orders_benchmark;
// }

代码中的警报是什么?

之前在 kaments 中找到过,问题已经不存在了。所以这不是什么关键问题,它有时也会出现。

 
Maxim Dmitrievsky:

// if (MT4ORDERS::OrderSendBug)
// // {
// Alert("BUG!!!!!!");
//
// //mt4orders_benchmark;
// }

代码中的警报是什么?

之前在 kaments 中找到过,问题已经不存在了。所以这不是什么关键问题,它有时也会出现。

是的,没错。这是开发人员的一个罕见错误。只有在库中超过一个月才会出现这种情况

      if (!Res || MT4ORDERS::OrderSendBug)
      {
        Alert(Res ? "OrderSend - BUG!" : "MT4ORDERS - not Sync with History!");

我强烈建议您更新。

 
fxsaber:

是的,没错。这是开发人员的一个罕见错误。仅在库中使用了一个多月就出现了这种情况

强烈建议更新。

刚刚更新,谢谢 )
 
库易受 MQL5 标准函数影响的示例
#include <MT4Orders.mqh>

void OnStart()
{
  if (PositionsTotal() > 1)
  {
    OrderSelect(0, SELECT_BY_POS); // 选中 MT4Orders。
    OrderPrint();                  // 像在 MT4 中一样打印仓位
    
    PositionGetTicket(1);          // 由 MQL5 选定
    OrderPrint();                  // 像在 MT4 中一样打印仓位
  }
}
 

关于交易、自动交易系统和测试交易策略的论坛

库:TesterBenchmark

fxsaber, 2017.09.05 09:36 pm.

MT4Orders 与经过最大优化的纯 MQL5 相比滞后不到百分之一。