MT5和速度在行动 - 页 29

 
Andrey Khatimlianskii:

确定沟通的中断

我不知道该怎么做。

 
fxsaber:

我不知道该怎么做。

是什么让你认为它们发生了,而OnTrade却丢失了?从文件中?

 
Andrey Khatimlianskii:

是什么让你认为它们发生了,而OnTrade却丢失了?从文件中?

因为Relogin重置了历史缓存,(我假设)它是通过OnTrade机制掺入的。

 
fxsaber:

不知道如何做到这一点。

如果可能的话,不脱离MT5的间题时间。而与交易操作 有关的订单在没有内部帮助的情况下,我想不出什么。

 
Valeriy Yastremskiy:

如果可能的话,不脱离MT5的间题时间。而与交易操作 有关的订单在没有内部帮助的情况下,我想不出什么。

我不明白。

 
fxsaber:

我不明白。

是的,有些事情是错的。点位间时间只适用于因通信中断而错过的点位。而在订单、交易和头寸状态的查询和响应的正确性方面,如果由于连接故障而错过或改变响应,并因此而滞后,似乎没有便宜的解决办法。在下一次打勾时重新查询并不总是一种选择。

对我来说,解决方案是一个内置的功能,以跟踪交易/仓位的状态,包括开仓、修改、部分平仓、完全平仓 的订单。追踪结果的要求可以在订单本身设置。并在当前的刻度上获得结果,而不是在下一个刻度上。

 
fxsaber:

你能告诉我怎么做,使我在交易时不必处理这个问题吗?

2020.09.15 22:17:04.633 Alert: Time[NewTicks.mqh 33: ::SymbolInfoTick(_Symbol,Tick)] = 13 ms.
2020.09.15 22:17:04.638 Alert: Time[NewTicks.mqh 33: ::SymbolInfoTick(_Symbol,Tick)] = 18 ms.
2020.09.15 22:17:04.640 Alert: Time[NewTicks.mqh 33: ::SymbolInfoTick(_Symbol,Tick)] = 20 ms.

从记录的时间来看,一切都在7毫秒内发生。

如果你想进行建设性的讨论,请给我们完整的测试条件(服务器、账户类型、所选符号的数量、EA的数量等)。


SymbolInfoTick的运行时间测量代码。

void OnTick()
  {
   MqlTick Tick;
//---
   ulong start,end,max_time=0,avr_time=0;
   int   count=1000;
   for(int i=0; i<count; i++)
     {
      start=GetMicrosecondCount();
      SymbolInfoTick(_Symbol, Tick);
      end=GetMicrosecondCount()-start;
      //---
      if(end>max_time)
         max_time=end;
      avr_time+=end;
     }
   Print("SymbolInfoTick max time: ",DoubleToString(max_time/1000.0,3)," ms; avr time: ",DoubleToString(avr_time/1000.0/count,3)," ms; ",count," iterations");
  }

在MetaQuotes-Demo服务器上(选择20个符号,净值,4个开仓)。

2020.09.16 12:34:22.429 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.017 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:34:27.148 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.022 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:34:27.456 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.002 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:34:27.751 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.021 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:34:28.145 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.003 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:34:28.652 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.002 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:34:30.051 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.020 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:34:30.259 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.019 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:34:30.861 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.019 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:34:31.159 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.020 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:34:32.376 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.002 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:34:32.658 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.017 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:34:34.867 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.017 ms; avr time: 0.000 ms; 1000 iterations

131个符号被选中,10个职位空缺。

2020.09.16 12:44:50.554 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.003 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:44:52.337 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.019 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:44:54.960 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.019 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:44:55.587 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.020 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:44:55.863 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.016 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:44:56.187 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.002 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:44:56.958 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.018 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:44:59.989 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.003 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:45:00.298 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.021 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:45:07.609 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.024 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:45:07.891 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.017 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:45:08.790 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.019 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:45:09.617 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.019 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:45:09.933 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.002 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:45:11.841 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.002 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:45:13.416 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.022 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:45:13.709 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.017 ms; avr time: 0.000 ms; 1000 iterations
Windows 10 build 18363, Intel Xeon  E5-2630 v4 @ 2.20 GHz, 52 / 63 Gb memory
Совершение сделок - Торговые операции - Справка по MetaTrader 5
Совершение сделок - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
 
Anton:

从日志记录的时间来看,这一切都发生在7ms之内。

这就是三个不同的EA。

如果你想进行建设性的讨论,那么请完整地给出所有的测试条件(服务器、账户类型、所选符号的数量、EA的数量,等等)。

真实账户,RannForex服务器,16个符号,每个符号都有M1图表(最大5000条),每个符号上都有一个EA在运行,它只访问自己的符号。

一次可以有大约50个头寸和相同数量的订单。没有任何指标,只有CopyTicksRange(新鲜点数)和SymbolInfoTick被用来获取价格。没有提到酒吧。

 
fxsaber:

这是发出的三个不同的EA。

真实账户,RannForex服务器,16个符号,每个符号都有M1图表(最大5000条),每个符号上都有一个EA在运行,只访问自己的符号。

一次可能有大约50个头寸和相同数量的订单。

如果我理解正确的话,那里不是EA,而是每个符号的压力测试器。这完全改变了事情。而且它显示了对初始条件的隐藏。

也就是说,8(4+HT)处理器上的16个线程(+N个工作终端线程并行)不停地、无延迟地闯入一个同步的符号数据库对象。读/写锁被混在一起,因为有不断的勾选写入。

通常在这样的情况下,根据处理器的陡峭度和它对线程的掌握程度,每个线程可以花费60%到80%的时间来等待。

而这是不分任务类型的。

 
Renat Fatkhullin:

如果我没有理解错的话,那里不是EA,而是每个符号的压力测试器

错误的理解。每个EA都是纯粹的交易(在测试器中通过真实的ticks不放慢速度),不依赖其他。所有的交易逻辑只在OnTick中执行,没有垃圾交易订单,没有递归,没有全球化,没有资源。

不使用OnTrade*, OnBook。第二个定时器和OnChartEvent 用于某些键被按下时的情况。


我确信,适当地实现(由你或我)快照将大大减少对常规环境函数的调用。相应地,滞后性也将大幅降低。

我从来没有想到会有快照这一招。我正在研究这个问题,因为标准的MT5-advisor实施起来很蹩脚,很遗憾。