Быстрая JavaScript версия библиотеки Report для торговых команд в стиле MT4 реализованных через MT4Orders или Virtual.
Работает до 10 раз быстрее чем Report, размер НТМL файлов меньше, может выгрузить и отобразить до 5.4 млн. строк отчета (скриншот ниже).
Функционал: (совпадает с Report)
Отличия от Report:

График TurnOver заменен на график с P/L для покупок, продаж и их суммы. Так можно понять бычья стратегия у вас получилась или медвежья. Возможно решите отключить одно из направлений торговли, если оно невыгодно. Под ним показан график цены закрытия инструмента, на нем удобно отслеживать, как при росте курса приносят прибыль покупки и приносят убыток продажи, а при падении курса - наоборот. Если будет несколько инструментов, то их цены будут все показаны вместе, лучше выбрать фильтром только один из инструментов, чтобы видеть только его цену.

Добавлены графики проскальзываний и кумулятивных проскальзываний при открытии, закрытии и их сумме, идея взята от сюда https://www.mql5.com/ru/blogs/post/760817

Примеры использования:
#include <MT4Orders.mqh> #define REPORT_BROWSER // Open report in browswer automatically. Require DLL. //#include <Report.mqh> #include <MT4Orders_QuickReport.mqh>// void OnInit(){} void OnTick(){ strategy (); } void OnDeinit(const int reason ){ QuickReport("report", true); } int TimeHour ( datetime time ){return((int)((time / 3600) % 24));}//current hour in day. 3600 sec in hour void strategy (){ string Symb = _Symbol; MqlTick Tick; if (SymbolInfoTick(Symb, Tick)){ if(TimeHour(TimeCurrent())<23 && TimeHour(TimeCurrent())>0 ){return;} OrderSend(Symb, OP_BUY, 10, Tick.ask, 0, Tick.bid, Tick.bid, NULL, 1000); OrderSend(Symb, OP_SELL, 10, Tick.bid, 0, Tick.ask, Tick.ask, NULL, 1000); } }
#include <MT4Orders.mqh> #include <fxsaber\Virtual\Virtual.mqh> #define REPORT_BROWSER // Open report in browswer automatically. Require DLL. //#include <Report.mqh> #include <MT4Orders_QuickReport.mqh> double OnTester() { //or OnDeinit() for (int v = 0 ; v <= VIRTUAL::Total(); v++){if (VIRTUAL::SelectByIndex(v)){QuickReport("report_"+(string)v, true, v);}} //show report for each tester return(AccountInfoDouble(ACCOUNT_BALANCE)); }
void QuickReport(string file_name, bool is_open_file_in_browser=true, int virtual_number=0, bool hide_account_and_name=false, bool common_path=false, bool fileANSI=true){...}file_name - имя файла для записи
Пример отчета для 5.4 млн. сделок:
( Virtual с отчетом больше 100 000 строк на моем компьютере съедает всю память и зависает, по этой причине и сделал JavaScript версию)
Этот отчет показал Firefox. Chrome зависает, ему нужны файлы поменьше.
Больше 5.4 млн строк можно выгрузить в файл, но броузер Firefox больше уже не может обработать.
При загрузке этого отчета броузер задействовал около 6Гб памяти (обрабатывал около 1 минуты), потом освободил, после чего отчет отобразился на странице: (Report задействует 5-6 Гб от 80-100 тыс строк)

Детальный график с увеличением.
При клике по любому графику откроется интерактивный чарт с этим графиком, с возможностью увеличения для детального просмотра.
Есть 2 варианта:
Можно выбрать Logarithmic - логарифмический масштаб (может пригодиться, если у вас экспоненциальный рост баланса). Для Highcharts можно выбрать дополнительно Ordinal - равномерный шаг (как в отчетах тестера MetaQuotes). После изменения этих пунктов, нужно снова кликнуть на нужный график для применения выбранной опции.
Пример с Google.chart : (изменение масштаба колесиком мыши)
Пример с Highcharts : (изменение масштаба выделением нужного участка мышью)
Исполнившиеся отложенные ордера МТ5
Для ордеров, которые появились в результате срабатывания отложенных ордеров темно-синим цветом в поле Type указан тип отложенного ордера (Buy limit, Sell limit, Buy stop или Sell stop), время от установки до срабатывания ордера в секундах и тип активизировавшегося ордера/позиции. Эта информация показывается только для MT5 терминала или тестера, виртуальные тестеры или MT4 не предоставляют эту информацию.

