MT5 e velocidade em ação - página 3

 
fxsaber:

Terminal Vazio 2460.


ZS Funciona em conta vazia.


Parece que a velocidade é fortemente influenciada pelo número de negócios e não pelas ordens.

É possível. Com certeza, vai verificar isso.

Mesmo a um assustador ciclo de 20000ms / 100000 ciclos, é uma distância de 5-30ms por chamada.

 

Eu não entendo como funciona.

- Estou recebendo um pouquinho disto.

Foto por

 
A100:

Em sua forma mais simples:

Você só precisa mudar sua abordagem dos cálculos propriamente ditos (fazer retornos intermediários quantas vezes for exigido pela tarefa). Mas se for complicado, considere no primeiro estágio que OnMain não existe para você (você move o código principal não para OnMain, mas para OnTrade2XX), respectivamente, você não precisa aprender nada na OnMain

O que é OnMain? Como pode haver mais de um evento na fila da OnMain se cada evento chama a OnMain para lidar com a fila?

 
fxsaber:

Necessidade de operar em uma conta com muito histórico comercial.

Não é mais o ponto - algo no Reino da Dinamarca .... o que é o resto do texto? ))

 

Teste1
 
fxsaber:

Por favor, peça aos leitores para citar seus resultados deste roteiro.

Fuja do meu não-tão-novo laptop.


 

Começou 3 vezes com caracteres diferentes. Estes são os resultados:

2020.05.29 14:21:52.586 t2 (EURUSD,H1)  HistoryDealsTotal() = 4987
2020.05.29 14:21:52.588 t2 (EURUSD,H1)  HistoryOrdersTotal() = 4981
2020.05.29 14:21:52.757 t2 (EURUSD,H1)  100000 HistorySelect = 169.73 ms


2020.05.29 14:23:08.299 t2 (USDCHF,H4)  HistoryDealsTotal() = 4987
2020.05.29 14:23:08.299 t2 (USDCHF,H4)  HistoryOrdersTotal() = 4981
2020.05.29 14:23:08.480 t2 (USDCHF,H4)  100000 HistorySelect = 181.60 ms


2020.05.29 14:23:37.074 t2 (USDCAD,H1)  HistoryDealsTotal() = 4987
2020.05.29 14:23:37.074 t2 (USDCAD,H1)  HistoryOrdersTotal() = 4981
2020.05.29 14:23:37.238 t2 (USDCAD,H1)  100000 HistorySelect = 163.83 ms

Recurso:

2020.05.29 14:25:26.874 Terminal        MetaTrader 5 x64 build 2460 started for MetaQuotes Software Corp.
2020.05.29 14:25:26.876 Terminal        Windows 10 build 17763, AMD Phenom II X3 720 Processor, 10 / 15 Gb memory, 597 / 930 Gb disk, IE 11, UAC, Admin, GMT+3


O resultado, imho, é excelente.

E há muitos processos diferentes rodando no computador, atividade média da CPU ~=50-65%.

 
fxsaber:


Por favor, peça aos leitores que citem seus resultados deste roteiro.

2020.05.29 14:58:20.187 ddd (Si-6.20,M1)        HistoryDealsTotal() = 4267
2020.05.29 14:58:20.187 ddd (Si-6.20,M1)        HistoryOrdersTotal() = 43089
2020.05.29 14:58:24.777 ddd (Si-6.20,M1)        100000 HistorySelect = 4589.30 ms
 
Anton:

Mesmo um assustador ciclo de 20000ms / 100000 ciclos está longe de 5-30ms por chamada.

#include <fxsaber\Benchmark.mqh> // https://c.mql5.com/3/321/Benchmark.mqh

void OnStart()
{
  MqlTick Tick;

  if (SymbolInfoTick(_Symbol, Tick))
    for (int i = 0; i < 100000; i++)
      _B(HistorySelect(Tick.time, INT_MAX), 5);
}
        Alert: Time[Test6.mq5 9: HistorySelect(Tick.time,INT_MAX)] = 32 ms.
        Alert: Time[Test6.mq5 9: HistorySelect(Tick.time,INT_MAX)] = 6 ms.


Em EAs de combate, eu envolvi funções em todos os lugares suspeitos em _B(FuncName(...), AlertTime). Aqui está um pequeno trecho do registro das entradas mais recentes.

