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

 

Report:

Библиотека для MetaTrader 4/5, которая позволяет формировать отчеты по истории торгов.

В обеих платформах (MetaTrader 4/5) для сохранения отчета (в виде MetaTrader 4) можно запустить такой скрипт:

#include <Report.mqh>

void OnStart()
{
  REPORT::ToFile("Report.htm");
}

и увидеть в соответствующем файле сформированный HTML-отчет:

В MetaTrader 5 это может быть особенно полезно, т.к. наглядных HTML-отчетов, как в MetaTrader 4, он не предоставляет (на момент публикации библиотеки).


Автор: fxsaber

 

Добавление этих двух строк так же сохранит отчеты каждого прохода оптимизатора.

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

Только сейчас сообразил, что это же можно было сделать и для MT4.

 
fxsaber:

Здравствуйте. 

Для четвёрки отчёт в виде графика как у вас на скрине не доступен ?


 
Sergey Kolemanov:

Для четвёрки отчёт в виде графика как у вас на скрине не доступен ?

Штатно не доступен, но можете сделать так

// Отчет вместе с графиком под MT4
#property strict

// https://www.mql5.com/ru/docs/standardlibrary/graphics/cgraphic
#include <Graphics\Graphic.mqh> // MQL5\Include\Graphics\Graphic.mqh
#include <Report.mqh> // закомментировать строки 295, 350, 382, 404, 434, 455

void OnStart()
{
//  REPORT::ToChart(); // выводит график на чарт
  REPORT::ToFile("Report.htm"); // сохраняет отчет вместе с графиком
}
 

Штатные MT4-отчеты тестера не содержат данных о комментариях.

И все отчеты (MT4/5 обычный и тестерный) не содержат данных по мэджикам.


Данная библиотека всегда показывает и мэджики и комментарии.

Библиотека написана так, что встраивание других показателей делается просто

const string REPORT:: Shablon = FIELD(N) + FIELD(Ticket) + FIELD(OpenTime) + FIELD(Type) + FIELD(Lots) + FIELD(Symbol) +
                                FIELD(OpenPrice) + FIELD(StopLoss) + FIELD(TakeProfit) + FIELD(CloseTime) + FIELD(ClosePrice) +
                                FIELD(Commission) + FIELD(Swap) + FIELD(Profit) + FIELD(Comment) + FIELD(MagicNumber);

  static string OrderToString( const int Num )
  {
//...
    ADD(Ticket, OrderTicket());
    ADD(OpenTime, OrderOpenTime());
//...

Например, из полезного возможно добавить поля величин проскальзывания каждой позиции (доступно в MT5) или доп. комментарии

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

Скрипт для комментария сделки MT4 или MT5

Alexander Bykov, 2017.07.24 11:49

Привет, стал актуальным вопрос комментирования сделок в МТ. Представьте себе ситуацию - торговля требует освещения ситуации в какой-то временной момент, например, скажем, у вас инвестор требует как у управляющего. Предоставляется отсчет, все классно, но комментариев нет. А отчет за месяц, вот работа, сиди вспоминай. Удобно будет скрипт сделать "Горячее комментирование" в МТ4 или в МТ5. Если есть такой выложенный, где, прикрепите ссылку, называется может, как.
 

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

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

 
fxsaber:

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

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

А что возвращает TERMINAL_BUILD на агенте?

 
Stanislav Korotky:

А что возвращает TERMINAL_BUILD на агенте?

Свой билд.

 
fxsaber:

Свой билд.

Нет путаницы с __MQL5BUILD__? По идее TERMINAL_BUILD должен браться из рантайма (а на агенте нет "своего билда", но есть его собственный билд).

 
Stanislav Korotky:

Нет путаницы с __MQL5BUILD__? По идее TERMINAL_BUILD должен браться из рантайма (а на агенте нет "своего билда", но есть его собственный билд).

Ну это же совсем разные показатели.

 
fxsaber:

Ну это же совсем разные показатели.

Конечно, разные. Просто интересно, почему выполняющаяся на агенте программа должна вернуть TERMINAL_BUILD локального терминала? [Разумеется запрашивать нужно в обработчиках событий, выполняющихся на агенте.] Если это так (хотя я сомневаюсь), смахивает на баг.

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