Desejos para MT5 - página 48

 

Yedelkin:

Explicação. Se um consultor especializado não processar carraças para um símbolo ao qual está ligado a um gráfico, a geração contínua de eventosNewTick para este símbolo levará a um transbordamento da fila de eventos processados por esta EA.

O que quer dizer?

Não há OnTick() no Expert Advisor, mas os eventos NewTick ficam em fila de espera?

Como se sabe o que analisou a fila? )

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

Não foi possível encontrar uma forma de desactivar o tick stream( eventoNewTick) para o símbolo com o Expert Advisor anexado ao gráfico, se necessário.


Sinto que tenho trabalhado de domingo a sexta-feira sem descanso. :))

 
komposter:

O que quer dizer?

Como soube...?

Aprendi isso de duas maneiras. Primeiro conheci a combinação EventChartCustom - OnChartEvent sobre o exemplo de um simples Expert Advisor que recolhe sinais indicadores de símbolos estrangeiros. Ao mesmo tempo, o Expert Advisor não trabalhou com as carraças do seu próprio símbolo, a função Ontick() no código do Expert Advisor foi comentada. Ao executar a EA no testador, descobri que o tempo de viagem difere dependendo do símbolo que está ligado à EA. Ver, por exemplo, o exemplo abaixo. Com os mesmos parâmetros de optimização, os tempos de execução são visivelmente diferentes.

OE      0       Tester  15:35:25        Experts\Ye00-01-0 Event.ex5 on USDRUR,M1 from 2010.08.01 00:00 to 2010.08.09 00:00
 CH      0       Tester  15:35:25        complete optimization started
LO      0       Core 1  15:35:25        agent process started
HK      0       Core 1  15:35:25        connecting to 127.0.0.1:3000
OK      0       Core 2  15:35:25        agent process started
DO      0       Core 2  15:35:25        connecting to 127.0.0.1:3001
DG      0       Core 2  15:35:26        connected
EK      0       Core 1  15:35:26        connected
NQ      0       Core 1  15:35:26        authorized (agent build 384)
QK      0       Core 2  15:35:26        authorized (agent build 384)
DI      0       Core 1  15:35:26        pass 0 started
LM      0       Core 2  15:35:26        pass 1 started
QK      0       Core 1  15:35:27        common synchronization completed
FD      0       Core 2  15:35:27        common synchronization completed
GR      0       Core 2  15:36:08        pass 1 returned result 10000.00 in 42 sec
RH      0       Core 2  15:36:08        pass 2 started
ON      0       Core 1  15:36:09        pass 0 returned result 10000.00 in 43 sec
ID      0       Core 1  15:36:09        pass 3 started
GK      0       Core 2  15:36:21        pass 2 returned result 10000.00 in 13 sec
QQ      0       Core 2  15:36:21        pass 4 started
PH      0       Core 1  15:36:21        pass 3 returned result 10000.00 in 12 sec
IR      0       Core 1  15:36:21        pass 5 started
ED      0       Core 2  15:36:34        pass 4 returned result 10000.00 in 13 sec
ON      0       Core 2  15:36:34        pass 6 started
MQ      0       Core 1  15:36:34        pass 5 returned result 10000.00 in 13 sec
GK      0       Core 1  15:36:34        pass 7 started
KN      0       Core 2  15:36:46        pass 6 returned result 10000.00 in 12 sec
ND      0       Core 2  15:36:46        pass 8 started
CJ      0       Core 1  15:36:47        pass 7 returned result 10000.00 in 13 sec
EP      0       Core 1  15:36:47        pass 9 started
PG      0       Core 2  15:36:59        pass 8 returned result 10000.00 in 13 sec
QO      0       Core 1  15:36:59        pass 9 returned result 10000.00 in 12 sec
MD      0       Tester  15:36:59        optimization finished, total passes 10
HS      0       Tester  15:36:59        optimization passed in 1 minutes 34 seconds
CE      0       Core 1  15:36:59        connect closed
PI      0       Core 2  15:36:59        connect closed
ON      1       Tester  15:37:20        genetics turned off because 10 passes, to use genetics increase amount of optimized parameters
RQ      0       Tester  15:37:20        Experts\Ye00-01-0 Event.ex5 on EURGBP,M1 from 2010.08.01 00:00 to 2010.08.09 00:00
 FL      0       Tester  15:37:20        complete optimization started
QM      0       Core 1  15:37:20        connecting to 127.0.0.1:3000
MG      0       Core 2  15:37:20        connecting to 127.0.0.1:3001
MN      0       Core 1  15:37:20        connected
LR      0       Core 2  15:37:20        connected
FH      0       Core 1  15:37:20        authorized (agent build 384)
QR      0       Core 2  15:37:20        authorized (agent build 384)
DF      0       Core 1  15:37:20        pass 0 started
LJ      0       Core 2  15:37:20        pass 1 started
JR      0       Core 1  15:37:20        common synchronization completed
EK      0       Core 2  15:37:20        common synchronization completed
IK      0       Core 1  15:38:35        pass 0 returned result 10000.00 in 75 sec
KQ      0       Core 1  15:38:35        pass 2 started
QG      0       Core 2  15:38:36        pass 1 returned result 10000.00 in 76 sec
FM      0       Core 2  15:38:36        pass 3 started
JD      0       Core 1  15:39:16        pass 2 returned result 10000.00 in 41 sec
MN      0       Core 1  15:39:16        pass 4 started
QP      0       Core 2  15:39:17        pass 3 returned result 10000.00 in 41 sec
FJ      0       Core 2  15:39:17        pass 5 started
KM      0       Core 1  15:39:56        pass 4 returned result 10000.00 in 40 sec
CG      0       Core 1  15:39:56        pass 6 started
DJ      0       Core 2  15:39:57        pass 5 returned result 10000.00 in 40 sec
LP      0       Core 2  15:39:57        pass 7 started
IF      0       Core 1  15:40:37        pass 6 returned result 10000.00 in 41 sec
FL      0       Core 1  15:40:37        pass 8 started
DS      0       Core 2  15:40:38        pass 7 returned result 10000.00 in 41 sec
GI      0       Core 2  15:40:38        pass 9 started
KP      0       Core 1  15:41:18        pass 8 returned result 10000.00 in 41 sec
NH      0       Core 2  15:41:19        pass 9 returned result 10000.00 in 41 sec
MS      0       Tester  15:41:19        optimization finished, total passes 10
OJ      0       Tester  15:41:19        optimization passed in 3 minutes 59 seconds

komposter:

O Expert Advisor não tem OnTick(), enquanto os eventos NewTick estão em fila de espera?

Para verificar a resposta a esta pergunta (o segundo método), modifiquei o código do Conselheiro Especialista da seguinte forma

void OnChartEvent(const int id,         // идентификатор события  
                  const long& lparam,   // параметр события типа long
                  const double& dparam, // параметр события типа double
                  const string& sparam  // параметр события типа string
                  )
  {
   EventChartCustom(ChartID(),0,(long)SymbolInfoInteger(_Symbol,SYMBOL_TIME),0,_Symbol);

   if(id==CHARTEVENT_CUSTOM) Print(__FILE__," ",__FUNCTION__,": ",sparam ," ",(datetime)lparam);
  }
ou seja, introduzi uma linha com fundo amarelo para detectar o facto de novas carraças serem recebidas pelo símbolo. Os resultados mostram que as carraças para o símbolo, ao qual o Conselheiro Especialista está ligado, são recebidas regularmente:
DS      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
PO      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: GBPUSD 2011.01.21 18:29:38
QI      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURUSD 2011.01.21 18:29:38
PD      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: USDCHF 2011.01.21 18:29:38
IG      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURUSD 2011.01.21 18:29:38
PR      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: GBPUSD 2011.01.21 18:29:38
LO      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
PI      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: USDCHF 2011.01.21 18:29:38
DE      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
PQ      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
LR      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
HO      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
DH      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
PD      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
LQ      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
HR      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
DO      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
PK      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
LD      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
HQ      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
DR      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
PN      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
LK      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
HD      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
DQ      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
PM      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
LN      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: GBPUSD 2011.01.21 18:29:38
EJ      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURUSD 2011.01.21 18:29:38
LE      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: USDCHF 2011.01.21 18:29:38
PP      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
LM      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
HN      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
DK      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
PG      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
LP      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
HM      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
DN      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
PJ      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
LG      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38

