xeon, переделал я твою разработку под себя, под свой эксп, все работает.
Но остались еще проблемки, главная из них это после того как
на одной валютной паре оптимизация прошла, проходит какое-то
время и она опять включается и опять полный прогон оптимизации.
И этот вопрос не заканчивается.
Попробывал на твоей версии советника, что выложена в ветке которую
ты указал таже ситуация.
У тебя такая же проблема или все работает корректно?
//------------------- 1 раз в сутки оптимизируемся на истории и устанавливаем параметры --------------------------------
if(!IsOptimization()||!IsTesting()) // не запускать в режиме оптимизации и тестирования { double TimeLoc = StrToDouble(TimeToStr(TimeLocal(),TIME_MINUTES))+(Minute()*0.01); //Текущее время
if(Flag == 0 && TimeLoc >= TimeTest && TimeLoc < TimeTest+5){Flag = 1;Tester();} if(TimeLoc > TimeTest+0.15){Flag = 0;} //если с момента запуска прошло больше 15 минут то обнулим флаг Comment(TimeLoc," <> ",TimeTest," ",TimeTest-TimeLoc, "\n",Per1," ",FastEMA," | ",Per2," ",SlowEMA, " | ",Per3," ",TakeProfit," | ",Per4," ", TrailingStop);
(это из нового варианта но я пока его не закончил, и еще не тестировал этот блок) а вообще проблема скорее всего именно в процедуре определения времени запуска
Я собственно до этого сам доехал, еще я сделал функцию в виде
внешней библиотеки что-бы не заграмодать код.
Единственное с чем еще хочу поработать это с выбором нужного
варианта. Сделать его более гибким. На данный момент выбор жестко
происходит, и выбераемый вариант не идеальный.
идея мне приходила в голову еще как только я увидел тестер стратегий
и его оптимизатор
по сути идеии пишется блок - который - по сигналу - прогоняет
последний период с разными параметрами
- в том числе и пытаясь подобрать сам период - разумеется в каких
то разумных пределах
т е не останавливая реальную торговлю
формируем массив сделок и получив оптимальные параметры загоняем
в реальный массив параметров
остается подабрать СИГНАЛ для прогона - как часто гонять оптимизатор?
рынок меняется постоянно вот видимо научиться бы ловить сильные
движения и пускать оптимизатор в эти моменты
либо пускать при затишье
где то у меня валялся код самообучающегося эксперта там эта
идея вроде как в какой то мере реализованная
xeon, мне кажется, что при сортировке массивов с переменными теряется
лучьшие значения, давай детально разберем именно вывор варианта
с переменными которые потом передаются для торговли.
Если тебе не сложно опиши логику фильтрации. А то на мой взгляд
у тебя жесткая привязка к прибыльности, профитности и мат ожиданию.
Я вот думаю что параметры эти должны быть динамические.
в этой переменной указывается количество строк после 1 сортировки
intStepRes = 12; //Количество строк для сортировки
Далее (согласно заданной в переменных последовательности) происходит
сортировка по максимальной прибыльности, выбираются 12 максимальных
значений и среди них происходит сортировка по максимальному
матожиданию, из них выбирается 6 максимальных значений и происходит
сортировка по максимальной прибыли
вот собственно и все, достаточно простой механизм.
Но остались еще проблемки, главная из них это после того как на одной валютной паре оптимизация прошла, проходит какое-то время и она опять включается и опять полный прогон оптимизации. И этот вопрос не заканчивается.
Попробывал на твоей версии советника, что выложена в ветке которую ты указал таже ситуация.
У тебя такая же проблема или все работает корректно?
if(!IsOptimization()||!IsTesting()) // не запускать в режиме оптимизации и тестирования
{
double TimeLoc = StrToDouble(TimeToStr(TimeLocal(),TIME_MINUTES))+(Minute()*0.01); //Текущее время
if(Flag == 0 && TimeLoc >= TimeTest && TimeLoc < TimeTest+5){Flag = 1;Tester();}
if(TimeLoc > TimeTest+0.15){Flag = 0;} //если с момента запуска прошло больше 15 минут то обнулим флаг
Comment(TimeLoc," <> ",TimeTest," ",TimeTest-TimeLoc, "\n",Per1," ",FastEMA," | ",Per2," ",SlowEMA, " | ",Per3," ",TakeProfit," | ",Per4," ", TrailingStop);
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Попробуй вместо верхнего - этот блок запуска оптимизатора
SetHour - час запуска
SetMinute - минута запуска
(это из нового варианта но я пока его не закончил, и еще не тестировал этот блок) а вообще проблема скорее всего именно в процедуре определения времени запуска
Я собственно до этого сам доехал, еще я сделал функцию в виде внешней библиотеки что-бы не заграмодать код.
Единственное с чем еще хочу поработать это с выбором нужного варианта. Сделать его более гибким. На данный момент выбор жестко происходит, и выбераемый вариант не идеальный.
HIDDEN привет!
идея мне приходила в голову еще как только я увидел тестер стратегий
и его оптимизатор
по сути идеии пишется блок - который - по сигналу - прогоняет последний период с разными параметрами
- в том числе и пытаясь подобрать сам период - разумеется в каких то разумных пределах
т е не останавливая реальную торговлю
формируем массив сделок и получив оптимальные параметры загоняем в реальный массив параметров
остается подабрать СИГНАЛ для прогона - как часто гонять оптимизатор?
рынок меняется постоянно вот видимо научиться бы ловить сильные движения и пускать оптимизатор в эти моменты
либо пускать при затишье
где то у меня валялся код самообучающегося эксперта там эта идея вроде как в какой то мере реализованная
Если тебе не сложно опиши логику фильтрации. А то на мой взгляд у тебя жесткая привязка к прибыльности, профитности и мат ожиданию. Я вот думаю что параметры эти должны быть динамические.
Происходит это так:
в этих переменных указывается последовательность сортировки
в этой переменной указывается количество строк после 1 сортировки
Далее (согласно заданной в переменных последовательности) происходит сортировка по максимальной прибыльности, выбираются 12 максимальных значений и среди них происходит сортировка по максимальному матожиданию, из них выбирается 6 максимальных значений и происходит сортировка по максимальной прибыли
вот собственно и все, достаточно простой механизм.