Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1179
![MQL5 - Langage des stratégies de trading intégré au terminal client MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Quand je fais une requête comme celle-ci :
J'obtiens ce résultat :
2020.06.17 13:49:53.270 2020.01.02 06:50:00 Symbole EURUSD_i Chiffres 5 Point 1e-05
Quand je fais une demande comme celle-ci :
J'obtiens ce résultat :
2020.06.17 13:51:58.787 2020.01.02 06:45:00 Symbole EURUSD_i Chiffres 0 Point 0.0
En même temps, je veux noter que si je n'insère pas la fonction Print, je n'obtiens aucune erreur, l'ordre n'essaie même pas de se modifier. C'est comme si CTrade ne voyait pas mon ordre.
La vérification du symbole et du numéro magique ne fonctionne pas :
Résultat :
2020.06.17 14:37:38.147 2020.01.02 06:50:00 Symbol Magic 0 Ticket 2
Le numéro magique doit être 12345, le symbole est euro dollar.
Pourquoi je ne peux pas avoir le symbole et le medgic ?
Si vous changez la chaîne de caractères :
est changé en
et supprimer la validation par numéro magique, alors nous avons des problèmes avec les prix.
2020.06.17 01:38:24.136 2020.01.02 07:40:00 failed modify order #2 buy stop 0.1 EURUSD_i at 1.12086 sl : 1.12023 tp : 1.12275 -> 1.00000, sl : 1.00000 tp : 1.00000 [Prix non valide].
2020.06.17 01:38:24.136 2020.01.02 07:40:00 CTrade::OrderSend : Modifier #2 à 1.00000 (sl : 1.00000 tp : 1.00000) [prix invalide].
2020.06.17 01:38:24.136 2020.01.02 07:40:00 BUY STOP modification échouée ! Résultat Retcode : 10015, description du Retcode : prix invalide
Je me suis déjà creusé la tête, alors que ce même code fonctionne bien dans un autre conseiller expert.
Qu'est-ce que je fais de mal ?
Objet de la classe CSymbolInfo incorrectement initialisé (ou non).
Si vous n'avez pas cette chaîne asymbol.Name(Symbol()), ajoutez-la.
Si vous en avez un, déboguez dans la fonction Name(string symbol) ce qui se passe.
Remplir les champs m_digits etc. avec Refresh().
s.s. A en juger par ce que vous avez ajouté, asymbol n'est pas initialisé.
Jusqu'à ce que le nouveau tic arrive, il n'y a pas de mouvement des boutons. C'est ce que je peux voir avec mes yeux. Dès que le prix change, les boutons bougent.
Bien qu'aujourd'hui, même avec le nouveau tick, les boutons ont cessé de se redessiner, alors que je n'ai rien changé. Seul l'arrière-plan bouge.Pour clarifier - comme vous le dites, vous modifiez les coordonnées dans OnTick, et vous affirmez qu'en fait les boutons se déplacent sur le prochain tick. Le prochain tic à partir de quoi ? Celui dont vous avez changé les coordonnées, ou celui de Noël ?
Votre objet de classe CSymbolInfo est initialisé de manière incorrecte (ou pas du tout).
Si vous n'avez pas une telle chaîne asymbol.Name(Symbol()), ajoutez-la.
Si vous en avez un, déboguez dans la fonction Name(string symbol) ce qui se passe.
Remplir les champs m_digits etc. avec Refresh().
s.s. A en juger par ce que vous avez ajouté, votre asymbole n'est définitivement pas initialisé.
S'agit-il d'une initialisation ? Lors de la compilation, j'obtiens les informations suivantes
Trade.mq5 panel' Trade.mq5 panel 1 1
Trade.mqh' Trade.mqh 1 1
Objet.mqh' Objet.mqh 1 1
'StdLibErr.mqh' StdLibErr.mqh 1 1
OrderInfo.mqh' OrderInfo.mqh 1 1
'HistoryOrderInfo.mqh' HistoryOrderInfo.mqh 1 1
PositionInfo.mqh' PositionInfo.mqh 1 1
DealInfo.mqh' DealInfo.mqh 1 1
SymbolInfo.mqh' SymbolInfo.mqh 1 1
code généré 1 1
0 erreur, 0 avertissement, 3192 msec écoulées 1 1
Après avoir ouvert un ordre d'achat stop, je recalcule tous les ordres, je sélectionne un ordre ouvert et je vérifie si le symbole et le numéro mqh correspondent :
Rien ne se passe à ce stade, comme je l'ai écrit ci-dessus, asymbol.Name() ne renvoie pas le symbole de l'ordre ouvert pour une raison quelconque, aorder.Magic() renvoie la valeur 0 (bien que mon nombre magique soit 121345), asymbol.TickSize() renvoie la valeur 0. En d'autres termes, le contrôle échoue et la poursuite du travail sur l'ordre est donc interrompue. Veuillez préciser"debug in function Name(string symbol) what's going on", je ne comprends pas bien cette phrase. Que dois-je ajouter et où ?
Pour clarifier - comme vous le dites, vous modifiez les coordonnées dans OnTick, et vous affirmez qu'en fait les boutons se déplacent sur le prochain tick. Le prochain tic à partir de quoi ? Celui dont vous avez changé les coordonnées, ou celui de Noël ?
À ce stade, rien ne se passe, car comme je l'ai déjà écrit ci-dessus, la fonction asymbol.Name() ne renvoie pas le symbole de l'ordre ouvert, la fonction aorder.Magic() renvoie la valeur 0 (bien que mon Magic soit 121345), la fonction asymbol.TickSize() renvoie la valeur 0. En d'autres termes, le contrôle échoue et la poursuite du travail sur l'ordre est donc interrompue. Veuillez préciser"debug in function Name(string symbol) what's going on", je ne comprends pas bien cette phrase. Que dois-je ajouter et où ?
L'erreur dans l'index d'ordre / ticket peut être une erreur de jugement par la magie 0. Au moment de l'accès à la structure d'ordre, des données d'un ordre incorrect y sont écrites. Dans la boucle de sélection, il se peut que le numéro suivant soit placé dans le dernier ensemble de commandes mais pas celui dont vous avez besoin. Les données de la dernière commande sélectionnée sont renvoyées de la structure de commande.
tout en haut de mon code se trouvent les lignes
S'agit-il d'une initialisation ? Lors de la compilation, j'obtiens les informations suivantes
'Trade panel.mq5' Trade panel.mq5 1 1
Trade.mqh' Trade.mqh 1 1
Objet.mqh' Objet.mqh 1 1
'StdLibErr.mqh' StdLibErr.mqh 1 1
OrderInfo.mqh' OrderInfo.mqh 1 1
'HistoryOrderInfo.mqh' HistoryOrderInfo.mqh 1 1
PositionInfo.mqh' PositionInfo.mqh 1 1
DealInfo.mqh' DealInfo.mqh 1 1
SymbolInfo.mqh' SymbolInfo.mqh 1 1
code généré 1 1
0 erreur, 0 avertissement, 3192 msec écoulées 1 1
Après avoir ouvert un ordre d'achat stop, je recalcule tous les ordres, je sélectionne un ordre ouvert et je vérifie si le symbole et le numéro Majdic correspondent :
Rien ne se passe à ce stade, comme je l'ai écrit ci-dessus, asymbol.Name() ne renvoie pas le symbole de l'ordre ouvert pour une raison quelconque, aorder.Magic() renvoie la valeur 0 (bien que mon nombre magique soit 121345), asymbol.TickSize() renvoie la valeur 0. En d'autres termes, le contrôle échoue et la poursuite du travail sur l'ordre est donc interrompue. Veuillez préciser"debug in function Name(string symbol) what's going on", je ne comprends pas bien cette phrase. Que dois-je ajouter et où ?
Bon sang, pourquoi utiliser quelque chose que tu ne comprends pas (et si c'était une valise yadda yadda )) )
Et vous ne prenez même pas la peine de lire ce qui est écrit.
Si vous n'avez pas asymbol.Name(Symbol()), ajoutez-le.
s.w. Je voulais en dire plus sur l'initialisation, mais je suppose que cela serait également inutile.Il peut y avoir une erreur dans l'index de commande / ticket selon la magie 0. Au moment de l'accès à la structure de commande, les données de la mauvaise commande y sont stockées. Dans le cycle de sélection, il se peut que le numéro suivant aille au dernier ensemble de commandes, mais pas celui dont vous avez besoin. Les données de la dernière commande sélectionnée sont renvoyées de la structure de commande.
Bonjour !
Aidez-moi à résoudre un problème simple.
Compteur d'écart. Je veux compter les écarts qui sont supérieurs à 10 points.
La variable "gap" est remise à zéro. Je ne comprends pas pourquoi. J'ai déjà tout essayé. J'ai essayé les boucles et les statiques - ça ne marche pas. Je pense que j'ai mal écrit les boucles.
Bonjour !
Aidez-moi à résoudre un problème simple.
Compteur d'écart. Je veux compter les écarts qui sont supérieurs à 10 points.
La variable "gap" est remise à zéro. Je ne comprends pas pourquoi. J'ai déjà tout essayé. J'ai essayé les boucles et les statiques - ça ne marche pas. Je pense que j'ai mal écrit les boucles.
La variable gap est dans la portée du début de la fonction - et à chaque nouveau tick, elle est réinitialisée à zéro.
Bonjour !
Aidez-moi à résoudre un problème simple.
Compteur d'écart. Je veux compter les écarts qui sont supérieurs à 10 points.
La variable "gap" est remise à zéro. Je ne comprends pas pourquoi. J'ai déjà tout essayé. J'ai essayé les boucles et les statiques - ça ne marche pas. Je pense que j'ai mal écrit les boucles.