[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 276
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
En utilisant (appelant) les fonctions de ces fichiers (déjà implémentées dans mt4), en cas de fonctionnement incorrect de l'EA, nous pouvons voir dans le log le numéro de l'erreur que nous avons faite dans le code.
Par exemple, nous appelons la fonction GetLastError() :
Dans ce cas, si nous avons fait une erreur dans le code ou défini des paramètres externes incorrects, nous verrons le numéro de cette erreur dans le journal.
Par exemple, 130.
Et le décodage du numéro se trouve sur la page -https://book.mql4.com/ru/appendix/errors.
Et nous n'aurons pas à chercher dans tous les codes, car nous savons déjà, grâce à ce numéro, où se trouve exactement l'erreur !
Permettez-moi de corriger un peu : la fonction GetLastError peut être appelée sans le fichier d'en-tête mais pour obtenir la description de l'erreur sans naviguer sur les sites, vous devez lier la bibliothèque :
Vous n'avez pas appelé la fonction correctement.
Votre fonction est appelée comme suit : si (NumberOfPositions(NULL,Magic)> 1)
Il devrait ressembler à ceci :
Sentez la différence (vous avez manqué le "-1") ! et CHANGEZ VOTRE CODE.
Pour le contrôler, vous pouvez imprimer un commentaire sur le graphique. Par exemple, comme ceci (au début de la fonction START).
Quant à votre deuxième condition, je mettrais ("sans réfléchir intelligemment") un magicien différent et une fonction distincte Open_Buy_2() pour ouvrir les positions par la deuxième condition !Le code de la deuxième condition ressemblerait à ceci
rid,
Je comprends également pourquoi la deuxième condition ne fonctionne pas, peut-être ai-je mal expliqué le problème :
Je veux que mon EA soit capable de vérifier si les ordres ont été ouverts par lui ou non, même s'ils ont été fermés il y a longtemps. NumberOfPositions fonctionne, mais il ne compte que le nombre de positions ouvertes. (c'est pourquoi cela ne fonctionne pas)
Dans le code de mon EA, il y a un script qui ouvre chaque position suivante en tenant compte des données de la position précédente et s'il n'y avait pas de position précédente, le premier ordre doit être ouvert sans cette condition (sinon, l'EA ne démarrera pas). Par conséquent, il devrait y avoir une fonction qui comprend si au moins un ordre de cet EA a été ouvert ou non (même si l'ordre a ensuite été fermé). S'il n'y a pas encore eu de commande (début du travail), la première commande est ouverte sans tenir compte de la deuxième condition, et toutes les commandes suivantes sont ouvertes en tenant compte de la deuxième condition, c'est-à-dire en utilisant les données des commandes précédentes.
Est-il possible de modifier la fonction de cette manière ?
Veuillez me dire ce que la fonction iTime indique.
Quel est ce charabia de 10 chiffres ? Des secondes ?
Comment cela se traduirait-il en année-mois-jour-heure-minute ?
Je vois. Vous pouvez déterminer si les positions ont été sur l'historique comme ceci :
Mais alors votre code ne fonctionnera que dans le testeur. Parce que sinon, vous devrez changer la magie à chaque fois que vous allumerez l'EA en ligne.
Apparemment, vous devez définir la période pour laquelle l'historique du compte est pris.
C'est-à-dire quand a été ouverte/fermée la dernière transaction avec la magie donnée ? C'était il y a six mois ou il y a 24 heures ?
Il existe des fonctions qui renvoient le numéro de la barre (en comptant de la barre actuelle à la fin de l'historique) de la dernière transaction ouverte ou fermée.
Pour vous donner un exemple. J'ai utilisé ces fonctions dans mon code comme ceci :
Ou comme ça :
Hmm.je me débats avec le même problème simple...ouvre une mer de positions mais n'en a besoin que d'une seule au maximum et quand l'achat se ferme et qu'un signal vient ouvrir la vente.... Grande demande indice et de corriger ce qui est faux.dans le code ci-dessous ... Où dois-je prescrire un magik ? Si cela ne vous dérange pas, faites un exemple stupide, lorsque l'achat croise vers le haut (pas plus d'un ordre) et la vente vers le bas également pas plus d'un ordre. Je pense que cela résoudra immédiatement les questions de nombreux débutants. Merci d'avance.
Une autre question stupide :
- Comment déclarer un tableau dont le nombre d'éléments est donné par une variable externe.
C'est comme ça.
Une autre question stupide :
- Comment déclarer un tableau dont le nombre d'éléments est donné par une variable externe.
https://docs.mql4.com/ru/array/ArrayResize
Hmm.je me débats avec le même problème simple...ouvre une mer de positions mais n'en a besoin que d'une seule au maximum et quand l'achat se ferme et qu'un signal pour ouvrir la vente arrive.... Grande demande indice et de corriger ce qui est faux.dans le code ci-dessous ... Où dois-je prescrire un magik ? Si cela ne vous dérange pas, faites un exemple stupide, lorsque l'achat croise vers le haut (pas plus d'un ordre) et la vente vers le bas également pas plus d'un ordre. Je pense que cela résoudra immédiatement les questions de nombreux débutants. Merci d'avance.
Essayez comme ça :
(vous devez être plus attentif avec NumberOfPositions(), il est écrit dans l'en-tête pour une raison :
/| Description : | Description : Renvoie le nombre de positions.
//| Paramètres : |
//| sy - nom de l'instrument ("" ou NULL - symbole courant) |
|| op - opération ( -1 - toute position) |
//| mn - MagicNumber ( -1 - tout nombre magique) |
//+----------------------------------------------------------------------------+