2020.05.29 15:08:41.806 Alert: Time[NewTicks.mqh 271: NEWTICKS::IsHistoryDeals(MarketWatchTick.time_msc)] = 20 ms.
2020.05.29 15:08:41.806 Alert: Time[SyncChannel.mqh 381: NEWTICKS::CheckFreshTicks(::LastTicks)] = 21 ms.
2020.05.29 15:08:42.793 Alert: Time[NewTicks.mqh 112: ::HistorySelect(TimeMsc/1000,INT_MAX)] = 8 ms.
2020.05.29 15:08:42.793 Alert: Time[NewTicks.mqh 271: NEWTICKS::IsHistoryDeals(MarketWatchTick.time_msc)] = 8 ms.
2020.05.29 15:08:42.925 Alert: Time[NewTicks.mqh 112: ::HistorySelect(TimeMsc/1000,INT_MAX)] = 6 ms.
2020.05.29 15:08:42.930 Alert: Time[NewTicks.mqh 247: NEWTICKS::IsHistoryDeals(Ticks[Size-1].time_msc)] = 7 ms.
2020.05.29 15:08:42.930 Alert: Time[SyncChannel.mqh 381: NEWTICKS::CheckFreshTicks(::LastTicks)] = 11 ms.
2020.05.29 15:08:42.952 Alert: Time[NewTicks.mqh 112: ::HistorySelect(TimeMsc/1000,INT_MAX)] = 6 ms.
2020.05.29 15:08:42.952 Alert: Time[NewTicks.mqh 271: NEWTICKS::IsHistoryDeals(MarketWatchTick.time_msc)] = 6 ms.
2020.05.29 15:08:44.557 Alert: Time[NewTicks.mqh 112: ::HistorySelect(TimeMsc/1000,INT_MAX)] = 7 ms.
2020.05.29 15:08:44.557 Alert: Time[NewTicks.mqh 271: NEWTICKS::IsHistoryDeals(MarketWatchTick.time_msc)] = 12 ms.
2020.05.29 15:08:44.557 Alert: Time[SyncChannel.mqh 381: NEWTICKS::CheckFreshTicks(::LastTicks)] = 12 ms.
2020.05.29 15:08:45.010 Alert: Time[NewTicks.mqh 112: ::HistorySelect(TimeMsc/1000,INT_MAX)] = 5 ms.
2020.05.29 15:08:45.010 Alert: Time[NewTicks.mqh 247: NEWTICKS::IsHistoryDeals(Ticks[Size-1].time_msc)] = 6 ms.
2020.05.29 15:08:46.303 Alert: Time[NewTicks.mqh 112: ::HistorySelect(TimeMsc/1000,INT_MAX)] = 24 ms.
2020.05.29 15:08:46.303 Alert: Time[NewTicks.mqh 271: NEWTICKS::IsHistoryDeals(MarketWatchTick.time_msc)] = 32 ms.
2020.05.29 15:08:46.303 Alert: Time[SyncChannel.mqh 381: NEWTICKS::CheckFreshTicks(::LastTicks)] = 32 ms.
2020.05.29 15:08:51.984 Alert: Time[NewTicks.mqh 112: ::HistorySelect(TimeMsc/1000,INT_MAX)] = 15 ms.
A coluna de tempo mostra a freqüência com que os frisos ocorrem.
Arquivos anexados:
Benchmark.mqh  2 kb
 
2020.05.29 14:59:37.947    Test_HS (USDJPY,M15)    HistoryDealsTotal() = 5097
2020.05.29 14:59:37.948    Test_HS (USDJPY,M15)    HistoryOrdersTotal() = 5154
2020.05.29 14:59:37.961    Test_HS (USDJPY,M15)    100000 HistorySelect = 13.81 ms

Recurso:

2020.05.29 14:49:51.173 Terminal        MetaTrader 5 x64 build 2460 started for MetaQuotes Software Corp.
2020.05.29 14:49:51.175 Terminal        Windows 10 build 19041, Intel Core i7-9700  @ 3.00 GHz, 54 / 63 Gb memory, 78 / 222 Gb disk, IE 11, UAC, GMT+3