Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Stanislav Aksenov
13770
Stanislav Aksenov  

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

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

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

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

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

Stanislav Aksenov
13770
Stanislav Aksenov  

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

Stanislav Aksenov
13770
Stanislav Aksenov  

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

Anatoli Kazharski
58146
Anatoli Kazharski  

Посмотрите справку терминала (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() то в тестере не будет тратиться время на всякие не нужные (для меня) бары, тики. ???

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

 

 

Stanislav Aksenov
13770
Stanislav Aksenov  

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

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

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

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

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

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

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

Вообще-то можно любое количество собственных (например, миллион) параметров или механизмов переложить/свести к операциям со штатной системой параметров (макс 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 собственных параметров/состояний.

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

Igor Chemodanov
782
Igor Chemodanov  
Stasikusssss:

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

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

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

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

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

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

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

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий