
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
Victor, vous, Renat, en général ont souligné à juste titre, Alexey a montré la dernière vérification nécessaire, et plus tôt vérifier toutes les vérifications nécessaires pour chaque paramètre avec toutes les nuances pour éviter l'ambiguïté de la signification et sans manquer aucune condition !
A quoi cela sert-il ? Parce que je réinitialise _LastError dans chaque fonction. Ce n'est pas comme si elle était constamment suspendue dans la mémoire...
Il faut encore vérifier que si aucun des 3 paramètres n'a changé, alors OrderModify n'a pas besoin d'être touché non plus.
Je vous entends. Ça n'a pas aidé. Voici un morceau de code de ma méthode de modification :
Nous pouvons clairement voir que la valeur de l'erreur est réinitialisée.Ensuite, il obtient les informations sur le marché. Si la modification est dans le testeur... alors... ...puis j'exécute le test proposé par Alexei, et... si la modification est infructueuse... écrire un journal et imprimer dans le journal...
En général, nous pouvons voir qu'il n'y a pas d'erreurs entre ResetLastError()... Il n'y a rien à redire.
Journal :
Je vous entends. Ça n'a pas aidé. Voici un morceau de code de ma méthode de modification :
Vous pouvez clairement voir que la valeur d'erreur est réinitialisée à cet endroit.Ensuite, il obtient les informations sur le marché. Si la modification est dans le testeur... alors... Je fais le test proposé par Alexei, et... si la modification n'aboutit pas, alors... écrire un journal et imprimer dans le journal...
En général, nous pouvons voir qu'il n'y a pas d'erreurs entre ResetLastError()... Il n'y a rien à redire.
Journal :
C'est comme ça...
Dans le conseiller expert, j'appelle la méthode de la classe comme ceci :
Voici la partie de la classe qui nous intéresse :
Voici le morceau de bois que nous voulons :
Laissez-moi vous expliquer. La modification a lieu dans la méthode fOrderModify(). À l'entrée de cette méthode fOrderModify(), les valeurs actuelles des paramètres de l'ordre et les nouvelles valeurs prévues sont imprimées au début du corps. Vous pouvez le voir :
Cette pièce est dans le journal :
Vous pouvez voir que les paramètres sont tous différents. Il ne devrait y avoir aucun problème.C'est comme ça...
Dans le conseiller expert, j'appelle la méthode de la classe comme ceci :
Voici la partie de la classe qui nous intéresse :
Voici le morceau de bois que nous voulons :
Je ne comprends pas quel est le rapport avec l'offre, si l'ordre est en attente ?
Le Bid est toujours inférieur au SellLimit, donc la ligne if(New_OOP < Bid) ne sera jamais vraie... ...respectivement, la modification est mise en œuvre sans encombre.
Pourquoi ne pas créer également un tableau d'erreurs ? Il est écrit noir sur blanc dans la documentation que la variable _LastError stocke le numéro de la dernière erreur. Et elle est réinitialisée par la fonction ResetLastError(). S'il n'y a pas d'autres erreurs entre les appels de _LastError, _LastError stocke la valeur de la dernière erreur. Il n'y avait plus d'erreurs dans mon code. Eh bien, ce n'est pas la question.
Vous avez tout à fait tort. La dernière erreur est bien réinitialisée dans de nombreuses fonctions importantes. Cela fonctionne aussi dans WinAPI.
C'est pourquoi vous devez enregistrer le code d'erreur dans une variable locale dès qu'il se produit et ne pas essayer de l'utiliser après avoir effacé cette variable système dix fois dans un grand nombre de vos fonctions intermédiaires.
Désolé, SellLimit nécessite une dist :
pas si (New_OOP < Bid) continuer; maissi (New_OOP-dist*Point < Bid) continuer;
Comment puis-je me débarrasser de cette putain d'erreur ? J'en ai marre. Je vérifie chaque paramètre d'entrée de la fonction. Pour moi, en ce moment, c'est comme ça :
Autrement dit, si le paramètre n'a pas été modifié, il n'est pas nécessaire de le modifier. Je n'ai jamais fait ça avant, mais j'ai décidé de...
Les paramètres sont ensuite transmis à la méthode de modification de l'ordre comme suit :
Aucune sortie dans le journal :
Donc, le journal nous notifie, comme une modification : OK, mais alors une erreur. Aucun des paramètres n'a changé.
L'ordonnance est en cours. Nous pouvons donc changer le prix d'ouverture, de stop et de prise. Et cela, d'après ce que j'ai compris, ne contredisait pas la documentation.
Qui a rencontré quelque chose comme ça ? Comment le résoudre ?