Свои символы и свои датафиды в Метатрейдер 5 - страница 14

 
zaskok:

Думаю, что большинство юзеров даже не слышали, что такое ГА. Поэтому чудо-алгоритмы нужно не сильно более, чем никому.

Вот и я о том

zaskok:

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

Да надо просто помнить, что МетаКвоты - коммерческая организация. И вкладывать ресурсы в любые разработки она будет только если посчитает, что это принесет профит. Ну так и надо отсюда и исходить.

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

 
Prival-2:

Я поддержу zaskok

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


Дык главное преимущество ГА не в том, что он является "самым подходящим средством для решения конкретной задачи", а в том, что он универсален !

Для решения квадратного уравнения ведь тоже можно применить ГА, и он замечательно найдет решения с приемлемой точностью. Хотя, гораздо более подходит для этого случая известная формула...

 

Говоря проще,

1. Юзеры, действительно могут и не знать про га, ровно как и про другие алгоритмы. Особо это ничего не меняет.

2. Если даже есть алгоритм который лучше га (а для каких то задач он всяко есть), то не факт что он будет таким же универсальным. То есть сравнительный анализ должен быть без потери контекста универсальности.

3. Ничто не мешает реализовать др алгоритмы самому.

Prival-2, часто нужно не самое подходящее средство, а достаточное (для оптимизации толстокожих стратегий вполне приемлемо ж).

Очень хочу увидеть описания других алгоритмов.

 
Renat:

Вы зря пытаетесь вести с ним диалог.

Этот человек вообще не пользуется MetaTrader 5, а сидит исключительно на четверке. Это видно по логам -  годами не запускал МТ5, но критикует его.

Пару лет назад я его уже подловил на "у вас был одиночный запуск МТ5 много месяцев назад, как вы умудряетесь выступать с оценками и критикой?". Он тоже отрицал это, как и сейчас свой очередной клон.

Знакомое поведение. Помню мы с ним обсуждали мой продукт для МТ5, в итоге он даже его демку не скачал. Зато всегда есть что сказать из серии "не знаком, но осуждаю".
 
joo:

2. Мой ГА ещё лучше. :)

... 

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


В Вашем ГА функция int NaturalSelection() работает совершенно не так, как вы заявлено в статье https://www.mql5.com/ru/articles/55.

Вот тест:

// 256+255+253+249+241+225+193+129+50+ -1 = 1850  сумма всех  выпадений

int PopulChromosCount = 10;
double Population[][10];
int count[10];

void OnStart(){
        ArrayResize(Population,2);
        Population[0][0] = 256.0;
        Population[0][1] = 128.0;
        Population[0][2] = 64.0;
        Population[0][3] = 32.0;
        Population[0][4] = 16.0;
        Population[0][5] = 8.0;
        Population[0][6] = 4.0;
        Population[0][7] = 2.0;
        Population[0][8] = 0.0;
        Population[0][9] = -1.0;
                
        ArrayInitialize(count,0);
        for(int k=0; k<1850; ++k){
                int idx = NaturalSelection();
                ++count[idx];
        }
        printCount(count);
}
  
//Естественный отбор.
int NaturalSelection(){
   int    i=0,u=0;
   double p=0.0,start=0.0;
   double          fit[][2];
   ArrayResize(fit,PopulChromosCount);
   ArrayInitialize(fit,0.0);
   double delta=(Population[0][0]-Population[0][PopulChromosCount-1])*0.01-Population[0][PopulChromosCount-1];

   for(i=0;i<PopulChromosCount;i++)
     {
      fit[i][0]=start;
      fit[i][1]=start+MathAbs(Population[0][i]+delta);
      start=fit[i][1];
     }
   p=RNDfromCI(fit[0][0],fit[PopulChromosCount-1][1]);

   for(u=0;u<PopulChromosCount;u++)
      if((fit[u][0]<=p && p<fit[u][1]) || p==fit[u][1])
         break;

   return(u);
}

//Генератор случайных чисел из заданного интервала.
double RNDfromCI(double RangeMinimum,double RangeMaximum)
  { return(RangeMinimum+((RangeMaximum-RangeMinimum)*MathRand()/32767.5));}

