Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
La línea relativa a "cada tick" puede ser la razón por la que ya no ocurre.
La función sólo se ejecuta cuando aparece una nueva barra. Así que, lo más probable es que sólo el primer tick de una barra pueda ejecutar una operación. Después de la primera barra, el código obtiene un "retorno" hasta que aparezca una nueva barra. Tal vez esto lo solucionó para mí.
Creo que este pedazo de código es de los artículos:
Por supuesto. Me refiero a "por qué pudo ver...". El punto aquí es que no hay nada en su código que pueda explicar por qué obtuvo estos 2 oficios.
Creo que es muy importante encontrar la razón detrás de este problema, por supuesto también es importante tener una solución (Sleep ?) hasta que podamos entender completamente lo que está sucediendo. Así que trato de resumir la situación :
* Cuando se utiliza el método PositionOpen de la clase CTrade, al menos 3 usuarios obtuvieron en algún momento, 2 ofertas en la misma dirección en lugar de 1, lo que resulta en una posición con un volumen doble en relación con lo que se espera.
Utilizo ambos métodos, para abrir una nueva posición = "old fashion way", modificando el stoploss = "CTrade class".
* Este problema parece ocurrir en el mismo broker, con un símbolo en el que está activada la Profundidad de Mercado (los interesados pueden confirmarlo por favor).
Sí el servidor del broker X, Depth of Market está activado.
* Este problema ocurre con una orden sincrónica, la orden asincrónica no se utilizó (por favor, confirme).
Sí, la orden asíncrona no se utilizó.
* El problema se produce de forma aleatoria.
Sí, pero sólo durante las horas de mayor actividad del mercado( eventosmacroeconómicos ).
En mi opinión este problema se puede resolver fácilmente.
El EA debe esperar siempre una respuesta/respuesta si se utiliza la función "PositionSelect(Symbol())" y el terminal ha actualizado los datos de la función, antes de poder reanudar con la ejecución del código.
El EA debe esperar siempre una respuesta si se utiliza la función "OrderSend(mrequest,mresult)" y el terminal ha actualizado los datos de la función, antes de poder reanudar la ejecución del código.
También menciono el propio terminal porque los datos de la función se copiarán en el terminal y esto también llevará un tiempo.
De esta manera el tamaño de la posición actual siempre se calculará correctamente, por lo que la doble orden no se producirá más.
¿Qué opinas?
En mi opinión este problema se puede resolver fácilmente.
El EA debe esperar siempre una respuesta/respuesta si se utiliza la función "PositionSelect(Symbol())" y el terminal ha actualizado los datos de la función, antes de poder reanudar con la ejecución del código.
El EA debe esperar siempre una respuesta/respuesta si se utiliza la función "OrderSend(mrequest,mresult)" y el terminal ha actualizado los datos de la función, antes de poder reanudar con la ejecución del código.
También menciono el propio terminal porque los datos de la función se copiarán en el terminal y esto también llevará un tiempo.
De esta manera el tamaño de la posición actual siempre se calculará correctamente, por lo que la doble orden no se producirá más.
¿Qué te parece?
No estoy seguro de lo que quieres decir con "esperar siempre una respuesta"... ?
De todas formas he rellenado una solicitud al ServiceDesk para pedir consejo. Ya veremos.
No estoy seguro de lo que quiere decir con "esperar siempre una respuesta..." ?
De todos modos, he rellenado una solicitud al ServiceDesk para pedir consejo. Ya veremos.
"No estoy seguro de lo que quiere decir con "esperar siempre una respuesta..." ?"
El EA debe esperar/parar hasta que la función PositionSelect(Symbol()) haya terminado de copiar los datos sobre una posición en el entorno del programa.
Véalo como una función sleep() forzada.
"No estoy seguro de lo que quieres decir con "esperar siempre una respuesta..." ?"
El EA debe esperar/parar hasta que la función PositionSelect(Symbol()) haya terminado de copiar los datos sobre una posición en el entorno del programa.
Véalo como una función sleep() forzada.