Библиотеки: MT4Orders - страница 33

 

Разобрался.

int i; // не работает

int i=0; //все работает

 
Vladislav Andruschenko:

такую интересную особенность заметил

Напишите короткий исходник воспроизведения данной особенности. Тогда можно будет действовать без гаданий.


Выбор по тикету работает

#include <MT4Orders.mqh>

void OnStart()
{
  TICKET_TYPE Tickets[];
  
  const int Size = ArrayResize(Tickets, OrdersHistoryTotal());
  
  for (int i = 0; i < Size; i++)
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
      Tickets[i] = OrderTicket(); // Запомнили тикеты
      
  for (int i = 0; i < Size; i++)
    if (OrderSelect(Tickets[i], SELECT_BY_TICKET)) // Выбрали по тикетам
      OrderPrint();
}
 
fxsaber:

Напишите короткий исходник воспроизведения данной особенности. Тогда можно будет действовать без гаданий.


Выбор по тикету работает


скорее всего инициализация переменных всему виной (у меня). 

разбираю дальше. 

 
Andrey Khatimlianskii:

Откопал в нашей переписке:

В этой задаче

Пример задачи с отложенным ордером: уровень установки ордера вычисляется исходя из истории цены, но корректируется на основании характера движения тиков. После срабатывания ордера и закрытия сделки советник не должен поставить ордер, основанный на том же ценовом уровне (но может быть скорректирован в этот момент на другую величину). Эту информацию (уровень, к которому относится ордер) я и храню в гл. переменной, привязанной к тикету. Можно, конечно, записывать ее в комментарий, но это не всегда достаточно удобно и надежно.

логично привязываться к OrderTicketOpen. Тогда нужно делать SELECT_BY_TICKET для TicketOpen-сделки, чего сейчас нет. Ну и добавлять SELECT_BY_TICKET для TicketOpen-ордера.

Понятно, что ENTRY_OUT-сделок для обоих вариантов TicketOpen может быть несколько, но выбор осуществляться должен только один. Однако, для подобных задач учета такая неоднозначность не помеха.

Хороший аргумент, спасибо. Мне не пришла в голову такая постановка.

 

интересно, что в отчетах мт5 все по другому считается, нежели в отчетах к мт4. 


в мт4 - сортировка идет по времени закрытия, а если время закрытия сделки одинаковое, то считается по тикету. 


так вот в мт5 по другому, в мт5 сортировка в отчетах идет по времени открытия сделок. 

неудобно. 



@fxsaber Как у Вас реализована сортировка? как в мт4 по времени закрытия? или как в мт5 по номеру тикета(время открытия)? 

 
Vladislav Andruschenko:

интересно, что в отчетах мт5 все по другому считается, нежели в отчетах к мт4. 

в мт4 - сортировка идет по времени закрытия, а если время закрытия сделки одинаковое, то считается по тикету. 

Это не так.

так вот в мт5 по другому, в мт5 сортировка в отчетах идет по времени открытия сделок. 

неудобно. 

И это не так.

@fxsaber Как у Вас реализована сортировка? как в мт4 по времени закрытия? или по номеру тикета(время открытия)? 

В MT5 сортировка по времени закрытия - именно так сам MT5 помещает свои записи в историю.

 
fxsaber:

Это не так.

И это не так.

В MT5 сортировка по времени закрытия - именно так сам MT5 помещает свои записи в историю.


я ориентируясь по отчету , выгруженному с мт4. 

когда делал индикатор статистики, то мои цифры не сходились с отчетом от мт4. 

опытным путем выяснил, что для идентичности всех цифр нужно сортировать все позиции по времени закрытия(а есливремя одинаковое, то сортируем эти позиции по сделкам)

по такому принципу все цифры статистики моего отчета и отчета с мт4 - идентичны. 

в случае с мт5 - я ничего не менял в своих расчетах а только применил Вашу библиотеку. и обнаружил, что сортировка в мт5 при выгрузке отчета - сортировка по времени открытия.  

а нет, менял. не работает правильно SELECT_BY_TICKET почему-то  

 
Vladislav Andruschenko:


я ориентируясь по отчету , выгруженному с мт4. 

когда делал индикатор статистики, то мои цифры не сходились с отчетом от мт4. 

опытным путем выяснил, что для идентичности всех цифр нужно сортировать все позиции по времени закрытия(а есливремя одинаковое, то сортируем эти позиции по сделкам)

по такому принципу все цифры статистики моего отчета и отчета с мт4 - идентичны. 

в случае с мт5 - я ничего не менял в своих расчетах а только применил Вашу библиотеку. и обнаружил, что сортировка в мт5 при выгрузке отчета - сортировка по времени открытия.  

а нет, менял. не работает правильно SELECT_BY_TICKET почему-то  

то что работает в мт4 идеально, не работает идеально в мт5. 

 
Vladislav Andruschenko:


я ориентируясь по отчету , выгруженному с мт4. 

когда делал индикатор статистики, то мои цифры не сходились с отчетом от мт4. 

опытным путем выяснил, что для идентичности всех цифр нужно сортировать все позиции по времени закрытия(а есливремя одинаковое, то сортируем эти позиции по сделкам)

по такому принципу все цифры статистики моего отчета и отчета с мт4 - идентичны. 

в случае с мт5 - я ничего не менял в своих расчетах а только применил Вашу библиотеку. и обнаружил, что сортировка в мт5 при выгрузке отчета - сортировка по времени открытия.

Выполните

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

Библиотеки: Report

fxsaber, 2018.12.11 12:28

Чтобы сразу понять, как выглядит отчет, достаточно на своем счете запустить этот скрипт

#define REPORT_BROWSER      // Создание отчета с запуском браузера - требует разрешения DLL.
#include <Report.mqh> // https://www.mql5.com/ru/code/18801

void OnStart()
{
  REPORT::ToFile(); // Создание и открытие отчета в браузере.
}

а нет, менял. не работает правильно SELECT_BY_TICKET почему-то  

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

Библиотеки: MT4Orders

fxsaber, 2019.03.11 21:40

Выбор по тикету работает

#include <MT4Orders.mqh>

void OnStart()
{
  TICKET_TYPE Tickets[];
  
  const int Size = ArrayResize(Tickets, OrdersHistoryTotal());
  
  for (int i = 0; i < Size; i++)
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
      Tickets[i] = OrderTicket(); // Запомнили тикеты
      
  for (int i = 0; i < Size; i++)
    if (OrderSelect(Tickets[i], SELECT_BY_TICKET)) // Выбрали по тикетам
      OrderPrint();
}
 
Vladislav Andruschenko:

то что работает в мт4 идеально, не работает идеально в мт5. 

К сожалению, без кода такие заявления никакого конструктива на вызовут.

Причина обращения: