Desejos para MT5 - página 51

 
Yedelkin:

Explicação. Se um Expert Advisor não processar ticks para o símbolo ao qual está ligado a um gráfico, a geração contínua de eventosNewTick para esse símbolo levará a um transbordamento da fila de eventos processados por esse Expert Advisor.


https://www.mql5.com/ru/docs/runtime/running

Todos os eventos gerados pelo terminal do cliente empilham na fila comum. Assim, os eventos são processados um após o outro, pela ordem em que são recebidos. A única excepção é o evento NewTick. Se já houver um evento na fila ou se o evento estiver a ser processado, um novo evento NewTick não é colocado na fila.

A fila do evento tem um tamanho limitado. Quando a fila fica cheia, os eventos antigos são removidos sem serem processados para dar lugar a novos eventos. É por isso que é altamente recomendável que se escrevam manipuladores de eventos eficientes e que não se utilizem loops infinitos (excepto para scripts que tratam de um único evento Start).

Документация по MQL5: Программы MQL5 / Выполнение программ
Документация по MQL5: Программы MQL5 / Выполнение программ
  • www.mql5.com
Программы MQL5 / Выполнение программ - Документация по MQL5
 
Rosh:

https://www.mql5.com/ru/docs/runtime/running

O terminal do cliente armazena todos os eventos que ocorrem numa fila comum. Desta forma, os eventos são processados um após o outro na ordem em que são recebidos. A excepção é o evento NewTick. Se já houver um evento na fila ou se o evento estiver a ser processado, um novo evento NewTick não é colocado na fila.

A fila do evento tem um tamanho limitado. Quando a fila fica cheia, os eventos antigos são removidos sem serem processados para dar lugar a novos eventos. Por esta razão, é altamente recomendável que se escrevam manipuladores de eventos eficientes e que não se utilizem loops infinitos (a excepção são os scripts que tratam de um único evento Start).

Assim, a regra "um evento NewTick para toda a fila comum" é sempre válida, independentemente da presença/ausência da função OnTick() na EA. Obrigado pelo esclarecimento!

Há ainda uma questão sobre como desligar o processo de geração de carraças desnecessárias no testador.

 

Yedelkin:

Resta a questão de desactivar o processo de gerar carraças desnecessárias no testador.

Não os processe aí e, logicamente, tudo ficará bem.

 
Interesting:

Não os processe aí e, logicamente, tudo ficará bem.

É apenas à primeira vista "tudo vai ficar bem". Presumo que os carrapatos no testador são gerados à força, durante todo o período de teste/optimização. Concorda? Se assim for, as carraças serão geradas à força para o símbolo, ao qual o Conselheiro Especialista está ligado, e que (carraças) não são processadas por essa EA. Isto é, apesar da ausência de processamento de carraças para este símbolo (a vossa proposta), o testador perderá tempo na geração de carraças. Se há algo que não compreendo, estou pronto a aprender coisas novas com prazer.

 
Yedelkin:

Bem, volto a dizê-lo: o Conselheiro Especialista não trabalha com o símbolo ao qual está ligado de todo. E não precisa de rastrear qualquer SL e TP neste símbolo. Ou seja, o consultor especializado não precisa de carraças neste símbolo. A EA é afixada ao símbolo apenas quando necessário, porque precisa de ser afixada pelo menos em algum lugar para funcionar.

Ahem... E porque deve testar o Consultor Especialista num símbolo em que não está a negociar? Teste sobre o que precisa para negociar.

E se não precisar de negociar de todo, então também não precisa de testar - trabalhar com o histórico de citações da EA em tempo real.

 
Rosh:

O terminal do cliente armazena todos os eventos que ocorrem numa fila comum. Desta forma, os eventos são processados um após o outro na ordem em que são recebidos.

Rashid, o que acontece aos eventos que não são tratados pela EA/script/indicador? Era disso que tratava a pergunta.