void printCount(int &ncount[]){
        int summ = 0;
        for(int k=0;k<ArraySize(ncount);++k){
                summ+=ncount[k];
        }
        Print("Сумма выпадений= "+IntegerToString(summ));
        Print("VFF 256: count= " + IntegerToString(ncount[0]) + " заявлено 256");
        Print("VFF 128: count= " + IntegerToString(ncount[1]) + " заявлено 255");
        Print("VFF  64: count= " + IntegerToString(ncount[2]) + " заявлено 253");
        Print("VFF  32: count= " + IntegerToString(ncount[3]) + " заявлено 249");
        Print("VFF  16: count= " + IntegerToString(ncount[4]) + " заявлено 241");
        Print("VFF   8: count= " + IntegerToString(ncount[5]) + " заявлено 225");
        Print("VFF   4: count= " + IntegerToString(ncount[6]) + " заявлено 193");
        Print("VFF   2: count= " + IntegerToString(ncount[7]) + " заявлено 129");
        Print("VFF   0: count= " + IntegerToString(ncount[8]) + " заявлено  50");
        Print("VFF  -1: count= " + IntegerToString(ncount[9]) + " заявлено  -1");
}
2015.04.27 12:09:21.369	NaturalSelection (EURUSD,M1)	VFF  -1: count= 6 заявлено  -1
2015.04.27 12:09:21.369	NaturalSelection (EURUSD,M1)	VFF   0: count= 13 заявлено  50
2015.04.27 12:09:21.369	NaturalSelection (EURUSD,M1)	VFF   2: count= 21 заявлено 129
2015.04.27 12:09:21.369	NaturalSelection (EURUSD,M1)	VFF   4: count= 19 заявлено 193
2015.04.27 12:09:21.369	NaturalSelection (EURUSD,M1)	VFF   8: count= 40 заявлено 225
2015.04.27 12:09:21.369	NaturalSelection (EURUSD,M1)	VFF  16: count= 74 заявлено 241
2015.04.27 12:09:21.369	NaturalSelection (EURUSD,M1)	VFF  32: count= 121 заявлено 249
2015.04.27 12:09:21.369	NaturalSelection (EURUSD,M1)	VFF  64: count= 218 заявлено 253
2015.04.27 12:09:21.369	NaturalSelection (EURUSD,M1)	VFF 128: count= 423 заявлено 255
2015.04.27 12:09:21.369	NaturalSelection (EURUSD,M1)	VFF 256: count= 915 заявлено 256
2015.04.27 12:09:21.369	NaturalSelection (EURUSD,M1)	Сумма выпадений= 1850

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

как там с отладкой в дебаггере на исторических данных ? Надеюсь, будет уже скоро ?

Уже занимаемся этим вопросом. Скоро будут первые результаты
 
Prival-2:

Попробуйте опровергнуть вот этого ученого

Имеется много скептиков относительно целесообразности применения генетических алгоритмов. Например, Стивен С. Скиена, профессор кафедры вычислительной техники университета Стоуни—Брук, известный исследователь алгоритмов, лауреат премии института IEEE, пишет[16]:

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

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

 
stringo:
Уже занимаемся этим вопросом. Скоро будут первые результаты
Браво ! Ждем-с.
 
Вот ссылка на описание Метода Отжига в Википедии. https://ru.wikipedia.org/wiki/%C0%EB%E3%EE%F0%E8%F2%EC_%E8%EC%E8%F2%E0%F6%E8%E8_%EE%F2%E6%E8%E3%E0 Там есть видео-пример поясняющий как работает этот алгоритм. Из него понятно, что он итерационно приближвется к максимуму и находит практически сам максимум. Но и другие максимумы тоже очерчивает. Количество вычислений, значительно меньше чем у ГА, он более компактный и значительно более приближенный к реальным данным, чем ГА и по-любому по скорости будет делать громоздкий ГА.
 
Хорошо еще получить в пятерке  возможность сохранения и загрузки сет файлов. Очень удобная вещь.
Причина обращения: