void Martin()
{
int LastTicket = 0;
int LastType =-1;
double LastOpenPr = 0;
double LastLot = 0;
for(int i=OrdersTotal()-1;i>=0; i--)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) // Проверяем только рыночные ордера
{ //
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic) // Только по данному символу с заданным меджиком
{ //
if(OrderType()==OP_BUY || OrderType()==OP_SELL) // Проверку производим только по ордерам BUY/SELL
{ //
if(LastTicket<OrderTicket()) // Усди тикет найденного ордера больше за предыдущий
{ // значит он последний среди уже проверенных
LastTicket = OrderTicket(); // запомним его значение
LastType = OrderType(); // запомним его тип
LastOpenPr = OrderOpenPrice(); // запомним его цену открытия
LastLot = OrderLots(); // и запомним его лот
}
}
}
}
}
if(LastTicket==0) return; // Перебрали все ордера, если LastTicket=0 - ордеров
// в рынке нет - выход из функции
if(LastType!=-1 && LastOpenPr!=0 && LastLot!=0) // иначе проверим наличие полученных данных
{ //
if(LastType==OP_BUY) // если последний ордер BUY
{ //
if(Ask<=LastOpenPr-Mpip*Point) // проверим на условие дистанции
{ // если условие выполняется - установим новый ордер
double OOL = NormalizeDouble(LastLot*LotExp,2); // зададим лот
double OOP = NormalizeDouble(Ask,Digits); // зададим цену открытия
double OTP = NormalizeDouble(Ask+TP*Point,Digits); // зададим значение ТР
if(!OrderSend(Symbol(),OP_BUY,OOL,OOP,slippage,0,OTP,"",Magic,0,Aqua))// Установка ордера не для ECN счета!!!
Print("Ошибка установки ордера BUY, код ошибки - ",GetLastError()); // если ордер не установился, узнаем по какой ошибке
}
}
//----
if(LastType==OP_SELL) // если последний ордер SELL
{ //
if(Bid>=LastOpenPr+Mpip*Point) // проверим на условие дистанции
{ // если условие выполняется - установим новый ордер
double OOL = NormalizeDouble(LastLot*LotExp,2); // зададим лот
double OOP = NormalizeDouble(Bid,Digits); // зададим цену открытия
double OTP = NormalizeDouble(Bid-TP*Point,Digits); // зададим значение ТР
if(!OrderSend(Symbol(),OP_SELL,OOL,OOP,slippage,0,OTP,"",Magic,0,Aqua))// Установка ордера не для ECN счета!!!
Print("Ошибка установки ордера SELL, код ошибки - ",GetLastError()); // если ордер не установился, узнаем по какой ошибке
}
}
}
}
//---------end--------