Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Étant donné :
Dans la fonction init() de l'EA, un générateur MQL PSP est initialisé : MathSrand(...). Lorsque le terminal démarre, plusieurs (pour plus de clarté, disons trois) copies du conseiller expert sont chargées à partir du modèle. Le chargement est rapide, il est donc très probable (et c'est presque toujours le cas) que les fonctions TimeLocal() et TimeCurrent() renvoient les mêmes valeurs dans toutes les copies.
Question :
Quelles sont les astuces pour que le PRNG initialise des nombres différents dans différentes copies de l'EA ? En d'autres termes, où (avec un effort de programmation minimal) obtenir l'élément de hasard ?
Étant donné :
Dans la fonction init() de l'EA, un générateur MQL PSP est initialisé : MathSrand(...). Lorsque le terminal démarre, plusieurs (pour plus de clarté, disons trois) copies du conseiller expert sont chargées à partir du modèle. Le chargement est rapide, il est donc très probable (et c'est presque toujours le cas) que les fonctions TimeLocal() et TimeCurrent() renvoient les mêmes valeurs dans toutes les copies.
Question :
Quelles sont les astuces pour que le PRNG initialise des nombres différents dans différentes copies de l'EA ? En d'autres termes, où (avec un effort de programmation minimal) obtenir l'élément de hasard ?
GetTickCount ?
pourrait fonctionner, mais ce n'est pas sûr...
Une milliseconde pour un programme peut être une éternité).
pourrait fonctionner, mais ce n'est pas sûr...
option 2 - utiliser des variables globales pour créer des "sémaphores" pour initialiser les experts en séquence.
Question sur la récupération des lignes de la dll dans mql.
La fonction mysql_fetch_row de libmysql.dll renvoie le type MYSQL_ROW.
Ce type est défini comme suit : typedef char** MYSQL_ROW
Comment puis-je accéder à ce tableau de chaînes retournées ?
Les dimensions du tableau sont-elles connues ?
mais la longueur de chaque ligne ne l'est pas.
Il y a une autre chose dans cet exemple de lien - obtenir un pointeur *lengths.
, row[i] ? row[i] : "NULL") ; }Il s'avère que c'est aussi un tableau... Mais comment y accéder...
Voici ce que vous obtenez en MQL lorsque vous passez le résultat de mysql_fetch_row à une chaîne de caractères.
p0ƒu0ƒ;1;a
où
p0ƒu0ƒ est l'adresse (8 octets) de la chaîne de caractères.
;1;a est sa donnée utilisable
mais si vous le mettez en int, alors au lieu de p0ƒ l'adresse est 42152040
Si le pointeur vers la chaîne de caractères ne change pas pendant l'exécution du programme, vous pouvez retourner le pointeur vers la chaîne de caractères sans la copier dans le tampon.
Il n'y a donc aucun moyen de le faire dans MQL ? Pas même dans MQL5 ?
Si le pointeur vers la chaîne de caractères ne change pas pendant l'exécution du programme, vous pouvez retourner le pointeur vers la chaîne de caractères sans la copier dans le tampon.
Tout simplement