
La stratégie de négociation de filtrage de tendance croisée sur des moyennes mobiles à indices multiples est un système de négociation automatisé basé sur des indicateurs EMA (6, 14, 50, 200) à plusieurs périodes. La stratégie utilise des signaux croisés pour générer des points d’entrée de négociation, tout en confirmant la direction de la tendance du marché à travers les EMA (50 et 200) à plus long terme, ce qui améliore le taux de réussite des transactions. La stratégie est spécialement conçue pour la gestion des positions sur des montants USDT fixes, avec un mécanisme d’arrêt de perte de pourcentage pour contrôler le risque.
La logique centrale de la stratégie est basée sur un système de confirmation de signaux de moyenne mobile à plusieurs niveaux:
Génération du signal de base: utilise le croisement entre EMA6 et EMA14 comme signal de transaction initial. produit un signal de commutation lorsque EMA6 traverse EMA14 vers le haut; produit un signal de commutation lorsque EMA6 traverse EMA14 vers le bas.
Confirmation de la tendanceLes principales tendances du marché sont déterminées par la position relative de l’EMA50 par rapport à l’EMA200. La tendance haussière est confirmée lorsque l’EMA50 est supérieure à l’EMA200; la tendance baissière est confirmée lorsque l’EMA50 est inférieure à l’EMA200.
Filtrage de la force de la tendanceLe calcul de la différence en pourcentage entre EMA50 et EMA200 est considéré comme suffisamment forte pour permettre une transaction uniquement si la différence est supérieure ou égale à la valeur minimale définie par l’utilisateur (la valeur par défaut est de 1.0%).
Filtre par position de prix: Filtre supplémentaire en fonction de la position actuelle du prix par rapport à l’EMA50 et l’EMA200. Pour le plus, le prix doit être supérieur à l’EMA50 ou dans la “zone” entre l’EMA50 et l’EMA200; pour le moins, le prix doit être inférieur à l’EMA200 ou dans la “zone” entre l’EMA50 et l’EMA200.
Gestion des positionsIl existe deux modes de configuration de la taille de la position: le mode pourcentage (pourcentage fixe des intérêts du compte) ou le mode USDT fixe, et la taille de la transaction réelle peut être ajustée par des paramètres de levier.
Stratégie de sortieOffre deux modes d’arrêt - arrêt pourcentage ou arrêt croisé EMA, tout en utilisant un arrêt pourcentage fixe pour protéger la sécurité des fonds.
Mécanisme de confirmation multiple: La combinaison des moyennes mobiles à court terme et à long terme, formant un mécanisme de confirmation de signal à filtrage par couches, réduit considérablement la probabilité de faux signaux. L’EMA à court terme capture la dynamique instantanée, l’EMA à long terme vérifie la direction de la tendance globale.
Identifier la force de la tendance: Calcul des écarts en pourcentage entre les EMA pour s’assurer de négocier uniquement dans des tendances suffisamment fortes, en évitant les transactions fréquentes et les pertes dans les marchés horizontaux.
Zone d’accès flexible: La stratégie permet d’entrer dans des “ zones de négociation “, c’est-à-dire dans la zone de reprise de la direction de la tendance principale (entre l’EMA50 et l’EMA200), ce qui permet d’obtenir un meilleur prix d’entrée.
Flexibilité dans la gestion des fonds: Prise en charge de deux modes de gestion de position, à pourcentage ou à montant fixe, adaptés aux traders de différentes tailles de compte et préférences en matière de risque.
Arrêt automatique des pertesLe système d’arrêt-perte intégré permet de contrôler automatiquement les risques, d’éviter les interférences émotionnelles humaines et de protéger les fonds de trading.
Intégration des fonctionnalités d’alerte: fonction d’alerte de format fixe réalisée par alertcondition, pour faciliter la liaison avec un système externe ou l’assistance aux transactions manuelles.
Accumulation de retard sur plusieurs indicateursL’utilisation de plusieurs EMA peut entraîner une superposition de retard de signal, un manque de point d’entrée optimal ou une réaction lente dans un marché en évolution rapide. La solution consiste à envisager d’introduire des paramètres plus sensibles dans les EMA à courte période ou à ajouter des indicateurs de dynamique comme avertissement précoce.
Problème d’adaptabilité des paramètres fixes: Les périodes fixes d’EMA dans la stratégie (6, 14, 50, 200) peuvent ne pas s’appliquer à toutes les conditions du marché ou à toutes les périodes de temps. Il est recommandé de faire des tests de retour avant l’utilisation réelle et d’ajuster ces paramètres en fonction des caractéristiques spécifiques du marché.
Limite de stop-loss à pourcentage fixeL’utilisation d’un stop loss à pourcentage fixe ne tient pas compte de la variation du taux de volatilité du marché. L’arrêt de la perte peut être trop petit dans un environnement à forte volatilité et trop grand dans un environnement à faible volatilité. Considérez l’utilisation de l’ATR (la moyenne de l’amplitude des fluctuations réelles) pour ajuster dynamiquement le niveau de stop loss.
La vulnérabilité à un tournantIl est recommandé d’ajouter des indicateurs de confirmation supplémentaires, tels que le volume des transactions, les indicateurs de choc ou l’analyse de la forme des prix.
Risques liés à la gestion des fonds: Le modèle USDT fixe peut entraîner une taille de position déraisonnable dans un marché où les prix fluctuent fortement. Considérez la mise en œuvre d’un mécanisme d’ajustement de position dynamique, en ajustant le pourcentage de fonds pour chaque transaction en fonction du risque du marché.
Mécanisme d’ajustement des paramètres dynamiques: Développer des paramètres de cycles EMA auto-adaptatifs pour ajuster automatiquement les paramètres EMA en fonction de la volatilité du marché ou du cycle de négociation, afin d’améliorer l’adaptabilité de la stratégie à différents environnements de marché. Cela peut être fait en ajoutant des fonctions de calcul de la volatilité, telles que la variation des valeurs ATR, comme base pour l’ajustement des paramètres.
Ajout d’indicateurs de confirmation auxiliairesIntroduction d’indicateurs techniques supplémentaires tels que le RSI (indice de la force relative), le MACD (indice de la dispersion de la convergence moyenne mobile) ou l’indicateur de la quantité de conversion, comme confirmation de signaux croisés, afin de réduire la fréquence de faux signaux.
Arrêt intelligent des pertesRemplacer le stop loss à pourcentage fixe par un stop loss dynamique basé sur l’ATR, pour mieux s’adapter aux changements de volatilité du marché. Par exemple, le stop loss peut être défini comme le prix d’entrée moins 2 fois la valeur actuelle de l’ATR.
Stratégie de construction par lots et de stockageLa mise en œuvre d’une stratégie d’entrée par lots et de profit par lots, plutôt que d’une opération unique de position complète, réduit la pression sur le choix du moment opportun et améliore la stabilité globale des bénéfices.
Identifier l’état du marché: ajout de fonctionnalités de classification des états de marché (par exemple, marché tendanciel, marché oscillant), application de paramètres de négociation différents dans différents états de marché ou même évitement total de certains états de marché.
Optimisation du machine learning: introduire des algorithmes d’apprentissage automatique simples pour optimiser la sélection des paramètres et ajuster automatiquement les meilleurs cycles EMA et autres combinaisons de paramètres en fonction des données historiques.
Le mécanisme d’équilibrage des risquesRéalisation d’ajustements de position dynamiques basés sur la variation de la valeur nette du compte, augmentation de position après gain consécutif, réduction de position après perte consécutive, réalisation d’une reprise de la croissance des bénéfices tout en contrôlant le taux de rétractation.
La stratégie de négociation de filtrage de tendance croisée sur des moyennes mobiles à indices multiples est un système de négociation complet qui combine plusieurs niveaux d’indicateurs EMA pour identifier efficacement les tendances du marché et générer des signaux de négociation grâce à la synergie des moyennes mobiles à court et à long terme. Le principal avantage de cette stratégie réside dans ses mécanismes de confirmation multiples et sa capacité à gérer des positions flexibles, ce qui lui permet de bien fonctionner sur des marchés en tendance.
Cependant, cette stratégie présente également des limites liées au retard des indicateurs et à la fixation des paramètres. L’orientation de l’optimisation est principalement axée sur l’ajustement dynamique des paramètres, l’ajout d’indicateurs auxiliaires et l’amélioration du mécanisme d’arrêt-stop.
Dans l’ensemble, il s’agit d’une stratégie de suivi de tendance structurée et rigoureusement logique, adaptée aux investisseurs à moyen et long terme. Pour les traders plus agressifs, il est possible d’envisager de raccourcir les cycles EMA pour améliorer la sensibilité; pour les traders plus conservateurs, il est possible d’ajouter des conditions de filtrage supplémentaires et d’élargir la marge de freinage pour réduire la fréquence des transactions et le risque.
/*backtest
start: 2024-05-20 00:00:00
end: 2024-08-17 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"DOGE_USDT"}]
*/
// @version=6
strategy("EMA sabit usdt ve Alarm)", overlay=true, margin_long=1, margin_short=1)
// —— GİRDİLER —— //
fastLen = input.int(6, "EMA6 Periyodu")
slowLen = input.int(14, "EMA14 Periyodu")
midLen = input.int(50, "EMA50 Periyodu")
longLen = input.int(200, "EMA200 Periyodu")
tpMode = input.string("Percent", "Take Profit Modu", options=["Percent", "EMA Cross"])
tpPerc = input.float(2.0, "TP (%)", step=0.1)
slPerc = input.float(7.0, "Stop Loss (%)", step=0.1)
orderSizeMode = input.string("Percent", "Pozisyon Boyutu Modu", options=["Percent", "Fixed"])
orderSizePerc = input.float(10.0, "Boyut (%)", minval=0.1, step=0.1)
orderSizeFixed = input.float(5.0, "Boyut (Sabit) [USDT]", minval=0)
leverage = input.int(1, "Kaldıraç", minval=1)
minEMAPct = input.float(1.0, "%50–200 Min Fark", step=0.1)
// —— EMA HESAPLAMALARI —— //
ema6 = ta.ema(close, fastLen)
ema14 = ta.ema(close, slowLen)
ema50 = ta.ema(close, midLen)
ema200 = ta.ema(close, longLen)
plot(ema6, title="EMA 6", linewidth=1)
plot(ema14, title="EMA 14", linewidth=1)
plot(ema50, title="EMA 50", linewidth=2)
plot(ema200, title="EMA 200", linewidth=2)
crossUp = ta.crossover(ema6, ema14)
crossDown = ta.crossunder(ema6, ema14)
priceAbove50 = close > ema50
priceBelow50 = close < ema50
priceAbove200 = close > ema200
priceBelow200 = close < ema200
upTrend = ema50 > ema200
downTrend = ema50 < ema200
zoneLong = priceBelow50 and priceAbove200
zoneShort = priceAbove50 and priceBelow200
emaDistPct = math.abs(ema50 - ema200) / ema200 * 100
strongTrend= emaDistPct >= minEMAPct
// —— KOŞULLAR —— //
longCond = crossUp and upTrend and strongTrend and (priceAbove50 or zoneLong)
shortCond = crossDown and downTrend and strongTrend and (priceBelow200 or zoneShort)
// —— POZİSYON MİKTARI —— //
var float qty = na
if orderSizeMode == "Percent"
qty := strategy.equity * (orderSizePerc/100) * leverage
else
qty := (orderSizeFixed / close) * leverage
// —— SİNYAL KOŞULLARI — statik mesajlar —— //
alarmLongID = "EMA_Long_Signal"
alarmShortID = "EMA_Short_Signal"
// —— GİRİŞLER —— //
if longCond
strategy.entry("Long", strategy.long, qty=qty)
label.new(bar_index, high, text="Long", yloc=yloc.abovebar)
if shortCond
strategy.entry("Short", strategy.short, qty=qty)
label.new(bar_index, low, text="Short", yloc=yloc.belowbar)
// —— ALERTCONDITION ile sabit mesaj —— //
alertcondition(longCond, title="Long Alarm", message=alarmLongID)
alertcondition(shortCond, title="Short Alarm", message=alarmShortID)
// ÇIKIŞLAR (TP/SL) —— //
if tpMode == "Percent"
if strategy.position_size > 0
slPrice = strategy.position_avg_price * (1 - slPerc/100)
tpPrice = strategy.position_avg_price * (1 + tpPerc/100)
strategy.exit("Exit Long", from_entry="Long", stop=slPrice, limit=tpPrice)
if strategy.position_size < 0
slPrice = strategy.position_avg_price * (1 + slPerc/100)
tpPrice = strategy.position_avg_price * (1 - tpPerc/100)
strategy.exit("Exit Short", from_entry="Short", stop=slPrice, limit=tpPrice)
else
if strategy.position_size > 0
slPrice = strategy.position_avg_price * (1 - slPerc/100)
strategy.exit("Stop Long", from_entry="Long", stop=slPrice)
if strategy.position_size < 0
slPrice = strategy.position_avg_price * (1 + slPerc/100)
strategy.exit("Stop Short", from_entry="Short", stop=slPrice)