Ставь лайки и следи за новостями
Поставь на него ссылку - пусть другие тоже оценят
Оцени его работу в терминале MetaTrader 5
Код, который записывает графики баланса и капитала и рассчитывает дополнительные критерии оптимизации - библиотека для MetaTrader 5
- Просмотров:
- 36
- Рейтинг:
- Опубликован:
-
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу
Я решилподелитьсякодом избольшогопроекта , разработанного в отдельнойбиблиотеке .
Если у вас есть доступ к коду эксперта, вы можете сохранять графики баланса и капитала и рассчитывать дополнительные критерии оптимизации, добавляя дополнительный код из этой библиотеки.
Скачайте файл Advanced Optimization Report Saver.mqh по прикрепленной ссылке и сохраните его в папке терминала \MQL5\Include\
Добавьте код, соединяющий скачанный файл: (вы можете добавить его под последней строкой кода вашего эксперта или в любом другом месте)
#include <Advanced Optimization Report Saver.mqh> Затем необходимо добавить вызовы экспортированных функций к существующим функциям в вашем эксперте: (если их нет, добавьте их)
void OnTick(){ //... ваш код //Сохраните графики баланса и капитала save_OnTick(TimeCurrent(), AccountInfoDouble(ACCOUNT_BALANCE), AccountInfoDouble(ACCOUNT_EQUITY)); } void OnTesterInit() { //... ваш код save_OnTesterInit();//print to chart "Не закрывайте это окно до завершения оптимизации!" } void OnTesterDeinit(){ //... ваш код save_OnTesterDeinit();// получить кадры } double OnTester(){ //... ваш код //сохраните все пользовательские значения: double AvgPips=0; save_Add( AvgPips, 2, "Custom 1", true);//значение, цифры, имя, сортировать_от_минимума_до_макса save_Add( TesterStatistics( STAT_PROFIT ), 2, "Custom 2"); double Custom = 0;//Ваш индивидуальный фитнес saveCharts(Custom);//сохраните окончательный капитал, все сделки... return Custom; }
функции save_Add позволяют добавлять собственные критерии, которые вы хотите включить в отчет :
save_Add( AvgPips, 2, "Custom 1", true);//значение, цифры, имя, сортировать_от_минимума_до_макса
save_Add( TesterStatistics( STAT_PROFIT ), 2, "Custom 2");
Например, давайте добавим этот код в советник Moving Average из папки Examples (...\MQL5\Experts\Examples\Moving Average\MovingAverage.mq5). Сначала скопируйте исходный советник и назовите его Moving Average Charts.mq5. Теперь добавьте в него код из инструкции выше.
Изменения находятся только в самом конце кода, начиная с функции OnTick() после строки CheckForOpen();:
void OnTick(void) { //--- if(SelectPosition()) CheckForClose(); else CheckForOpen(); //Сохраните графики баланса и капитала save_OnTick (TimeCurrent(), AccountInfoDouble( ACCOUNT_BALANCE), AccountInfoDouble( ACCOUNT_EQUITY)); } void OnTesterInit() { //... ваш код save_OnTesterInit();//print to chart "Не закрывайте это окно до завершения оптимизации!" } void OnTesterDeinit(){ //... ваш код save_OnTesterDeinit();// получить кадры } double OnTester(){ //... ваш код //сохраните все пользовательские значения: double AvgPips=0; save_Add( AvgPips, 2, "Custom 1", true);//значение, цифры, имя, сортировать_от_минимума_до_макса save_Add( TesterStatistics( STAT_PROFIT ), 2, "Custom 2"); double Custom = 0;//Ваш индивидуальный фитнес saveCharts(Custom);//сохраните окончательный капитал, все сделки... return Custom; } #include <Advanced Optimization Report Saver.mqh>
Как видите, все довольно просто и занимает всего пару минут.
После этого можно запустить оптимизацию:


На последнем скриншоте видно, что подключенный код добавил 2 параметра:
- Сохранять статистику - включает или отключает сбор статистики
- Pixels in balance and equity charts - задает количество пикселей в ширине мини-графиков.
После завершения оптимизации вы можете создать отчет (используя программу, которая анализирует сохраненные кадры) и увидеть следующее:
| 100 строк с MovingPeriod | 10 строк с MovingShift |
Если строк больше 20, то будут отображены только 3 горизонтальные линии средних значений: 3 сверху и 3 снизу.
100 линий трудно воспринимать, поэтому нужно уменьшить их количество.
Можно использовать входные переменные не с одинаковым шагом, а со шкалой через перечислитель (enum), например: 1,2,3,5,7,10,15,20,30,50,70,100 - будет только 12 линий вместо 100.
enum nums1 {__0=0, __1=1, __2=2, __3=3, __5=5, __7=7, __10=10, __15=15, __20=20, __30=30, __50=50, __70=70, __100=100, __150=150, __200=200, __300=300, __500=500}; input nums1 MovingPeriod = 10; // Период скользящего среднегоВы можете скачать enum-версию эксперта из прикрепленных файлов.
Вместо 1000 проходов оптимизации будет 120, время расчета будет в ~8 раз быстрее, а размер файла в ~8 раз меньше.
Результат более нагляден:

Результат с MovingPeriod = 15 выделяется сразу, с самой высокой средней линией и самым высоким максимумом.
Однако, как это часто бывает, лучшие результаты на бэктесте не являются лучшими на форвард-тесте.
Ваша программа, разбирающая сохраненные кадры, может отображать графики следующим образом:

И дополнительные критерии, как здесь:
Если у вас есть код для других интересных критериев, вы можете предложить их для добавления в библиотеку.
Обновления:
- 2026-02-02: Добавлена поддержка UTF-символов в названиях пользовательских критериев.
Перевод с английского произведен MetaQuotes Ltd.
Оригинальная публикация: https://www.mql5.com/en/code/68706
EA Duplicate Detector
Позволяет советнику определять наличие дубликатов советников на графике в зависимости от условий.
Project Template Generator
Этот скрипт служит практическим примером того, как разработчики могут программно работать с файлами с помощью MQL5. Одна из его ключевых задач - продемонстрировать эффективную организацию файлов проекта, что очень важно для разработчиков, работающих над крупными системами или стремящихся создавать переносимые, самодостаточные проекты. Концепция может быть расширена и дополнена дополнительными идеями для поддержки более сложных рабочих процессов разработки.
Binary tradng based on candle colors
Простая стратегия бинарной торговли, которая считает цвета свечей.
YURAZ_MCCH
Индикатор рассчитывает % роста или падения относительно CLOSE, написан с применением ООП, и легко интегрируется в любой советник или иной индикатор.