São realmente colocados na fila e só retirados da mesma quando o processamento do evento ao qual a resposta se destina é activado?

Ou será que ainda tinha razão em assumir que cada um tem a sua própria fila, e apenas os eventos que precisam de ser processados são aí recolhidos?

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
Основы языка / Функции / Функции обработки событий - Документация по MQL5
 
Yedelkin:

É apenas à primeira vista "tudo vai ficar bem". Presumo que os carrapatos no testador são gerados à força, durante todo o período de teste/optimização. Concorda? Se assim for, as carraças serão geradas à força para o símbolo, ao qual a EA está ligada, e que (carraças) não são processadas por esta EA. Isto é, apesar da ausência de processamento de carraças para este símbolo (a sua sugestão), o testador perderá o seu tempo gerando-as. Se houver algo que eu não compreenda, terei prazer em aprender coisas novas.

Vamos falar pelo modo "Todos os carrapatos".

Compreendo que não são apenas gerados à força, e todos os símbolos seleccionados e comercializados no Expert Advisor (de forma alguma sem ele).

Os bilhetes do símbolo seleccionado nas definições do testador (símbolo principal) podem ou não ser tratados no OnTick (neste caso, se este tipo de evento já for tratado ou existir na fila, não é adicionado a ele).

Pelo menos, foi assim que entendi a lógica do criador.

3.Com base na tarefa que descreveu, obtemos informações sobre os carrapatos nos símbolos adicionais com os eventos personalizados, relacionados com o ChartEvent. O ChartEvent chega à fila e será executado ou apagado quando estiver cheio.

Procedendo do acima exposto, é evidente que se o processamento de carraças de "símbolos adicionais" (externos ao Expert Advisor) for efectuado de forma ineficaz, é o processamento de ChartEvent que será um problema e que irá acartar toda a fila de eventos.

Posso não compreender totalmente a lógica do vosso Conselheiro Especialista, mas nestas condições, colocaria num temporizador um bloco para recolher informações sobre preços de todos os símbolos e outras informações importantes sobre símbolos adicionais. E utilizando ChartEvent eu transferiria apenas informação sobre o aparecimento de, digamos, um novo bar.

Também pode processar informação sobre outros símbolos no bloco OnTick (se for utilizado), como é feito no MT4. Mas o temporizador tem aqui alguma vantagem, porque o temporizador é processado periodicamente e não mais do que uma vez por segundo.

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика - Документация по MQL5
 
komposter:

Rashid, o que acontece aos eventos que não são tratados pela EA/script/indicador? Era essa a questão, não era?

São realmente colocados na fila e só retirados da mesma quando o processamento do evento ao qual a resposta se destina é activado?

Ou será que ainda tinha razão em assumir que cada um tem a sua própria fila, e apenas os eventos que precisam de ser processados são aí recolhidos?

Tanto quanto sei, se não houver processamento, os eventos na fila são "largados" dela quando chega um novo evento (se a fila estiver cheia).
 
komposter:

Rashid, o que acontece aos eventos que não são tratados pela EA/script/indicador? Era essa a questão, não era?

São realmente colocados em fila de espera e só retirados da mesma quando o processamento do evento ao qual se destina a resposta é permitido?

Ou será que ainda tinha razão em assumir que cada fila tem a sua, e apenas os eventos que precisam de ser processados são aí recolhidos?

Resposta dos criadores:

Cada consultor/escritor/indicador tem a sua própria fila de espera. Claro que nada na fila está congelado se o manipulador não estiver disponível. Bem, se não houver um manipulador, é lido e ignorado.

 
komposter:

Ahem... Porque testaria um EA num instrumento que não está a negociar?

Provavelmente ainda não leram com muita atenção os meus posts, que já estabeleceram o princípio de trabalho. Sugiro terminar o assunto nesta altura.

Quero explicar porque o fiz, mas em todo o caso, obrigado.