PlaySound при открытии и закрытии позиции - страница 2

 

После отдачи приказа на сервер

 

Блин, ну почему нужно "клещами" вытаскивать из тебя информацию? Ты можешь давать развёрнутый ответ?

После отдачи приказа на сервер советник находится в состоянии ожидании ответа сервера и алерт он не выбросит. После получения ответа сервера - пожалуйста. 

Ответ сервера может быть отрицателен (ордер не установлен/не закрыт/не модифицирован), либо положителен (приказ советника выполнен).

Если ответ положителен, то алерт. Если ответ орицателен, то Алерт.

Так в каком случае нужен Алерт?

При отрицательном ответе он у тебя и так выскакивает - он уже прописан в коде. Нужен при положительном? Ну так воткни туда команду Alert("...");

 
  if(!OrderClose(OrderTicket(),OrderLots(),Ask, 5,Red)){// если ордер не закрыт, то
    _GetLastError = GetLastError();
    Alert( "Ошибка OrderClose № ",GetLastError);
  }
  else{// иначе ордер закрыт корректно. Сигналим об этом алертом
    Alert( "Ордер закрыт корректно ");
  }
 
drknn:
  if(!OrderClose(OrderTicket(),OrderLots(),Ask, 5,Red)){// если ордер не закрыт, то
    _GetLastError = GetLastError();
    Alert( "Ошибка OrderClose № ",GetLastError);
  }
  else{// иначе ордер закрыт корректно. Сигналим об этом алертом
    Alert( "Ордер закрыт корректно ");
  }
Спасибо советник работает!
 

На GBPJPY и GBPCAD выдаёт ошибку SellOrderClose

//+------------------------------------------------------------------+
//|                                                           m5.mq4 |
//|                              Copyright © 2007, Mirakhmedov Anvar |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2007, Mirakhmedov Anvar"
 
 
extern int  _MagicNumber = 51;
extern double Lots =1;
extern double step0 = 0.00006;
extern double step1 = 0.001;
extern double rsibuy = 70;
extern double rsisell = 30;
extern double _point =65;
extern double StopLoss = 500;
extern double TakeProfit = 500;
extern double _point1 =75;
extern string NameExpert = "m5";
extern string NameSound = "alert.wav";
 
int start()
{
int ticket;
int _GetLastError = 0, _OrdersTotal = OrdersTotal();
    //---- перебираем все открытые позиции
    for ( int z = _OrdersTotal - 1; z >= 0; z -- )
    {
  //---- если при выборе позиции возникла ошибка, переходим к следующей
        if ( !OrderSelect( z, SELECT_BY_POS ) )
        {
            _GetLastError = GetLastError();
         
            continue;
        }
 
// если позиция открыта не по текущему инструменту, пропускаем её
        if ( OrderSymbol() != Symbol() ) continue;
 
// если MagicNumber не равен _MagicNumber, пропускаем 
// эту позицию
        if ( OrderMagicNumber() != _MagicNumber ) continue;
 
        //---- если открыта БАЙ-позиция,
        if ( OrderType() == OP_BUY )
        {
            //---- если МАКД пересёк 0-ю линию вниз,
     if((Open[0]-Close[0])> _point1*Point ||
            iSAR(NULL,0,step0,0.1,0)>Close[0]) 
           
                      
                //---- закрываем позицию
                {
                if((OrderClose( OrderTicket(), OrderLots(), 
                    Bid, 5, Green ) )!=false)
                  {  
                 Alert( "BuyOrderClose № ",OrderClosePrice() );
                 SendMail(NameExpert, "BuyOrderClose");
                 PlaySound(NameSound);
                 }
                 
                else
                {
                Alert( "Ошибка BuyOrderClose № ",() );
              
                 }
                 }   
            return(0);
         
        }    
        
        //---- если открыта СЕЛЛ-позиция,
        if ( OrderType() == OP_SELL )
        {
        if((Close[0]-Open[0])> _point1*Point||
          iSAR(NULL,0,step0,0.1,0)<Close[0])
        
          {
                if((OrderClose( OrderTicket(), OrderLots(), 
                    Bid, 5, Green ) )!=false)
                    {
                 Alert( "SellOrderClose № " );
                 SendMail(NameExpert, "BuyOrderClose");
                 PlaySound(NameSound);
                 }
                else
                {
                Alert( "Ошибка SellOrderClose № ");
                 }
                 }   
            return(0);
         
        }    
     }
        
//+------------------------------------------------------------------+
//| если выполнение дошло до этого места, значит открытой позиции нет|
//| проверяем, есть ли возможность открыть позицию                   |
//+------------------------------------------------------------------+
         if(iSAR(NULL,0,step0,0.1,0)<Close[0]
  && iRSI(NULL,0,14,PRICE_CLOSE,0)>rsibuy &&
   (Close[0]-Open[0])> _point*Point)
 
        {
       ticket = (OrderSend( Symbol(), OP_BUY, Lots, Ask, 5, 0.0, 
           0.0, "Gbpusdm5fast",
              _MagicNumber, 0, Green ) );
 
     if(ticket>0)
             {
               if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) 
                       Alert("BUY orders opened : ",OrderOpenPrice());
                       SendMail(NameExpert, "BuyOrderOpened");
                       PlaySound(NameSound);
                       
      }
           else 
        Print("Error opening BUY orders : ",GetLastError()); 
        return(0);
   }
       
     if(iSAR(NULL,0,step0,0.1,0)>Close[0]
  && iRSI(NULL,0,14,PRICE_CLOSE,0)<rsisell &&
       (Open[0]-Close[0])> _point*Point)
    {
        //---- открываем СЕЛЛ позицию
        ticket = (OrderSend( Symbol(), OP_SELL, Lots, Bid, 5, 0.0, 
           0.0, "Gbpusdm5fast",
              _MagicNumber, 0, Red ));
                         
                          if(ticket>0)
             {
               if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) 
                       Alert("SELL orders opened : ",OrderOpenPrice());
                       SendMail(NameExpert, "BuyOrderClose");
                       PlaySound(NameSound);
                       
      }
           else 
        Print("Error opening SELL orders : ",GetLastError()); 
        return(0);
   }
    
 
    return(0);
}
На остальных парах работает нормально.Подскажите пожалуйста как исправить
 
Спасибо сам разобрался