Скачать MetaTrader 5
Справка MQL5 одним файлом:
mql5.chm mql5.pdf Английский
mql5_german.chm mql5_german.pdf Немецкий
mql5_spanish.chm mql5_spanish.pdf Испанский
mql5_french.chm mql5_french.pdf Французский
mql5_chinese.chm mql5_chinese.pdf Китайский
mql5_italian.chm mql5_italian.pdf Итальянский
mql5_portuguese.chm mql5_portuguese.pdf Португальский

CloseAll

Выходит из рынка полностью или частично.

virtual bool  CloseAll(
   double    lot    // лот
   )

Параметры

lot

[in] Размер лота, на который нужно сократить позицию.

Возвращаемое значение

true - выполнена торговая операция, иначе - false.

Примечание

В "неттинговом" режиме учета позиций закрытие производится методами CExpertTrade::Buy или CExpertTrade::Sell. В "хеджинговом" режиме - методом CTrade::PositionClose, который также можно использовать и на счетах с неттинговой системой учета. Для удаления всех отложенных ордеров предназначен метод DeleteOrders().

Реализация

//+------------------------------------------------------------------+
//| Position close and orders delete                                 |
//| INPUT:  lot - volume for close.                                  |
//| OUTPUT: true-if trade operation processed, false otherwise.      |
//| REMARK: no.                                                      |
//+------------------------------------------------------------------+
bool CExpert::CloseAll(double lot)
  {
   bool result=false;
//--- check for close operations
   if(m_margin_mode==ACCOUNT_MARGIN_MODE_RETAIL_HEDGING)
      result=m_trade.PositionCloseByTicket(m_position.Identifier());
   else
     {
      if(m_position.PositionType()==POSITION_TYPE_BUY)
         result=m_trade.Sell(lot,0,0,0);
      else
         result=m_trade.Buy(lot,0,0,0);
     }
   result|=DeleteOrders();
//---
   return(result);
  }


Обновлено: 2016.10.14