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

 

Fórum sobre comércio, sistemas automatizados de comércio e testes de estratégia comercial

MT5 e Velocidade em Ação

fxsaber, 2021.03.10 14:53

Um exemplo claro do que atrasa a vigilância do mercado.

Veja os valores na coluna Processador (segundo a partir da direita).


Talvez a visão geral do mercado deva ser tratada pela placa de vídeo?

 
BillionerClub:

Talvez a visão geral do mercado deva ser tratada pela placa de vídeo?

Especialmente se o MT estiver em uma máquina virtual (não é um caso incomum).

 
BillionerClub:

Talvez a visão geral do mercado deva ser tratada pela placa de vídeo?

Não há limite de FPS (Frames per Second) no Terminal. Em Market Watch, pode ser de 300 fps ou mais.

Qualquer visualização em terminais comerciais em fps > 50 é um desperdício de recursos computacionais.

 
BillionerClub:

Talvez a visão geral do mercado deva ser tratada pela placa de vídeo?

não se basear no SysListView32, que não é rápido em si mesmo, mas tem seu próprio elemento de renderização, mas com todos os "sinos e apitos" de implementação de rolagem, classificação, etc. Outra pergunta - é tão necessário quando se trabalha nesta forma? e depois desligá-lo durante o período de trabalho seria uma opção para resolver este problema (se for um problema)

 
Encontrei o cache de propriedades em falta para objetos gráficos.
#include <fxsaber\Benchmark\Benchmark.mqh> // https://www.mql5.com/ru/code/31279

void OnStart()
{
  const string Name = "ObjectName";
  
  ObjectCreate(0, Name, OBJ_BITMAP_LABEL, 0, 0, 0);
  
  for (int i = 0; i < 10; i++)
    _B(::ObjectGetInteger(0, Name, OBJPROP_COLOR), 100); // Повторное обращение к тому же объекту должно быть быстрым, но этого не происходит.
    
  ObjectDelete(0, Name);
  
  Print(::ObjectSetInteger(0, Name, OBJPROP_COLOR, 0)); // true для удаленного объекта!
}


Resultado.

Alert: Bench_Stack = 0, 100 <= Time[Test9.mq5 555 in OnStart: ::ObjectGetInteger(0,Name,OBJPROP_COLOR)] = 9361 mcs.
Alert: Bench_Stack = 0, 100 <= Time[Test9.mq5 555 in OnStart: ::ObjectGetInteger(0,Name,OBJPROP_COLOR)] = 396 mcs.
Alert: Bench_Stack = 0, 100 <= Time[Test9.mq5 555 in OnStart: ::ObjectGetInteger(0,Name,OBJPROP_COLOR)] = 1399 mcs.
Alert: Bench_Stack = 0, 100 <= Time[Test9.mq5 555 in OnStart: ::ObjectGetInteger(0,Name,OBJPROP_COLOR)] = 987 mcs.
Alert: Bench_Stack = 0, 100 <= Time[Test9.mq5 555 in OnStart: ::ObjectGetInteger(0,Name,OBJPROP_COLOR)] = 1111 mcs.
Alert: Bench_Stack = 0, 100 <= Time[Test9.mq5 555 in OnStart: ::ObjectGetInteger(0,Name,OBJPROP_COLOR)] = 1040 mcs.
Alert: Bench_Stack = 0, 100 <= Time[Test9.mq5 555 in OnStart: ::ObjectGetInteger(0,Name,OBJPROP_COLOR)] = 639 mcs.
Alert: Bench_Stack = 0, 100 <= Time[Test9.mq5 555 in OnStart: ::ObjectGetInteger(0,Name,OBJPROP_COLOR)] = 796 mcs.
true


Muito caro. E um erro de função ObjectSet também.

Cadeia de busca: Oshibka 026.

 
fxsaber:

E também um erro de função ObjectSet.

Cadeia de busca: Oshibka 026.

Manuseio assíncrono de objetos

 
Andrey Khatimlianskii:

O manuseio de objetos é assíncrono

Acontece que o ObjectSet sempre tem que retornar verdadeiro.

 
fxsaber:

Acontece que o ObjectSet sempre tem que retornar verdadeiro.

Leia a ajuda:

https://www.mql5.com/ru/docs/objects/objectsetinteger

Valor retornado

Retorna verdadeiro somente se o comando para alterar as propriedades do objeto gráfico foi enviado com sucesso para o gráfico, caso contrário, retorna falso. Para obter mais informações sobre o erro, ligue para GetLastError().


Документация по MQL5: Графические объекты / ObjectSetInteger
Документация по MQL5: Графические объекты / ObjectSetInteger
  • www.mql5.com
ObjectSetInteger - Графические объекты - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
fxsaber:

Acontece que o ObjectSet sempre tem que retornar verdadeiro.

Não posso chegar à mesma conclusão usando a lógica.

 
Andrey Khatimlianskii:

Anton:

falso - somente se estiver errado com ChartID. Com o próprio ChartID (zero), é sempre verdade.

Você tem que se esforçar muito para causar falsidade.