Bem, uma vez que o manual diz que " oevento NewTick é gerado quando um novo tick é recebido por um símbolo, ao qual o Expert Advisor está anexado", o facto de serem recebidos novos carrapatos deve fazer com que o eventoNewTick seja gerado.

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

 
sergeev:

Parece que trabalhou de domingo a sexta-feira sem descanso... :))

A julgar pela linha, sabe qual é a solução certa? - Dê-me uma dica!
 
Yedelkin:
ou seja, inseri uma linha realçada em fundo amarelo para detectar o facto de novas carraças entrarem por símbolo. A partir dos resultados pode ver que as carraças por

ao símbolo ao qual o Conselheiro Especialista está anexado são recebidos regularmente:


já verificou que evento faz com que o OnChartEvent seja chamado antes de chamar o evento personalizado ?

-------------

se

void OnChartEvent(const int id,         // идентификатор события  
                  const long& lparam,   // параметр события типа long
                  const double& dparam, // параметр события типа double
                  const string& sparam  // параметр события типа string
                  )
  {
   EventChartCustom(ChartID(),0,(long)SymbolInfoInteger(_Symbol,SYMBOL_TIME),0,_Symbol);

   if(id==CHARTEVENT_CUSTOM) Print(__FILE__," ",__FUNCTION__,": ",sparam ," ",(datetime)lparam);
  }


se colocar uma simples EA e deixá-la correr no testador, ela não é activada.

tem outras funções que chamam OnChartEvent ?

 
sergeev:

tem outras funções que chamam OnChartEvent.

Sim, é claro. Uma vez que o Expert Advisor recolhe sinais indicadores de símbolos de terceiros usando a função EventChartCustom - OnChartEvent binding, cada um desses indicadores tem a sua própria instância da função EventChartCustom(). O primeiro parâmetro de cada instância da função EventChartCustom() contém um identificador gráfico, ao qual a nossa EA está ligada; o segundo parâmetro é zero.

sergeev:

Se inserido em qualquer Expert Advisor, não será activado.

Isto é apenas uma parte do código, - do Conselheiro Especialista que recolhe sinais indicadores de outros símbolos. Se não houver indicadores, esta parte do código (a função OnChartEvent) não processará os eventos personalizados, devido à sua ausência.

sergeev:

verificou que evento leva a chamar o OnChartEvent antes de chamar o evento personalizado?

Não, um pouco errado. Queria ver se as carraças são recebidas pelo símbolo, ao qual o Expert Advisor está anexado, quando a função OnChartEvent() processa os eventos personalizados provenientes dos indicadores de outros símbolos. Pode-se ver que são recebidos carrapatos EURGBP. Com base na referência, concluo que oevento NewTick é gerado quando novos carrapatos são recebidos pelo símbolo.

 

Não é possível descobrir quais das suas funções que utilizou levaram a resultados diferentes em termos de tempo. Sem código completo, é só adivinhar por borras de café.

NewTick não está directamente relacionado com a OnChartEvent de forma alguma. É por isso que o mecanismo de rastreio de filas que sugere é bastante artificial. Não tenho a certeza de que esteja correcto.

Neste caso, eu não afirmaria que é o NewTick que cria os atrasos do teste. E penso que são os mecanismos das suas ligações que são os culpados, não o evento em si.

 
sergeev:

Não é possível descobrir quais das suas funções que utilizou levaram a resultados diferentes em termos de tempo. Sem código completo, é só adivinhar por borras de café.

NewTick não está directamente relacionado com a OnChartEvent de forma alguma. É por isso que o mecanismo de rastreio de filas que sugere é bastante artificial. Não tenho a certeza de que esteja correcto.

