Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Не поставляешь сигналы и не продаешь приложения? Не проблема, заработать могут все!
РАУШАН
11
РАУШАН 2012.08.26 13:57 

Здравствуйте!. Нужна ваша помощь. Нужна функция к советнику которая закроет все ордера с определенным меджиком в случае ошибки закрытия повторит ордер по закрытию пока не закроет все ордера.

так то написал как обработку ошибок прописать не знаю.Помогите плиз. вот исходник моей функции может туда пропишите?

int zakryt()
{
int total = OrdersTotal();
for(int i=total-1;i>=0;i--)
{
OrderSelect(i, SELECT_BY_POS);
int type = OrderType();
if(OrderMagicNumber()!=magic)continue;

bool result = false;

switch(type)
{
//Close opened long positions
case OP_BUY : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 5, Red );
break;

//Close opened short positions
case OP_SELL : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 5, Red );
break;


}

if(result == false)
{
Alert("Order ", OrderTicket(), " failed to close. Error:", GetLastError() );
Sleep(3000);
}
}

return(0);
}

Alexandr Bryzgalov
23857
Alexandr Bryzgalov 2012.08.26 14:27  
void CloseAllOrder()
{
   int tot_util=1;
   int TimeStart=GetTickCount();
   while(tot_util>0)
   {
      if(GetTickCount()-TimeStart>600000)
      {
         Alert("Что-то пошло не так, процедура закрытия ордеров завершилась аварийно!");
         Print("Что-то пошло не так, процедура закрытия ордеров завершилась аварийно!");
         break;
      }
      tot_util=0;
      for(int i=OrdersTotal()-1;i>=0;i--)
      {
         if(OrderSelect(i,SELECT_BY_POS)&&OrderMagicNumber()==Magik&&OrderSymbol()==Symbol_)
         {
            RefreshRates();
            tot_util++;
            int cmd=OrderType();
            if(cmd>=2&&cmd<=5)
            {
               if(OrderDelete(OrderTicket()))
               {
                  continue;
               }
            }
            if(cmd==OP_BUY)
            {
               if(OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),Slippage))
               {
                  continue;
               }
            }
            if(cmd==OP_SELL)
            {
               if(OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),Slippage))
               {
                  continue;
               }
            }
         }
      }
   }
   return;
}
РАУШАН
11
РАУШАН 2012.08.27 11:02  
спасибо то что нужно было
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий