在Metatrader 5中你的符号和你的数据源 - 页 14

 
zaskok:

我认为大多数用户甚至没有听说过GAs。这就是为什么奇迹的算法并不比任何人更需要。

这就是我的观点。

zaskok

有一种似曾相识的感觉,从未离开过这个论坛。当他们要求证明一些论断时。但与此同时,没有一个人被接受,因为根本不清楚必须提供什么才能让人信服。

请记住,MetaQuotes是一个商业机构。只有当它认为有利可图时,它才会在任何发展中投入资源。好吧,这就是我们应该出发的地方。

我不认为应该寻找"Renat的 偏执",这更像是 "经济短视"--事实上,一旦MetaTrader获得订阅--MetaQuotes的收入将增加一个数量级,而他并没有意识到这一点......好吧,我认为这些提议必须在经济上是合理的。我们不知道 "MetaQuotes厨房",哪些决定增加了,哪些没有改变(或减少)利润......。我们只能猜测...

 
Prival-2:

我将支持zaskok

我个人从未遇到过遗传算法被证明是最合适的工具的任何问题。此外,我从未遇到过任何通过遗传算法获得的计算结果给我留下了积极的印象。


GA的主要优势不在于它是 "解决某一特定问题的最合适的工具",而在于它的普遍性!它是一个非常重要的工具。

为了解决一元二次方程,你也可以应用GA,它将完美地找到一个具有可接受精度的解决方案。虽然,众所周知的公式更适用于这种情况...

 

简而言之。

1.用户可能确实不知道Ga以及其他算法。这并没有什么区别。

2.即使有一种算法比Ga更好(对于某些任务来说,它肯定是更好的),也不一定意味着它将同样具有普遍性。也就是说,比较分析必须不失去普遍性的背景。

3.没有什么能阻止自己实现其他算法。

Prival-2,你往往需要的不是最合适的工具,而是足够的工具(对于优化厚脸皮的策略是很可以接受的)。

我真的希望看到对其他算法的描述。

 
Renat:

你试图与他进行对话,是白费力气。

这个人根本不使用MetaTrader 5,完全坐在4上。你可以从他的日志中看到--他已经多年没有运行MT5,但他却批评它。

几年前,我已经抓住了他,"你在很多个月前就有了MT5的单次发布,你是如何做到评估和批评的?"。他也否认了,因为他现在是他的下一个克隆人。

熟悉的行为。我记得他和我在讨论我的MT5产品时,他最后甚至没有下载它的演示。但他总是能从 "我不熟悉,但我判断 "系列中找到一些话。
 
joo:

2.我的GA甚至更好。:)

...

那么,谁愿意不仅胡说八道,而且还提供他们的算法进行测试和比较分析,这将一劳永逸地结束 "哪种算法更好?"的话题?


在你的GA中,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奖得主Steven S. Schiena写道[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 有一个视频例子解释了这种算法的工作原理。从中可以看出,它迭代地接近最大值,几乎找到了最大值本身。但它也能找到其他的最大值。计算次数比GA少得多,它比GA更紧凑,更接近真实数据,而且在任何情况下都会比繁琐的GA在速度上做得更好。
 
在Five中获得保存和下载设定文件的选项也很好。一个非常方便的东西。