Buenas a todos, como dije en mi post de presentacion decidi registrarme porque tengo algun atasco a la hora de crear trozos de codigo y he dado mil vueltas pero no lo consigo. Y estoy seguro que tengo la solucion delante de mis narices pero estoy embotao.
A ver, la cuestion es la siguiente.
El EA va abriendo varias operaciones segun se vayan dando ciertas condiciones, hasta ahi lo tengo bien. Entonces estas operaciones abiertas tienen un
profit determinado cada una (todos distintos porque se abren en distintos
precios). La cuestion es que quisiera seleccionar el que tenga el profit negativo mas alto (esto si lo he conseguido) con este codigo:
double profitmasbaja()
{
double profit=0.00;
for(int i=0; i<OrdersTotal(); i++){
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
double prof=OrderProfit();
if(prof<profit){
profit=prof;
}
}
}
return NormalizeDouble(profit,2);
}
La cuestion es que despues obtengo el numero de ticket de esta operacion en cuestion con este codigo:
double profitmasbaja2()
{
double profit=0.00;
double ProfAlt=0.00;
int tick1;
for(int i=0; i<OrdersTotal(); i++){
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
double prof=OrderProfit();
if(prof<ProfAlt){
ProfAlt=prof;
tick1=OrderTicket();
}
}
}
return tick1;
}
Esto lo hago para despues obtener el segundo profit negativo mas bajo, con lo que la idea que uso es hacer un condicional if que me diga que haga el bucle for si el ticket es distinto al tick1. Algo parecido a esto:
double profitmasbaja2()//Probando para averiguar el segundo profit mas bajo
{
double profit=0.00;
double ProfAlt=0.00;
int tick1;
for(int i=0; i<OrdersTotal(); i++){
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
double prof=OrderProfit();
if(prof<ProfAlt){
ProfAlt=prof;
tick1=OrderTicket();
}
}
}
for(int i=0; i<OrdersTotal();i++){
if(OrderSelect(tick1,SELECT_BY_TICKET,MODE_TRADES) ){
double prof=OrderProfit();
if(prof<profit){
profit=prof;
}
}
}
return profit;
}
Pero no funciona, ya le he dado mil vueltas, pero nada.
Podria alguien ayudarme por favor?
Gracias