Оптимизация внутри эксперта - страница 3

 
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);

}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Попробуй вместо верхнего - этот блок запуска оптимизатора

if(!IsTesting() && !IsOptimization()){
   if(TimeHour(TimeLocal())==SetHour){
      if(TimeMinute(TimeLocal())>SetMinute-1){
         if(TimeMinute(TimeLocal())<SetMinute+1){
            Tester();
}}}}
SetHour - час запуска
SetMinute - минута запуска

(это из нового варианта но я пока его не закончил, и еще не тестировал этот блок) а вообще проблема скорее всего именно в процедуре определения времени запуска
 

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

 

HIDDEN привет!

идея мне приходила в голову еще как только я увидел тестер стратегий
и его оптимизатор

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

т е не останавливая реальную торговлю
формируем массив сделок и получив оптимальные параметры загоняем в реальный массив параметров

остается подабрать СИГНАЛ для прогона - как часто гонять оптимизатор?
рынок меняется постоянно вот видимо научиться бы ловить сильные движения и пускать оптимизатор в эти моменты
либо пускать при затишье

где то у меня валялся код самообучающегося эксперта там эта идея вроде как в какой то мере реализованная

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

Если тебе не сложно опиши логику фильтрации. А то на мой взгляд у тебя жесткая привязка к прибыльности, профитности и мат ожиданию. Я вот думаю что параметры эти должны быть динамические.
 
Механизм фильтрации заложенный в автооптимизатор основан на последовательной сортировке полученных после оптимизации данных.


Происходит это так:

в этих переменных указывается последовательность сортировки
//------------------------ Расставим приоритеты Фильтрации ----------------------------
int Gross_Profit       = 3;                                                //Общая прибыль
int Profit_Factor      = 1;                                                //Прибыльность 
int Expected_Payoff    = 2;                                                //Мат ожидание

в этой переменной указывается количество строк после 1 сортировки

int StepRes            = 12;                                               //Количество строк для сортировки


Далее (согласно заданной в переменных последовательности) происходит сортировка по максимальной прибыльности, выбираются 12 максимальных значений и среди них происходит сортировка по максимальному матожиданию, из них выбирается 6 максимальных значений и происходит сортировка по максимальной прибыли

вот собственно и все, достаточно простой механизм.