Desejos para MT5 - página 50

 

Yedelkin:

Bem, porque o manual diz que"o evento NewTick é gerado quando um novo tick é recebido no símbolo ao qual a EA está anexada ao gráfico", o facto da recepção de novas carraças deve causar a geração de eventosNewTick.

A julgar pela pergunta, pensa que nenhum evento NewTick é gerado quando o OnTick() é desactivado? Mas não encontrei tal informação no manual de referência.

É assim que eu vejo o evento - se não houver um manipulador, o evento não é enfileirado. Isto é lógico, e não vejo a utilidade de escrever sobre isto na ajuda.

O Expert Advisor gera um grande número de eventos (eventos comerciais, a partir de um gráfico, etc.), não é necessário tratar de todos eles.

Se todos os eventos (incluindo os que não estão em fila de espera) estivessem em fila de espera, alguns EAs não funcionariam - o seu evento não chegaria à fila (por exemplo, quando se trabalha apenas com o temporizador uma vez por dia).

 
komposter:

É assim que eu vejo o evento - se não houver um manipulador, o evento não será enfileirado. Isto é lógico e não vejo a utilidade de escrever sobre isto na ajuda.

O Expert Advisor gera um grande número de eventos (eventos comerciais, eventos gráficos, etc.), não é necessário tratar de todos eles.

Se todos os eventos (incluindo os que não são desdobrados) fossem colocados na mesma fila, alguns Conselheiros Especialistas não poderiam trabalhar - o seu evento não chegaria à fila (por exemplo, quando apenas o temporizador está a funcionar uma vez por dia).

Na minha opinião, os dois tipos de eventos (NewTick e Timer) devem ser processados separadamente dos outros.

Muito provavelmente, devemos também separar eventos comerciais (Trade) e eventos para o processamento da Profundidade do Mercado (BookEvent).

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

Lizar, Interessante,

Estava errado acerca das conclusões da operação de ensaio. Aparentemente, confundi os registos de demonstração com os registos do testador. O desenho de

void OnChartEvent(const int id,           
                const long& lparam,   
                const double& dparam, 
                const string& sparam  
                )
  {
   if(id==CHARTEVENT_CUSTOM) TesterWithdrawal(1);
  }

ainda não funciona para mim. Sugere que o eventoCHARTEVENT_CUSTOM do utilizador a partir dos indicadores nos símbolos alienígenas ou não é recebido ou não é processado.

 
komposter:

Acredito que é este o caso - se não houver um manipulador, o evento não é enfileirado.

Seria bom se esta versão fosse confirmada. Mas para o testador, as carraças são geradas de qualquer maneira. Mesmo quando são absolutamente desnecessários.

komposter:

Isto é lógico e não vejo qualquer razão para escrever sobre isso na ajuda.

Talvez seja lógico, mas não para todos. Os desenvolvedores têm repetidamente repreendido os utilizadores por pensarem demais. Por conseguinte, nas minhas conclusões, tento baseá-las apenas nas informações disponíveis no momento. E actualmente, como foi dito anteriormente, o manual diz que"o evento NewTick é gerado quando umnovo tick é recebido para o símbolo, ao qual o Expert Advisor está anexado". Não encontrei nenhuma cláusula de excepção, pelo que cheguei à conclusão de que o facto de receber novas carraças deve causar a geração de eventosNewTick.

komposter:

O Expert Advisor gera um grande número de eventos (eventos comerciais, a partir do gráfico, etc.), não é necessário tratar de todos eles.

Para garantir que o eventoNewTick não é tratado, proponho que se faça uma função de troca. O meu Expert Advisor poderá decidir por si próprio se requer a geração de eventosNewTick pelo terminal. O meu Expert Advisor deverá trabalhar apenas com sinais "alienígenas", mas ainda precisa de ser anexado a algum gráfico. E acontece, por exemplo, que durante os testes/optimização é gasto um certo tempo na geração de carraças para o símbolo ao qual o Expert Advisor está ligado, enquanto o Expert Advisor não precisa sequer destas carraças (e eventos NewTick).
 
Yedelkin:

Mas para o testador, as carraças são geradas de qualquer maneira. Mesmo quando são completamente desnecessários.

O que significa isso? E verificará o accionamento das encomendas (pendentes, SL e TP) a que preços?

No testador, precisamos de carraças para todos os símbolos, nos quais a EA negoceia. Evidentemente, quanto maior for o número de instrumentos e quanto maior for a qualidade da modelação, mais lenta será a operação.


Yedelkin:

E neste momento, tal como acima referido, o manual diz que"o evento NewTick é geradoquando chega um novo tick para o símbolo a cuja tabela o Expert Advisor está anexado". Não encontrei nenhuma cláusula de excepção a esta regra e, por conseguinte, cheguei à conclusão de que a chegada de novos tick deve gerar o eventoNewTick.

Sim, mas seguindo esta lógica, todos os outros eventos devem ser enfileirados do mesmo modo. Isso seria demasiado.

 
komposter:

Como assim? E verificará o accionamento das encomendas (pendentes, SL e TP) a que preços?

Bem, repito: a EA não funciona de modo algum com o símbolo que lhe está anexado. E não precisa de rastrear SL e TP deste símbolo. Ou seja, a EA não precisa de carraças para este símbolo. A EA só é afixada ao símbolo quando necessário, porque precisa de ser afixada pelo menos em algum lugar para ser lançada.

komposter:


Sim, mas seguindo esta lógica, todos os outros eventos devem ser enfileirados exactamente da mesma forma. Seria demasiado.

Seguindo esta lógica, todas as excepções às regras para gerar carraças e/ou eventos em fila de espera devem ser listadas no livro de referência. Até agora, encontrei apenas uma excepção, - para o caso, quando (1) existe a função OnTick(), (2) esta função trata de eventos NewTick anteriores. Esta excepção não se adequa ao meu caso.

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

Yedelkin:

Seguindo esta lógica, todas as excepções às regras para gerar carraças e/ou eventos em fila de espera devem ser listadas no manual. Até agora, encontrei apenas uma excepção - para o caso em que (1) existe uma função OnTick(), (2) esta função trata do evento NewTick anterior. Esta excepção não se enquadra no meu caso.

Seria lógico supor que se OnTick() estiver ausente, não há processamento de carraças para este gráfico (pelo símbolo deste gráfico).

Se os eventos estão ou não em fila de espera, e em que fila é outra questão. O principal é que as carraças não são processadas pelo gráfico (Expert Advisor on it)!

Se tivermos em conta que a EA processa carraças de outros gráficos, teremos de considerar o processamento de carraças EXTERNAS.

Assim, na minha opinião, no meu Expert Advisor deve ser criado o seu próprio processamento de carraças, no qual como parâmetros de entrada a passar: símbolo, tempo, preço (o evento personalizado permite teoricamente fazer tudo isto).

Acho que é o trabalho com o vaso do evento personalizado que precisa de ser estudado e optimizado em detalhe.

 
Interesting:

Se para ter em conta que a EA processa carraças de outros gráficos, então é necessário trabalhar com o processamento de carraças EXTERNAS.

Assim, na minha opinião, no Expert Advisor deve ser criado o seu próprio processamento de carraças, no qual como parâmetros de entrada a passar: símbolo, tempo, preço (o evento personalizado permite teoricamente fazer tudo isto).

Na minha opinião, apenas o trabalho com o potk de eventos personalizados deve ser estudado e optimizado em detalhes.

Tem razão, foi exactamente assim que eu fui, manipulando apenas carraças externas. Ainda não há perguntas aqui.

Interessante:

Seria lógico supor que se OnTick() estiver ausente, o processamento de carraças para esta carta (de acordo com o símbolo desta carta) não é realizado.

Se os eventos estão ou não em fila de espera, e em que fila é outra questão. O principal é que as carraças não são processadas pelo gráfico (Expert Advisor on it)!

Por isso, estou determinado em garantir que a fila geral no meu caso não esteja entupida com eventos de carraças "internas". Posso estar errado, claro, mas deveria ser muito mais fácil "desactivar" do que "assegurar a geração atempada de ticks, filas de eventos adequadas, sincronização com o servidor, etc." ...Deixe o "padrão" para a maioria das pessoas ficar como está neste momento, mas para pessoas extremas como eu, acrescente uma função de desactivação/switch. Com cautela no manual se poderá haver quaisquer efeitos secundários.
 
Yedelkin:

É isso mesmo, foi exactamente assim que eu fiz - manuseando exclusivamente carraças externas. Ainda não há questões aqui.

É nisso que estou fixado, para ter a certeza que a fila geral no meu caso não está entupida com eventos de carraças "internas". Posso estar errado, claro, mas "desactivar" deve ser muito mais fácil do que "assegurar a geração atempada de ticks, filas de eventos adequadas, sincronização com o servidor, etc." ...Deixar o "padrão" para a maioria das pessoas ficar como está neste momento, mas para pessoas extremas como eu, adicionar uma função de desactivação/switch. Com cautela no manual se poderá haver quaisquer efeitos secundários.

Quanto a mais fácil, é uma questão discutível, e a variante que propõe não é menos discutível (na minha opinião).

Toda a questão relativa às carraças, e a todos os eventos em geral, é o que acontece aos eventos se não houver um manipulador no Expert Advisor.

A minha segunda pergunta a este respeito seria - todos os eventos são tratados na mesma fila ou para certos eventos (OnTimer, OnTick e OnTrade) têm as suas próprias filas?

 
Interesting:

Mais fácil é discutível, e a opção que propõe não é menos discutível (na minha opinião).

Concordo; é difícil julgar o que não se sabe. Resta apenas expressar desejos :) Sobre a discordância da minha versão, posso dizer que o principal aqui é a ideia de "não preciso de tiques"; a forma como será implementada é da responsabilidade dos programadores.

Interessante:

Toda a questão sobre carraças, e todos os eventos em geral, é o que acontece com os eventos se não houver um manipulador no Expert Advisor.

Exactamente correcto. Existe apenas uma solução para mim - cortar as pontas (introduzir a função de interruptor), e é garantido não se incomodar com a questão :) Mas devemos também lembrar-nos do testador que perde tempo a criar (gerar?) carraças que, em princípio, são desnecessárias. Apenas porque o testador é forçado a ser apegado a um dos personagens.

Interessante:

A segunda pergunta que tenho a este respeito é a seguinte - todos os eventos são tratados numa fila ou há filas separadas para certos eventos (OnTimer, OnTick e OnTrade)?

Bem, o manual afirma explicitamente que "todos os eventos que ocorrem" são colocados numa fila comum e processados um após o outro na ordem em que são recebidos. A única excepção é especificada para NewTick. De alguma forma provou que o evento OnTimer nem sempre é tratado, mas também pode ser apagado como resultado de um transbordo comum de filas. Não vi qualquer menção a filas de espera separadas para cada evento.

Razão: