Смотри, как бесплатно скачать роботов
Ищи нас в Twitter!
Ставь лайки и следи за новостями
Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят
Понравился скрипт?
Оцени его работу в терминале MetaTrader 5
Библиотеки

Код, который записывает графики баланса и капитала и рассчитывает дополнительные критерии оптимизации - библиотека для MetaTrader 5

Просмотров:
36
Рейтинг:
(4)
Опубликован:
MQL5 Фриланс Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

Я решилподелитьсякодом избольшогопроекта , разработанного в отдельнойбиблиотеке .

Если у вас есть доступ к коду эксперта, вы можете сохранять графики баланса и капитала и рассчитывать дополнительные критерии оптимизации, добавляя дополнительный код из этой библиотеки.

Скачайте файл 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 параметра:

  1. Сохранять статистику - включает или отключает сбор статистики
  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 выделяется сразу, с самой высокой средней линией и самым высоким максимумом.
Однако, как это часто бывает, лучшие результаты на бэктесте не являются лучшими на форвард-тесте.
Ваша программа, разбирающая сохраненные кадры, может отображать графики следующим образом:

И дополнительные критерии, как здесь:

Если у вас есть код для других интересных критериев, вы можете предложить их для добавления в библиотеку.


Обновления:

  1. 2026-02-02: Добавлена поддержка UTF-символов в названиях пользовательских критериев.

Перевод с английского произведен MetaQuotes Ltd.
Оригинальная публикация: https://www.mql5.com/en/code/68706

EA Duplicate Detector EA Duplicate Detector

Позволяет советнику определять наличие дубликатов советников на графике в зависимости от условий.

Project Template Generator Project Template Generator

Этот скрипт служит практическим примером того, как разработчики могут программно работать с файлами с помощью MQL5. Одна из его ключевых задач - продемонстрировать эффективную организацию файлов проекта, что очень важно для разработчиков, работающих над крупными системами или стремящихся создавать переносимые, самодостаточные проекты. Концепция может быть расширена и дополнена дополнительными идеями для поддержки более сложных рабочих процессов разработки.

Binary tradng based on candle colors Binary tradng based on candle colors

Простая стратегия бинарной торговли, которая считает цвета свечей.

YURAZ_MCCH YURAZ_MCCH

Индикатор рассчитывает % роста или падения относительно CLOSE, написан с применением ООП, и легко интегрируется в любой советник или иной индикатор.