La estructura de la función OrderSend() es la siguiente:
int OrderSend (
string symbol,
int cmd,
double volume,
double price,
int slippage,
double stoploss,
double takeprofit,
string comment=NULL,
int magic=0,
datetime expiration=0,
color arrow_color=CLR_NONE)
Detallo cada parametro a continuación:
int OrderSend: Lo primero que vemos de esta función, es que devuelve un numero entero cuando se ejecuta. Si la orden se ejecuta exitosamente, devuelve el número de la orden. Viene a ser como el identificador único de esa orden con el que más adelante podremos modificar o cerrar esta orden. Si la orden es rechazada, la función devolverá -1. Para saber por qué se dio el error hay que utilizar la función GetLastError();.
Parámetros de OrderSend();
symbol: En este parámetro hay que colocar la divisa en la que queremos operar y tiene que ser un string. Por ejemplo, “EURUSD” “EURJPY” “USDJPY”. Pero es más fácil utilizar la función Symbol() que nos devuelve automáticamente la divisa donde está funcionando el EA.
cmd: Acá colocamos el tipo de operación que queremos efectuar. Hay unas constantes que simplifican eso, aunque también se pueden colocar los números directamente.
Serian:
OP_BUY 0 Buy o compra
OP_SELL 1 Sell o venta
OP_BUYLIMIT 2 Orden pendiente BUY LIMIT
OP_SELLLIMIT 3 Orden pendiente SELL LIMIT
OP_BUYSTOP 4 Orden pendiente BUY STOP
OP_SELLSTOP 5 Orden pendiente SELL STOP
volume: Es la cantidad de lotes con los que queremos operar.
price: Es el precio en el que vamos a comprar o vender o colocar una orden pendiente. Puede darse el caso que el precio cambio desde que se hace la petición hasta que se es aceptada. Si esto pasa la orden se rechaza. Pero para solucionar este problema hay una opción que es dar un rango de desviación del precio permitido.
slippage: slippage o desvío. Siguiendo con el parámetro anterior, “price”, uno tiene la opción de dar un rango de desviación del precio. Por ejemplo si el precio está en 1.561 y cambia un pip a 1.562 o a 1.560, uno puede dar un slippage de 1 pip para que acepte este rango de precios.
stoploss: Acá uno coloca el stop loss, ósea el precio donde uno quiere para la perdida y la posición entra en perdidas.
takeprofit: Acá uno coloca el limite o takeprofit. Ósea el precio donde uno quiere cerrar la posición en ganancia si la posición está dando beneficios.
comment: Esta es par que aparezca un coemntario cuando pasamos con el raton encima de la orden.
magic: Decíamos que la función OrderSend() si es aceptada por el servidor, devuelve como una especie de numeró de identificación. Con el parámetro magic, pasa algo parecido. Uno puede colocar un número propio para identificar la orden. La idea es que sea mas fácil encontrar la identificación de una orden si utilizamos mas de un ronbot hay que poner el número mágico distinto para que solo opere en el robot deseado y no en todas las ordenes.
expiration: Acá uno puede colocar una fecha para que se cierre la posición automáticamente. Algunos broker no permiten esto. Si se coloca 0 o se deja en blanco que es lo mismo, no pasa nada y la posición solo se cierra cuando nosotros le indiquemos.
arrow_color: Acá indicamos el color de la flecha que indica donde se abrió la posición. Si no se coloca nada o se coloca CLR_NONE que es lo mismo, no se muestra la flecha.
Respecto al desvío, al ser una orden directa, es decir la hago yo, no lo tengo en cuenta ya que no me importa demasiado, si estuviera programando un robot, si que podría poner un desvío de 5 pips.
El SL y TP no se pueden poner directamente en la orden porque los Brokers ECN no lo permiten, no dejan que lances la orden con los parámetros puestos, por lo que hay que lanzar la orden para posteriormente modificarla..... Cuestión de normativa.....
La variable point, tiene que ver con los decimales que tiene el PAR que estamos tradeando, no es lo mismo el EUR/USD que el NZD/JPY no tienen los mismos decimales por lo que el point es para adecuar la orden a los decimales.
Marcadores