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

 
fxsaber:

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


Согласен. 

запустил Ваш report - Все ок. 

ищу ошибку у себя. 

Спасибо. 


P/S/ 

Пытаюсь понять Ваш код, не умещается в моей голове. 


но вот обнаружил такое:

      if (Sort ? OrderSelect((int)Tickets[i][TICKET_INDEX], SELECT_BY_TICKET) : (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) && Filter.Is())) // int - (Sort == true) only for MQL4.

Значит все таки что-то там по сортировке есть? 


#ifdef __MQL5__
      static const bool Sort = false;
    #else // __MQL5__
      #ifdef __VIRTUAL__
        static const bool IsTester = ::MQLInfoInteger(MQL_TESTER);

        const bool Sort = !IsTester && !VIRTUAL::GetHandle();
      #else // __VIRTUAL__
        static const bool Sort = !::MQLInfoInteger(MQL_TESTER);
      #endif // __VIRTUAL__
 
Vladislav Andruschenko:

Пытаюсь понять Ваш код, не умещается в моей голове. 

но вот обнаружил такое:

Значит все таки что-то там по сортировке есть? 

Код кроссплатформенный. Код сортировки выполняется там только для MT4.

Код там ужасный, т.к. это переделка по месту одноименного скрипта 2006 года.
 
fxsaber:

Код кроссплатформенный. Код сортировки выполняется там только для MT4.

Код там ужасный, т.к. это переделка по месту одноименного скрипта 2006 года.


В общем история такая: 

в 2012 году я делал индикатор сбора статистики и собирал все в HTML для мт4. 

долго тогда мучался и забросил его (как и сотни других проектов). 

в 2016 я нашел этот проект и решил его доделать, и доделал. Но мучался я с сортировкой ордеров (в истории) и для того, чтобы результаты были идентичные с отчетом с мт4 - я сделал сортировку по времени закрытия, 

но там тоже были свои нюансы, а именно:

если время закрытия одинаковое, иногда брокер закрывает не по порядку (если сработал общий стоплосс) а закрывает тикеты в разброс (иногда такое встречается) 

Эту проблему я решил.

MT4 и отчеты с мт4 и с моего индикатора - одинаковые. Как и с Вашим report 


Большинство пользователей просили сделать то же самое на мт5. 

Городить свою библиотеку конечно же лень, я взял Вашу библиотеку - она очень интересная и решает много проблем (ХЕДЖ? респект, Лайк, уважуха)


Я ничего не менял в своем коде - подключил Вашу библиотеку MT4Orders - Но я обнаружил, что мой код в нем не работает (причин пока не знаю, возможно это моя лень и криворукость)


В мт4: если время закрытия одинаковое, иногда брокер закрывает не по порядку (если сработал общий стоплосс) а закрывает тикеты в разброс (иногда такое встречается) 

в мт5: я сделал без этой сортировки , а сделал как есть, начиная с времени закрытия, как и у ВАС


а теперь результаты :





Как видите результаты в вашем отчете и в моем отчете идентичны. Так и должно быть вроде бы. 


но вот отчет с мт5 имеет другую сортировку 



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

и выражается она не в сортировке (от конца списка, или с  начала списка) а по времени открытия. 

На больших отчетах то дает разницу в статистике (например непрерывный выигрыш)


вот что я хотел сказать... 

Поэтому и пытаюсь понять все до конца. 

Извините если запутал.

Продолжайте в том же духе, Вы делаете много пользы. 

 
Vladislav Andruschenko:

Как видите результаты в вашем отчете и в моем отчете идентичны. Так и должно быть вроде бы. 


но вот отчет с мт5 имеет другую сортировку 



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

и выражается она не в сортировке (от конца списка, или с  начала списка) а по времени открытия. 

На больших отчетах то дает разницу в статистике (например непрерывный выигрыш)

