Mi EA hace una doble entrada - página 6

 
doshur:
¿Alguna actualización del servicio de atención al cliente?
Todavía no.
 
angevoyageur:
Todavía no.

Hola,

¿Alguna noticia del servicio técnico?

 
doshur:

Hola,

¿Alguna noticia del servicio de atención al cliente?

No dudes que publicaré aquí la respuesta si la consigo.

Personalmente aúnno he llegado a reproducir el problema.

 

Mi EA genera la señal muy lentamente y hoy hizo una operación.

No hay problema con el tamaño del lote después de usar el nuevo código sin embargo no puedo confirmó que el nuevo código está trabajando.

 
doshur:

Mi EA genera la señal muy lentamente y hoy hizo una operación.

No hay problema con el tamaño del lote después de usar el nuevo código, sin embargo no puedo confirmar que el nuevo código esté funcionando.

Hola doshur,

Todavía no hay respuesta del ServiceDesk. Sin embargo, su problema me está "molestando" ¿Puede confirmar que tiene este problema de dobles operaciones en una cuenta real y no en una demo? (No puedo reproducir este problema en mi cuenta demo).

También revisando una vez más tus mensajes, ahora observo este registro:

Foro sobre el comercio, los sistemas de comercio automatizado y la prueba de las estrategias de comercio

Mi EA hace una doble entrada

(based on order #40018327) DEAL2 - Entry 3

2013.12.20 08:35:01 Operaciones '800****': intercambio comprar 0.01 EURUSD en el mercado colocado para la ejecución en 331 ms DEAL2- Entrada 2

2013.12.20 08:35:01 Trades '800****': deal #27731691 buy 0.01 EURUSD at 1.36353 done (based on order #40018326) DEAL 1 - Entry 3

2013.12.20 08:35:00 Operaciones '800****': intercambio comprar 0.01 EURUSD en el mercado DEAL2- Entrada 1

2013.12.20 08:35:00 Operaciones '800****': intercambio de compra 0.01 EURUSD en el mercado colocado para la ejecución en 313 ms DEAL1 - Entrada 2

2013.12.20 08:35:00 Operaciones '800****': intercambio de compra 0.01 EURUSD en el mercado DEAL1- Entrada 1

Si entiendo bien, confirma que el problema es que PositionSelect() sigue siendo falso, mientras se abre una nueva posición. Efectivamente, puedes ver que 1 operación da lugar a 3 entradas, y la segunda operación se inicia antes de que llegue la tercera entrada de la operación 1 (confirmación de la nueva operación/posición).

Acerca de la solución utilizando la función Sleep(), no estoy satisfecho con esto, ya que no hay manera de saber qué retraso a utilizar. Por supuesto, más este retraso es grande, menos es la oportunidad de obtener un "doble comercio", pero todavía es posible. Así que todavía estoy buscando una solución mejor.


 
angevoyageur:

Acerca de la solución usando la función Sleep(), no estoy satisfecho con esto, ya que no hay manera de saber qué retraso a utilizar. Por supuesto, más este retraso es grande, menos es la posibilidad de obtener un "doble comercio", pero todavía es posible. Así que todavía estoy buscando una solución mejor.

Lo siento si me equivoco ya que acabo de llegar a este tema, pero parece que este código podría ser una mejor solución que simplemente Sleep(), y ayudaría a identificar el problema y el valor real de retardo necesario:

bool fatalError=false; // atention: declare this as global

....

if (fatalError==false) {
  if (m_Trade.PositionOpen(Symbol(), ORDER_TYPE_BUY, LotSize, Price, 0, 0)) {
    Print("Position opened in ", Symbol());
    int maxTimeout=0;
    while (!PositionSelect(Symbol())) {
       Sleep(100);
       maxTimeout++;
       if (maxTimeout>100) {
          Print("### PositionSelect fatal error!");
          fatalError=true;
          break;
       }
    }
    Print("--> PositionSelect delay=",maxTimeout*100);
    break;
  }
}
 
angevoyageur:

Hola doshur,

Todavía no hay respuesta del ServiceDesk. Sin embargo, su problema es "preocupante". ¿Puede confirmar que tiene este problema de dobles operaciones en una cuenta real y no en una demo? (No puedo reproducir este problema en mi cuenta demo).

También revisando una vez más tus posts, ahora observo este log :

Si entiendo bien, confirma que el problema es que PositionSelect() sigue siendo falso, mientras se abre una nueva posición. En efecto, se puede ver que 1 operación da lugar a 3 entradas, y la segunda operación se inicia antes de que llegue la tercera entrada para la operación 1 (confirmación de la nueva operación/posición).

Acerca de la solución usando la función Sleep(), no estoy satisfecho con esto ya que no hay manera de saber qué retraso utilizar. Por supuesto, cuanto mayor sea el retraso, menor será la posibilidad de obtener una "doble operación", pero aún así es posible. Así que todavía estoy buscando una solución mejor.


Sí, estoy usando una cuenta real.
Se realiza una operación más. No hay doble entrada. ¿Quizás mi nuevo código funciona?
Documentation on MQL5: Standard Constants, Enumerations and Structures / Environment State / Account Properties
Documentation on MQL5: Standard Constants, Enumerations and Structures / Environment State / Account Properties
  • www.mql5.com
Standard Constants, Enumerations and Structures / Environment State / Account Properties - Documentation on MQL5
 
figurelli:

Lo siento si me equivoco ya que acabo de llegar a este tema, pero parece que este código podría ser una mejor solución que simplemente Sleep(), y ayudaría a identificar el problema y el valor real de retardo necesario:

Interesante idea. La utilizaré para identificar el problema, pero no me gusta la función Sleep() Aunque cada uno es libre de elegir su solución.

Gracias.

Documentation on MQL5: Common Functions / Sleep
Documentation on MQL5: Common Functions / Sleep
  • www.mql5.com
Common Functions / Sleep - Documentation on MQL5
 
angevoyageur:

Interesante idea. La utilizaré para identificar el problema, pero no me gusta la función Sleep() Aunque cada uno es libre de elegir su solución.

Gracias.

De nada, esta solución es sólo una solución provisional, a mí tampoco me gusta Sleep, ya que se pierden ticks. Probablemente un semáforo/banderas o incluso máquinas de estado serían más seguros/eficientes/elegantes.
 
figurelli:
De nada, esta solución es sólo una solución provisional, no me gusta el Sleep también, ya que perderás ticks. Probablemente un semáforo/banderas o incluso máquinas de estado serían más seguros/eficientes/elegantes.
Mis pruebas con tu solución muestran que PositionSelect() es a veces verdadero justo después de PositionOpen (maxcount=0) , o falso (maxcount=1). Así que obviamente hay un retraso. Sería interesante si alguien puede probarlo en una cuenta real.
Documentation on MQL5: Standard Constants, Enumerations and Structures / Environment State / Account Properties
Documentation on MQL5: Standard Constants, Enumerations and Structures / Environment State / Account Properties
  • www.mql5.com
Standard Constants, Enumerations and Structures / Environment State / Account Properties - Documentation on MQL5
Razón de la queja: