Sugestões para melhorar o MetaEditor - página 6

 
Lizar:
Tente. Trabalha no testador. Mas com os ajustamentos estipulados no artigo.

E o que no testador enviar através do evento?

A) Os gráficos no provador não são abertos

B) os indicadores de eventos não recebem

O Conselheiro Especialista enviará eventos para si próprio, então qual é o objectivo?

 

Обработка событий в тестере

A presença do manipulador OnTick() num Expert Advisor não é necessária para ser testada em dados históricos no Strategy Tester do terminal MetaTrader 5. É suficiente que o Expert Advisor tenha pelo menos uma função de manipulador das listadas acima:

  • OnTick() - manipulador de um evento de chegada de um novo tick;
  • OnTrade () - manipulador de eventos comerciais;
  • OnTimer() - manipulador de eventos de chegada do sinal do temporizador;
  • OnChartEvent() - manipulador de eventos personalizados.

Ao testar num Expert Advisor, eventos personalizados podem ser tratados pela OnChartEvent(), mas nos indicadores esta função não é chamada no testador. Mesmo que o indicador tenha o manipulador OnChartEvent(), e este indicador seja usado no Expert Advisor em teste, o próprio indicador não receberá quaisquer eventos personalizados.

O indicador durante os testes pode gerar eventos personalizados usando a função EventChartCustom(), enquanto que o Expert Advisor pode processar estes eventos no OnChartEvent().

1. De momento, tanto quanto me lembro, o consultor especializado no testador não processa os eventos enviados utilizando a função EventChartCustom()

2. O artigo contém uma indicação de que a função não funcionará nos indicadores no testador, mas o ficheiro de Ajuda não funciona. Como é que o entende?

3. bem, não é correcto quando algo funciona em demonstração/real e não funciona no testador. O que quer que me queiram fazer, continua a ser errado.

Se fizer OnChartEvent() em indicadores, deixe-o trabalhar em todo o lado, senão não faz sentido mantê-lo lá...

PS

Pergunta para programadores - não funciona no testador, ou apenas o que é enviado com OnChartEvent()?

 
Urain:

E o que no testador enviar através do evento?

A) Os gráficos no provador não são abertos

B) os indicadores não recebem eventos

o consultor especializado enviará eventos para si próprio, qual é o objectivo disso?

Faz sentido, eu, por exemplo, enviei-me com sucesso, e mais do que um (até o testador ter interrompido a recepção do evento).

E quando o testador começar a compreender e a processar o gráfico, será lógico receber eventos...

 

A questão não é clara. O que quer dizer com "não funciona no testador, ou apenas processa o que é enviado com OnChartEvent()"?

Não existe nenhum mecanismo no testador para entregar o ChartEvent aos indicadores. O ciclo de entrega de eventos ao Expert Advisor em teste é precisamente a parte principal do testador.

 
Interesting:

Há um ponto, eu, por exemplo, enviei-me com sucesso, e mais do que um (até a recepção do evento ter sido interrompida no testador).

Então o provador costumava ter recepção de eventos, mas depois estava quebrado?
 
Interesting:

Faz sentido, eu, por exemplo, enviei-me com sucesso, e mais do que um (até o testador interromper a recepção do evento).

E quando o testador começar a compreender e a processar gráficos, será lógico receber eventos...

Dentro de um programa há muitas possibilidades de transferir informação, mas o significado dos eventos é a transferência de informação entre diferentes programas.
 
Lizar:

Já passaram algumas semanas desde que foi oficialmente anunciado no artigo:

Oficialmente, mais ou menos anunciado em "construir actualizações", não em artigos. Havia alguma coisa nas "actualizações"?
 
Urain:
Dentro de um programa há muitas oportunidades para transferir informação, o objectivo dos eventos é transferir informação entre diferentes programas.

A questão não é como entregar, mas sim que o que estava a trabalhar no testador (e deveria ter estado) deixou de lá trabalhar há cerca de 6 meses.

stringo:

