MQL5 Ордера истории - страница 5

 
fxsaber #:

Код собирает данные по всем позициям в истории торговли. Не в курсе причин вашего ора.

Да конечно, собирает по всем позициям в истории, но всё разбросано так, что глазами не соберёшь. А вы этого понять не хотите или просто прикидываетесь. Или из меня пытаетесь сделать идиота, это и раздражает. Ну я могу подождать пока вы напишете…

 
Alexey Viktorov #:

Да конечно, собирает по всем позициям в истории, но всё разбросано так, что глазами не соберёшь. А вы этого понять не хотите или просто прикидываетесь. Или из меня пытаетесь сделать идиота, это и раздражает. Ну я могу подождать пока вы напишете…

Вот счет с двумя закрытыми позициями.

Запускаем на нем мой код, который собирает данных обо всех позициях (в структуры, подобные вашей).

Результат запуска ниже. Все, как на картинке.

    [symbol]   [ticket]   [lot] [priceOpen] [priceClose]          [timeOpen]         [timeClose]  [profit] [commission] [swap] [type]
[0] "CADCHF" 2119992140 1.00000     0.64568      0.64540 2023.11.21 21:04:27 2023.11.21 21:05:00 -29.03000      0.00000 0.0000      0
[1] "AUDUSD" 2119992806 1.00000     0.65533      0.65542 2023.11.21 21:04:42 2023.11.21 21:05:00  -8.25000      0.00000 0.0000      1
Работает очень быстро и точно во всех рыночных ситуациях.
 

Инсайд.

HistoryPosition - неопубликованный функционал MQL5-языка.
HistoryPosition - неопубликованный функционал MQL5-языка.
  • www.mql5.com
HistoryPositionSelect Выбирает закрытую позицию для дальнейшей работы с ней по указанному тикету. Возвращает true при успешном завершении функции. Возвращает false при неудачном завершении функции
 
fxsaber #:

Вот счет с двумя закрытыми позициями.

Запускаем на нем мой код, который собирает данных обо всех позициях (в структуры, подобные вашей).

Результат запуска ниже. Все, как на картинке.

Работает очень быстро и точно во всех рыночных ситуациях.

Понятно. А на счёте на котором больше 30К закрытых позиций запускать страшно? Да действительно, а вдруг терминал вообще зависнет. 

 
Alexey Viktorov #:

Понятно. А на счёте на котором больше 30К закрытых позиций запускать страшно? Да действительно, а вдруг терминал вообще зависнет. 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

MQL5 Ордера истории

fxsaber, 2023.11.21 17:08

69631 раз вызывался HistorySelect. 170 мс.

2023.11.21 18:02:53.857 Scripts script Test6 (CADCHF,M1) loaded successfully
2023.11.21 18:02:54.028 Scripts script Test6 (CADCHF,M1) removed
 
fxsaber #:

Надоело. Все уже давно знают, что вы тут «самый самый» а все остальные не смогут это написать…

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

MQL5 Ордера истории

fxsaber, 2023.11.21 15:40

Никто на форуме - включая и меня. Даже свою библиотеку не смог бы написать, если бы исчез исходник. Слишком сложно.


Но всё-же я сомневаюсь, что сложней ваших кодов вряд-ли что-то можно встретить.
 
Alexey Viktorov #:

Надоело. Все уже давно знают, что вы тут «самый самый» а все остальные не смогут это написать…

Почему трудолюбие это плохо? Или он обязательно должен быть как все? 
 
Alexey Viktorov #:

Но всё-же я сомневаюсь, что сложней ваших кодов вряд-ли что-то можно встретить.

Вроде, просто.

// Пример работы с закрытыми позициями.

#include <HistoryPosition.mqh> // https://www.mql5.com/ru/blogs/post/755007

// Создаем структуру некоторых свойств закрытой позиции.
struct POSITION_HISTORY
{
  datetime TimeOpen;
  string Symbol;
  ENUM_DEAL_TYPE Type;
  ulong Ticket;
  double Volume;
  double PriceOpen;
  double StopLoss;
  double TakeProfit;
  datetime TimeClose;
  double PriceClose;
  double Commission;
  double Swap;
  double Profit;
  ulong Magic;
  string Comment;

  // Заполнение структуры соответствующими данными закрытой позиции.
  void Set() // https://www.mql5.com/ru/blogs/post/755007
  {
    this.TimeOpen = (datetime)HistoryPositionGetInteger(POSITION_HISTORY_TIME_OPEN);
    this.Symbol = HistoryPositionGetString(POSITION_HISTORY_SYMBOL);
    this.Type = (ENUM_DEAL_TYPE)HistoryPositionGetInteger(POSITION_HISTORY_TYPE);
    this.Ticket = HistoryPositionGetInteger(POSITION_HISTORY_TICKET);
    this.Volume = HistoryPositionGetDouble(POSITION_HISTORY_VOLUME);
    this.PriceOpen = HistoryPositionGetDouble(POSITION_HISTORY_PRICE_OPEN);
    this.StopLoss = HistoryPositionGetDouble(POSITION_HISTORY_SL);
    this.TakeProfit = HistoryPositionGetDouble(POSITION_HISTORY_TP);
    this.TimeClose = (datetime)HistoryPositionGetInteger(POSITION_HISTORY_TIME_CLOSE);
    this.PriceClose = HistoryPositionGetDouble(POSITION_HISTORY_PRICE_CLOSE);
    this.Commission = HistoryPositionGetDouble(POSITION_HISTORY_COMMISSION);
    this.Swap = HistoryPositionGetDouble(POSITION_HISTORY_SWAP);
    this.Profit = HistoryPositionGetDouble(POSITION_HISTORY_PROFIT);
    this.Magic = HistoryPositionGetInteger(POSITION_HISTORY_MAGIC);
    this.Comment = HistoryPositionGetString(POSITION_HISTORY_COMMENT);
  }
};

void OnStart()
{
  POSITION_HISTORY Positions[]; // Сюда будем собирать данные обо всех закрытых позициях.

  // https://www.mql5.com/ru/blogs/post/755007
  for (uint i = ArrayResize(Positions, HistoryPositionsTotal()); (bool)i--;) // Бежим по всем закрытым позициям.
    if (HistoryPositionGetTicket(i)) // Если выбрали закрытую позицию по индексу,
      Positions[i].Set();            // записываем ee данные.

  ArrayPrint(Positions); // Распечатали информацию обо всех закрытых позициях.
}

Обычный MQL5.

 
Yevhenii Levchenko #:
Почему трудолюбие это плохо? Или он обязательно должен быть как все? 

Нет не плохо. Как все никто не должен быть. Но выпячивать себя и всем подряд навязывать свою библиотеку, которую прочесть доставляет неимоверный труд, я не приветствую. Потому и надоело всё…

Извините, просто сорвался… Попробуйте прочесть код приведённый выше. Чтобы всё понять надо перерыть тысячи строк непонятной библиотеки и блога. Пока дойдёшь до понимания свихнёшься и попадёшь в дурку…

 
Alexey Viktorov #:

Нет не плохо. Как все никто не должен быть. Но выпячивать себя и всем подряд навязывать свою библиотеку, которую прочесть доставляет неимоверный труд, я не приветствую. Потому и надоело всё…

Извините, просто сорвался… Попробуйте прочесть код приведённый выше. Чтобы всё понять надо перерыть тысячи строк непонятной библиотеки и блога. Пока дойдёшь до понимания свихнёшься и попадёшь в дурку…

Библиотеки нужны, чтобы ими пользоваться не для чтения за ужином