Графики прибыли и убытки по часам и дням недели.
В отличие от тестера MQ прибыли и убытки отображаются не на момент их возникновения, а по времени входа в сделку. Так легче понять, что входы в определенном часе в основном убыточные и просто отключить этот час для входов.
Дополнительно сделаны графики по покупкам и продажам.
Если кликнуть на любой из этих графиков, то откроются таблицы с точными суммами по часам и дням. Так же есть чекбоксы, которыми можно отключить часы и дни от входов - графики и таблицы будут перестроены и вы сможете оценить результат без проведения дополнительных тестов. Получился аналог BestInterval от Fxsaber, но более грубый (с шагом в 1 час) и без автоматизации. Для уменьшения шага добавлен интервал M10.

Какие-то почасовые или подневные всплески прибыли на этих графиках можно увидеть на небольших периодах тестирования. На графиках выше тест за 1 месяц с трендом вверх. Поэтому покупки в прибыли, а продажи в убытке. Если увеличить тест до года и более, когда пройдет несколько крупных трендов в обоих направлениях, то все станет равномерно размазанным и как правило убыточным, так что что-то отключать и получить значительное изменение прибыли уже вряд ли получится.
Вот что стало на той же стратегии с тестом за 1 год: (отключать надо почти все)
Так что основой вашей стратегии это вряд ли может стать.
Фильтрация ордеров.
Для отображения ордеров по разным параметрам добавлено множество фильтров.
Buy, Sell, Buy limit, Sell limit, Buy stop, Sell stop, Balance - можно убирать из отчета любой их типов ордеров.
Symbols - покажет весь список использованых инструментов, можно выбрать только нужные.
Magic - можно показать ордера только с указаным Magic
Min Lot, Max Lot - можно выбрать ордера с нужными лотами
Negative Slippage - можно показать ордера с отрицательным проскальзыванием по отдельности для открытия ордеров или для закрытия
Swap - покажет ордера со свопами > 0
Min LengthTime - ордера с длительностью более указанного времени (указывается по числу дней, часов, минут и секунд)
Max LengthTime - ордера с длительностью менее указанного времени
Open Time - время открытия ордера от и до указанных дат
Close Time - время закрытия ордера от и до указанных дат
TP, SL - ордера завершившиеся срабатыванием TP или SL
Profits, Losses - ордера в прибыли или убытке (комиссии и свопы не учтены, они могут сделать итоговую прибыль отрицательной)
Rejects - не исполненные ордеры
Кнопка Reset позволяет сбросить фильтры в значения по умолчанию и показать все ордера без фильтрации.
Дополнительные опции:

П.С. Чем больше комментариев к сделкам, тем меньшее число строк может быть отображено. Отчет на 5,4 млн строк был без комментариев, кроме "end of test". Так что лучше их не ставить, если отчет будет больше 4 млн сделок.
П.П.С. Работает как в MT5, так и в MT4. Спасибо fxsaber за доработку для MT4.
Варианты улучшения:
iMy
В графическом представлении теханализ представляет трендовую линию справа от свечей на пробой (зеленым). После пробоя предполагается движение по красной линии.
Программирование на MQL5 для трейдеров — исходные коды из книги. Часть 7
В заключительной седьмой части книги рассматриваются расширенные возможности MQL5 API, которые пригодятся при разработке программ для MetaTrader 5. Некоторые из них — пользовательские финансовые инструменты и встроенный экономический календарь, а другие — универсальные технологии, такие как сетевые функции, базы данных и криптография.
MA Price display
Индикатор написан по просьбе по просьбе на форуме.
Input_Struct
Структура входных параметров