Não existe nenhum mecanismo no testador para entregar o ChartEvent aos indicadores. O ciclo de entrega de eventos ao Expert Advisor em teste é a parte principal do testador.

Então costumava haver uma recepção do evento no testador e depois foi quebrado?

Refiro-me ao problema de EventChartCustom() -> OnChartEvent() no testador para Consultores Especialistas. Talvez eu não entenda alguma coisa, mas antes do campeonato estava a funcionar bem, mas não agora.

Ao mesmo tempo, penso que todos já sabem e compreendem isto, mas a "locomotiva" ainda não está em movimento (apesar do facto de ser exactamente a "parte principal").

Um exemplo simples:

1 . Inicializamos o Expert Advisor iniciando um temporizador a cada 300 segundos (5 minutos).

//Function OnInit
int OnInit()
//Function for initialization of the trade system
{
//----------------------------------------------------------------------------//
int Result = 0; //Returned importance
//----------------------------------------------------------------------------//

EventSetTimer(300);

//----------------------------------------------------------------------------//
return(Result);
//----------------------------------------------------------------------------//
}

2. No temporizador prescrevemos o envio do evento com o código 1001

//Event OnTimer
void OnTimer()
{
//----------------------------------------------------------------------------//
//Work variables
int customEventID; // номер пользовательского события для отправки
//----------------------------------------------------------------------------//
customEventID=CHARTEVENT_CUSTOM+1;

EventChartCustom(0,(ushort)(customEventID-CHARTEVENT_CUSTOM),0,0,"OnTimer - EventChartCustom");
//----------------------------------------------------------------------------//
}
3. Apanhar este evento no Expert Advisor
//Event OnChartEvent
void OnChartEvent(const int id,
                  const long& lparam,
                  const double& dparam,
                  const string& sparam
                  )
{
//----------------------------------------------------------------------------//
//Work variables
//----------------------------------------------------------------------------//

//----------------------------------------------------------------------------//
//                          Processing user events                            //
//----------------------------------------------------------------------------//
  if(id>CHARTEVENT_CUSTOM)
  //User event is received
  {
  Print("New event, ID ",id," - ",sparam);
  }
//----------------------------------------------------------------------------//  
}


O resultado é que a Demonstração recebe o evento, mas o Testador de Estratégia não.

E isto é uma espécie de elemento básico do sistema comercial que é suposto funcionar mesmo no caso de "guerra nuclear".

1. Demonstração com um temporizador de 1 minuto


2. um testador com um temporizador de 1 hora


Devo também acrescentar que os testes foram realizados de 01/04/2011 a 07/04/2011 no período de 1H.

E onde é que eles estão?

PS

Talvez alguém pense que se uma mensagem não chegar do Expert Advisor, ela chegará do iinduke?


 
Yedelkin:
Oficialmente anunciado em "updates builds", não em artigos. Havia alguma coisa nas "actualizações"?

Sim, não havia nada, uma vez que o insecto apareceu, por isso pesa.

E sobre o facto de no artigo não dever ser especificado nos artigos, e nem sequer na descrição de novas construções, embora lá também.

De facto, tais coisas deveriam ser prescritas no manual de línguas. Mostre-me onde há sequer uma palavra sobre isso (pessoalmente não consegui encontrá-la)...

 
stringo:
Então costumava haver uma recepção do evento no testador e depois foi quebrado?

É isso que devo fazer, preparar-me devidamente para o exame de estado. e o que estou a fazer é procurar as minhas mensagens no fórum. :)

1. insectos, insectos, perguntas.

Insectos , insectos, perguntas.

Queria encontrar o primeiro post sobre o problema e não o escavei, embora me lembre que durante o campeonato já não funcionava fic...

Vamos assumir o posto datado de 05/09/2010 e foi o primeiro sobre o tema dado. Conclusão - já passaram 8 meses... :(

PS

Aqui está mais sobre isso:

O meu exemplo a partir de 06/09/2010

E até Alexey prometeu pensar numa solução para o problema