//CloseOrder void CloseOrder() {double PR=0; while(!IsTradeAllowed()) Sleep(10); RefreshRates(); if(OrderType()==OP_BUY) PR=Bid; if(OrderType()==OP_SELL) PR=Ask; if(!OrderClose(OrderTicket(),OrderLots(),PR,Slippage,CLR_NONE)) Print("Order close error: ",GetLastError()); return;} //Close all Orders void CloseAllOrders() { for(int i=OrdersTotal()-1;i>=0;i--) if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { CloseOrder(); } return;}
ne vérifie pas le symbole ne vérifie pas un numéro magique....
alors que se passera-t-il si vous l'utilisez en direct avec différents EA ?
ne vérifie pas le symbole ne vérifie pas un numéro magique....
alors que se passera-t-il si vous l'utilisez en direct avec différents EA ?
Vous voulez dire exécuter deux EA à partir d'un seul compte ?
Voulez-vous dire que vous exécutez deux EA à partir d'un seul compte ?
Bonjour à tous !
Je suis nouveau sur mql 4 et j'ai créé un simple cross advisor à 2 EMA, que j'ai testé sur un compte de démonstration, mais j'ai un peu peur de le mettre sur un compte réel.
Le tester avec de petits lots à l'échelle d'une heure prendrait trop de temps, et le tester à l'échelle des minutes est coûteux, car le lot minimal chez mon courtier est d'environ 7 usd.
Donc, je vous serais reconnaissant si vous y jetiez un coup d'oeil et si vous me signaliez des erreurs évidentes que j'aurais pu faire.
C'est bien de voir quelqu'un qui vérifie les valeurs de retour des fonctions de trading sans y être invité... mais vous avez besoin de plus d'informations si vous obtenez une erreur afin de pouvoir diagnostiquer ce qui a causé le problème, vous ne pouvez pas revenir en arrière dans une situation vivante pour vérifier ce qu'était le Spread ou ce qu'était le niveau de Freeze à ce moment-là...
if(tic < 0) Print("Open order error: ", GetLastError());
... c'est bien mais vous avez besoin de plus, quelles sont les variables que vous devez imprimer pour pouvoir déterminer la cause de toute erreur que vous obtenez ? lorsque vous avez déterminé ce dont vous avez besoin, ajoutez-les toutes dans votre appel Print() en vous assurant que vous utilisez le nombre correct de décimales (DoubeToStr(value, digits)) pour toutes les variables doubles telles que Ask, Bid, etc...
C'est bien de voir quelqu'un qui vérifie les valeurs de retour des fonctions de trading sans y être invité....
Désolé, mais je n'ai pas compris cette partie. La seule chose que j'ai comprise est que je dois ajouter autant de variables que possible à l'appel Print(). J'ai compris, merci.
deVries, merci aussi pour votre conseil, maintenant je comprends ce que vous voulez dire.
Y a-t-il autre chose à corriger ?
bien sûr, il y a
// check if new bar opened if (LastBars == Bars) return(0); else LastBars = Bars;
supposons que vous ayez déjà des barres maximales (il y a une limite).....
bien sûr, il y a
supposons que vous ayez déjà des barres maximales (il y a une limite).....
Ok, alors comment faire pour mieux saisir le moment où une nouvelle bougie s'ouvre ?
vérifier l'heure de la dernière barre Time[0]
cherchez NewBar et vous trouverez quelques exemples
Merci, j'ai trouvé ceci https://www.mql5.com/en/code/10370
if(Cmd==OP_BUY) {PR=Ask; if(TakeProfit>0) TP=Ask + Ask*TakeProfit/100; if(StopLoss>0) SL=Ask - Ask*StopLoss/100; if(SL<0) SL = 0; if(TP<0) TP = 0; clr = Green;}
Je ne pense pas que ce soit correct.
comment obtenir 100 pips takeprofit et 150 pips Stoploss ? ???
mise à jour voir " donc le stop loss et le take profit ne sont pas en pips mais en pourcentages d'une offre ou d'une demande. "
mais comment obtenir un prix valide de cette façon ? si votre symbole a 5 chiffres, le résultat sera souvent de 2 chiffres en plus.

- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Vous acceptez la politique du site Web et les conditions d'utilisation
Bonjour à tous !
Je suis nouveau sur mql 4 et j'ai créé un simple cross advisor à 2 EMA, que j'ai testé sur un compte de démonstration, mais j'ai un peu peur de le mettre sur un compte réel.
Le tester avec de petits lots à l'échelle d'une heure prendrait trop de temps, et le tester à l'échelle des minutes est coûteux, car le lot minimal chez mon courtier est d'environ 7 usd.
Je vous serais donc reconnaissant si vous pouviez y jeter un coup d'œil et peut-être me signaler quelques erreurs évidentes que j'aurais pu faire.
Ce conseiller est censé trader sur le marché Bitcoin/USD qui est extrêmement volatile (le prix peut aller de + à - 30% par jour), donc le stop loss et le take profit ne sont pas en pips mais en pourcentages d'un bid ou ask.
Les variables et autres :
Cette fonction permet de déterminer la taille du lot, en fonction du % de dépôt qu'il est permis d'utiliser par ordre (int Risk).
C'est la fonction qui ouvre un nouvel ordre, Cmd est acheter ou vendre.
Ici je ferme 1 ordre ou je ferme tous les ordres :
Cette fonction est utilisée pour calculer la différence entre les EMA rapides et lentes (EMA rapide - EMA lente) :
Et voici le corps principal :
Je vais ajouter un stop suiveur, et envisager de comparer EmaDiff non pas à zéro mais à une petite valeur pour ne pas se faire hacher lorsque les EMA lentes et rapides sont très proches les unes des autres et se croisent à chaque barre.