Championnat d'optimisation des algorithmes. - page 5

 
Andrey Dik:

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.

Quelque chose qui sort de l'ordinaire.

Le conseiller expert a déjà été optimisé dans le testeur, alors qu'est-ce que cela a à voir avec votre propre algorithme d'optimisation ?

Le deuxième cas est un peu plus clair. Oui, si vous fournissez des appels indépendants uniques, vous pouvez les appeler un par un. Et vous pouvez faire tout cela en une seule fois par un processus distinct. Je vois, mais c'est une complication de l'algorithme et nous nous éloignons de l'objectif du championnat. L'objectif du championnat est l'algorithme d'optimisation, pas son application. Il y a beaucoup de gens qui ne le comprennent pas, et maintenant cela devient encore plus compliqué.

 
Andrey Dik:

en général, comme ça, et bien sûr, il y aura un compteur de temps. schéma :

Dans ce code, il ne s'agit pas d'un appel unique, mais plutôt de la partie principale de l'algorithme, avec un peu d'imposition d'une partie de l'algorithme au participant. Selon les conditions initiales, le participant a le droit de cacher l'ensemble de l'algorithme.
 
Dmitry Fedoseev:

1. Quelque chose qui sort de l'ordinaire. L'optimisation du conseiller expert a déjà été exécutée dans le testeur, et qu'est-ce que cela a à voir avec son propre algorithme d'optimisation ?

2. Le deuxième cas est un peu plus clair. Oui, si vous fournissez des appels indépendants uniques, vous pouvez les appeler un par un. Et vous pouvez faire tout cela en une seule fois par un processus distinct. Je vois, mais c'est une complication de l'algorithme et un écart par rapport à l'objectif du championnat. L'objectif du championnat est l'algorithme d'optimisation, pas son application. Beaucoup de gens ne l'ont pas compris, et maintenant cela devient plus compliqué.

1. Rien d'extraordinaire, c'est juste une situation de la vie réelle. Un testeur interne effectue un essai après l'autre (un paramètre - le compteur est repris) et nous contrôlons l'optimisation de tous les paramètres et en quantité illimitée.

2. Nous avons décidé d'utiliser 2 variantes de travail avec FF. Donc tout va bien, il n'y a pas de problème, celui qui veut, alors utilisera l'optimisation.

Les participants sont libres de choisir le script de test avec lequel ils veulent travailler, le premier ou le second.

 
Dmitry Fedoseev:
Dans ce code, il ne s'agit pas d'un appel unique, mais la partie principale de l'algorithme est déplacée à l'extérieur, avec une certaine imposition d'une partie de l'algorithme au participant. Selon les conditions initiales, le participant a le droit de cacher l'ensemble de l'algorithme.

Où se trouve l'imposition ? Demandez à l'algorithme combien de fois et quoi compter, l'algorithme du participant décide de ces choses. Les algorithmes peuvent avoir des architectures très différentes d'un même GA, et l'exemple permet d'utiliser un algo sur n'importe quel principe de fonctionnement.

J'y ai montré les fonctions de service - elles peuvent être vides si le participant n'en a pas besoin.

 
Andrey Dik:

Où se trouve l'imposition ? Demandez à l'algorithme combien de fois et quoi compter, l'algorithme du participant décide de ces choses. Les algorithmes peuvent avoir des architectures très différentes d'un même GA, et l'exemple permet d'utiliser un algo sur n'importe quel principe de fonctionnement.

J'y ai montré les fonctions de service - elles peuvent être vides si le participant n'en a pas besoin.

Il suffit de donner aux participants un pointeur vers une fonction ou vers un objet avec une méthode. Nous sommes au troisième millénaire.
 
Passez également le nombre autorisé d'appels ff à la fonction participant, afin que le nombre d'époques et le nombre d'individus puissent être alloués.
 
Dmitry Fedoseev:
Passez également dans la fonction du participant le nombre autorisé d'appels FF, afin que nous puissions distribuer le nombre d'époques et le nombre d'individus.

Par exemple, on dit à l'algorithme que vous pouvez avoir un maximum de 100 appels FF... Aha ! - il (l'algorithme) a pensé, je vais tromper tout le monde et appeler lamusique pour 50 notes, je vais appeler le FF seulement 50 fois. :)

Non, laissez-le compter autant qu'il le faut. Et nous déciderons quand l'arrêter. Après tout, le nombre d'appels FF sera évalué comme un indicateur de la qualité du travail.

 
Andrey Dik:

Par exemple, on dit à l'algorithme que vous pouvez avoir un maximum de 100 appels FF... Aha ! - il (l'algorithme) a pensé, je vais tromper tout le monde et appeler lamusique pour 50 notes, je vais appeler le FF seulement 50 fois. :)

Non, laissez-le compter autant qu'il le faut. Et nous déciderons quand l'arrêter. Après tout, le nombre de fois où le FF est appelé sera jugé comme une mesure de la performance.

Quel est l'intérêt de l'appeler sournoisement moins de fois ? Vous pouvez faire moins, vous ne pouvez pas faire plus. Quel est le problème ?

La fonction FF compte les appels. S'il y en a plus que ce qui est autorisé, il y a disqualification.

 

C'est à peu près le modèle de la bibliothèque d'un membre :

#property library
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

class CFF{
   public:
   virtual double fun(double & x[]){return(0);}
   virtual string type(){return("");}
   virtual double value(){return(0);}
   virtual string note(){return("");}
};

здесь участник пишет свои классы, если надо 

void function(CFF * aff,int n,double & params[],double & value) export{

    Здесь участник пишет свой код и вызывает функцию так - aff.value(x); // x - это массив double

//по окончанию поиска вернуть params (параметры соответствующие лучшему результату), value (лучший результат)

}

здесь участник создает свои вспомогательные функции
 
Dmitry Fedoseev:

Quel est l'intérêt d'être si rusé et d'appeler moins de fois ? Vous pouvez faire moins, vous ne pouvez pas faire plus. Quel est le problème ?

La fonction ff compte les appels. Si plus est autorisé, disqualification.

Moins de ff run, c'est mieux, c'est le but. Cela peut être un peu délicat.

Pas besoin de limiter l'algorithme, laissez-le compter. Soit il décidera de s'arrêter de lui-même, soit il sera arrêté de force. L'algorithme n'a pas besoin de savoir combien de passages est le plafond - personne ne connaîtra le plafond. Il n'y aura pas de disqualification. L'algorithme résoudra le problème comme il a pu le faire.

La seule disqualification est la tentative de sauvegarder les résultats et de les utiliser lors d'exécutions ultérieures du script de contrôle.

Raison: