1. Types d'enum (enumJnsSignal, enumOrderType)
- enumJnsSignal Cette enum définit le type de signal utilisé dans l'EA. Il existe deux options de signal :
- `eTypeCrossMA` : Utilise le signal de Cross 2 MA(le croisement de deux moyennes mobiles).
- `eTypeTrend` : Suit la tendance en utilisant les moyennes mobiles et le stochastique.
- enumOrderType Cet enum définit le type d'ordre :
- `eBuy` : Un ordre d'achat .
- `eSell` : Un ordre de vente .
- `eNone` : Aucun ordre n'est exécuté.
2. Paramètres d'entrée
- inMagicNumber Un numéro magique unique utilisé pour distinguer les ordres de cet EA.
- inLotSize La taille initiale du lot pour chaque ordre.
- inMultiply Le facteur multiplicateur utilisé dans la stratégie de taille de lot.
- inJarakLayer La distance en pip entre les positions de trading dans la stratégie grille/couche.
- inMAPeriodFast & inMAPeriodSlow Les périodes pour les moyennes mobiles rapides et lentes.
- inSTOKPeriod, inSTODPeriod, inSTOSlowing Paramètres pour l'oscillateur stochastique.
- inTakeProfit & inStopLoss Paramètres pour le Take Profit et le Stop Loss.
3. Structure dataTrades
- Cette structure est utilisée pour stocker les données relatives aux positions de trading ouvertes, telles que le nombre total de positions (`ttlPos`), le prix moyen des positions (`hargaTA`, `hargaTB`), et le volume total (`ttlLot`).
4. Fonction OnInit()
- Cette fonction gère l'initialisation de l'EA, y compris la validation des paramètres d'entrée (par exemple, s'assurer que la période MA rapide est plus petite que la période MA lente) et la création des handles pour les indicateurs MA et Stochastique.
5. Fonction OnTick()
- La fonction principale est exécutée chaque fois que le prix bouge (tick).
- Elle appelle la fonction de vérification d'un nouveau signal avec GetSignal(), et si un signal est trouvé, manageTrading() est utilisé pour exécuter les transactions.
- Il appelle également setTPSL() pour s'assurer que le Take Profit et le Stop Loss sont toujours mis à jour.
6. Fonction isNewCandle()
- Cette fonction détecte si une nouvelle bougie s'est formée. Ceci est important car l'EA ne vérifie les signaux que lors de la formation de nouvelles bougies.
7. Fonction GetSignal()
- Cette fonction détermine s'il existe un signal de trading valide basé sur la stratégie sélectionnée :
- Pour eTypeCrossMA, le signal est déterminé par le croisement des moyennes mobiles rapides et lentes.
- Pour eTypeTrend, le signal utilise la confirmation de la moyenne mobile et du stochastique.
8. Fonction manageTrading()
- Cette fonction gère l'exécution des transactions.
- Si un signal valide est détecté, l'EA ouvre une position avec la taille du lot déterminée à l'aide de la fonction getLotSize().
- Une stratégie de grille/couche est également appliquée pour ouvrir des positions supplémentaires basées sur la distance de prix (`inJarakLayer`).
9. Fonction updateDataTrades()
- Cette fonction met à jour les données relatives aux positions de négociation en cours, en calculant par exemple le prix moyen et le volume total des positions ouvertes.
10. openTrade() Fonction
- Cette fonction ouvre une nouvelle position de trading sur la base du signal généré et de la taille de lot calculée. Elle utilise OrderSend() pour exécuter l'ordre.
11. setTPSL() Fonction
- Cette fonction définit ou met à jour le Take Profit et le Stop Loss pour chaque position ouverte.
12. modifTPSL() Fonction
- Cette fonction modifie le Take Profit et le Stop Loss des positions existantes si les valeurs diffèrent de celles qui ont été définies précédemment.
13. validateLot() Fonction
- Cette fonction permet de s'assurer que la taille de lot utilisée est comprise dans les fourchettes minimum et maximum autorisées, et qu'elle est conforme au pas de lot minimum (`gLotStep`).
14. Fonction getLotSize()
- Cette fonction calcule la taille de lot à utiliser en fonction de la taille de lot initiale et du nombre de positions déjà ouvertes, en tenant compte du facteur multiplicateur (`inMultiply`).
Ce code est conçu pour capturer les tendances du marché et gérer les positions de trading automatiquement en utilisant les signaux techniques des moyennes mobiles et de la stochastique.