Discussion de l'article "Guide étape par étape pour rédiger un conseiller expert en MQL5 pour les débutants" - page 30
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
Testeur - "Mode de remplissage non pris en charge".
J'ai essayé sur 3 courtiers différents. Quel est le problème ?
Essayez de remplacer SYMBOL_FILLING_FOK par SYMBOL_FILLING_IOC.
Cordialement, Vladimir.
Bonjour à tous (surtout à l'auteur)
J'ai codé en suivant cet article. Je l'ai beaucoup apprécié et j'ai beaucoup appris.
Merci d'avoir écrit un article aussi instructif.
Cependant, j'ai un problème. Mon EA n'a pas passé d'ordre. J'ai téléchargé le code de l'auteur mais il n'a pas passé d'ordre non plus.
Comme l'article date de 13 ans, je suppose que le code est maintenant dépassé. Quelqu'un peut-il m'aider ?
Mon code se trouve dans le fichier ci-dessous. Merci d'avance.
Visitez la page anglaise non traduite, qui est le téléchargement correct.
Télécharger depuis cette page : Guide d'écriture d'un Expert Advisor en MQL5 pour les débutants, étape par étape - Articles MQL5
https://www.mql5.com/en/articles/100
Chers lecteurs, chères lectrices ;
Dans cet article, il y a le code complet mlq5 à télécharger.
J'ai téléchargé pour vérifier la fonction et j'ai trouvé que le programme a un algorithme incorrect.
La configuration est la suivante : EURUSD, M1, 100USD du 2025/01/01 au 2025/01/31.
Le premier ordre est un ordre de vente, puis il y a plusieurs ordres d'achat.
Le concept est qu'il ne devrait y avoir qu'un seul ordre mais cela se produit à partir de la ligne 165.
L'indicateur permettant de vérifier si un ordre a été passé ou non est séparé en deux variables (Buy_opned, Sell_opened).
Si un ordre de vente a déjà été passé, un nouvel ordre d'achat sera passé à la ligne 216 (Ordersend), même si un ordre de vente a déjà été passé.
Attendre la prochaine bougie L'indicateur Buy_open de la ligne 172 ne peut pas être remis à zéro. Parce que le premier ordre est un ordre de vente et le second un ordre d'achat.
Et oui, à la prochaine bougie, un nouvel ordre d'achat sur la ligne 216 (Ordersend) se produira et continuera, de nombreux ordres d'achat se produiront jusqu'à ce qu'il n'y ait plus d'argent.
Voir le graphique ici.
Voir la liste des ordres.
Je vous remercie.
Niwath Jeamphue.
Chers tous ;
Dans cet article en bas, il y a le code complet mlq5 à télécharger.
J'ai téléchargé pour vérifier la fonction et j'ai trouvé que le programme a un algorithme incorrect.
La configuration est EURUSD ,M1,100USD débutant le 2025/01/01 au 2025/01/31
Le premier ordre est un ordre de vente, ensuite il y a plusieurs ordres d'achat.
Le concept est qu'il ne devrait y avoir qu'un seul ordre, mais cela se produit à partir de la ligne 165.
L'indicateur permettant de vérifier si une commande a été passée ou non est séparé en deux variables (Buy_opned, Sell_opened).
Si un ordre de vente a déjà été passé, alors la ligne 216 (Ordersend) créera un nouvel ordre d'achat même si un ordre de vente a déjà été passé.
Attendre la prochaine bougie L'indicateur Buy_open de la ligne 172 ne peut pas être remis à zéro. Parce que le premier ordre est un ordre de vente et le second un ordre d'achat.
Et oui, à la prochaine bougie, un nouvel ordre d'achat sur la ligne 216 (Ordersend) se produira et continuera, de nombreux ordres d'achat se produiront jusqu'à ce qu'il n'y ait plus d'argent.
Voir le graphique ici.
Voir la liste des commandes.
Nous vous remercions.
Niwath Jeamphue.
Vous ne devez pas utiliser PositionSelect(_Symbol) à moins que vous n'utilisiez un compte de compensation.
Sur un compte de couverture, vous devez sélectionner votre position correctement, avec PositionGetTicket() ou PositionSelectByTicket(). Consultez la documentation.
Vous ne devez pas utiliser PositionSelect(_Symbol) à moins d'utiliser un compte de compensation.
Sur un compte de couverture, vous devez sélectionner votre position correctement, avec PositionGetTicket() ou PositionSelectByTicket(). Consultez la documentation.
Je vous remercie pour votre commentaire. Mais je veux juste dire à tout le monde que le code source provient de la version finale complète de cet article.
https://www.mql5.com/fr/articles/download/100/my_first_ea.mq5
Je vous invite à essayer par vous-même, vous comprendrez mieux mon point de vue.
Je vous remercie.
Merci pour votre commentaire. Mais je veux juste dire à tout le monde que le code source provient de la version finale complète de cet article.
https://www.mql5.com/fr/articles/download/100/my_first_ea.mq5
Je vous invite à essayer par vous-même, vous comprendrez mon point de vue.
Je vous remercie.
Cet article date de 2010, à l'époque TOUS les comptes étaient des comptes de compensation sur MT5, y compris pour le Forex.
Les comptes de couverture ont été introduits en 2016 : https://www.mql5.com/fr/articles/2299
Niwath Jeamphue #:
Essayez-le vous-même, vous comprendrez mon point de vue.
Je vous remercie.
Bonjour. Je comprends votre point de vue. Dans le fichier joint, j'ai modifié le code source de l'Expert Advisor afin qu'une seule position soit ouverte, quel que soit le compte utilisé - netting ou hedge.
Cordialement, Vladimir.
Bonjour. Je comprends votre point de vue. Dans le fichier joint, j'ai modifié le code source de l'Expert Advisor pour qu'une seule position soit ouverte, quel que soit le compte utilisé - netting ou hedge.
Cordialement, Vladimir.
Compte de couverture ,MrBrooklin . Je vous remercie. Mais je préfère ne recevoir qu'un seul ordre, pas autant d'ordres.
J'ai changé d'algo par rapport à l'original
Effacer les drapeaux d'achat et de vente ouverts
Si (PositionSelect(_Symbol)==true)
S'il s'agit d'une position d'achat, le drapeau Buy_opened est activé.
Else S'il s'agit d'une position de vente, définir le drapeau Sell_opened
Zone1 : Essayer d'ouvrir un ordre d'achat sous condition et !drapeau Buy_opened
Zone2 : Essayer d'ouvrir un ordre de vente sous condition et !flag Sell_opened
Pour le nouvel algo, cela fonctionne bien maintenant.
Si (PositionsTotal() > 0) retour
Effacer les drapeaux d' achat et de vente ouverts
Si l'on constate qu'il s'agit d'une position d'achat, on active le drapeau Buy_opened.
Else S'il s'agit d'une position de vente, mettre le drapeau Sell_opened
Zone1 : Essayer d'ouvrir un ordre d'achat sous condition et !drapeau Buy_opened
Zone2 : Essayer d'ouvrir un ordre de vente à condition et !flag Sell_opened