Mi EA hace una doble entrada - página 2

 
angevoyageur:

Esto parece una posible explicación, pero si es el caso no es normal. ¿Está utilizando el modo asíncrono? Si no es así, tu EA debe esperar la respuesta del servidor y luego sólo continuar y procesar el siguiente tick.

Si lo entiendo bien, ¿es un problema aleatorio y no puedes reproducirlo?

Puede intentar imprimir más información de depuración añadiendo esta línea después de la declaración de m_Trade :


Hola

Desde mi solución descrita en el posthttps://www.mql5.com/en/forum/14327 he tenido 1 operación doble más.

Creo que el problema es la ejecución (demasiado lenta) de la función PositionSelect(Symbol()). Tal vez, los nuevos ticks llegan tan rápido, que el EA envía una nueva orden antes de recibir una respuesta de la función PositionSelect(Symbol()). En mi código, es teóricamente imposible enviar una orden nueva/doble si el tamaño de la posición actual es igual o mayor que el tamaño de la posición máxima permitida, ver código.

¡El servidor en vivo (ECN) del broker X genera tantos ticks durante un evento de noticias macroeconómicas, que por cada tick que se ve en el servidor de simulación de metaquotes, este servidor generará 20, 30 o 40 ticks!


PositionSelect(Symbol());

// Check of het model al LONG zit.             
if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY)
      {
                                                           
// Check of het model al de maximale size in positie zit.                     
      if(PositionGetDouble(POSITION_VOLUME) >= MAX_Trade_Size)
            {
            return;
            }
      } 


Mi EA invierte automáticamente la posición doble para obtener el tamaño correcto de la posición como respaldo adicional.

Problem: Multiple Trades at brokerX
Problem: Multiple Trades at brokerX
  • www.mql5.com
Problem: Multiple Trades at brokerX.
 
snelle_moda:
....

¡El servidor en vivo (ECN) del broker X genera tantos ticks durante un evento de noticias macroeconómicas, que por cada tick que se ve en el servidor de simulación de metaquotes, este servidor generará 20, 30 o 40 ticks!

Sí, esto se debe a que el DOM está activo.

....

Mi EA invierte automáticamente la posición doble para obtener el tamaño correcto de la posición como respaldo adicional.

Gracias por tu aportación. ¿Tienes este problema en el mismo broker que otros, o es independiente del broker?
 
angevoyageur:
Sí, esto se debe a que el DOM está activo.
Gracias por tu aportación. ¿Tienes este problema en el mismo broker que otros, o es independiente del broker?


¿Qué es el "DOM"?


Sólo en este servidor del broker, nunca lo he experimentado en el servidor de simulación (Metaquotes) desde que se inició este hilo https://www.mql5.com/en/forum/14327.

Antes de ese periodo, el servidor del broker X generaba aproximadamente la misma cantidad de ticks que el servidor de Metaquotes.

Problem: Multiple Trades at brokerX
Problem: Multiple Trades at brokerX
  • www.mql5.com
Problem: Multiple Trades at brokerX.
 
snelle_moda:


¿Qué es el "DOM"?


Sólo en este servidor del broker, nunca lo he experimentado en el servidor de simulación desde que se inició este hilo https://www.mql5.com/en/forum/14327.

Antes de ese periodo, el servidor del broker X generaba aproximadamente la misma cantidad de ticks que el servidor de Metaquotes.

DOM = Profundidad de Mercado, cuando se activa hay muchos más eventos de Tick.
 
angevoyageur:
DOM = Profundidad de Mercado, cuando se activa hay muchos más eventos Tick.


¿Es posible desactivarlo?

 
snelle_moda:


¿Es posible desactivarlo?

No lo creo, por lo que sé está habilitado en el lado del corredor. Tal vez usted puede pedir al corredor.
 

He minimizado el número de ticks entrantes permitiendo sólo los ticks cuando el precio mismo ha sido cambiado.


// De sum van de BID/LAST 
   static double dPriceSum;   
   double dOldPriceSum = dPriceSum;
   
// To be used for getting recent/latest price quotes
   MqlTick Latest_Price;      
   SymbolInfoTick(Symbol() ,Latest_Price);

   dPriceSum = Latest_Price.bid + Latest_Price.last; 

// Check if the price is (not)changed.
   if(dPriceSum == dOldPriceSum)
         {
         return;
         }
 
snelle_moda:

He minimizado el número de ticks entrantes permitiendo sólo los ticks cuando el precio mismo ha sido cambiado.


¿Y qué pasa si el precio de venta cambia o la oferta aumenta 1 punto y la última disminuye 1 punto? Un tick "normal" es un cambio en el Bid y/o Ask.
 
angevoyageur:
¿Y qué pasa si el precio de venta está cambiando o la oferta aumenta 1 punto y la última disminuye 1 punto? Un tick "normal" es un cambio en el Bid y/o Ask.

Es un buen punto. Tal vez debería utilizar sólo el cambio en el precio BID.

¿Una barra en el gráfico también se basa en el precio BID?


Para la señal de disparo de mi EA sólo me interesa el cambio del precio en el que se basa la BARRA de 1 minuto.

 
Omg. ¿Así que dormir no ayuda?

¿Qué podemos hacer para evitar esto?
Razón de la queja: