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

 
Здравствуйте! Объясните пожалуйста или ткните пальцем, как программно Закрыть Открытые позиции при типе счета Хедж/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
  }

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

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

На пример, вы удалите эксперт с графика, а всякие рисунки (объекты) останутся на графике. В деинициализации удалять всё лишние чтобы был чистый график. Как то так.

 
Nauris Zukas:

На пример, вы удалите эксперт с графика, а всякие рисунки (объекты) останутся на графике. В деинициализации удалять всё лишние чтобы был чистый график. Как то так.

Не пользуюсь графическими кодами. Я смотрел в чужих прогах, что удаляются объекты классов. Правильно ли я понял, что если их не удалить в деинициализации, они останутся в памяти до закрытия терминала. Что еще кроме объектов классов лучше удалять? Спасибо.
 

Добрый день !

Как присвоить id к индикатору? Приобрел советника, он ориентируется на старший ТФ, чтобы торговать на младшем. Разработчик написал, что нужно повесить на старший график индикатор и присвоить ему id. Я новичек в  работе с MT, не знаю как сделать. Подскажите, если кто понял как сделать. (Стоит версия MT5)

 
secret:

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

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

Только меня одного беспокоит мешанина сделок от множества роботов на одном графике? Больше никто не озабочивался?

Причина обращения: