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

 
Forester #:

Информация по макс продолжительной просадке интересна. Я сделал ее для всего полученного массива строк. Пока не обновлял код на сайте.
А вот с датой не совсем понятно, для чего это. Если сделать точку разделения на бек/форвард тесты (как я предположил), то надо и статистики по ним отдельно посчитать в 2 таблички (макс периоды просадок там тоже будут).

Сделал с полным расчетом статистик для бек/форвард тестов


Файл обновил.
 
Forester #:

А вот с датой не совсем понятно, для чего это.

Захотелось посмотреть с 2020 года - пожалуйста. С 2023 - без проблем. Просто иногда плевать, что там было в 2010 году. А он показывает, что самая большая продолжительность пришлась на 2010.
 
fxsaber #:
Захотелось посмотреть с 2020 года - пожалуйста. С 2023 - без проблем. Просто иногда плевать, что там было в 2010 году. А он показывает, что самая большая продолжительность пришлась на 2010.
А - понял смысл. Не для тестера с одним экспертом/стратегией, а для реального счета, на котором разные идеи тестировались.

Установка Forward даты поможет разделить статистику.

 
Forester #:
А - понял смысл. Не для тестера с одним экспертом/стратегией, а для реального счета, на котором разные идеи тестировались.

Сам использовал бы только для Тестера. Реал-просадки совсем неинтересны. 

 
Forester #:
А что там не так?

Потенциально опасный стиль. Например, через какое-то время захочется написать свою функцию кастом-форматирования даты и её вызов напишут по привычке в одной супер-пупер длинной строке:

Print("From " + TimeToString(From[i], TIME_DATE) + " MaxLengthDD = " + (string)(MaxLengthDD(BeginDD, EndDD, From[i]) / (25 * 3600)) + " days: " + Format(BeginDD) + " - " + Format(EndDD));

Но нет гарантии, что Format-ы вызовутся после MaxLengthDD, только потому что они среди слагаемых указаны правее.

В принципе, однострочная супердлинная запись имеет негативные стороны: сложно читать и понимать (фактически повторять в уме разбор выражения как это делает компилятор, но человек - не компилятор все таки), сложно отлаживать. А выигрыша в быстродействии такая компактная запись тоже не дает.

 

Супер библиотека! Спасибо автору!

Пожелания по доработкам:
 - при повторном клике на чарт скрывать интерактивный чарт (или добавить для этого другой механизм),
 - исходник сохранить в UTF-8, чтобы его нормально читали всякие GitHub-ы (это единоразовое мероприятие, которое ничем не грозит, но добавит удобства)
 - имя файла проверять на наличие запрещенных символов (\ / : * ? " < > | :), и заменять их на что-то нейтральное (-, например)
 - добавить параметр для сохранения отчетов в общую папку терминалов, чтобы не искать их по папкам агентов


Еще раз благодарю, очень удобный инструмент!

 
Andrey Khatimlianskii #:

Супер библиотека! Спасибо автору!

Пожелания по доработкам:
 - при повторном клике на чарт скрывать интерактивный чарт (или добавить для этого другой механизм),
 - исходник сохранить в UTF-8, чтобы его нормально читали всякие GitHub-ы (это единоразовое мероприятие, которое ничем не грозит, но добавит удобства)
 - имя файла проверять на наличие запрещенных символов (\ / : * ? " < > | :), и заменять их на что-то нейтральное (-, например)
 - добавить параметр для сохранения отчетов в общую папку терминалов, чтобы не искать их по папкам агентов


Еще раз благодарю, очень удобный инструмент!

Все это сделал.
Добавил в вызов 2 новых параметра
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){...}
common_path - сохранение в общую папку терминалов. Чтобы файлы не перезаписывались другим агентом при оптимизации, к именам файлов добавлен номер агента (3000, 3001,...). При сохранении в папке тестера (false), они сохраняются в папке агента проводившего расчеты.
fileANSI - сохранение в ANSI кодировке или в UNICODE. Размер файлов UNICODE в 2 раза больше и они дольше обрабатываются, если вы выгружаете много данных, например 1 Гб, то экономнее использовать ANSI. UNICODE добавлен для совместимости с сторонними сервисами, если это вам нужно.

Проверка символов и кнопка для скрытия тоже добавлены, но описывать их не стал.
 
Forester #:
Добавил в вызов 2 новых параметра
Так и будут добавляться новые параметры. Поэтому лучше один раз прописать сигнатуру, где на вход подается структура условий. Тогда сигнатура меняться не будет. Так сделал в Report.
 
fxsaber #:
Так и будут добавляться новые параметры. Поэтому лучше один раз прописать сигнатуру, где на вход подается структура условий. Тогда сигнатура меняться не будет. Так сделал в Report.
Возможно лучше. Но уже надо поддерживать текущую схему вызовов, для совместимости с уже готовыми программами, которые используют библиотеку, чтобы не пришлось кому-то править код.
 
Forester #:
Возможно лучше. Но уже надо поддерживать текущую схему вызовов, для совместимости с уже готовыми программами, которые используют библиотеку, чтобы не пришлось кому-то править код.

Перегрузка в помощь.