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

 
Alexey Viktorov:

Доцент, а Доцент. Ты почему такой злой (сегодня) ©

Давай в прорубь лезь...

 
Alexey Viktorov:

Так если у вас в условии есть

то зачем ещё проверки на новый бар? Или есть вариант, что позиция закроется на этом-же баре и надо запретить второе открытие?

Абсолютно верно - есть вариант, что позиция закроется на этом-же баре.

 

Врезался в новую стену. ) "Стена" называется - безубыток.

Вот на MQL4 реализовывал так: 

(содрал где-то не помню)

int BULevel=30;

   for(int i=0; i<OrdersTotal(); i++) 
      {
       if(OrderSelect(i, SELECT_BY_POS))
        {      
         if(OrderType()==OP_BUY) 
          {
           if(OrderOpenPrice()<=(Bid-BULevel*Point)&&OrderOpenPrice()>OrderStopLoss())
            {      
             int p=OrderModify(OrderTicket(),OrderOpenPrice(),Bid-50*Point,OrderTakeProfit(),0,Green);
            }
           }       
 
         if(OrderType() == OP_SELL) 
           {
            if(OrderOpenPrice()>=(Ask+BULevel*Point)&&OrderOpenPrice()<OrderStopLoss()) 
             {
              p=OrderModify(OrderTicket(),OrderOpenPrice(),Ask+50*Point,OrderTakeProfit(),0,Red);
             }
           } 
         }
       }

//------------------------------------------------------------------+

А вот на 5-рке. Как? 

Смотрел в торговых классах, вроде нигде не зашита. А вещь нужная. Что скажете профи?

 

Как сделать, чтобы на графике не отображались сделки с других графиков?

Только сделки того робота, который стоит на данном графике.

 
Здравствуйте! Объясните пожалуйста или ткните пальцем, как программно Закрыть Открытые позиции при типе счета Хедж/Hedg. как в mql5 закрывать хедженговые позиции? нашел только этот материал.  https://www.mql5.com/ru/articles/4830
Совершение сделок - Торговые операции - Справка по MetaTrader 5
Совершение сделок - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
 
BlackCoffee:
Здравствуйте! Объясните пожалуйста или ткните пальцем, как программно Закрыть Открытые позиции при типе счета Хедж/Hedg. как в mql5 закрывать хедженговые позиции? нашел только этот материал.  https://www.mql5.com/ru/articles/4830

Пример из кода  Close all positions

При работе с позициями нужно делать обход в цикле всех позиций к нулю:

//+------------------------------------------------------------------+
//| Close all positions                                              |
//+------------------------------------------------------------------+
void CloseAllPositions()
  {
   for(int i=PositionsTotal()-1;i>=0;i--) // returns the number of current positions
      if(m_position.SelectByIndex(i))     // selects the position by index for further access to its properties
         m_trade.PositionClose(m_position.Ticket()); // close a position by the specified symbol
  }

Close all positions
Close all positions
  • www.mql5.com
Закрытие позиций при достижении уровня прибыли  Close all if Profit . При этом суммируется общая прибыль по всем позициям: вне зависимости от символа и magic number. Подсчёт прибыли происходит только в момент рождения нового бара.
 
Vladimir Karputov:

Пример из кода  Close all positions

При работе с позициями нужно делать обход в цикле всех позиций к нулю:

Спасибо за ответ!!! А если нужно закрыть только  селл позиции? То добавить эти строки?:
if((ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
                       {
                         //--- prepare request for close SELL position
                        mrequest.type =ORDER_TYPE_BUY;
                        mrequest.price=SymbolInfoDouble(_Symbol,SYMBOL_ASK);
                       }
 

Вот такое сваял. Для закрытия сел для хедж.


void CloseSellPositions()
  {
   for(int i=PositionsTotal()-1;i>=0;i--) // returns the number of current positions
      if(m_position.SelectByIndex(i))     // selects the position by index for further access to its properties
         if((ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
                       {
                            m_trade.PositionClose(m_position.Ticket()); // close a position by the specified symbol
                       }
  }
но иногда почему-то остается одина позиция не закрытая. Если допустим условие поставить : Закрывать если Позиций больше Пяти. 
 
BlackCoffee:

Вот такое сваял. Для закрытия сел для хедж.


но иногда почему-то остается одина позиция не закрытая. Если допустим условие поставить : Закрывать если Позиций больше Пяти. 

Тогда уже так правильно:

void CloseSellPositions()
  {
   for(int i=PositionsTotal()-1;i>=0;i--) // returns the number of current positions
      if(m_position.SelectByIndex(i))     // selects the position by index for further access to its properties
         if(m_position.PositionType()==POSITION_TYPE_SELL)
            m_trade.PositionClose(m_position.Ticket()); // close a position by the specified symbol
  }

а если не удалось закрыть - смотрите в лог-файл. Причин может быть миллион: реджект, запрет торговли, нет цен, близость стоп-уровней ...

 
Здравствуйте. Зачем нужно в деинициализации удалять объекты классов? Они останутся в памяти после закрытия терминала? Или останутся в памяти во время работы терминала без советника? Что еще нужно удалять кроме объектов класса?