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
Aidez-moi
essayez le multithreading mais le terminal se plante
J'ai écrit un dll C++.
Voici le code
Et le script
Si vous changez le code de la dll en ceci
J'ai obtenu le nombre 10 sur l'écran à la place du commentaire (il devrait être comme ceci) et ensuite j'obtiens msgbox et 2 boutons
le terminal ne se plante pas tant que je n'appuie pas sur un des boutons.
Dès que j'appuie sur le bouton, un message apparaît expliquant pourquoi le crash s'est produit et comment le réparer...
Messieurs, est-ce que quelqu'un a fait fonctionner le multidevise en mode de visualisation du prix d'ouverture en référence à d'autres TF ?
Voici le graphique quotidien :
Le terminal ne se bloque pas tant que je n'appuie pas sur au moins un des boutons.
Dès que j'appuie dessus, le message concernant la recherche de la cause du crash et la façon de la réparer apparaît...
Veuillez noter que le script MQL5 est automatiquement déchargé après l'achèvement de OnStart, y compris votre DLL.
En d'autres termes, vous avez créé un fil de discussion avec une fenêtre modale en mémoire, et le tabouret a été renversé. Après la fermeture de la fenêtre modale, il n'y a plus rien.
Dans votre cas, vous devez attendre explicitement que tous les threads de la DLL soient terminés de manière normale et garantie avant de terminer le script MQL5.
Notez que le script MQL5 est automatiquement déchargé après l'achèvement de OnStart, y compris votre DLL.
En d'autres termes, il y a un fil de discussion avec une fenêtre modale en mémoire, et le tabouret a été renversé sous elle. Après la fermeture de la fenêtre modale, il n'y a plus rien.
Dans votre cas, avant de terminer le script MQL5, vous devez attendre explicitement que tous les threads de la DLL se terminent normalement et soient garantis.
S'il n'y a pas une seule perte dans une série de transactions, le FACTEUR DE PROFIT et le RATIO DE PARTAGE prennent des valeurs irréalistes/extrêmes. S'agit-il d'une erreur ou ces moments doivent-ils être considérés et traités d'une manière ou d'une autre ? Comment le faire correctement ?
EMPTY_VALUE (identique à DBL_MAX)
Bien sûr, vous pouvez appliquer un nan indéfini, mais alors vous ne pouvez pas faire de comparaisons.
EMPTY_VALUE (identique à DBL_MAX)
Vous pouvez bien sûr utiliser des nan indéfinis, mais alors vous ne pouvez pas faire de comparaisons.
S'il n'y a pas de perte dans une série de transactions, les valeurs du FACTEUR DE PROFIT et du RATIO DE PARTAGE prennent des valeurs irréalistes/extrêmes. S'agit-il d'une erreur ou ces moments doivent-ils être considérés et traités d'une manière ou d'une autre ? Comment le faire correctement ?
Apparemment, il y a une erreur, car le facteur de profit ne devrait pas être calculé avec des valeurs négatives, comme dans ce cas avec l'absence de transactions négatives.
Simplement, si nous prenons la formule globalement (Profit brut/Perte brute), en l'absence de transactions négatives, nous obtenons une division par zéro, et lorsque la perte brute est plus élevée, nous obtenons un nombre inférieur à 1, ce qui n'est pas non plus correct pour une analyse plus approfondie, car la différence entre deux facteurs de profit positifs sera plusieurs fois supérieure à la différence entre deux facteurs négatifs conventionnels.
Apparemment, il y a une erreur, car le facteur de profit ne devrait pas être calculé avec des valeurs négatives, et comme dans ce cas avec aucune transaction négative.
Il a déjà été dit deux posts plus haut que ce n'est pas une erreur, mais un signe d'impossibilité de calculer cet indicateur.
Bien que vous puissiez faire une astuce, à chaque calcul, ajoutez 1 cent à la fois au Porofit brut et à la Perte brute.
La formule d'avance serait alors ((Porofit brut+0,01)/(Perte brute+0,01)).
La formule pour calculer la valeur réciproque (lorsque la perte brute est plus importante)
Pour faire -((Perte brute+0,01)/(Porofit brut+0,01))
Il est clair que la perte brute et le porofit brut sont des modules.
La ligne sera alors symétrique des deux côtés, ce qui est bon pour GA, et il n'y aura pas du tout de situations non calculables.
Mais il sera très probablement utile non pas pour vous, mais pour les personnes qui rédigent leurs propres critères d'optimisation.