
La función OrderProfit() de MetaTrader devuelve el beneficio de una órden determinada, pero sólo se puede obtener este valor en la moneda base de nuestra plataforma, no hay posibilidad de pedirle que nos devuelva el beneficio en Pips.
Éste código utiliza un bucle for para recorrer todas las órdenes abiertas e imprimir el Profit en Pips de cada una en una alerta:
int start() { int ordenes = OrdersTotal(); // Recorrer todas las órdenes para mostrar su Profit for(int pos=0; pos<ordenes; pos++) { if(OrderSelect(pos,SELECT_BY_POS)==false) continue; if(OrderType() == OP_BUY) Alert("Profit para la orden #",pos," es: ",(OrderClosePrice()-OrderOpenPrice())/MarketInfo(OrderSymbol(),MODE_POINT)); else if(OrderType() == OP_SELL) Alert("Profit para la orden #",pos," es: ",(OrderOpenPrice()-OrderClosePrice())/MarketInfo(OrderSymbol(),MODE_POINT)); } return(0); }
Para conseguir el beneficio en Pips tenemos que obtener la diferencia entre el precio de apertura y el de cierre (que en una orden no cerrada es el precio actual) y después dividirlo entre el decimal del símbolo. Es decir si la operación es de compra, if(OrderType() == OP_BUY), restamos cierre – apertura: OrderClosePrice()-OrderOpenPrice(), si la operación es de venta, if(OrderType() == OP_SELL), restamos apertura – cierre: OrderOpenPrice()-OrderClosePrice(). Y luego lo dividimos por el decimal del símbolo: MarketInfo(OrderSymbol(),MODE_POINT).
Ahora que ya sabemos obtener el beneficio en Pips de cada órden podríamos sumarlo y mostrar un total. Modificamos un poco el código:
int start() { int ordenes = OrdersTotal(); int profitTotal = 0; // Recorrer todas las órdenes para mostrar su Profit for(int pos=0; pos<ordenes; pos++) { if(OrderSelect(pos,SELECT_BY_POS)==false) continue; if(OrderType() == OP_BUY) profitTotal += (OrderClosePrice()-OrderOpenPrice())/MarketInfo(OrderSymbol(),MODE_POINT); else if(OrderType() == OP_SELL) profitTotal += (OrderOpenPrice()-OrderClosePrice())/MarketInfo(OrderSymbol(),MODE_POINT); } Alert(profitTotal); return(0); }
En el próximo artículo utilizaremos esto para crear un indicador y tener siempre una visión de lo que aumentan o disminuyen nuestras ganancias.