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 :
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.
¡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.
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.
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 staticdouble dPriceSum;
double dOldPriceSum = dPriceSum;
// To be used for getting recent/latest price quotesMqlTick Latest_Price;
SymbolInfoTick(Symbol() ,Latest_Price);
dPriceSum = Latest_Price.bid + Latest_Price.last;
// Check if the price is (not)changed.if(dPriceSum == dOldPriceSum)
{
return;
}
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.
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!
Mi EA invierte automáticamente la posición doble para obtener el tamaño correcto de la posición como respaldo adicional.
....
¡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!
....
Mi EA invierte automáticamente la posición doble para obtener el tamaño correcto de la posición como respaldo adicional.
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.
¿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 Tick.
¿Es posible desactivarlo?
¿Es posible desactivarlo?
He minimizado el número de ticks entrantes permitiendo sólo los ticks cuando el precio mismo ha sido cambiado.
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 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.