Vos symboles et vos flux de données dans Metatrader 5 - page 14

 
zaskok:

Je pense que la plupart des utilisateurs n'ont même pas entendu parler des GA. C'est pourquoi les algorithmes miracles ne sont pas plus nécessaires que les autres.

C'est ce que je veux dire.

zaskok:

Il y a une impression de déjà vu qui ne quitte jamais ce forum. Quand ils demandent la preuve d'une assertion. Mais en même temps, aucune d'entre elles n'est acceptée, car ce qui doit être fourni pour convaincre n'est pas du tout clair.

N'oubliez pas que MetaQuotes est une organisation commerciale. Elle n'investira des ressources dans un développement que si elle le juge rentable. Eh bien, c'est de là que nous devrions commencer.

Je ne pense pas qu'il faille chercher une " paranoïa de Renat", mais plutôt une "myopie économique" - en fait, une fois que MetaTrader aura obtenu des abonnements - les revenus de MetaQuotes augmenteront d'un ordre de grandeur, et il ne s'en rend pas compte... Eh bien, je pense que les offres doivent être économiquement justifiées. Nous ne connaissons pas la "cuisine MetaQuotes", les décisions qui ont augmenté et celles qui n'ont pas changé (ou diminué) le bénéfice... Nous ne pouvons que spéculer...

 
Prival-2:

Je soutiendraiZaskok

Je n'ai personnellement jamais rencontré de problème pour lequel les algorithmes génétiques se sont avérés être l'outil le plus approprié. De plus, je n'ai jamais rencontré de résultats de calcul obtenus par des algorithmes génétiques qui m'aient impressionné positivement.


Le principal avantage de l'AG n'est pas qu'il s'agit du "meilleur outil pour résoudre un problème particulier", mais qu'il est universel !

Pour résoudre une équation quadratique, vous pouvez également appliquer GA, qui trouvera parfaitement une solution avec une précision acceptable. Bien que la formule bien connue soit beaucoup plus adaptée à ce cas...

 

Pour le dire simplement,

1. les utilisateurs peuvent en effet ne pas être au courant de Ga ainsi que d'autres algorithmes. Cela ne fait pas grande différence.

2. Même s'il existe un algorithme meilleur que Ga (et pour certaines tâches, il l'est très certainement), cela ne signifie pas nécessairement qu'il sera aussi universel. C'est-à-dire qu'une analyse comparative doit se faire sans perdre le contexte de l'universalité.

3. rien n'empêche d'implémenter soi-même d'autres algorithmes.

Prival-2, vous n'avez souvent pas besoin de l'outil le plus approprié, mais d'un outil suffisant (pour l'optimisation des stratégies à peau épaisse, c'est tout à fait acceptable).

J'aimerais vraiment voir des descriptions d'autres algorithmes.

 
Renat:

Vous essayez d'avoir un dialogue avec lui pour rien.

Cet homme n'utilise pas du tout MetaTrader 5, et se repose exclusivement sur 4. Vous pouvez le voir dans ses journaux - il n'a pas utilisé MT5 depuis des années, mais il le critique.

Je l'ai déjà attrapé il y a quelques années sur le thème "vous n'avez eu qu'un seul lancement de MT5 il y a plusieurs mois, comment arrivez-vous à faire des évaluations et des critiques ?". Lui aussi l'a nié, car il est maintenant son prochain clone.

Un comportement familier. Je me souviens que lui et moi discutions de mon produit MT5, il a fini par ne même pas télécharger une démo de celui-ci. Mais il a toujours quelque chose à dire dans la série "Je ne connais pas, mais je juge".
 
joo:

2. Mon AG est encore meilleur. :)

...

Alors, qui veut non seulement babiller, mais aussi fournir ses algorithmes pour des tests et des analyses comparatives, ce qui permettrait de clore une fois pour toutes le sujet "quel algorithme est le meilleur ?" ?


Dans votre GA, la fonctionint NaturalSelection() ne fonctionne pas du tout comme vous l'avez indiqué dans l'articlehttps://www.mql5.com/ru/articles/55.

Voici le test :

// 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:

Comment se passe le débogage dans le débogueur sur des données historiques ? J'espère que ce sera bientôt le cas.

Nous y travaillons déjà. Les premiers résultats arrivent bientôt
 
Prival-2:

Essayez de réfuter ce scientifique

Il y a beaucoup de sceptiques quant au caractère raisonnable de l'utilisation des algorithmes génétiques. Par exemple, Steven S. Schiena, professeur du département d'informatique de l'université de Stony Brook, célèbre chercheur en algorithmes, lauréat du prix IEEE, écrit[16]:

La génétique est une chose tellement universelle, avec laquelle on peut tout optimiser. Comme la descente de gradient, mais beaucoup plus polyvalente en termes de classe de problèmes.

Cela signifie qu'il est toujours possible, pour n'importe quel problème, de trouver une façon d'optimiser spécifique à la tâche qui fonctionnera mieux.

 
stringo:
Nous travaillons déjà sur cette question. Les premiers résultats seront bientôt disponibles.
Bravo ! Nous attendons.
 
Voici un lien vers une description de la méthode du recuit sur Wikipedia. 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 Il existe un exemple vidéo expliquant le fonctionnement de cet algorithme. On peut y voir qu'il s'approche itérativement du maximum et qu'il trouve presque le maximum lui-même. Mais il trouve aussi d'autres maxima. Le nombre de calculs est beaucoup moins élevé que pour GA, il est plus compact et beaucoup plus proche des données réelles que GA et, dans tous les cas, il fera mieux que GA, plus lourd, en termes de vitesse.
 
C'est également une bonne chose d'avoir la possibilité d'enregistrer et de télécharger les fichiers définis dans Five. Une chose très pratique.