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
Pero luego OrderModify falla.
El código de abajo se ejecuta después del código anterior del último post.
El Log ist:
#ESZ1,M5: Posición de apertura
#ESZ1,M5: tickvalue: 12.50000000
#ESZ1,M5: tamaño de la posición: 1.00000000
#ESZ1,M5: Oferta 1242.00000000/1241.75000000
#ESZ1,M5: Spread 0.25000000
#ESZ1,M5: abrir #13679252 comprar 1.00 #ESZ1 a 1242.00 ok
#ESZ1,M5: Orden 13679252 abierta con éxito
#ESZ1,M5: SL: 1241.25000000
#ESZ1,M5: TP: 1242.25000000
#ESZ1,M5: error=130
Así que incluso la primera apertura y luego el establecimiento de stoploss no parece funcionar :-/
El margen es de 0,25
#ESZ1,M5: Spread 0.25000000
OK, se abre una COMPRA a . . 1242.00 (Ask)
#ESZ1,M5: abrir #13679252 comprar 1.00 #ESZ1 a 1242.00 ok
#ESZ1,M5: Orden 13679252 abierta con éxito
A continuación, intente modificar con un TP al precio de compra + 2 * Spread y un SL al precio de compra - 2 * Spread
#ESZ1,M5: SL: 1241.25000000
#ESZ1,M5: TP: 1242.25000000
Si su FreezeLevel es 0.50 entonces ese es su problema... ¿cuál es su FreezeLevel?
El mismo problema. La orden se abre bien con stoploss = 0 y takeprofit = 0.
Pero luego OrderModify falla.
No ajustar para corredores de 4/5 dígitos. No abrir primero y luego ajustar los stops.
Como se respondió anteriormente
Sí, probablemente usted está operando con un corredor ECN tiene que abrir órdenes con cero paradas a continuación, modificar la orden después de que se abre lo que hay un problema con 50 pips SL y TP, así que como Raptor dijo comprobar el freezelevel y stoplevel también por si acaso
También revisa tu código OrderModify() .... tal vez funcione así, pero creo que deberías seleccionar la orden usando OrderSelect() antes de poder hacer OrderOpenPrice()
Por desgracia, el nº 130 sigue persiguiéndome por las noches ;)
Aquí está mi siguiente intento:
Como puedes ver, he simplificado el ejemplo al no usar takeprofit. El error se produce definitivamente por el stoploss, así que no necesitamos el takeprofit.
Primero abro la orden con 0 stoploss (y takeprofit) y más tarde intento establecer el stoploss usando OrderModify.
Antes de eso compruebo Mode_Stoplevel y Mode_Freezelevel y ajusto el stoploss, si es necesario. (Un ajuste ocurre abajo en el registro, porque el stoploss es inicialmente 50, pero Mode_Stoplevel es 75, entonces pongo el stoploss a Mode_Stoplevel + 1, entonces 76)
RaptorUK y SDC:
MarketInfo(MODE_FREEZELEVEL) devuelve 0. No creo que Freezelevel sea el problema.
He incluido la salida en el archivo de registro.
SDC:
También inserté un OrderSelect, antes de llamar a OrderOpenPrice sólo para asegurarme. En el registro se puede ver que OrderSelect funcionó, de lo contrario el código no habría llegado tan lejos (salida -1).
WHRoeder:
He seguido el sencillo ejemplo de SDC. Pero ahora lo he ampliado utilizando el ajuste de pips 4/5 Digit al establecer el stoploss, como puedes ver arriba. También puedes ver que la orden se abre primero con stoploss y takeprofit puestos a cero y luego el stoploss se pone con OrderModify. Como puedes ver en el log de abajo con S/L y T/P puestos a cero, la orden se abre con éxito, pero sigo sin poder poner el S/L en el siguiente paso con OrderModify.
Aquí está el registro completo:
Estoy muy agradecido por su ayuda continua y creo que estamos reduciendo el problema :)
¿Qué otra cosa podría ser el problema? ¿Algo más que pueda probar?
shinobi
El margen es de 0,25
#ESZ1,M5: Spread 0.25000000
OK, se abre una COMPRA a . . 1242.00 (Ask)
#ESZ1,M5: abrir #13679252 comprar 1.00 #ESZ1 a 1242.00 ok
#ESZ1,M5: Orden 13679252 abierta con éxito
A continuación, intenta modificar con un TP al precio de oferta + 2 * Spread y SL al precio de oferta - 2 * Spread
¿No es su STOP_LEVEL 3 * Spread? su Stop está demasiado cerca....
Sí, por eso compruebo el stoplevel aquí (desde el código anterior):
Así que en el último ejemplo el stoploss se puso en 76, que es 3*Spread +1.
Eso debería ser lo suficientemente lejos, ¿verdad?
Hola Raptor,
Sí, por eso compruebo el stoplevel aquí (desde el código anterior):
Así que en el último ejemplo stoploss se fijó en 76, que es 3*Spread +1.
Eso debería ser lo suficientemente lejos, ¿verdad?
Esto es lo que hice.
Primero escribí una función personalizada para redondear los dobles al doble más cercano:
Hace lo que esperas. Si la llamas con DoubleRound(1237.687360000), devuelve 1237.50.
Entonces lo usé en mi S/L justo antes de llamar a OrderModify. Y usé MODE_TICKVALUE, que es 0.25 para #ESZ1.
Así que:
En el registro se puede ver, que el redondeo funcionó bien. Sin embargo el stoploss fue rechazado :/
¡No puedo imaginar qué otro problema podría ser! ¡Este #130 es realmente persistente!
Has abierto una venta
#ESZ1,M5: abrir #13708089 vender 1.00 #ESZ1 a 1239.75 ok
y trató de establecer un SL por debajo de él...
#ESZ1,M5: SL: 1237.50000000
#ESZ1,M5: error=130