Neste caso, eu não afirmaria que é o NewTick que cria os atrasos do teste. E penso que a culpa é dos seus mecanismos de amarração, não do evento em si.

O assunto não era o que eu queria dizer desde o início. Na minha primeira mensagem, disse que não tinha encontrado uma forma de desactivar os eventos para um símbolo com um Expert Advisor anexado ao seu gráfico. Reagiu a essa frase, mas não forneceu uma forma de desactivar o fluxo de carraças para o símbolo exigido, se necessário. Concluo que não só eu, mas também vós não conheceis tal caminho. Assim, a minha sugestão mantém-se: introduza uma função de alternância que lhe permita desactivar programticamente a geração de eventos NewTickpara o símbolo que tem um Expert Advisor anexado ao seu gráfico.

Quanto aos comentários sobre "adivinhar o gauntlet" e "artificialidade dos mecanismos de rastreio de filas", não me ofereci para analisar o código e responder à pergunta "porque é assim? Como podem ver pela minha sugestão, já encontrei a resposta por mim próprio. Mas consideremos o problema de um ponto de vista mais abstracto, sem centrarmos a nossa atenção no código de um Expert Advisor em particular.

sergeev:

NewTick não está de forma alguma ligado directamente à OnChartEvent.

Muito bem, vamos supor que sim. Portanto, NewTick estáindirectamente relacionado com OnChartEvent, mas está ligado. Já o disse na explicação, mas vou repeti-lo mais uma vez. Sabe melhor do que eu que existe uma "fila comum de eventos" onde todos os eventos que ocorrem são amontoados, tanto pré-definidos como definidos pelo utilizador. Estes eventos são tratados um a um, na ordem em que são recebidos. Uma vez que a fila tem um tamanho limitado, quando está cheia, os eventos antigos são removidos sem serem processados. Será isso correcto?

Assim, acontece que se o Consultor Especialista não providenciar o tratamento de eventos NewTick, mas estes eventos ainda são gerados, então a minha fila geral de eventos será simplesmente entupida com eventos NewTick desnecessários, e haverá o risco de não tratar eventos de utilizadores obsolescentes que devem ser tratados pelo Consultor Especialista. Foi por isso que fiz a sugestão acima.

Claro que não conheço todas as subtilezas de como funcionam a fila do evento e o evento NewTick. Por conseguinte, posso estar errado em algumas conclusões e considerarei com interesse quaisquer explicações.

sergeev:

Neste caso, eu não afirmaria que é o NewTick que cria atrasos nos testes. E penso que são os mecanismos das suas ligações que são os culpados, não o evento em si.

Para referência. O Expert Advisor articula as instâncias de um e o mesmo indicador com os mesmos parâmetros e com o mesmo "mecanismo de ligação" nos símbolos adjacentes, num único e mesmo intervalo de tempo. A encadernação é a mesma: EventChartCustom - OnChartEvent.

Compreendi correctamente que concorda com a afirmação de que "se não houver um OnTick() num Expert Advisor, os eventos NewTick não estão de todo enfileirados"?

 

Porquê adivinhar e inventar hipóteses?

o seu pedido para"introduzir uma função de comutação que lhe permita desactivar programticamente a geração de eventos NewTickpara o símbolo ao qual o Conselheiro Especialista está anexado ao gráfico. " é claro.

Escrever para Servicedesk.

tudo o resto está a combater moinhos de vento.

Общайтесь с разработчиками через Сервисдеск!
Общайтесь с разработчиками через Сервисдеск!
  • www.mql5.com
Ваше сообщение сразу станет доступно нашим отделам тестирования, технической поддержки и разработчикам торговой платформы.
 
sergeev:

Porquê adivinhar e inventar hipóteses?

tudo o resto é uma luta contra moinhos de vento.

Não se diz :) Alguns estão habituados a trabalhar cegamente, enquanto outros procuram aprender mais sobre o fenómeno a ser combatido. As hipóteses surgem na ausência desta ou daquela informação. Obrigado por ter participado na discussão.

Escrevi para o SD. Não sabia que aí poderiam ser abordadas sugestões.

Razão: