Discussion de l'article "Algorithmes Génétiques - C'est Facile !" - page 19

 
Andrey Dik:
Vous avez l'intention d'optimiser quelque chose, n'est-ce pas ? Vous devez donc présenter ce "quelque chose" sous la forme d'un FF, qui peut être par exemple le nombre de points de profit sur les signaux de l'indicateur. C'est ce que l'on appelle le FF.
J'ai quelque chose à demander, à propos du FF, par exemple, si c'est comme le conseil donné, où est l'optimisation, si cette UGA peut sauver la possibilité de profit qui a été dit ou quelque chose d'autre, et si lors de la définition du paramètre optimal de l'indicateur s'il devrait être je fais des tests virtuels comme l'exemple EA que je vois, et désolé si cela offense, les algorithmes génétiques sont aléatoires, comment pouvons-nous être sûrs que c'est optimal, et si possible nous entrons dans une bonne condition pour que les algorithmes génétiques optimisent les paramètres des indicateurs, Par exemple, nous pouvons prendre des conditions historiques d'achat et de profit avec combien de points et les algorithmes génétiques utilisent des données similaires dans le futur et exécutent l'optimisation, est-ce une bonne façon de l'utiliser, je ne peux pas penser à autre chose, si c'est faux s'il vous plaît dites-moi un bon exemple d'utilisation, si sans parce que et quand il est exécuté, les résultats optimaux sortent, comme entrer des nombres aléatoires, u Heureusement maintenant, entrer le nombre aléatoire à nouveau et puis perdre, et ainsi de suite, n'est-ce pas plus une conjecture.
 
SALEH:
J'ai quelque chose à demander, à propos de FF, par exemple, si c'est comme le conseil donné, où l'optimisation importe, si cette UGA peut sauver la possibilité de profit qui a été dit ou quelque chose d'autre, et si lors de la définition du paramètre optimal de l'indicateur s'il devrait être je fais des tests virtuels comme l'exemple EA que je vois, et désolé si cela offense, les algorithmes génétiques sont aléatoires, comment pouvons-nous être sûrs qu'il est optimal, et si possible nous entrons dans une bonne condition pour que les algorithmes génétiques optimisent les indicateurs de paramètres, Par exemple, nous pouvons prendre des conditions historiques d'achat et de profit avec combien de points et les algorithmes génétiques utilisent des données similaires dans le futur et exécutent l'optimisation, est-ce une bonne façon de l'utiliser, je ne peux pas penser à autre chose, si c'est faux s'il vous plaît dites-moi un bon exemple d'utilisation, si sans parce que et quand il est exécuté, les résultats optimaux sortent, comme entrer des nombres aléatoires, u Heureusement maintenant, entrer le nombre aléatoire à nouveau et puis perdre, et ainsi de suite, n'est-ce pas plus une conjecture.

Les algorithmes génétiques utilisent des nombres aléatoires non pas en eux-mêmes, mais en utilisant une distribution de probabilité. Étant donné que personne ne connaît l'avenir, les gens utilisent toujours la distribution de probabilités pour prendre TOUTE décision. Vous devrez décider quelle option utiliser, n'est-ce pas ? - Le résultat de l'application d'une telle sélection manuelle dans le futur est incertain à l'avance, c'est-à-dire qu'il n'est pas déterministe.

 
Andrey Dik:

Les algorithmes génétiques utilisent des nombres aléatoires non pas en eux-mêmes, mais en utilisant une distribution de probabilité. Comme personne ne connaît l'avenir, les gens utilisent toujours la distribution de probabilités pour prendre TOUTES les décisions.Vous pouvez utiliser l'itération complète des paramètres, mais vous ne les utiliserez pas tous. Vous devrez décider quelle option utiliser, n'est-ce pas ? - Le résultat de l'application d'une telle sélection manuelle dans le futur est incertain à l'avance, c'est-à-dire qu'il n'est pas déterministe.

Si c'est le cas, donnez-moi des conseils sur ce qu'il est bon d'optimiser, s'il s'agit d'indicateurs de paramètres, je ne suis pas tout à fait d'accord car les paramètres changent fréquemment. est-il préférable d'appliquer dans le takeprofit et le stoploss ou y a-t-il une autre meilleure façon. Merci pour votre réponse, et si vous avez des suggestions, merci. J'aimerais partager les résultats de l'expérience et peut-être un peu d'aide pour essayer cette UGA plus loin.
 
SALEH:
Si oui, donnez-moi des conseils sur celui qu'il est bon d'optimiser, si c'est une question d'indicateurs de paramètres, je suis légèrement en désaccord parce que les paramètres changent fréquemment. est-il préférable d'appliquer dans le takeprofit et le stoploss ou y a-t-il une autre meilleure façon. Merci pour votre réponse, et si vous avez des suggestions, merci. J'aimerais partager les résultats de l'expérience et peut-être un peu d'aide pour essayer cette UGA plus loin.

il est difficile de donner des conseils sans rien savoir du système de trading

 
Félicitations pour le contenu ! Cependant, je n'ai pas réussi à compiler les codes ou l'exemple mentionné. L'erreur semble se situer sur la ligne "ServiceFunction () ;"
 
Rafael Ladeia:
Félicitations pour le contenu ! Cependant, je n'ai pas réussi à compiler les codes ou l'exemple mentionné. L'erreur semble se situer sur la ligne "ServiceFunction () ;"

