Et, en fait, un exemple de bibliothèque membre. Algorithme d'optimisation fonctionnel, basé sur le RNG. Il est assez bon (pour le RNG) pour la recherche maximale de fonctions avec des paramètres de 1...5 (peut-être plus, aucune restriction dans le code, mais les résultats seront décevants). Ce n'est pas bon pour le championnat, mais ça fera l'affaire pour l'exemple :
#property library#property strict//+------------------------------------------------------------------+// тестовая фитнес функция чемпионата, не известна участникам#import "ff.ex5"int GetParamCount ();
void GetParamProperties (double &min, double &max, double &step);
int GetCountRunsFF ();
double FF (double &array []);
#import
//+------------------------------------------------------------------+///////////////////////////////////////////////////////////////////////////////| // Здесь список экспортируемых функций библиотеки оптимизации, которые//обязаны объявлены именно так как показано ниже, для того, что проверочный скрипт//мог корректно обратится к библиотеке, содержимое этих функций на усмотрение//участников /*
//+------------------------------------------------------------------+
// алгоритм оптимизации участника
#import "ao.ex5"
// инициализация АО
void InitAO (int paramCount, int maxFFruns);
// запуск АО
void StartAlgo ();
// получить максимальное значение ФФ
double GetMaxFF ();
#import
//+------------------------------------------------------------------+
*///+------------------------------------------------------------------+void InitAO (int paramCount, int maxFFruns) export
{
G_MaxFFruns = maxFFruns;
G_ParamCount = paramCount; // можно и так: G_ParamCount = GetParamCount ();
GetParamProperties (G_MinParam, G_MaxParam, G_StepParam);
}
//+------------------------------------------------------------------+//+------------------------------------------------------------------+void StartAlgo () export
{
bool stopAlgo = false;
int ffRuns = 0;
double temp = 0.0;
double param [];
ArrayResize (param, G_ParamCount);
//------------------------------------------------------------------while(!stopAlgo)
{
GetOptParam (param);
temp = FF (param);
if(temp > G_BestResult)
{
G_BestResult = temp;
Comment (G_BestResult);
}
ffRuns++;
if(ffRuns == G_MaxFFruns)
stopAlgo = true;
}
//-----------------------------------------------------------------
}
//+------------------------------------------------------------------+//+------------------------------------------------------------------+double GetMaxFF () export
{
return (G_BestResult);
}
//+------------------------------------------------------------------+///////////////////////////////////////////////////////////////////////////////| ///////////////////////////////////////////////////////////////////////////////|// Ниже - функции участников, объявление и содержимое на их усмотрение int G_MaxFFruns = 0;
double G_BestResult = -DBL_MAX;
int G_ParamCount = 0;
double G_MinParam = -DBL_MAX;
double G_MaxParam = DBL_MAX;
double G_StepParam = 0.0;
//+------------------------------------------------------------------+void GetOptParam (double ¶m [])
{
int size = ArraySize (param);
for(int i = 0; i < size; i++)
param [i] = SeInDiSp (RNDfromCI (G_MinParam, G_MaxParam),
G_MinParam,
G_MaxParam,
G_StepParam);
}
//+------------------------------------------------------------------+//+------------------------------------------------------------------+double SeInDiSp (double in, double inMin, double inMax, double step)
{
if(in <= inMin)
return (inMin);
if(in >= inMax)
return (inMax);
if(step == 0.0)
return (in);
elsereturn (inMin + step * (double)MathRound ((in - inMin) / step));
}
//+------------------------------------------------------------------+//+------------------------------------------------------------------+double RNDfromCI (double min, double max)
{
if(min == max)
return (min);
double Min, Max;
if(min > max)
{
Min = max;
Max = min;
}
else
{
Min = min;
Max = max;
}
return (double(Min + ((Max - Min) * (double)MathRand () / 32767.0)));
}
//+------------------------------------------------------------------+
Le résultat moyen du RSS pour le FF de l'exemple ci-dessus est de -3,9699791274683918.
J'ai fait 5 exécutions du script avec le paramètre 1000 appels FF.
Compiler les exemples et vérifier. A la place du testao.ex5 sur le champ sera votre bibliothèque.
Rappel :
Au championnat le script restera le même sans aucune modification, le contenu de FF dans ff.ex5 sera différent, et la bibliothèque concurrente devrait être ao.ex5, ceci peut être vu par les fonctions importées déclarées.
S'il s'avère nécessaire d'ajouter des fonctions exportées à la bibliothèque des participants, un préavis sera donné à ce sujet. En ce moment, tous les codes de script et les interfaces nécessaires sont affichés (une fois de plus), préparez-vous.
Le résultat moyen du RSS pour le FF de l'exemple ci-dessus est de -3,9699791274683918.
J'ai fait 5 exécutions du script avec le paramètre 1000 appels FF.
Compiler les exemples et vérifier. A la place du testao.ex5 sur le champ sera votre bibliothèque.
Rappel :
Au championnat le script restera le même sans aucune modification, le contenu de FF dans ff.ex5 sera différent, et la bibliothèque concurrente devrait être ao.ex5, ceci peut être vu par les fonctions importées déclarées.
S'il s'avère nécessaire d'ajouter des fonctions exportées à la bibliothèque des participants, un préavis sera donné à ce sujet. À ce stade, tous les codes de script et les interfaces nécessaires sont affichés (une fois de plus), préparez-vous.
H L'interface fonctionne. Transféré les trois codes ci-dessus à cinq.
J'ai lancé le script sur le graphique. Avant cela, j'ai changé la fonction de fitness dans la bibliothèque en double ffVolue = 2+exp(-MathAbs(x1+x2+x3)) ; le vrai maximum est de trois. Je l'ai.
Si je comprends bien, je dois réécrire mon algorithme dans le format de l'algorithme de l'exemple, renommer mes fonctions dans le code aux noms qui sont dans l'exemple et vérifier qu'elles fonctionnent.
Il n'est pas nécessaire d'étudier l'interface de connexion et l'exemple FF donné.
J'ai lancé le script sur le graphique. Avant cela, j'ai changé la fonction de fitness dans la bibliothèque en double ffVolue = 2+exp(-MathAbs(x1+x2+x3)) ; le vrai maximum est de trois. Je l'ai.
Si je comprends bien, je dois réécrire mon algorithme dans le format de l'algorithme de l'exemple, renommer mes fonctions dans le code aux noms de l'exemple, et vérifier qu'elles fonctionnent.
Il n'est pas nécessaire d'étudier l'interface de connexion et l'exemple FF donné.
Super ! Vous avez tout fait correctement.
Juste une petite correction dans la mise en évidence : dans l'algorithme du participant,vous devez vous assurer que vous déclarez (exactement comme dans l'exemple) les fonctions exportables obligatoires, le contenu de ces fonctions exportables et la présence d'autres fonctions personnalisées sont à la discrétion du participant .C'est ce qui est dit dans les commentaires.
Oh, et oui... Les exemples fonctionneront également avec MT4. Je n'ai pas vérifié, mais il n'y a rien là-dedans qui ne fonctionnerait pas dans MT4. C'est ce que j'ai dit pour ceux qui sont allergiques (ou qui ont une peur bleue) à MT5, le championnat leur est ouvert aussi.
Andrey Dik: Oh, et oui... Les exemples fonctionneront également dans MT4. Je ne l'ai pas vérifié, mais il n'y a rien qui puisse ne pas fonctionner dans MT4. C'est ce que j'ai dit pour ceux qui sont allergiques (ou qui ont une peur bleue) à MT5, le championnat est ouvert pour eux aussi.
Pour le faire fonctionner dans foursquare, remplacez #import "ff.ex5" et #import "ao.ex5" par #import "ff.ex4" et #import "ao.ex4" dans le script exécutable et dans l'exemple d'algorithme de membre.
Vous pouvez également écrire en 4 . Par exemple, lorsque j'ai compilé du code MQL4 dans MQL5, il n'y avait qu'une seule erreur. J'ai changé TRUE en true ou one et ça a marché. Je devrais juste l'écrire comme indiqué dans l'exemple. Je n'ai pas encore corrigé mon propre code. Je vais essayer.
Je suis en train de préparer une plateforme (site web) dédiée aux algorithmes d'optimisation, où il y aura des concours, des informations utiles et bien d'autres choses intéressantes et utiles.
Chacun pourra tester sa force dans l'écriture d'algorithmes et les confronter aux autres participants. Le participant n'aura pas besoin d'envoyer l'algorithme au serveur, toute interaction avec le FF, situé sur le serveur, se fait via REST, le participant envoie un ensemble d'arguments au serveur, et reçoit le résultat en retour du FF, aucun arbitre n'est nécessaire car tout est extrêmement transparent, tout en restant secret pour les algorithmes des participants.
Je suis en train de préparer une plateforme (site web) dédiée aux algorithmes d'optimisation, où il y aura des concours, des informations utiles et bien d'autres choses intéressantes et utiles.
Chacun pourra tester sa force dans l'écriture d'algorithmes et les confronter aux autres participants. Le participant n'aura pas besoin d'envoyer l'algorithme au serveur, toute interaction avec le FF, situé sur le serveur, se fait via REST, le participant envoie un ensemble d'arguments au serveur, et reçoit le résultat en retour du FF, aucun arbitre n'est nécessaire car tout est extrêmement transparent, tout en restant secret pour les algorithmes des participants.
Attendez les nouvelles !
Intéressant !
N'écoutez pas les conseillers et les critiques du forum, faites ce que vous pensez, sinon rien ne fonctionnera ;))
Et, en fait, un exemple de bibliothèque membre. Algorithme d'optimisation fonctionnel, basé sur le RNG. Il est assez bon (pour le RNG) pour la recherche maximale de fonctions avec des paramètres de 1...5 (peut-être plus, aucune restriction dans le code, mais les résultats seront décevants). Ce n'est pas bon pour le championnat, mais ça fera l'affaire pour l'exemple :
Le résultat moyen du RSS pour le FF de l'exemple ci-dessus est de -3,9699791274683918.
J'ai fait 5 exécutions du script avec le paramètre 1000 appels FF.
Compiler les exemples et vérifier. A la place du testao.ex5 sur le champ sera votre bibliothèque.
Rappel :
Au championnat le script restera le même sans aucune modification, le contenu de FF dans ff.ex5 sera différent, et la bibliothèque concurrente devrait être ao.ex5, ceci peut être vu par les fonctions importées déclarées.
S'il s'avère nécessaire d'ajouter des fonctions exportées à la bibliothèque des participants, un préavis sera donné à ce sujet. En ce moment, tous les codes de script et les interfaces nécessaires sont affichés (une fois de plus), préparez-vous.
Le résultat moyen du RSS pour le FF de l'exemple ci-dessus est de -3,9699791274683918.
J'ai fait 5 exécutions du script avec le paramètre 1000 appels FF.
Compiler les exemples et vérifier. A la place du testao.ex5 sur le champ sera votre bibliothèque.
Rappel :
Au championnat le script restera le même sans aucune modification, le contenu de FF dans ff.ex5 sera différent, et la bibliothèque concurrente devrait être ao.ex5, ceci peut être vu par les fonctions importées déclarées.
S'il s'avère nécessaire d'ajouter des fonctions exportées à la bibliothèque des participants, un préavis sera donné à ce sujet. À ce stade, tous les codes de script et les interfaces nécessaires sont affichés (une fois de plus), préparez-vous.
H L'interface fonctionne. Transféré les trois codes ci-dessus à cinq.
1. appelez le script exécutable comme Ch Script.
2. la bibliothèque de la fonction fitness est nommée ff. C'est ainsi qu'il faut l'appeler. Le script ne le verra pas autrement.
3) La bibliothèque de l'algorithme d'exemple est nommée ao. La bibliothèque doit être nommée ainsi. Sinon, le script ne le verra pas.
J'ai lancé le script sur le graphique. Avant cela, j'ai changé la fonction de fitness dans la bibliothèque en double ffVolue = 2+exp(-MathAbs(x1+x2+x3)) ; le vrai maximum est de trois. Je l'ai.
Si je comprends bien, je dois réécrire mon algorithme dans le format de l'algorithme de l'exemple, renommer mes fonctions dans le code aux noms qui sont dans l'exemple et vérifier qu'elles fonctionnent.
Il n'est pas nécessaire d'étudier l'interface de connexion et l'exemple FF donné.
H L'interface fonctionne. J'ai transféré ces trois codes sur le 5.
1. Nommez le script exécutable comme Ch Script.
2. la bibliothèque de la fonction fitness est nommée ff. C'est ainsi qu'il faut l'appeler. Le script ne le verra pas autrement.
3) La bibliothèque de l'algorithme d'exemple est nommée ao. La bibliothèque doit être nommée ainsi. Sinon, le script ne le verra pas.
J'ai lancé le script sur le graphique. Avant cela, j'ai changé la fonction de fitness dans la bibliothèque en double ffVolue = 2+exp(-MathAbs(x1+x2+x3)) ; le vrai maximum est de trois. Je l'ai.
Si je comprends bien, je dois réécrire mon algorithme dans le format de l'algorithme de l'exemple, renommer mes fonctions dans le code aux noms de l'exemple, et vérifier qu'elles fonctionnent.
Il n'est pas nécessaire d'étudier l'interface de connexion et l'exemple FF donné.
Super ! Vous avez tout fait correctement.
Juste une petite correction dans la mise en évidence : dans l'algorithme du participant,vous devez vous assurer que vous déclarez (exactement comme dans l'exemple) les fonctions exportables obligatoires, le contenu de ces fonctions exportables et la présence d'autres fonctions personnalisées sont à la discrétion du participant .C'est ce qui est dit dans les commentaires.
C'est simple, n'est-ce pas ? ))
Oh, et oui... Les exemples fonctionneront également dans MT4. Je ne l'ai pas vérifié, mais il n'y a rien qui puisse ne pas fonctionner dans MT4. C'est ce que j'ai dit pour ceux qui sont allergiques (ou qui ont une peur bleue) à MT5, le championnat est ouvert pour eux aussi.
Pour le faire fonctionner dans foursquare, remplacez #import "ff.ex5" et #import "ao.ex5" par #import "ff.ex4" et #import "ao.ex4" dans le script exécutable et dans l'exemple d'algorithme de membre.
Vous pouvez également écrire en 4 . Par exemple, lorsque j'ai compilé du code MQL4 dans MQL5, il n'y avait qu'une seule erreur. J'ai changé TRUE en true ou one et ça a marché. Je devrais juste l'écrire comme indiqué dans l'exemple. Je n'ai pas encore corrigé mon propre code. Je vais essayer.
Bonjour !
Je suis en train de préparer une plateforme (site web) dédiée aux algorithmes d'optimisation, où il y aura des concours, des informations utiles et bien d'autres choses intéressantes et utiles.
Chacun pourra tester sa force dans l'écriture d'algorithmes et les confronter aux autres participants. Le participant n'aura pas besoin d'envoyer l'algorithme au serveur, toute interaction avec le FF, situé sur le serveur, se fait via REST, le participant envoie un ensemble d'arguments au serveur, et reçoit le résultat en retour du FF, aucun arbitre n'est nécessaire car tout est extrêmement transparent, tout en restant secret pour les algorithmes des participants.
Restez à l'écoute !
...
Attendez les nouvelles !
Attente
Bonjour !
Je suis en train de préparer une plateforme (site web) dédiée aux algorithmes d'optimisation, où il y aura des concours, des informations utiles et bien d'autres choses intéressantes et utiles.
Chacun pourra tester sa force dans l'écriture d'algorithmes et les confronter aux autres participants. Le participant n'aura pas besoin d'envoyer l'algorithme au serveur, toute interaction avec le FF, situé sur le serveur, se fait via REST, le participant envoie un ensemble d'arguments au serveur, et reçoit le résultat en retour du FF, aucun arbitre n'est nécessaire car tout est extrêmement transparent, tout en restant secret pour les algorithmes des participants.
Attendez les nouvelles !
Intéressant !
N'écoutez pas les conseillers et les critiques du forum, faites ce que vous pensez, sinon rien ne fonctionnera ;))
Attente
Intéressant !
N'écoutez pas les conseillers et les critiques du forum, faites ce que vous voulez ou cela ne marchera plus ;))
Merci !)