Championnat d'optimisation des algorithmes. - page 4

 
Dmitry Fedoseev:
Regardez la méthode universelle exposée ci-dessus. Et si un appel ponctuel via un intermédiaire, qui nécessiterait une adaptation très sérieuse de la fonction de consultation, c'est exactement ce que personne ne fera.
N'exagérez pas. Il existe une solution. Réfléchissez à la manière dont vous pouvez vous débarrasser de l'appel FF interne de votre bibliothèque d'algorithmes.
 
Andrey Dik:
N'exagérez pas. Il existe une solution. Réfléchissez à la manière dont vous pouvez vous débarrasser de l'appel FF interne de votre bibliothèque d'algorithmes.
Tu ne devrais même pas y penser, il n'y a aucune raison de gaspiller des efforts pour ça.
 
Dmitry Fedoseev:

...

Il n'y a pas d'autres options. A moins que l'on puisse passer un pointeur vers une fonction, si possible (mais jusqu'à présent personne n'a suggéré où regarder dans l'aide). Le membre doit avoir une capacité à part entière d'appeler une fonction ff.

Il a été mentionné ici avec un exemple :Nouvelle version de la plateforme MetaTrader 5 build 1325 : Trading avec couverture et test par ticks réels >>>.

Exemple :

MQL5 : Pour faciliter l'organisation des modèles d'événements, le support des pointeurs vers les fonctions a été ajouté.

Pour déclarer un pointeur vers une fonction, définissez le type "pointeur vers une fonction", par exemple :

typedef int (*TFunc)(int,int);

TFunc est maintenant un type et vous pouvez déclarer une variable pointeur de fonction :

TFunc func_ptr;

Vous pouvez stocker l'adresse d'une fonction dans la variable func_ptr afin de pouvoir l'appeler ultérieurement :

int sub(int x,int y) { return(x-y); }
int add(int x,int y) { return(x+y); }
int neg(int x)       { return(~x);  }

func_ptr=sub;
Print(func_ptr(10,5));

func_ptr=add;
Print(func_ptr(10,5));

func_ptr=neg;           // ошибка: neg не имеет тип  int (int,int)
Print(func_ptr(10));    // ошибка: должно быть два параметра

Les pointeurs vers les fonctions peuvent être stockés et transmis en tant que paramètre. Vous ne pouvez pas obtenir un pointeur sur une méthode non statique d'une classe.

 

Voici ma méthode du cours, par exemple :

      void Evolution(){ 
         

         for(int c=0;c<GenerationsCount;c++){
         
            f0(); // расчет значений фф для каждого индивида
            f1();         
            f2();
            f3();
            f4();
            
         }
         
         f5();
         f6();

      }

Et comment on fait ça ? Et surtout, pourquoi y penser alors qu'en réalité, ce n'est jamais nécessaire. Le championnat des algorithmes d'optimisation se transforme en championnat de l'adaptation d'une fonction pour qu'elle fonctionne dans vos fesses.

Une fonction peut compter le nombre de fois où elle a été appelée. Si un concurrent effectue une importation, le numéro peut être écrit dans le fichier et remis à zéro avant son exécution.

Il est préférable d'utiliser une classe, la quantité sera alors juste disponible. La tricherie est exclue ici.

 
Dmitry Fedoseev:
Vous ne devriez même pas y penser, il n'y a aucune raison de gaspiller des efforts à ce sujet.

OK. Pas de problème. Ensuite, il y a deux options pour le fonctionnement des algorithmes pour le championnat :

1. En appelant FF depuis l'intérieur de l'algorithme (après tout, l'algorithme ne saura pas ce qu'est FF à l'intérieur d'une bible fermée avec FF)

2. sans appeler le FF à l'intérieur de l'algorithme, en passant simplement le résultat à l'algorithme.

Je suppose que ces deux options peuvent couvrir toutes les variations possibles dans l'utilisation des algorithmes d'optimisation. Nous devons rencontrer les participants, tout le monde n'a pas un niveau élevé de connaissances en programmation (je ne suis pas un pro, par exemple, il m'a fallu plusieurs mois pour scier l'algorithme en parties pour l'universalité)))).

 

Merci.

Pas plus facile qu'avec une classe. Je dirais même que c'est plus facile avec une classe.

 
Andrey Dik:

OK. Pas de problème. Ensuite, il y a deux options pour le fonctionnement des algorithmes pour le championnat :

1. En appelant FF depuis l'intérieur de l'algorithme (après tout, l'algorithme ne saura pas ce qu'est FF à l'intérieur d'une bible fermée avec FF)

2. sans appeler le FF à l'intérieur de l'algorithme, en passant simplement le résultat à l'algorithme.

Je suppose que ces deux options peuvent couvrir toutes les variations possibles dans l'utilisation des algorithmes d'optimisation. Nous devons rencontrer les participants, tout le monde n'a pas un niveau élevé de connaissances en programmation (je ne suis pas un pro, par exemple, il m'a fallu plusieurs mois pour scier l'algorithme en parties pour l'universalité)))).

Si vous avez du temps supplémentaire, vous êtes les bienvenus. Seulement dans. 2 ne seront pas en demande.
 
Dmitry Fedoseev:
Si vous avez du temps supplémentaire, vous êtes le bienvenu. Seulement dans. 2 ne seront pas en demande.
Eh bien, ce n'est pas à nous d'en juger. Vous avez l'option 1 et j'ai l'option 2. Et qui sait ce que feront les autres participants. Et quelle est l'heure ? - Le script d'exemple ci-dessus a été écrit en 5 minutes, nous en viendrons aux 2 options établies, je suppose.
 
Andrey Dik:
Eh bien, nous ne sommes pas autorisés à en juger. Vous avez l'option 1 et j'ai l'option 2. Et qui sait ce que feront les autres participants. Et quelle est l'heure ? - exemple de script écrit ci-dessus en 5 minutes, nous en viendrons donc aux 2 options établies, je suppose.
Je ne peux même pas penser à quelque chose pour deviner comment alors l'option 2 ? Ce n'est pas naturel.
 
Dmitry Fedoseev:
Je ne peux même pas penser à quelque chose qui permettrait de deviner comment la variante 2 pourrait se produire ? Ce n'est pas naturel.

Un exemple simple. L'algorithme d'optimisation est accroché à un graphique quelque part. Le conseiller expert est optimisé dans le testeur intégré par une recherche complète. Vous pouvez donc utiliser votre propre algorithme d'optimisation au lieu de l'algorithme habituel.

Un autre exemple. Le conseiller expert travaille dans le graphique et effectue des transactions. Il enregistre les résultats de la transaction après un certain temps dans l'algorithme (qui peut être à l'intérieur ou à l'extérieur du conseiller expert) avec ses paramètres et reçoit les nouveaux paramètres en retour, puis continue à négocier (dans votre cas, nous aurions besoin d'exécuter une exécution historique, tandis que dans mon cas, nous pouvons utiliser une optimisation "en direct").

Et ainsi de suite. Autrement dit, dans ces exemples, l'algorithme est totalement indépendant de la tâche.

J'ai délibérément appliqué ces exemples au trading. Nous sommes des commerçants.