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

 

Подскажите работает ли MetaTrader 5 на Windows 7,8 ?

 
pivomoe #:

Подскажите работает ли MetaTrader 5 на Windows 7,8 ?

Работает, но лучше чтобы была 64-разрядная ОС

 
Mikhail Toptunov #:

господа, служители!)

Опять двадцать пять. 

   for(int i=OrdersTotal()-1; i>=0; i--)
      if(m_position.SelectByIndex(i))
        {
         long f= m_position.Magic();
         if(m_position.Comment()==comment)
            if(m_position.Type()==type)
               if(m_position.Magic()==magic)
                  return(true);
        }

Смешались в кучу кони, люди...

Это вообще что?

Запрашиваем количество открытых ордеров, а проверяем позиции. Так не пойдёт.
 
JRandomTrader #:

Увы, не совсем так. Показывал тут уже, как получил код 10012, нулевой тикет ордера, но ордер при этом исполнился. MQ хранят молчание по этому поводу.

Написал под это костыль, но проверить его можно будет только получив снова 10012 )

Это исключение из правил, а у человека не получается понять разницу между ордерами, сделками и позициями. А вы его ещё и исключениями путаете)))

Когда поймёт как это работает, сможет сам написать проверку под свои нужды.

 
Aleksandr Slavskii #:

... а у человека не получается понять разницу между ордерами, сделками и позициями ...

Когда поймёт как это работает, сможет сам написать проверку под свои нужды.

Всё подробно расписано здесь.

С уважением, Владимир.

 

благодарю, похоже разобрался!!!


//+------------------------------------------------------------------+
void OnTradeTransaction(const MqlTradeTransaction&    trans,     // структура торговой транзакции
                        const MqlTradeRequest&        request,   // структура запроса
                        const MqlTradeResult&         result)    // структура ответа
  {
//--- результат выполнения торгового запроса
 ulong            lastOrderID   =trans.order; 

//--- тип транзакции
   ENUM_TRADE_TRANSACTION_TYPE  trans_type=trans.type;
   switch(trans.type)
     {
      case  TRADE_TRANSACTION_POSITION:   // изменение позиции
        {

        }
      break;
      //---
      case TRADE_TRANSACTION_ORDER_ADD:    // добавление нового действующего ордера
        {
         fix_position_open(lastOrderID);
        }
      break;
      case TRADE_TRANSACTION_REQUEST:    // добавление нового действующего ордера
        {

        }
      break;
     }
//---
  }
//--- Фиксируем если позиция открыта --------------------------------+
void fix_position_open(ulong lastOrderID)
  {
//--- Фиксируем если позиция открыта
   for(int i=0; i<ArraySize(position_buff); i++)
      if(position_buff[i].timeOp==1)
         if(!match_open_orders(lastOrderID))
           {
            position_buff[i].timeOp= 0;     // Фиксировать время
            Print("Метод OnTrade() по рынку не выполнен. Код возврата=",m_trade.ResultRetcode(),
                  " (",m_trade.ResultRetcodeDescription(),")"+position_buff[i].comment+" lot "+DoubleToString(position_buff[i].lot));//
           }
         else
           {
            position_buff[i].timeOp= TimeCurrent();
            Print("Метод OnTrade() по рынку выполнен успешно. Код возврата=",m_trade.ResultRetcode(),
                  " (",m_trade.ResultRetcodeDescription(),")"+position_buff[i].comment+" lot "+DoubleToString(position_buff[i].lot));//
           }
  }
//--- Соответствие открытых ордеров ---------------------------------+
bool match_open_orders(long lastOrderID)
  {
//---
   for(int i=PositionsTotal()-1; i>=0; i--)
      if(m_position.SelectByIndex(i))
         if(m_position.Identifier()==lastOrderID)
            return(true);
   for(int i=OrdersTotal()-1; i>=0; i--)
      if(m_order.SelectByIndex(i))
         if(m_order.Ticket()==lastOrderID)
            return(true);
   return(false);
  }
 
Mikhail Toptunov #:

благодарю, похоже разобрался!!!

Позиция открывается, когда ордер исполняется, т.е. совершается сделка и ордер уходит в историю.

 
Что делать, если не все функции доступны в MQL5
 
Baruandreas #:
Что делать, если не все функции доступны в MQL5

Забыть mql4 совсем и постоянно читать документацию по mql5.

 
Baruandreas #:
Что делать, если не все функции доступны в MQL5

Ваш вопрос не понятен. Сначала уточните свой вопрос:

  1. Речь идёт об уже существующих функциях в MQL5?
  2. Функция в наборе готовых у MQL5 есть, но она не работает?
  3. Вам нужна какая-то определённая функция, а в наборе готовых MQL5 такой функции нет?
С уважением, Владимир.