Erreurs, bugs, questions - page 2659

 
Igor Zakharov:

vous pouvez essayer d'utiliser une fonction du numéro de passage comme base de génération.

Si certains paramètres d'entrée changent pendant l'optimisation, leur combinaison (somme, produit, degré...) peut être utilisée pour définir la base de génération des nombres pseudo-aléatoires. Probablement (mais pas définitivement :D ), un effet secondaire serait de pouvoir reproduire en une seule fois le code contenant des nombres "aléatoires".

On peut générer/trouver un tableau de caractères, relativement aléatoire, en quelques kilo-octets (texte de Pouchkine :) ). Tout se résume à une mise en œuvre astucieuse du caractère aléatoire pour satisfaire aux exigences de la tâche, si la proposition n'est pas vérifiée, je me souviens de tels problèmes dans de nombreuses bibliothèques.

Collègues, veuillez me conseiller, si j'ouvre le graphique ChartOpen(), comment puis-je ramener le focus (activité, visibilité) sur le graphique à partir duquel le conseiller expert travaille sans le fermer.

Et qui sait pourquoi Bid, Ask ne coïncide pas avec le prix du graphique Close[0]https://www.mql5.com/ru/forum/160683/page1082#comment_15152111

Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
  • 2020.02.25
  • www.mql5.com
В этой ветке я хочу начать свою помощь тем, кто действительно хочет разобраться и научиться программированию на новом MQL4 и желает легко перейти н...
 
Aleksey Mavrin:

Tout se résume à une mise en œuvre astucieuse de la randomisation pour répondre aux exigences des tâches.

Je ne pense pas que ce soit le problème... le pseudo-aléatoire lui-même fonctionne assez bien, le problème est dans la base de génération - avec des entrées constantes (pendant l'optimisation) la base est la même, donc les résultats sont toujours proches. j'ai suggéré comment maximiser la dispersion de la base de génération

 
Igor Zakharov:

il me semble que ce n'est pas le problème... le pseudo-aléatoire lui-même fonctionne bien, le problème est dans la base de génération de la série - avec des entrées constantes (pendant l'optimisation) la base est la même, donc les résultats sont toujours proches. j'ai suggéré comment maximiser la dispersion de la base de génération

Je suis d'accord. Je voulais simplement dire le fait, si la mémoire sert, que souvent trouvé (sont) les bibliothèques qui ne fonctionnent pas initialisation, c'est à dire sans raison de la même base, si elle n'est pas vérifiée et utilisée, beaucoup ne le savent pas.

 
Igor Makanu:

photo comme ci-dessus

solution crusty directement - définir le nombre de srand dans les propriétés de l'EA. ou prendre dans le hash des paramètres, alors au moins les randoms auront une initialisation différente.
 
TheXpert:
solution crusty directement - définir le nombre de srand dans les propriétés de l'EA. ou prendre dans le hash des paramètres, alors au moins les randoms auront une initialisation différente.

J'ai trouvé cette solution hier, elle fonctionne correctement.

input int param1 =  2147483647;
//+------------------------------------------------------------------+
int OnInit()
   {
   srand(param1);
   return(INIT_SUCCEEDED);
   }
//+------------------------------------------------------------------+
void OnTick()
   {

   }
//+------------------------------------------------------------------+
double OnTester()
   {
   return(rand());
   }

mes questions portent en général sur l'exactitude de rand() dans teter, maintenant que j'ai recherché alglib, il utiliseMathRand() une fois dans randomreal() , qui sera ensuite souvent utilisé dans la bibliothèque alglib.

 
Igor Makanu:

mes questions portent généralement sur l'exactitude de rand() dans le teter

Les questions portent exactement sur l'initialisation. Apparemment, dans le testeur, on ne peut pas initialiser par temps pour obtenir un bon rand().
 
TheXpert:
Apparemment, pour obtenir un bon caractère aléatoire dans le testeur, vous ne pouvez pas initialiser avec le temps.

c'est exactement ce que c'est

a écrit hier que cela contredit la documentationhttps://www.mql5.com/ru/forum/1111/page2657#comment_15165819 et que l'exemple MathSrand() de l'aide donnera un résultat différent de celui attendu dans le testeur


UPD : mon problème est un peu plus profond - je veux utiliser tester pour l'apprentissage profond et sauvegarder les meilleures configurations NS possibles via l'échange d'agent à agent - j'ai tout prévu en général, mais je voulais gérer les collisions via le démarrage (ou l'arrêt) de l'agent avec une valeur aléatoire..... mais hélas toutes les valeurs aléatoires ne sont pas aléatoires dans les agents testeurs ;)))

 
Dans la plupart des cas, le testeur doit assurer la reproductibilité des résultats. L'exigence d'une randomisation des résultats sans modification des paramètres d'entrée et de l'état de l'environnement (toutes les fonctions liées au temps virtuel) est contraire à la tâche et à la mise en œuvre du testeur.
 
Stanislav Korotky:
Dans la plupart des cas, le testeur doit garantir la reproductibilité des résultats. L'exigence que les résultats soient randomisés sans changer les paramètres d'entrée et l'état de l'environnement (toutes les fonctions liées au temps virtuel) est en contradiction avec la tâche et la mise en œuvre du testeur.

c'est bien ce que vous écrivez, mais j'ai besoin de séparer l'ordre d'accès des agents lors de la sauvegarde dans la base de données

en fait, vous avez besoin d'un ID d'agent local dans le testeur, je ne sais pas pourquoi cette fonctionnalité n'existe pas.

 
Igor Makanu:

besoin d'un ID - agent local dans le testeur, je ne sais pas pourquoi il n'y a pas une telle fonctionnalité

TerminalInfoString(TERMINAL_DATA_PATH);