Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 522

 
toni_stark:
Подскажите пожалуйста код: советник открывает по одному ордеру в день, как закрывать эти ордера в конце дня, например 23:50?
if(TimeCurrent()>=D'23:50') close_all();
 
Vasyl Nosal:
if(TimeCurrent()>=D'23:50') close_all();
В таком варианте закроются все ордера или только которые открыл советник?
 
toni_stark:
В таком варианте закроются все ордера или только которые открыл советник?
Зависит от функции закрытия.
 
toni_stark:
В таком варианте закроются все ордера или только которые открыл советник?

:)))

То что запишишь в функции close_all() 

 
подскажите какой параметр или функцию   поможет сместить индикатор на n-пунктов в верх или вниз?
Файлы:
 
Vasyl Nosal:

:)))

То что запишишь в функции close_all() 

Не до конца понятно с функцией close_all(), в метаидиторе ее нет. Может имеется ввиду функция OrderClose()?
 
toni_stark:
Не до конца понятно с функцией close_all(), в метаидиторе ее нет. Может имеется ввиду функция OrderClose()?

он имеет ввиду что-то типа этого

//+------------------------------------------------------------------+
void сlose_all()
  {
   double price=0;
   bool error;
   int total=OrdersTotal();

   for(int i=total-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS))
        {
         //Print(__FUNCTION__);

         if(OrderType()==OP_BUY)
           {
            RefreshRates();
            price=NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID),(int)MarketInfo(OrderSymbol(),MODE_DIGITS));
            error=OrderClose(OrderTicket(),OrderLots(),price,10000,clrBlue);
            if(!error) PrintFormat("Error № %d closing the order. Ticket: %d",GetLastError(),OrderTicket());
           }
         if(OrderType()==OP_SELL)
           {
            RefreshRates();
            price=NormalizeDouble(MarketInfo(OrderSymbol(),MODE_ASK),(int)MarketInfo(OrderSymbol(),MODE_DIGITS));
            error=OrderClose(OrderTicket(),OrderLots(),price,10000,clrBlue);
            if(!error) PrintFormat("Error № %d closing the order. Ticket: %d",GetLastError(),OrderTicket());

           }
         if(OrderType()>1)
           {
            error=OrderDelete(OrderTicket());
            if(!error) PrintFormat("Error № %d delete the order. Ticket: %d",GetLastError(),OrderTicket());
           }

        }

     }
  }
//+------------------------------------------------------------------+
 
Sergey Gritsay:

он имеет ввиду что-то типа этого

Понял, пользовательская функция.
 
Уважаемые программисты. Можете помочь? Нужно "прикрутить" к советникам(выкладываю) выставление количества открытых ордеров. Не знаю поможет ли это..Попробую обьяснить,может подскажете. Ставлю эти совы на несколько пар,а ордер открывается всего один. И когда ордер открыт на одной паре,то сигналы на другой паре не игнорируются. Заранее спасибо!
Файлы:
 
Сори...ошибочка (  И когда ордер открыт на одной паре,то сигналы на другой паре ИГНОРИРУЮТСЯ )
Причина обращения: