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

Alexey Viktorov:

Находишь последнюю позицию со свойством DEAL_ENTRY_OUT получаешь тикет по тикету находишь сделку DEAL_ENTRY_IN и всё. По ней и определяешь тип сделки. Для пущей уверенности, что позиция закрыта полностью можно ещё попытаться выбрать её по полученному тикету. Если не выбрана, значит закрыта полностью.

Надо попробывать покумекать, всегда было интересно почему разработчики до сих пор это не сделали, все есть, а узнать в какую сторону была выставлена позиция после ее закрытия нет возможности, нужно самому писать методы.
Konstantin Seredkin:
Надо попробывать покумекать, всегда было интересно почему разработчики до сих пор это не сделали, все есть, а узнать в какую сторону была выставлена позиция после ее закрытия нет возможности, нужно самому писать методы.

Действительно... И что это они не сделают чтобы по одной фразе "Накосить бабла" терминал давал-бы прибыль:))))

[Удален]
А почему, собственно, нельзя реализовать обращение к истории позиций? В смысле, стандартными средствами. 
Сергей Таболин:
А почему, собственно, нельзя реализовать обращение к истории позиций? В смысле, стандартными средствами. 

Потому, что позиция это производная от ордера и сделки. Мы работаем с ордером, в результате договорённостей происходит сделка. Дальше появляется позиция и опять-же ордер, сделка и нет позиции. Но в истории всегда можно отследить ВСЕ ордера и сделки повлиявшие на изменение позиции. И открою маленький секрет: В отличии от mql4 в mql5 можно изменить магик позиции во время модификации и даже во время закрытия. В МТ5 немножко не такое определение магика. В МТ4 это магик ордера, а в МТ5 это ID советника изменившего свойства позиции.

[Удален]
Alexey Viktorov:

Потому, что позиция это производная от ордера и сделки. Мы работаем с ордером, в результате договорённостей происходит сделка. Дальше появляется позиция и опять-же ордер, сделка и нет позиции. Но в истории всегда можно отследить ВСЕ ордера и сделки повлиявшие на изменение позиции. И открою маленький секрет: В отличии от mql4 в mql5 можно изменить магик позиции во время модификации и даже во время закрытия. В МТ5 немножко не такое определение магика. В МТ4 это магик ордера, а в МТ5 это ID советника изменившего свойства позиции.

Спасибо, это всё понятно.

Но, когда появляется позиция, было бы желательно её запомнить, так же как и её закрытие. Вот и получилась бы история позиций (как и история ордеров и сделок). Я до сих пор удивляюсь, что такой истории в МТ нет.

Впрочем, я понимаю, если бы да кабы во рту выросли грибы... )))

Так то это в терминале все есть, если в историю зайти, там все реализовано, было бы просто не плохо иметь к этому быстрый доступ


Добрый вечер , всем.

Подскажите, пож., у какого брокера есть торг.интрументы по индексам на МТ5, такие например как AUDLFX; EURLFX; USDLFX

Konstantin Seredkin:

Ребята, есть у кого готовый метод - функция которая возвращает тип последней закрытой позиции, именно позиции.

Понятно что как таковых позиций в истории не существует, просто не могу понять как собираются все что к ней принадлежит что бы понять какая позиция была последняя в лонг или шорт

Кимовские функции в помощь.

[Удален]

Не могу понять на что ругается оптимизатор?

2019.04.10 13:26:50.177 Core 8  genetic pass (13, 498) tested with error "critical runtime error 502 in OnTick function (array out of range, module Experts\xxxxxx.ex5, xxxxxx.mq5, line 384, col 73)" in 0:00:00.102

Код, на который ругается

            if(profit_level == EMPTY_VALUE
               && ((pos_set.order_direction == trend_up && (buffer_HMA7C[2] <= buffer_HMA7C[1] && buffer_HMA7C[1] >= buffer_HMA7C[0]) && buffer_HMA7C[0] > pos_set.order_price)
               ||  (pos_set.order_direction == trend_dn && (buffer_HMA7C[2] >= buffer_HMA7C[1] && buffer_HMA7C[1] <= buffer_HMA7C[0]) && buffer_HMA7C[0] < pos_set.order_price))
              )

Это буфер пользовательского индикатора, хэндл которого получен корректно и данные скопированы тоже корректно

      handle_HMA7C = iCustom(Symbol(),0,"my_used\\my_HMA7C_121",period_HMA7C);
      if(handle_HMA7C == INVALID_HANDLE)                                   // проверяем наличие хендла индикатора
      {
         Print("Не удалось получить хендл индикатора handle_HMA7C");       // если хендл не получен, то выводим сообщение в лог об ошибке
         return(INIT_FAILED);                                              // завершаем работу с ошибкой
      }
      else
      {
         Print("Получен хендл индикатора handle_HMA7C");
         ChartIndicatorAdd(ChartID(),0,handle_HMA7C);                      // подключаем индикатор к графику
      }
.........................................
//+------------------------------------------------------------------+
bool copyBuffers()
{
   int   nbars = 11;
   
   ArrayFree(rates);
   ArrayFree(buffer_HMA7C);
      
   ResetLastError();
   
   if(CopyRates(Symbol(),0,0,nbars,rates) < nbars) return(false);
   
      if(CopyBuffer(handle_HMA7C,0,1,nbars,buffer_HMA7C) < nbars )         // копируем данные из индикаторного массива в массив buffer_HMA7C
      {                                                                                         // если не скопировалось
         Print("Не удалось скопировать данные из индикаторного буфера в buffer_HMA7C");         // то выводим сообщение об ошибке
         Print("LastError = "+string(GetLastError()));
         return(false);                                                                         // и выходим из функции
      }
}


Здравствуйте! Что такое MQL5InfoString или MQL5InfoInteger? Где об этом почитать? в справке не нашел!