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

 
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 такой функции нет?
С уважением, Владимир.
 
MrBrooklin #:

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

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

Как позже было выяснено, это один из тех, кто своим вопросом засерает весь форум. Даже отдельную тему создал

 
Alexey Viktorov #:

Как позже было выяснено, это один из тех, кто своим вопросом засерает весь форум. Даже отдельную тему создал

Привет, Алексей! Теперь всё понятно.

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

 
Всем привет.
Такая ситуация - есть значения индикатора в csv файле, записанном из одиночного прогона тестера - значения индикатора рассчитываются на каждом тике.
Хочу использовать эти данные для оптимизации в режиме OHLC - проверять на совпадение условия в конкретную минуту торгов. Оптимизацию на тиках лучше не предлагать - такой тест кратно разростётся и для подобной оптимизации излишний.
Проблема в том что файл большой - порядка миллиона строк, и соотносить на каждой минуте пару "дата, время - значение" - трудоёмко. 

Вот и думаю как поступить - пока вот какие мысли: создание кастомного символа и сравнение значений с ним; использование базы данных. Подскажите, какое решение было бы оптимальным, может кто решал такую задачу?
 
qadexys #:
Всем привет.
Такая ситуация - есть значения индикатора в csv файле, записанном из одиночного прогона тестера - значения индикатора рассчитываются на каждом тике.
Хочу использовать эти данные для оптимизации в режиме OHLC - проверять на совпадение условия в конкретную минуту торгов. Оптимизацию на тиках лучше не предлагать - такой тест кратно разростётся и для подобной оптимизации излишний.
Проблема в том что файл большой - порядка миллиона строк, и соотносить на каждой минуте пару "дата, время - значение" - трудоёмко. 

Вот и думаю как поступить - пока вот какие мысли: создание кастомного символа и сравнение значений с ним; использование базы данных. Подскажите, какое решение было бы оптимальным, может кто решал такую задачу?

Так не логично ли рассчитать значение индикатора по OHLC и уже их сохранять?

В целом затея провальная на нулевом баре работать с показателями индикатора по OHLC.
Причина обращения: