Смотри, как бесплатно скачать роботов
Ищи нас в Facebook!
Ставь лайки и следи за новостями
Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят
Понравился скрипт?
Оцени его работу в терминале MetaTrader 5
Просмотров:
389
Рейтинг:
(5)
Опубликован:
\MQL5\Include\fxsaber\Memory\ \MQL5\Experts\
MQL5 Фриланс Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

В Тестере во время оптимизации можно сталкиваться с аварийным завершением проходов из-за нехватки памяти.

Существует метод вычисления таких аварийных проходов. Однако, оценить все множество вариантов входных параметров на предмет сильного потребления советником памяти сложно.


Требуется найти потенциально проблемные конфигурации входных параметров имеющегося советника. И затем разобраться в причинах.


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


Пример.

Для наглядности возьмем лаконичный советник и добавим в него несколько строк (выделены).

#property tester_no_cache

#define MEMORY_TESTER_OPTIMIZATION   // Работа в режиме оптимизации Тестера.
#include <fxsaber\Memory\Memory.mqh> // Мониторинг потребления памяти.

input int inMaxMB = 10;

void OnTick()
{
  static MqlRates Rates[];
  
  const int SizeMB = (ArraySize(Rates) * sizeof(MqlRates)) >> 20;
  
  if (SizeMB < inMaxMB)
    ArrayResize(Rates, ((SizeMB + 2) << 20) / sizeof(MqlRates)); // Увеличиваем массив на ~мегабайт.
}

double OnTester()
{
  return(gMemory.GetMax()); // Максимальное потребление памяти за время выполнения программы.
}

Советник просто увеличивает свой массив.


Результат.

На картинке результат оптимизации.

Измерения потребляемой памяти похожи на правду.


Одиночный проход верхнего набора выдаст такое.

Core 1  OnTester result 102
Core 1  2026.02.10 23:58:58   MQL_MEMORY_USED: Min = 0 Max = 102 Last = 0
Core 1  EURUSD,M1: 80954 ticks, 1437 bars generated. Environment synchronized in 0:00:00.020. Test passed in 0:00:01.781.
Core 1  EURUSD,M1: total time from login to stop testing 0:00:01.801 (including 0:00:00.020 for history data synchronization)
Core 1  202 Mb memory used including 23 Mb of history data, 64 Mb of tick data


Сценарии.

Библиотека позволяет находить завышенное потребление памяти советником и далее разбираться в причинах в режиме дебага.

Чем меньше ресурсов отнимает советник - тем больше возможностей при оптимизации: увеличение количества агентов тестирования - скорости оптимизации.

VR Locker Lite  - Торговая стратегия на основе положительного замка VR Locker Lite - Торговая стратегия на основе положительного замка

Работа с помощью положительного замка, торговый робот создает один положительный замок, трейдер сам решает что с ним делать.

nModify Orders nModify Orders

Функция модификации открытых позиций и отложенных ордеров

iCrosshair - Real-Time Candle Metrics on Hover iCrosshair - Real-Time Candle Metrics on Hover

Наведите курсор на любую свечу, чтобы увидеть то, что MT5 не показывает: Размер диапазона, процент тела, соотношение фитилей. Умный, быстрый и настраиваемый.

VR Breakdown level - Торговая стратегия на пробой прошлого High или Low VR Breakdown level - Торговая стратегия на пробой прошлого High или Low

Торговая стратегия по простому пробитию предыдущих уровней High или Low