Description
Paramètres d’entrée Default_LotSize: Taille de la position par défaut. Default_TP: Take Profit en points par défaut. Default_TrailingStopDistance: Distance du Trailing Stop en points par défaut. FreeTradeLevel: Niveau de profit en points pour activer le Free Trade. MaxConsecutiveLosses: Nombre maximal de pertes consécutives avant de réinitialiser la taille de la position. totalWinningTrades: Nombre de trades gagnants pour augmenter la taille de la position. totalFailedAttempts: Nombre d’essais infructueux pour réinitialiser la taille de la position. MaxOrders: Nombre maximal d’ordres ouverts autorisés. MinDistance: Distance minimale pour les niveaux de stop-loss et de take-profit. MagicNumber: Numéro magique pour distinguer les trades de l’EA. ModificationIntervalSeconds: Intervalle de modification du Trailing Stop en secondes.
Fonctions Principales : CanOpenTrade() : Cette fonction vérifie si le solde du compte permet de placer un ordre. Si le solde est supérieur à zéro, elle retourne true, sinon false.
Dans ces fonctions :
- Nous calculons les moyennes mobiles (MA) avec une période courte (10) et une période longue (30).
- Nous calculons le MACD en utilisant les paramètres classiques (12, 26, 9) et vérifions si la ligne MACD est au-dessus de la ligne de signal.
- Nous calculons le RSI avec une période de 14.
- Nous calculons l’indice de canal de marchés (CCI) avec une période de 14.
Ensuite, nous évaluons les conditions d’achat et de vente :
- Pour les conditions d’achat, nous vérifions si la MA courte est au-dessus de la MA longue, si le MACD principal est au-dessus du signal, si le RSI est inférieur à 70 (pour éviter les zones de surachat), et si le CCI est supérieur à 0.
- Pour les conditions de vente, nous vérifions si la MA courte est en dessous de la MA longue, si le MACD principal est en dessous du signal, si le RSI est supérieur à 70 (pour éviter les zones de survente), et si le CCI est inférieur à 0.
BuyConditionsMet() : Cette fonction évalue les conditions d’achat. Elle utilise des indicateurs tels que les moyennes mobiles (MA), le MACD, le RSI et le CCI pour déterminer si les conditions sont remplies. SellConditionsMet() : Cette fonction évalue les conditions de vente en utilisant les mêmes indicateurs que BuyConditionsMet(). PlaceBuyOrder() : Cette fonction place un ordre d’achat sur le marché en utilisant la taille de lot par défaut, le prix Ask et le Take Profit spécifiés.
PlaceSellOrder() : Cette fonction place un ordre de vente sur le marché en utilisant les mêmes paramètres que PlaceBuyOrder().
Dans ces fonctions :
- Nous vérifions d’abord si les conditions pour ouvrir un ordre d’achat ou de vente sont remplies en appelant respectivement
BuyConditionsMet()
etSellConditionsMet()
. - Si les conditions sont satisfaites, nous déterminons la taille de la position (
lotSize
), le prix auquel nous voulons exécuter l’ordre (price
), le niveau du Take Profit (takeProfit
) et le niveau du Stop Loss (stopLoss
). - Ensuite, nous utilisons la fonction
OrderSend()
pour placer l’ordre sur le marché. Nous utilisonsOP_BUY
pour un ordre d’achat etOP_SELL
pour un ordre de vente. Le dernier paramètreclrGreen
ouclrRed
est la couleur de l’ordre sur le graphique, en fonction de l’action d’achat ou de vente.
N’oubliez pas que ces fonctions doivent être appelées dans la fonction principale de l’EA, ManageTrades()
, à l’endroit où vous souhaitez prendre des décisions de trading en fonction des conditions définies.
ManageTrailingStop() : Cette fonction gère le Trailing Stop en ajustant le niveau du stop-loss en fonction du mouvement des prix.
ActivateTrailingStop(int modificationIntervalSeconds) : Cette fonction active le Trailing Stop pour les positions ouvertes. Elle vérifie si l’intervalle de temps spécifié s’est écoulé depuis la dernière modification du Trailing Stop.
IsValidStopLoss(double stopLoss) : Cette fonction vérifie si le stop-loss est valide pour le marché en comparant le niveau du stop-loss avec le niveau de stop minimum du symbole.
Dans la fonction ActivateTrailingStop()
:
- Nous parcourons toutes les positions ouvertes de l’EA avec une boucle.
- Pour chaque position, nous vérifions si elle correspond au symbole actuel et au numéro magique de l’EA.
- Nous calculons le nouveau niveau de Stop Loss en fonction du niveau de profit spécifié dans
FreeTradeLevel
. - Si le niveau de profit est atteint et que la distance minimale
MinDistance
est respectée, nous utilisonsOrderModify()
pour ajuster le Stop Loss avec la nouvelle valeur.
Dans la fonction IsValidStopLoss()
:
- Nous vérifions le type de l’ordre (achat ou vente) avec
OrderType()
. - Si c’est un ordre d’achat (
OP_BUY
), nous vérifions si le nouveau Stop Loss est au-dessus du prix d’ouverture avecOrderOpenPrice()
. - Si c’est un ordre de vente (
OP_SELL
), nous vérifions si le nouveau Stop Loss est en dessous du prix d’ouverture. - La fonction retourne
true
si le Stop Loss est valide selon les critères définis, sinonfalse
.
Ces fonctions peuvent être appelées dans la fonction principale de l’EA, ManageOpenPositions()
, à l’endroit où vous souhaitez activer le Trailing Stop pour les positions ouvertes et vérifier la validité du nouveau Stop Loss avant de le modifier.
ShouldModifyTakeProfit() : Cette fonction vérifie si les conditions pour modifier le Take Profit sont remplies. ModifyTakeProfit() : Cette fonction modifie le Take Profit pour les positions ouvertes si les conditions sont remplies.
Dans cette fonction :
- Nous parcourons toutes les positions ouvertes de l’EA avec une boucle.
- Pour chaque position, nous vérifions si elle correspond au symbole actuel et au numéro magique de l’EA.
- Nous calculons le nouveau niveau de Take Profit en fonction du nombre de trades gagnants
totalWinningTrades
et de la taille du Take Profit par défautDefault_TP
. - Si le profit actuel dépasse le seuil défini (
totalWinningTrades * Default_TP * _Point
) et que la distance minimaleMinDistance
est respectée, nous utilisonsOrderModify()
pour ajuster le Take Profit avec la nouvelle valeur.
Vous pouvez appeler cette fonction dans la fonction principale de l’EA, ManageOpenPositions()
, à l’endroit où vous souhaitez modifier le Take Profit si les conditions du marché restent favorables dans le même sens du trade.
UpdateLotSize() : Cette fonction met à jour la taille de la position en fonction des conditions spécifiées, telles que le nombre de pertes consécutives, le nombre de trades gagnants, et le nombre d’essais infructueux. ResetPositionSize() : Cette fonction réinitialise la taille de la position à la taille par défaut. UpdateFreeTradeStopLoss(int ticket) : Cette fonction met à jour le stop-loss pour les positions ouvertes qui ont atteint un certain niveau de profit.
Dans la fonction UpdateLotSize()
:
- Nous parcourons l’historique des ordres pour compter le nombre de trades gagnants.
- Si le nombre de trades gagnants atteint
totalWinningTrades
, nous augmentons la taille de la positionDefault_LotSize
de 0.01. - Cela permet d’augmenter la taille de la position après un certain nombre de trades gagnants.
Dans la fonction ResetPositionSize()
:
- Nous parcourons l’historique des ordres pour compter le nombre de pertes consécutives
consecutiveLossesCount
et le nombre d’essais infructueuxfailedAttemptsCount
. - Si le nombre de pertes consécutives atteint
MaxConsecutiveLosses
, nous réinitialisons la taille de la positionDefault_LotSize
à 0.01. - Si le nombre d’essais infructueux atteint
totalFailedAttempts
, nous réinitialisons également la taille de la position à 0.01. - Cela permet de réinitialiser la taille de la position après un certain nombre de pertes consécutives ou d’essais infructueux pour assurer une gestion prudente de la taille des positions.
Vous pouvez appeler ces fonctions dans la fonction principale de l’EA, ManageOpenPositions()
, à l’endroit où vous souhaitez mettre à jour ou réinitialiser la taille de la position.
ManageOpenPositions() : Cette fonction gère les positions ouvertes en activant le Trailing Stop, en mettant à jour le stop-loss pour le Free Trade, et en modifiant le Take Profit si nécessaire.
Dans cette fonction ManageOpenPositions()
:
- Nous parcourons toutes les positions ouvertes de l’EA avec une boucle.
- Pour chaque position, nous vérifions si elle correspond au symbole actuel et au numéro magique de l’EA.
- Nous appelons la fonction
ManageTrailingStop()
pour gérer le Trailing Stop de chaque position. - Nous activons le Trailing Stop si le profit atteint un certain niveau en appelant
ActivateTrailingStop(ModificationIntervalSeconds)
. - Nous vérifions la validité du Stop Loss avec la fonction
IsValidStopLoss(OrderStopLoss())
, et si le Stop Loss n’est pas valide, nous réinitialisons la taille de la position avecResetPositionSize()
.
Ensuite, nous gérons les décisions de trading :
- Si la fonction
CanOpenTrade()
retournetrue
, nous vérifions les conditions d’achat avecBuyConditionsMet()
. Si les conditions sont remplies, nous plaçons un ordre d’achat avecPlaceBuyOrder()
et mettons à jour la taille de la position avecUpdateLotSize()
. - Sinon, si les conditions de vente sont remplies avec
SellConditionsMet()
, nous plaçons un ordre de vente avecPlaceSellOrder()
et mettons à jour la taille de la position avecUpdateLotSize()
.
Cette fonction complète gère l’ensemble du cycle de vie des positions ouvertes, y compris le Trailing Stop, l’activation du Trailing Stop, la vérification de la validité du Stop Loss, la modification du Take Profit, les décisions d’achat et de vente, ainsi que la mise à jour et la réinitialisation de la taille de la position en fonction des conditions définies.
Vous pouvez appeler cette fonction dans la fonction principale de l’EA, par exemple dans l’événement OnTick()
pour gérer les positions ouvertes à chaque tick du marché.
ManageTrades() : Cette fonction gère les décisions de trading en vérifiant si l’EA peut ouvrir un trade, en évaluant les conditions d’achat et de vente, et en plaçant les ordres correspondants.
Événements : OnInit() : Cet événement est déclenché lors du chargement de l’EA et est utilisé pour initialiser les paramètres et les variables.
OnTick() : Cet événement est déclenché à chaque tick du marché. Il est utilisé pour gérer les positions ouvertes et prendre des décisions de trading en fonction des conditions du marché.
OnTrade() : Cet événement est déclenché à chaque modification des trades (ouvertures, fermetures, modifications). Il est utilisé ici pour mettre à jour la taille de la position après un certain nombre de pertes consécutives. En résumé, cet EA utilise une combinaison d’indicateurs techniques (MA, MACD, RSI, CCI) pour prendre des décisions de trading. Il gère les positions ouvertes en ajustant le stop-loss avec le Trailing Stop, en modifiant le Take Profit si nécessaire, et en réinitialisant la taille de la position après un certain nombre de pertes consécutives ou d’essais infructueux. Le code est conçu pour être flexible avec des paramètres d’entrée pour permettre à l’utilisateur de personnaliser les conditions de trading en fonction de sa propre stratégie.
Avis
Il n’y a pas encore d’avis.