Merci beaucoup pour le feedback en 11 ans !)))) malheureusement, des erreurs peuvent se produire. Il semblerait qu'il soit temps pour moi de mettre à jour les codes alors que je n'ai le temps que pour ça...

 

J'ai actuellement un problème d'optimisation et j'expérimente cette bibliothèque pour voir si elle peut m'aider. Malheureusement, je ne sais pas très bien comment configurer la bibliothèque correctement.

Pour mon exemple, je veux calculer la meilleure composition (maximale) des tailles de lots pour avoir le moins de risque possible.

Pour ce faire, j'ai simplement pris 6 personnages pour le test et pour ces personnages, les meilleures tailles de lots devraient être trouvées. Dans la fonction de fitness, je calcule ensuite le ROI attendu pour ces actifs et le risque attendu pour les tailles de lots suggérées par l'UGA...

Si le risque est inférieur à mon seuil, je stocke le retour sur investissement attendu à maximiser dans Colony[0][chromos].....

Voici mon code :

void CPortfolioRiskMan::GetOptimalWeights()
  {

   double ReplicationPortion_P  = 100.0;
   double NMutationPortion_P    = 10.0;
   double ArtificialMutation_P  = 10.0;
   double GenoMergingPortion_P  = 20.0;
   double CrossingOverPortion_P = 20.0;
   double ReplicationOffset_P   = 0.5;
   double NMutationProbability_P= 5.0;
//-----------------------Variables-------------------------------------
//Préparation des variables globales pour l'UGA
   ChromosomeCount=6; //Nombre de chromosomes dans la colonie
   GeneCount      =6;       //Nombre de gènes
   RangeMinimum   =0.01;    /Minimum de la plage de recherche
   RangeMaximum   =1;    /Maximum de la plage de recherche
   Precision      =0.01;       //Étape de la recherche
   OptimizeMethod =2;  //1-minimum, tout autre-maximum

   ArrayResize(Chromosome,GeneCount+1);
   ArrayInitialize(Chromosome,0);
   Epoch=50;                     //Nombre d'époques sans amélioration




/Début de la fonction principale de l'UGA
   UGA
   (
      ReplicationPortion_P, /Portion de la réplication.
      NMutationPortion_P,   /Portion de la mutation naturelle.
      ArtificialMutation_P, /Portion de la mutation artificielle.
      GenoMergingPortion_P, /Portion de l'adoption des gènes.
      CrossingOverPortion_P,/Portion de la traversée.
      ReplicationOffset_P,  /Rythme de déplacement des limites de l'intervalle
      NMutationProbability_P/Probabilité de mutation de chaque gène en %.
   );



  }



void FitnessFunction(int chromos)
  {
//-----------------------Variables-------------------------------------

   double weight=0.0;
   double ClosePrices[]= {1.21,0.98,1.31,1.22,0.99,0.86};
   string symbols[]= {"EURUSD","GBPUSD","AUDNZD","EURAUD","NZDJPY","GBPJPY"};
   double tickvalues[]= {0.94,0.78,0.56,0.76,0.45,0.94};
   double tickstep=0.00001;
   double Lotsizes[6];
   double av_return=0;

//----------------------------------------------------------------------


   for(int u=1; u<=GeneCount; u++)
     {
      Lotsizes[u-1]=Colony[u][chromos];
      av_return+=Lotsizes[u-1]*tickvalues[u-1]*tickstep*ClosePrices[u-1];
     }

   double risk=CalculateVaR(symbols, Lotsizes);

   if(risk>50)
      Colony[0][chromos]=-10000000.0;
   else
      Colony[0][chromos]=NormalizeDouble(av_return,2);


   AmountStartsFF++;
  }
 
Filip #:

J'ai actuellement un problème d'optimisation et j'expérimente cette bibliothèque pour voir si elle peut m'aider. Malheureusement, je ne sais pas très bien comment configurer la bibliothèque correctement.

Pour mon exemple, je veux calculer la meilleure composition (maximale) des tailles de lots pour avoir le moins de risque possible.

Pour ce faire, j'ai simplement pris 6 personnages pour le test et pour ces personnages, les meilleures tailles de lots devraient être trouvées. Dans la fonction d'aptitude, je calcule ensuite le retour sur investissement attendu pour ces actifs et le risque attendu pour les tailles de lots suggérées par l'UGA...

Si le risque est inférieur à mon seuil, je conserve le retour sur investissement attendu pour le maximiser dans Colony[0][chromos].....

Voici mon code :

Je n'ai pas compris le sens de la question, merci de m'expliquer plus en détail.

En général, il s'agit d'une très ancienne version de l'algorithme, qui n'adhère pas au schéma d'algorithme plus facile à appliquer qui figure dans les articles actuels sur les "Algorithmes d'optimisation de la population".

Je peux recommander l'utilisation de l'algorithme SDS ou d'un autre algorithme du tableau, ou attendre une version mise à jour de l'UGA (je ne sais pas s'il est approprié de publier un nouveau look dans un article sur cet ancien mais très puissant algorithme).

Je réécrirais généralement cet article d'une nouvelle manière, avec l'inclusion de l'UGA dans le tableau de classement, mais je ne sais pas s'il est possible et nécessaire de le faire.

ZY. Je pense qu'il n'est pas possible de réécrire l'article existant, il a déjà été traduit dans de nombreuses langues.

 
ne compile pas. beaucoup d'erreurs.
 
gardee005 #:
ne compile pas. beaucoup d'erreurs.
Veuillez me montrer la liste des erreurs. Le code est très vieux, mais il n'y a rien à casser même après 14 ans.