Orden stop/límite demasiado cerca del precio real
6 respuestas
sansay
hace 7 años #116332
Consulte la captura de pantalla adjunta.
Cuando vi por primera vez el registro de este EA, "orden stop/límite demasiado cerca del precio real" inmediatamente pensé "OK el nivel de stop es incorrecto". Así que edité el código y cambié el valor de MinDistanceOfStopFromPrice a 70, ya que esa era la especificación del par USDMXN. Sin embargo, como se puede ver en la captura de pantalla que no resolvió el problema. De hecho incluso probé con 100, 200, 700, y no cambió nada.
Cualquier ayuda será muy apreciada.
sansay
hace 7 años #141561
¿Qué captura de pantalla?
Tengo el problema contrario, necesito que algunas órdenes Stop_limit estén más cerca del precio.
Qué raro, estoy bastante seguro de haber adjuntado el archivo png. Vamos a intentarlo de nuevo...
tomas262
hace 7 años #141585
¿Sucede cuando coloca una orden o intenta modificar el PT, el SL o el precio de la orden?
sansay
hace 7 años #141594
Yo no hago nada, es un EA creado con SQ. Hace esto, y creo que el código se añade a cada EA que crea. La diferencia en este caso es que este forex en particular tiene un nivel de stops de 70, mientras que otros tienen 0.
Por supuesto, los que tienen 0 no activan nada.
El código está en función:
void openPosition(int tradeDirection) {
…
sansay
hace 7 años #141656
Esta mañana me encontré con que intentó y no pudo colocar una orden stop de venta. Ver registro adjunto.
tomas262
hace 7 años #141681
Te lo pregunto porque has colocado la pregunta en el hilo "EA Wizard
Puede publicar la estrategia aquí o enviármela a [email protected] así que puedo tratar de probarlo en USDMXN también
sansay
hace 7 años #141685
En realidad, mis pruebas me permitieron encontrar el problema y corregí el código.
El problema es que el servidor del corredor de verificación de:
short: orderPrice < currentPrice - stopLevel
long: orderPrice > currentPrice + stopLevel
Si la condición no se cumple, la solicitud de modificación falla. Actualmente el código ajusta el stopLoss y targetProfit para que estén justo al menos dentro de orderPrice + o - dealer stop level. Y esto hace que la prueba falle siempre que el precio de la orden sea exactamente el precio actual -+ nivel de stop. Así que la solución fue simplemente sumar o restar 1 pip. Aquí está el cambio de código:
En los parámetros ocultos, declarar:
double stopOffset = 0.0001;
Añadir y pasar el parámetro tradeDirection a la firma y llamada del método openOrderWithErrorHandling:
int abrirPedidoConManejoError(int tradeDirection, int orderType, double orderLots, double openPrice, double stopLoss, double profitTarget, string comment, int magicNumber) {
En el mismo método añada el código en verde:
Viendo 6 respuestas - de la 1 a la 6 (de un total de 6)