![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
Oh mec, vous êtes vraiment une star. J'adore faire du commerce, mais ce serait impossible sans votre aide. Merci encore
Salut,
Quelqu'un pourrait-il m'aider avec ma fonction LotsizeCalc() ?
Je voudrais multiplier ma taille de lot avec le 'MartingaleAmount' si ma dernière transaction était perdante. Si ma dernière transaction était gagnante, je voudrais utiliser la taille de lot "normale". Malheureusement, lorsque je backtest l'EA, je reçois l'erreur 4051 du journal.
Cela a quelque chose à voir avec la taille de lot, car l'EA fonctionne lorsque j'essaie de l'exécuter sans la fonction "LotsizeCalc()".
Quelqu'un sait-il pourquoi ma fonction lotsize ne fonctionne pas ?
Merci d'avance,
Thierry
extern int MaximumTrades = 10; extern double StopLoss=25; extern double TakeProfit=50; extern double MartingaleAmount = 1.5; input double LotSize=0.1; int magic; double pips; int tradeNumber; string ScreenComment; double martinlot; double martinsize;
[/PHP]
Thierry
Vous pouvez utiliser cette fonction pour savoir si le dernier ordre fermé l'a été avec profit ou perte :
[PHP]double lastOrderProfit(int magicNumber=0)
{
datetime lastTime = 0 ;
double lastProfit = 0 ;
for(int i=OrdersHistoryTotal()-1 ; i>=0 ; i--)
{
si (OrderSelect(i,SELECT_BY_POS, MODE_HISTORY)==false) break ;
si (magicNumber!=0)
si (OrderMagicNumber() != magicNumber) continuer ;
if (OrderSymbol() != Symbol()) continue ;
si (OrderCloseTime() <= lastTime) continue ;
lastTime = OrderCloseTime() ;
lastProfit = OrderProfit()+OrderSwap()+OrderCommission() ;
}
return(lastProfit) ;
}
Vérifiez simplement si le résultat de la fonction lastOrderProfit(), et s'il est < 0, alors appliquez votre règle de martingale.
Bonjour Mladen ! Encore moi...
Comment serait-il possible d'utiliser les lignes de cet indicateur dans un EA utilisant iCustom puisqu'il ne semble pas y avoir de tampons définis pour ces lignes ?
Merci
Salut Mladen ! Encore moi...
Comment serait-il possible d'utiliser les lignes de cet indicateur dans un EA utilisant iCustom puisqu'il ne semble pas y avoir de tampons définis pour ces lignes ?
MerciCe sont des objets
Vous pouvez accéder aux objets par leur nom (vous devez connaître le nom exact de l'objet, mais l'indicateur doit être actif sur le graphique et ces objets doivent être dessinés sur le graphique).
Ce sont des objets Vous pouvez accéder aux objets par leur nom (vous devez connaître le nom exact de l'objet, mais l'indicateur doit être actif sur le graphique et ces objets doivent être dessinés sur le graphique).
Super. Alors comment appeler l'indicateur depuis l'EA ? Avec quelque chose d'autre que iCustom ou est-ce que j'ai tout faux... Merci mladen
Super. Alors comment appeler l'indicateur depuis l'EA ? Avec quelque chose d'autre que iCustom ou est-ce que j'ai tout faux... Merci mladen
Cet indicateur dessine simplement des niveaux à 0,20,50,80 pips de chaque segment de 100 pips. Le moyen le plus simple est de vérifier si ces niveaux sont franchis depuis votre EA.
Si vous essayez d'utiliser les noms d'objets (et leurs prix, vous ne pourrez pas connaître les noms exacts des lignes puisqu'ils dépendent du plus haut haut et du plus bas - ils sont sujets à changement. Utilisez le mode décrit ci-dessus
Cet indicateur dessine simplement des niveaux à 0,20,50,80 pips de chaque segment de 100 pips. Le moyen le plus simple est de vérifier si ces niveaux sont franchis depuis votre EA. Si vous essayez d'utiliser les noms d'objets (et leurs prix, vous ne pourrez pas connaître les noms exacts des lignes puisqu'ils dépendent du plus haut haut et du plus bas - ils sont sujets à changement. Utilisez le mode décrit ci-dessus
Auriez-vous un exemple sur la façon de faire cela...
Je suis désolé de demander autant, je commence juste à coder et je n'ai pas compris comment vérifier si ces niveaux sont franchis dans la condition d'achat ou de vente.
Auriez-vous un exemple sur la façon de faire cela...
Jason2005
Vous avez un code comment faire dans l'indicateur que vous avez joint.
Jason2005 Vous avez un code comment il est fait dans l'indicateur que vous avez attaché
Ce serait donc ça ?
Thierry
Vous pouvez utiliser cette fonction pour savoir si le dernier ordre clôturé l'a été avec profit ou perte :
{
datetime lastTime = 0;
double lastProfit = 0;
for(int i=OrdersHistoryTotal()-1; i>=0; i--)
{
if (OrderSelect(i,SELECT_BY_POS, MODE_HISTORY)==false) break;
if (magicNumber!=0)
if (OrderMagicNumber() != magicNumber) continue;
if (OrderSymbol() != Symbol()) continue;
if (OrderCloseTime() <= lastTime) continue;
lastTime = OrderCloseTime();
lastProfit = OrderProfit()+OrderSwap()+OrderCommission();
}
return(lastProfit);
}
Bonjour Mladen,
Merci pour votre réponse.
La fonction lastorderprofit n'est pas nécessaire car ma fonction lastTradeTicket() fait le même travail.
Pourriez-vous jeter un coup d'oeil à mon EA ?
Je ne vous demande pas de modifier le code, mais je vous serais très reconnaissant si vous pouviez me dire ce que j'ai mal codé.
Merci d'avance,
Thierry
53_martingale.mq4