Hi guys, i'm using this code to find out if an order has closed in Loss or Not. but... when the order is modifyed and close in profit but because of the trailing it says closed by SL, the EA start martingale without an loss order. How to avoid it? Another thing i would like to know how to do is how to make EA start martingale after 3 consecutive losses? Here is the code i'm using:
global-variables:
int time_loss = 0; // number of times ea has lost
double ResetLots = 0.1;
//end of global variables
if (useMartingale == true) {
int last_trade=OrdersHistoryTotal();
if(last_trade>0) {
if(OrderSelect(last_trade-1,SELECT_BY_POS,MODE_HISTORY)==true) {
if(OrderSymbol()==Symbol() && OrderClosePrice()==OrderStopLoss() && OrderMagicNumber() == MagicNumber) {
//Print("Last closed order was OrderType = ",OrderType()," Time = ",TimeToStr(OrderCloseTime())," close at StopLoss ",OrderClosePrice());
if (time_loss == MartingaleAfter) {
time_loss = 0;
Lots = OrderLots() + IncrementSize;
if (Lots > MarketInfo(Symbol(), MODE_MAXLOT)) {
Lots = MarketInfo(Symbol(), MODE_MAXLOT);
}
}
time_loss = time_loss+1;
}
if(OrderSymbol()==Symbol() && OrderClosePrice()==OrderTakeProfit() && OrderMagicNumber() == MagicNumber) {
//Print("Last closed order was OrderType = ",OrderType()," Time = ",TimeToStr(OrderCloseTime())," close at TakeProfit ",OrderClosePrice());
Lots = ResetLots;
if (Lots < ResetLots) {
Lots = ResetLots;
}
}
}
}
}
Thanks
global-variables:
int time_loss = 0; // number of times ea has lost
double ResetLots = 0.1;
//end of global variables
if (useMartingale == true) {
int last_trade=OrdersHistoryTotal();
if(last_trade>0) {
if(OrderSelect(last_trade-1,SELECT_BY_POS,MODE_HISTORY)==true) {
if(OrderSymbol()==Symbol() && OrderClosePrice()==OrderStopLoss() && OrderMagicNumber() == MagicNumber) {
//Print("Last closed order was OrderType = ",OrderType()," Time = ",TimeToStr(OrderCloseTime())," close at StopLoss ",OrderClosePrice());
if (time_loss == MartingaleAfter) {
time_loss = 0;
Lots = OrderLots() + IncrementSize;
if (Lots > MarketInfo(Symbol(), MODE_MAXLOT)) {
Lots = MarketInfo(Symbol(), MODE_MAXLOT);
}
}
time_loss = time_loss+1;
}
if(OrderSymbol()==Symbol() && OrderClosePrice()==OrderTakeProfit() && OrderMagicNumber() == MagicNumber) {
//Print("Last closed order was OrderType = ",OrderType()," Time = ",TimeToStr(OrderCloseTime())," close at TakeProfit ",OrderClosePrice());
Lots = ResetLots;
if (Lots < ResetLots) {
Lots = ResetLots;
}
}
}
}
}
Thanks