Скачать MetaTrader 5

Подскажите ПЛИЗ как закрыть ордер на mql5?????

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Andrey Kozak
9396
Andrey Kozak  

Добрый день!!! Пожалуйста подскажите на примере кода как закрыть ордер в mql5???

 К примеру у нас открыто 7 ордеров. Из них 3 на продажу.

 Как выбрать с общей массы этих 3 ордера и закрыть их?

Странно, но именно на эту тему в инете мало информации... ооочень мало...

Спасибо большое за помощь!!! 

Vladimir Karputov
Модератор
61399
Vladimir Karputov  
Andrey Kozak:

Добрый день!!! Пожалуйста подскажите на примере кода как закрыть ордер в mql5???

 К примеру у нас открыто 7 ордеров. Из них 3 на продажу.

 Как выбрать с общей массы этих 3 ордера и закрыть их?

Странно, но именно на эту тему в инете мало информации... ооочень мало...

Спасибо большое за помощь!!! 

 Не ордер, а ПОЗИЦИЮ. Список позиций в терминале можно получить: PositionsTotal

А дальше проходите по всему списку ПОЗИЦИЙ и, в зависимости от из показателей, делаете с ними что угодно. Получение данных позиции можно посмотреть на примере PositionGetInteger:

//+------------------------------------------------------------------+ 
//| Trade function                                                   | 
//+------------------------------------------------------------------+ 
void OnTrade() 
  { 
//--- проверим наличие позиции и выведем время её изменения 
   if(PositionSelect(_Symbol)) 
     {      
//--- получим идентификатор позиции для дальнейшей работы с ней 
      ulong position_ID=PositionGetInteger(POSITION_IDENTIFIER); 
      Print(_Symbol," postion #",position_ID); 
//--- получим время образования позиции в миллисекундах с 01.01.1970 
      long create_time_msc=PositionGetInteger(POSITION_TIME_MSC); 
      PrintFormat("Position #%d  POSITION_TIME_MSC = %i64 milliseconds => %s",position_ID, 
                  create_time_msc,TimeToString(create_time_msc/1000)); 
//--- получим время последнего изменения позиции в секундах с 01.01.1970 
      long update_time_sec=PositionGetInteger(POSITION_TIME_UPDATE); 
      PrintFormat("Position #%d  POSITION_TIME_UPDATE = %i64 seconds => %s", 
                  position_ID,update_time_sec,TimeToString(update_time_sec)); 
//--- получим время последнего изменения позиции в миллисекундах с 01.01.1970 
      long update_time_msc=PositionGetInteger(POSITION_TIME_UPDATE_MSC); 
      PrintFormat("Position #%d  POSITION_TIME_UPDATE_MSC = %i64 milliseconds => %s", 
                  position_ID,update_time_msc,TimeToString(update_time_msc/1000)); 
     } 
//--- 
  }

 

Закрывать позицию можно с помощью класса CTrade: PositionClose.

Andrey Kozak
9396
Andrey Kozak  
Karputov Vladimir:

 Не ордер, а ПОЗИЦИЮ. Список позиций в терминале можно получить: PositionsTotal

А дальше проходите по всему списку ПОЗИЦИЙ и, в зависимости от из показателей, делаете с ними что угодно. Получение данных позиции можно посмотреть на примере PositionGetInteger:

 

Закрывать позицию можно с помощью класса CTrade: PositionClose.

А как перебрать все позиции? В mql4 было бы сто то типа:

for(int i=0;i<OrdersTotal();i++)

{

  OrderSelect(i,SELECT_BY_POS);

   

 

А в mql5 в цикле чем заменить функцию OrderSelect() ...? Или PositionSelect это оно и есть?

Vladimir Karputov
Модератор
61399
Vladimir Karputov  
Andrey Kozak:

А как перебрать все позиции? В mql4 было бы сто то типа:

for(int i=0;i<OrdersTotal();i++)

{

  OrderSelect(i,SELECT_BY_POS);

   

 

А в mql5 в цикле чем заменить функцию OrderSelect() ...? Или PositionSelect это оно и есть?

Все позиции в MQL5 можно перебрать так:

    string symbol="";
    double volume=0;
    long   ticket=0;
    for(int i=0;i<PositionsTotal();i++)
     {
      symbol=PositionGetSymbol(i);
      volume=PositionGetDouble(POSITION_VOLUME);
      ticket=PositionGetInteger(POSITION_TICKET);
     }
Andrey Kozak
9396
Andrey Kozak  
Понял! Спасибо!
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий