Especialistas: Manipulador de eventos Multi Moedas OnTick(string símbolo) - página 3

 

Releia com interesse, hmmm.

Todas essas danças com pandeiro não seriam necessárias!!! se!!! os MQs ativassem!!! a transmissão do copo no servidor do CD por padrão e não permitissem que os CDs os desativassem. Que seja uma aposta vazia com apenas compra e venda, mas ela deve ser transmitida.

Então, um tique de várias moedas pode ser facilmente rastreado no OnBookEvent, assinando o instrumento necessário.

De fato, o OnBookEvent é um manipulador padrão de ticks de várias moedas.

E, até o momento, isso só é possível em dillings que traduzem o vidro.

 
micle:

O código do artigo está desatualizado.

Sim, o código foi escrito quando o manipulador OnChartEvent ainda não funcionava no testador.

Urain:

Releia com interesse, hmmm.

Todas essas danças de pandeiro não seriam necessárias!!! se!!! os MQs ativassem!!! a transmissão de beaker no servidor DC por padrão e não permitissem que os DCs as desativassem. Que seja uma aposta vazia com apenas compra e venda, mas ela deve ser transmitida.

Então, um tique de várias moedas pode ser facilmente rastreado no OnBookEvent, assinando o instrumento necessário.

De fato, o OnBookEvent é um manipulador padrão de ticks de várias moedas.

E, até o momento, isso só é possível em dillings que traduzem o vidro.

Eu brinquei com o OnBookEvent uma vez. Para especialistas, em geral, ele funcionaria. No entanto, eu removeria a "transmissão" e criaria uma assinatura para gráficos. Outro ponto negativo: ele não funciona em indicadores. Não experimentei no testador.

Desde as primeiras publicações sobre esse tópico, muitos tamborins foram mortos. Surgiu algo mais aceitável. Talvez eu o publique em algum momento.

 
Lizar:

Sim, o código foi escrito quando o manipulador OnChartEvent ainda não funcionava no testador.

Eu estava brincando com o OnBookEvent. Para especialistas, em geral, não haveria problema. No entanto, eu removeria a "transmissão" e criaria uma assinatura para gráficos. Outro ponto negativo: ele não funciona em indicadores. Não experimentei no testador.

Desde as primeiras publicações sobre esse tópico, muitos pandeiros foram mortos. Surgiu algo mais aceitável. Talvez eu o publique em algum momento.

Há uma maneira mais sutil de fazer isso: há uma assinatura não para gráficos, mas para Expert Advisors específicos.

Portanto, você não receberá os sinais do gráfico sem a assinatura. Portanto, a transmissão é processada de forma bastante qualitativa.

Execute as corujas do anexo em dois gráficos que tenham uma pilha. Cada coruja receberá apenas o sinal ao qual está inscrita.

Arquivos anexados:
 

Olá, Lizar,

Quero usar seu código, mas minha corretora usa a linguagem mql4 (TradeMasterFX Meta, Versão: 4.00 Build 890),

Existe alguma maneira de atualizar meu terminal para o terminal compatível com mql5?

Obrigado por sua orientação,

Emre

 
Konstantin Gruzdev:

Bem-vindo à discussão ;)

Fórum sobre negociação, sistemas de negociação automatizados e teste de estratégias de negociação

Recursos da linguagem mql5, sutilezas e técnicas de trabalho

Andrey Khatimlianskii, 2018.10.09 23:18

Ao executar um Expert Advisor vazio usando spy em 50 instrumentos, as mensagens começam a aparecer no registro:

2018.10.09 22:49:24.730 Spy (AUDNZD,W1) indicator is too slow, 4281 ms. rewrite the indicator, please

Se você adicionar um filtro ao indicador para a frequência de envio de eventos kastum em 500 ms, os erros se tornarão menos frequentes, mas não desaparecerão.

O problema é só meu?


Código do EA:

#define  ForEach(index,array)   for(int index=0, max_##index=ArraySize(array);  index<max_##index;  index++)

string Symbols[];

int OnInit()
{
   ArrayResize( Symbols, SymbolsTotal(true) );

   ForEach( i, Symbols )
   {
      Symbols[i] = SymbolName(i,true);

      if( Symbols[i] != _Symbol )
         iCustom( Symbols[i], PERIOD_W1, "Spy.ex5", ChartID(), i );
   }
   return(INIT_SUCCEEDED);
}

void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam)
{
   if( id == CHARTEVENT_CUSTOM )
      OnTickMS( Symbols[ (int)lparam ] );
}

void OnTick()
{
   CheckSignal( _Symbol );
}

void OnTickMS(const string &Symb)
{
   CheckSignal( Symb );
}

void CheckSignal(const string symbol)
{
   //Comentário( símbolo, ": ",
   // DoubleToString( SymbolInfoDouble( symbol, SYMBOL_BID ), 5 ), " / ",
   // DoubleToString( SymbolInfoDouble( symbol, SYMBOL_ASK ), 5 )) );
   return;
}


O Profiler mostra que 95% do tempo iCustom, OnChartEvent não leva quase nada. O processador (i5-3570) está carregado em 75%.


Особенности языка mql5, тонкости и приёмы работы
Особенности языка mql5, тонкости и приёмы работы
  • 2018.09.21
  • www.mql5.com
В данной теме будут обсуждаться недокументированные приёмы работы с языком mql5, примеры решения тех, или иных задач...
 
Andrey Khatimlianskii:

Convido à discussão;)


Há uma sugestão para tentar usar IndicatorRelease() e IndicatorDelete () um número apropriado de vezes em OnDeinit() de seu EA.
 
nra_:
Tenho uma sugestão para tentar usar IndicatorRelease() e IndicatorDelete () o número apropriado de vezes em OnDeinit() de seu EA.

Isso não deve ocorrer no OnDeinit, pois preciso que tudo funcione.

Depois de excluir o EA, tudo está bem, a memória é liberada depois de algum tempo.

 
Andrey Khatimlianskii:

Não precisa se resumir ao OnDeinit, preciso que tudo funcione.

Depois de excluir o Expert Advisor, tudo fica bem, a memória é liberada depois de algum tempo.

Sugiro traçar o perfil do indicador para descobrir onde exatamente 4281 ms são desperdiçados. Talvez no próprio envio da mensagem.

 
Stanislav Korotky:

É razoável traçar o perfil do indicador para descobrir onde exatamente 4281 ms estão sendo desperdiçados. Pode ser no próprio envio da mensagem.

Conseguimos.

Em algum momento, o EventChartCustom começa a ser executado por mais de 3 segundos.

 
Sei que o OnDeinit no EA não deve chegar ao OnDeinit, mas isso é o ideal. Tem certeza de que, durante as 15 horas do seu teste, o OnInit foi chamado uma vez no Expert Advisor?