Ayuda a la codificación de ordersend()...

 

Hola chicos,

Realmente extraño pero cuando ejecuto el siguiente código no hace nada. GetLastError() devuelve 130.

   Print("running");
   OrderSend(Symbol(),OP_BUY,1,Ask,3,Ask-25*Point,Ask+25*Point,"My order #2",16384,0,Green)


Pero si se toma el mismo código y se elimina la información de la parada y el objetivo que escupe órdenes muy bien.

   Print("running");
   OrderSend(Symbol(),OP_BUY,1,Ask,3,0,0,"My order #2",16384,0,Green);


Estoy usando una plantilla experta vacía y sólo tengo esas dos líneas de código en la función de inicio.

No estoy seguro de la causa...


Gracias.

 
mugged:

Hola chicos,

Realmente extraño, pero cuando ejecuto el siguiente código no hace nada. GetLastError() devuelve 130.


Pero si se toma el mismo código y se elimina la información de la parada y el objetivo que escupe órdenes muy bien.


Estoy usando una plantilla experta vacía y sólo tengo esas dos líneas de código en la función de inicio.

No estoy seguro de la causa...


Gracias.

¿Qué tipo de corredor?

¿Símbolo de punto fraccionario?

 
diostar:

¿Qué tipo de corredor?

¿símbolo de punto fraccionario?


Estoy usando una cuenta IBFX mini.


Lo estoy ejecutando en Eur/Usd

 
También cuando ejecuto el código en el probador de estrategias funciona bien... cuando lo ejecuto en la vida real tengo problemas.
 

Tienes tus cálculos de SL y TP mal

Si es una compra:

SL = Oferta - StopLoss* Punto

TP = Oferta + TakeProfit* Punto

Si es una venta:

SL = Oferta + Punto StopLoss*;

TP = Oferta - Punto de Beneficio*;

Aparte de eso, con algunos brokers tienes que hacer el OrderSend() sin los niveles de SL y TP y luego hacer el OrderModify() e introducir el TP y el SL

 
mugged:

Estoy usando una cuenta IBFX mini.


Lo estoy ejecutando en Eur/Usd

Ok.... Lo siento por no ser específico.

Prueba con esto:

(1)en la finalización de la orden: sl=tp=0. entonces la orden modifica la sl=tp.

(2) eur/usd: ¿qué dígitos? ¿4 o 5?

 
SDC:

Tienes tus cálculos de SL y TP mal

Si es una compra:

SL = Oferta - StopLoss* Punto

TP = Oferta + TakeProfit* Punto

Si es una venta:

SL = Oferta + Punto StopLoss*;

TP = Oferta - Punto TakeProfit*;


Hola amigo, he probado a cambiar el "Ask" que utilizaba para definir mi SL y TP por el "Bid" como sugerías pero sigue sin haber suerte.
 

OK es probablemente porque necesitas hacer OrderSend() y luego OrderModify()

 
diostar:

Ok.... Lo siento por no ser específico.

Prueba con esto:

(1)en el fin de la orden: sl=tp=0. entonces la ordenmodifica el sl=tp.

(2) eur/usd: ¿qué dígitos? ¿4 o 5?



1) ¡Sí, este método funciona! Pero, ¿hay alguna forma de evitarlo? Odio pensar en el peor caso en el que la orden inicial entra pero la modificación no se produce (la conexión muere, se produce un error, etc.)


2) Corredor de 5 dígitos

 
para un broker de 5 dígitos puede que tenga que multiplicar sus importes de SL y TP por diez, de lo contrario el TP o stop out será de 2,5 pips
 
SDC:
para un broker de 5 dígitos puede que tenga que multiplicar las cantidades de SL y TP por diez, de lo contrario el TP o el stop se sitúa en 2,5 pips

Parece que va bien con el método de enviar y luego modificar. ¿Alguna idea de cómo puedo obtener tanto la orden como el stop en la misma toma? Preferiría que entraran juntos en un entorno de producción.