Discussion de l'article "Guide étape par étape pour rédiger un conseiller expert en MQL5 pour les débutants" - page 13

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
Avec tous les changements apportés à la programmation de MQL5, une version mise à jour de ce code pas à pas est nécessaire, si je copie ce code, il ne compile plus - existe-t-il une version avec les derniers changements - merci beaucoup.
Bonjour Michael,
Merci pour votre commentaire. Je vais étudier votre suggestion et si une mise à jour des codes est nécessaire, elle sera bientôt disponible.
Pourquoi le code d'erreur:10030 ?
aide, y a-t-il quelqu'un ici ?
pourquoi le code d'erreur:10030 ?
Tout d'abord merci pour l'article, il m'aide à démarrer la programmation mql5.
J'ai essayé votre code et il y a un peu de code sur le OnInit() dont je ne comprends pas l'utilité :
//--- Nous pouvons gérer les paires de devises avec des prix à 5 ou 3 chiffres au lieu de 4
STP = StopLoss ;
TKP = TakeProfit ;
if(_Digits==5 || _Digits==3)
{
STP = STP*10 ;
TKP = TKP*10 ;
}
Cette partie modifie les valeurs des pibs take profit et stop loss, ce qui entraîne une différence entre vos valeurs d'entrée et celles qui sont réellement utilisées.
Cependant, si je supprime les deux lignes à l'intérieur du if, je reçois souvent l'erreur 10016 (stops non valides) lors de l'envoi de l'ordre au serveur. La première tentative de placement d'un ordre se passe bien et j'obtiens l'erreur 10009, mais la plupart des fois suivantes, j'obtiens l'erreur 10016. J'ai débogué l'EA, et tous les stop loss et take profit semblent être corrects avec la différence d'être stop loss 30 ou 300 et take profit 100 ou 1000 pibs au dessus ou en dessous du prix actuel.
Je ne trouve pas la raison pour laquelle le serveur me donne une erreur 10016 lorsque le STP et le TKP ne sont pas multipliés par 10.
Quelqu'un peut-il m'expliquer la raison de cette erreur ou l'utilité de multiplier par 10 lorsque les _Digits sont 5 ou 3 ?
Merci pour votre aide.
aide, y a-t-il quelqu'un ici ?
pourquoi le code d'erreur:10030 ?
Bonjour,
Pouvez-vous nous indiquer comment vous obtenez l'erreur ?
eshelios.sr :
Tout d'abord merci pour l'article, il m'aide à démarrer la programmation mql5.
J'ai essayé votre code et il y a un peu de code sur le OnInit() dont je ne comprends pas l'utilité :
//--- Nous pouvons gérer les paires de devises avec des prix à 5 ou 3 chiffres au lieu de 4
STP = StopLoss ;
TKP = TakeProfit ;
if(_Digits==5 || _Digits==3)
{
STP = STP*10 ;
TKP = TKP*10 ;
}
Cette partie modifie les valeurs des pibs take profit et stop loss, ce qui entraîne une différence entre vos valeurs d'entrée et celles qui sont réellement utilisées.
Cependant, si je supprime les deux lignes à l'intérieur du if, je reçois souvent l'erreur 10016 (stops non valides) lors de l'envoi de l'ordre au serveur. La première tentative de placement d'un ordre se passe bien et j'obtiens l'erreur 10009, mais la plupart des fois suivantes, j'obtiens l'erreur 10016. J'ai débogué l'EA, et tous les stop loss et take profit semblent être corrects avec la différence d'être stop loss 30 ou 300 et take profit 100 ou 1000 pibs au dessus ou en dessous du prix actuel.
Je ne trouve pas la raison pour laquelle le serveur me donne une erreur 10016 lorsque le STP et le TKP ne sont pas multipliés par 10.
Quelqu'un peut-il m'expliquer pourquoi cette erreur se produit ou quel est l'intérêt de multiplier par 10 lorsque les _Digits sont 5 ou 3 ?
Merci pour votre aide.
Bonjour,
D'après votre explication, lorsque vous avez supprimé ces lignes de code, vous obtenez une erreur et lorsque vous n'avez pas multiplié les valeurs stoploss/takeprofit par 10, vous obtenez une erreur ? Je crois que cela explique que ces lignes de code sont très importantes.
Pour en revenir à l'article, il explique que ces lignes de code sont nécessaires si vous utilisez un graphique avec des paires de devises à 5 chiffres décimaux (0.XXXXX) ou à 3 chiffres décimaux (0.XXX).
Nous voulons donc nous assurer que notre EA fonctionne très bien avec tous les courtiers.Digits ou Digits()renvoie le nombre de chiffres décimaux déterminant la précision du prix du symbole graphique actuel. Pour un graphique à 5 chiffres ou à 3 chiffres, nous multiplions le Stop Loss et le Take Profit par 10.
Voir les exemples ci-dessous :
5 - Chiffres décimaux du prix
3 - Prix en chiffres décimaux
J'espère avoir répondu à votre question.
Bonjour,
Pouvez-vous nous indiquer comment vous obtenez l'erreur ?
étape 1 : téléchargez ce code d'exemple.
étape 2 : compilez-le dans mql5 .
étape 3 : dans mt5, ouvrez le graphique eurusd 1m, puis cliquez sur "auto trading".
étape 4 : définir le symbole de rupture dans le code ligne 223,224 etc...
étape 5 : cliquer sur le bouton "start debugging" dans mt5, puis afficher cette erreur.
étape 1 : téléchargez ce code d'exemple.
étape 2 : compilez-le dans mql5 .
étape 3 : dans mt5, ouvrez le graphique eurusd 1m, puis cliquez sur "auto trading".
étape 4 : définir le symbole de rupture dans le code ligne 223,224 etc...
étape 5 : cliquer sur le bouton "start debugging" dans mt5, puis afficher cette erreur.
Bonjour,
Merci d'avoir partagé vos étapes. Si je peux vous ramener au code,
if(mresult.retcode==10009 || mresult.retcode==10008) //Request is completed or order placed
{
Alert("A Buy order has been successfully placed with Ticket#:",mresult.order,"!!");
}
else
{
Alert("The Buy order request could not be completed -error:",GetLastError()); // line 223
ResetLastError(); // line 224
return;
}
Pour autant que je sache, le code a fait ce qu'il était censé faire. Vous avez obtenu l'erreur parce que l'ordre que vous avez essayé de passer n'a pas été couronné de succès et c'est ce que la ligne 223 était censée faire. Veuillez lire ceci - https://www.mql5.com/fr/docs/constants/errorswarnings/enum_trade_return_codes - pour savoir ce que signifie l'erreur (en fait, 10030 signifie Invalidorder filling type ).
Pour comprendre ce que signifie le type d'ordre -ORDER_FILLING_FOK -
mrequest.type_filling = ORDER_FILLING_FOK; // Order execution type ( line 213 )
veuillez lire https://www.mql5.com/fr/docs/constants/tradingconstants/orderproperties#enum_order_type_filling
J'espère avoir répondu à votre question.
Bonjour Samuel,
J'ai téléchargé le code, je l'ai installé et je l'ai exécuté. Je me suis rendu compte qu'il ouvrait des ordres d' achat et de vente à chaque bougie qui répondait aux critères (j'utilise H1 comme timeframe).
Je n'ai pas fait de débogage et j'ai réalisé que certaines parties des codes ne sont pas déclenchées. Est-ce que vous arrivez à faire fonctionner l'EA correctement avec le code disponible en téléchargement ?