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

 

Здравствуйте.

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

Скажем, 10 000 параметров - это уже много и работать становится не комфорно. программа Метатрейдер5 "не отвечает". А может кому-нибудь надо использовать 100тысяч или миллион параметров. Или в этом случае, тестер стратегий не подходит.

Вообщем, вопрос, какое максимальное количество параметров для более-менее комфортной работы. (будет использоваться только OnTester() ).

Спасибо за внимание. 

 

2013.05.18 12:22:58 Tester OnTesterInit works too long. Tester cannot be initialized.
Такс.. ага. Оптимизируем 1000 параметров, значения всех от 0 до 10 (11 шагов). И этого оказывается слишком много. 

 

А вообще если в эксперте нету OnTick() то в тестере не будет тратиться время на всякие не нужные (для меня) бары, тики. ???

 

Посмотрите справку терминала (F1), раздел Клиентский терминал / Тестер стратегий / Входные параметры. Там подробная информация. 

Кратко:

Ограничения оптимизируемых параметров

Существуют некоторые ограничения параметров, которые могут быть оптимизированы:

·Нельзя оптимизировать параметры, которые имеют тип "string";

·При оптимизации параметров, являющихся перечислениями (Enum), нельзя задать шаг перебора. Можно лишь указать диапазон значений перечисления (например, с 1 по 5). При этом начальное значение может быть больше конечного. Например, при указании диапазона с 8 по 2 в перечислении с 10 значениями, в оптимизации будут участвовать значения 8, 9, 10, 1 и 2;

·Максимально количество оптимизируемых параметров — 1024;

·Максимальное число шагов в одном параметре не должно превышать 2 147 483 647 (int max);

·Общее количество шагов не должно превышать целое 1024-битное число;

·Если общее количество шагов оптимизации превышает 1 000 000 в 32-х битной системе или 100 000 000 в 64-х битной системе, то автоматически включается режим генетической оптимизации.

Stasikusssss:

А вообще если в эксперте нету OnTick() то в тестере не будет тратиться время на всякие не нужные (для меня) бары, тики. ???

Может быть Вам подойдёт режим Математические вычисления?

 

 

 

Может быть, тогда мне стоит присмотреться к статье "Генетические алгоритмы - это просто".

Можно ли с помощью генетических алгоритмов решить такую задачу.

Имеется какая-нибудь игра. Не важно, главное что есть стратегии. Стратегия имеет некоторое количество параметров (напр 10000, или 100 000, м.б. даже миллион).

Эти парметры принимают значения от 0 до 100 (с шагом 10 допустим). Как видно вариантов всевозможных стратегий оч большое.

Так вот, задача такая. У нас есть конкретная стратегия (заполнены эти 10000 параметров). Нам нужно найти самую выгодную контр стратегию, то есть подбирать стратегии и тестировать с нашей заполненной стратегией. (тестировать стратегии известно как, там достаточно сложная игра, главное что будет известен результат игры в долларах). Ну и так найдется самая выгодная контр стратегия с самым лучшим результатом игры.

Вообщем моя задача подходит для ген алг. ?? 

Генетические алгоритмы - это просто!
Генетические алгоритмы - это просто!
  • 2010.05.25
  • Andrey Dik
  • www.mql5.com
В статье автор расскажет об эволюционных вычислениях с использованием генетического алгоритма собственной реализации. Будет показано на примерах функционирование алгоритма, даны практические рекомендации по его использованию.
 

Вообще-то можно любое количество собственных (например, миллион) параметров или механизмов переложить/свести к операциям со штатной системой параметров (макс 1024 параметра, ген не длиннее 1024 битного числа).

Например, некоторое нечисловое многообразие можно свести в параметр long/double, а уже в своем коде разворачивать значение этого параметра в свою схему.

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


Как раз для поддержки переборов в режиме "я пока даже пределов хитрого многообразия не знаю, пока не запущу свой инит и не пересчитаю пределы", мы реализовали функции ParameterSetRange, где в функции OnTesterInit(только в ней) можно переназначить пределы счетчиков.

Вот пример кода:

//--- входные не изменяемые параметры
//--- обратите внимание - заблокированные для изменений sinput, а не обычные input
sinput int                 MyParam1             =1;                          // хитрый инициатор, не участвующий с перебором от и до
sinput int                 MyParam2             =1;                          // хитрый инициатор, не участвующий с перебором от и до
sinput int                 MyParam3             =1;                          // хитрый инициатор, не участвующий с перебором от и до
sinput int                 MyParam4             =1;                          // хитрый инициатор, не участвующий с перебором от и до
sinput SomeEnum            MyType1              =SomeEnumType10;             // хитрый вариант из енума, не участвующий с перебором от и до
sinput string              MyContent1           ="тут какой-то контент";     // что-то сильно изменчивое
sinput string              MyFileContent1       ="файл с исходными данными"  // что-то совсем все большое

//--- а вот и рабочая лошадка, ее и будем изменять ОТ и ДО. На ее номере прохода и будет выстраиваться все внешнее окружение
sinput long                Counter=0;

//+------------------------------------------------------------------+
//| TesterInit function                                              |
//+------------------------------------------------------------------+
void OnTesterInit()
  {
   long passes=0;
//--- подсчитаем пределы переборов на основе своих хитрейших параметров
   if(!CalculatePasses(MyParam1,......,MyContent1,MyFileContent,.....,passes))
      return;
//--- вот тут выставляем пределы перебора
   ParameterSetRange("Counter",true,0,0,1,passes);

В результате мы сами автоматически рассчитали количество проходов для виртуального счетчика Counter и теперь оптимизатор исправно будет все гонять от 0 до passes.

В своем эксперте остается только по формуле развернуть назад номер прохода Counter в 3-5-10 собственных параметров/состояний.

То есть, с помощью такой виртуализации можно в рамках штатного тестера гонять любые кастомные области переборов. Это если не хватает штатных возможностей, которые реально огромные.

 
Stasikusssss:

Может быть, тогда мне стоит присмотреться к статье "Генетические алгоритмы - это просто".

Можно ли с помощью генетических алгоритмов решить такую задачу.

Имеется какая-нибудь игра. Не важно, главное что есть стратегии. Стратегия имеет некоторое количество параметров (напр 10000, или 100 000, м.б. даже миллион).

Эти парметры принимают значения от 0 до 100 (с шагом 10 допустим). Как видно вариантов всевозможных стратегий оч большое.

Так вот, задача такая. У нас есть конкретная стратегия (заполнены эти 10000 параметров). Нам нужно найти самую выгодную контр стратегию, то есть подбирать стратегии и тестировать с нашей заполненной стратегией. (тестировать стратегии известно как, там достаточно сложная игра, главное что будет известен результат игры в долларах). Ну и так найдется самая выгодная контр стратегия с самым лучшим результатом игры.

Вообщем моя задача подходит для ген алг. ?? 

Joo - просто гений. По его методе мне удалось реализовать ГА в MT4 - результат: нет никаких органичений.
 

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