Asesores Expertos: Controlador de eventos multimoneda OnTick (símbolo del string) - página 3

 

Releído con interés, hmmm.

Todos estos bailes con pandereta no serían necesarios!!! si!!! los MQ activaran!!! la emisión del vaso en el servidor del DC por defecto, y no permitieran a los DC desactivarlos. Que sea una apuesta vacía con solo bid y ask, pero que se emita.

Entonces un tick multidivisa puede seguirse fácilmente en OnBookEvent suscribiéndose al instrumento requerido.

De hecho, OnBookEvent es un manejador estándar de tick multidivisa.

Y hasta ahora sólo es posible en dillings que traducen el cristal.

 
micle:

El código del artículo no está actualizado.

Sí, el código fue escrito cuando el manejador OnChartEvent aún no funcionaba en el tester.

Urain:

Releído con interés, hmmm.

Todos estos bailes de pandereta no serían necesarios!!! si!!! los MQs habilitaran!!! la emisión de beakers en el servidor del DC por defecto, y no dejaran a los DCs desactivarlos. Que sea una apuesta vacía con solo bid y ask, pero que se emita.

Entonces un tick multidivisa puede ser seguido fácilmente en OnBookEvent suscribiéndose al instrumento requerido.

De hecho, OnBookEvent es un manejador estándar de tick multidivisa.

Y hasta ahora solo es posible en dillings que traducen el cristal.

He jugado con OnBookEvent una vez. Para expertos, en general, funcionaría. Aunque yo quitaría la "difusión" y haría una suscripción para gráficos. Otro punto negativo: no funciona en indicadores. No lo he probado en el tester.

Desde las primeras publicaciones sobre este tema se han cargado muchas panderetas. Ha aparecido algo más aceptable. Quizás lo publique algún día.

 
Lizar:

Sí, el código fue escrito cuando el manejador OnChartEvent aún no funcionaba en el tester.

Estaba jugando con OnBookEvent. Para los expertos, en general, estaría bien. Aunque yo quitaría la "emisión" y haría una suscripción para los gráficos. Otro punto negativo: no funciona en indicadores. No lo he probado en el tester.

Desde las primeras publicaciones sobre este tema se han cargado muchas panderetas. Ha aparecido algo más aceptable. Quizás lo publique algún día.

Hay una forma más sutil de hacerlo, hay una suscripción no para gráficos, sino para Asesores Expertos concretos.

Así que usted no recibirá las señales del gráfico sin suscripción. Por lo tanto, la emisión se procesa bastante cualitativamente.

Ejecutar búhos en el archivo adjunto en dos gráficos que tienen una pila. Cada búho recibirá sólo la señal a la que está suscrito.

Archivos adjuntos:
 

Hola Lizar,

Quiero usar tu código, pero mi broker usa lenguaje mql4 (TradeMasterFX Meta, Version: 4.00 Build 890),

¿Hay alguna manera de actualizar mi terminal a mql5 terminal de apoyo?

Gracias por su consejo,

Emre

 
Konstantin Gruzdev:

Bienvenido a la discusión ;)

Foro sobre trading, sistemas automatizados de trading y testeo de estrategias de trading

Características del lenguaje mql5, sutilezas y técnicas de trabajo

Andrey Khatimlianskii, 2018.10.09 23:18

Al ejecutar un EA vacío usando spy en 50 instrumentos, los mensajes comienzan a verterse en el registro:

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

Si agrega un filtro al indicador para la frecuencia de envío de eventos kastum en 500 ms, los errores se vuelven menos frecuentes, pero no desaparecen.

¿Soy yo?


Código 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)
{
   //Comentario( símbolo, ": ",
   // DoubleToString( SymbolInfoDouble( symbol, SYMBOL_BID ), 5 ), " / ",
   // DoubleToString( SymbolInfoDouble( symbol, SYMBOL_ASK ), 5 )) );
   return;
}


Profiler muestra el 95% del tiempo iCustom, OnChartEvent toma casi nada. El procesador (i5-3570) se carga al 75%.


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

Invito al debate ;)


Hay una sugerencia para tratar de utilizar IndicatorRelease() y IndicatorDelete () un número apropiado de veces en OnDeinit() de su EA.
 
nra_:
Tengo una sugerencia para tratar de utilizar IndicatorRelease() y IndicatorDelete () el número apropiado de veces en OnDeinit() de su EA.

No debería llegar a OnDeinit, necesito que todo funcione.

Después de borrar el EA todo está bien, la memoria se libera después de algún tiempo.

 
Andrey Khatimlianskii:

No tiene que reducirse a OnDeinit, necesito que todo funcione.

Después de borrar el Asesor Experto todo está bien, la memoria se libera después de algún tiempo.

Sugiero perfilar el indicador para averiguar dónde exactamente 4281 ms se desperdician. Tal vez en el envío de mensajes en sí.

 
Stanislav Korotky:

Es razonable hacer un perfil del indicador para averiguar dónde se pierden exactamente 4281 ms. Podría ser en el propio envío del mensaje.

Lo hemoshecho.

EventChartCustom en algún momento comienza a ejecutarse durante más de 3 segundos.

 
Me doy cuenta de que OnDeinit en el EA no debe llegar a OnDeinit, pero esto es ideal. Estás seguro de que durante 15 horas de su prueba OnInit fue llamado 1 vez en el Asesor de Expertos?