Действительно, текущий MT5-отчет позиций имеет сортировку по времени открытия. Отчет по позициям был сделан разработчиками недавно и без заморочек. Поэтому получилось так сыро. Почти уверен, что с этим и связана столь нелогичная сортировка у них. Если указать, думаю, поправят.

Что касается непрерывных выигрышей, то они никак не связаны с их отчетом по позициям. Их отчет по позициям - позднее дополнение, которое на статистику не влияет.

 
fxsaber:

Действительно, текущий MT5-отчет позиций имеет сортировку по времени открытия. Отчет по позициям был сделан разработчиками недавно и без заморочек. Поэтому получилось так сыро. Почти уверен, что с этим и связана столь нелогичная сортировка у них. Если указать, думаю, поправят.

Что касается непрерывных выигрышей, то они никак не связаны с их отчетом по позициям. Их отчет по позициям - позднее дополнение, которое на статистику не влияет.

Спасибо за понимание. 

Пока пусть будет так, позже я попытаюсь выяснить все нюансы. 

Спасибо за библиотеку. 

 
Vladislav Andruschenko:

Я ничего не менял в своем коде - подключил Вашу библиотеку MT4Orders - Но я обнаружил, что мой код в нем не работает (причин пока не знаю, возможно это моя лень и криворукость)

Как видите результаты в вашем отчете и в моем отчете идентичны. Так и должно быть вроде бы

Эти две фразы противоречат друг другу.

 
fxsaber:

Эти две фразы противоречат друг другу.

я имел ввиду, что в своем мт4 коде я делал сортировку по времени закрытия, но если время закрытия одинаковое, то я делал сортировку по номеру тикетов (я встречал иногда счета, где закрытие позиций было не по порядку тикетов, из-за этого общая статистика страдала). - Статистику я подстраивал под отчет с мт4. Не обращайте внимание. У меня свои тараканы в голове. 

в мт5 почему то этот код не сработал и я без сортировки просто делал отчет. 

Поэтому в мт5 у нас с Вами получились одинаковые результаты. Нужно ли было заморачиваться? Сейчас я не вижу ошибок даже без сортировки. Может что-то поменялось за 3 (7) года

Совершение сделок - Торговые операции - MetaTrader 5
Совершение сделок - Торговые операции - MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
 
// Список изменений:
// 13.03.2019
//   Add: Добавлена OrderTicketID() - PositionID MT5-сделки или MT5-позиции, тикет отложенного MT4-ордера.
//   Add: SELECT_BY_TICKET действует для всех MT5-тикетов (и MT5-PositionID).
 
Супер! Как я понимаю, это решает проблему выбора SELECT_BY_TICKET в истории (в условиях гарантированного отсутствия частичного исполнения)?
 
Ilya Malev:
Супер! Как я понимаю, это решает проблему выбора SELECT_BY_TICKET в истории (в условиях гарантированного отсутствия частичного исполнения)?
#include <MT4Orders.mqh>

#define Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK)

void OnStart()
{
  const TICKET_TYPE Ticket = OrderSend(_Symbol, OP_BUY, 1, Ask, 100, 0, 0); // Открыли позицию.
  
  if (OrderSelect(Ticket, SELECT_BY_TICKET))
    OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 100);         // Закрыли позицию.
    
  if (OrderSelect(Ticket, SELECT_BY_TICKET)) // Сработает возможность выбора по любому MT5-тикету.
    OrderPrint();
}

Это пример самого примитивного использования.

Благодарен Вам, @Andrey Khatimlianskii и @Igor Makanu за то, что "добили". В голову не приходили задачи, которые были озвучены.


В частности, сейчас можно даже на неттинге следить за судьбой отложки на основании ее тикета при открытии.

Сложно составить пример и объяснить все тонкости того, что сделано. Попробуйте различные ситуации (и частичное исполнение) SELECT_BY_TICKET по OrderTicket, OrderTicketOpen, OrderTicketID и любым MT5-тикетам.

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