Пиши и зарабатывай на MQL5 - страница 77

 
Rashid Umarov:

Редкий  случай, значит можно руками сбросить кеши либо написать специальную библиотеку для зачистки.


А это как?

 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Пиши и зарабатывай на MQL5

fxsaber, 2017.09.07 07:47

На статью не тянет

но как подпункт статьи 

хранение и передача любых данных через глобальные переменные и ресурсы.

"Хранение и передача данных без использования DLL - все варианты".

 
Alexey Volchanskiy:

А это как?

Открываем папку тестера и зачищаем файлы в кеше


 
Rashid Umarov:

Открываем папку тестера и зачищаем файлы в кеше



что-то я тупанул по утру, думал что-то новое ввели ) спасибо

 
Rashid Umarov:

Редкий  случай, значит можно руками сбросить кеши либо написать специальную библиотеку для зачистки.

Бывают ситуации, когда это нужно почти всегда. И можно делать без DLL, а значит годится для того же Маркета.

 

А как чистить кэш оптимизации не вручную и без DLL?

P.S. Какой-то баг в сайте - не появляются линки "В карман", "Жалоба", "Ответить" для некоторых сообщений.

 
Stanislav Korotky:

А как чистить кэш оптимизации не вручную и без DLL?

Никак! Речь шла о другом - обход кеша. Делаю это так

sinput uint Range = 2; // Сколько повторных проходов при Оптимизации (>= 2)

void OnTesterInit( void )
{
  ::MathSrand((int)::TimeLocal());

  const int Start = ::MathRand();
  const int Step = ::MathRand();

  const uint TmpRange = (::Range < 2) ? 2 : ::Range;

  ::ParameterSetRange("Range", true, TmpRange, Start, Step, Start + (TmpRange - 1) * Step);
}
TesterBenchmark
TesterBenchmark
  • голосов: 14
  • 2017.07.24
  • fxsaber
  • www.mql5.com
Замер чистой производительности тестеров стратегий MetaTrader 4/5.
 
fxsaber:

Никак! Речь шла о другом - обход кеша. Делаю это так

Не врубаюсь - зачем генерить несколько входных значений? Ведь одного случайного по идее достаточно, чтобы набор считался другим, т.е. не брался из кеша.

Правда, кэш в любом случае при этом будет раздуваться.

Еще вдруг возник вопрос: зачем в функции ParameterSetRange через 3-й параметр передается "текущее" значение? Ведь функция - только для оптимизации, а во время оптимизации значения будут меняться от start до stop с шагом step.

 
Stanislav Korotky:

Не врубаюсь - зачем генерить несколько входных значений? Ведь одного случайного по идее достаточно, чтобы набор считался другим, т.е. не брался из кеша.

Код выдран из библы, на которую ссылка ниже. Отсюда и причина набора значений.

Правда, кэш в любом случае при этом будет раздуваться.

Так это ни на чем не сказывается.

Еще вдруг возник вопрос: зачем в функции ParameterSetRange через 3-й параметр передается "текущее" значение? Ведь функция - только для оптимизации, а во время оптимизации значения будут меняться от start до stop с шагом step.

Там второй параметр true, поэтому без разницы, что указывать в третьем.

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

 
fxsaber:

Никак! Речь шла о другом - обход кеша. Делаю это так

Действительно, на статью не тянет,  но стало интересно - в каких случаях необходим такой трюк? Я имею в виду именно ситуацию, когда нужно заставить тестер не принимать в расчет готовые проходы из кеша предыдущей оптимизации при неизменном наборе влияющих входных параметров.