
La stratégie est un système de trading automatique qui combine les signaux de croisement des moyennes mobiles indicielles (EMA) et les niveaux de rétroaction de Fibonacci. Elle détermine la direction de la tendance du marché en identifiant les croisements des lignes rapides et lentes de l’EMA, tout en utilisant les niveaux de Fibonacci calculés automatiquement pour définir des points de stop et d’arrêt intelligents. La stratégie vise à capturer les changements de tendance du marché et à protéger la sécurité des fonds grâce à des paramètres de gestion des risques prédéfinis.
La logique centrale de cette stratégie est basée sur les points suivants:
Signaux croisés EMA: Le système utilise deux moyennes mobiles indicielles de différentes périodes (la ligne rapide de 9 périodes et la ligne lente de 21 périodes) pour identifier les changements de tendance. Lorsque la ligne rapide monte en traversant la ligne lente, un signal de commutation est généré.
Conception anti-repeintureUtilisation stratégique:barstate.isconfirmedLes conditions assurent que le signal n’est confirmé qu’après la clôture de la ligne K, ce qui évite efficacement les problèmes de redessinage du signal et améliore la fiabilité de la stratégie.
Le niveau Fibonacci automatique: Le système identifie automatiquement les hauts et les bas de la période de rétrocession définie par l’utilisateur (la ligne K par défaut de 100), puis calcule les niveaux critiques de rétroaction de Fibonacci (0,382 et 0,618).
Réglage de l’arrêt intelligent:
Paramètres personnalisés: La stratégie fournit plusieurs paramètres ajustables, y compris la longueur des cycles EMA, le pourcentage d’arrêt, le pourcentage d’arrêt, le pourcentage d’arrêt suivi, le cycle de rétrocession Fibonacci et le nombre de transactions, etc., que l’utilisateur peut optimiser en fonction de ses préférences de risque et des conditions du marché.
Le suivi des tendances et la capture inverséeCombinée à une EMA croisée et à des niveaux de Fibonacci, la stratégie est capable de capturer efficacement les changements de tendance du marché tout en établissant des arrêts de perte et des arrêts à des niveaux de résistance de soutien importants.
Adaptation aux conditions du marché: Le calcul automatique de Fibonacci permet à la stratégie d’ajuster automatiquement sa position de stop-loss en fonction des différentes conditions du marché, au lieu d’utiliser un pourcentage fixe, ce qui lui permet de maintenir une performance relativement stable dans des marchés à différentes taux d’oscillation.
Mécanisme de défense contre la cartographiePar l’utilisation:barstate.isconfirmedetlookahead=barmerge.lookahead_offLes paramètres, les stratégies assurent que tous les signaux sont basés sur les fils K du disque fermé, évitant ainsi les différences entre la détection et le disque réel.
Analyse de plusieurs périodes: Les stratégies permettent aux utilisateurs de choisir différents cadres temporels de signaux, d’effectuer des analyses à travers les cadres temporels et d’améliorer la qualité du signal.
Signaux de négociation visualisés: La stratégie marque clairement les points d’achat et de vente, les arrêts de perte et les arrêts de vente sur le graphique, permettant aux traders de comprendre intuitivement la logique de la négociation et la gestion des risques.
Intégration des fonctionnalités d’alerte: Fonction d’alerte de signaux de négociation intégrée pour surveiller les opportunités de marché en temps réel.
Risque de fausse percée: Les signaux croisés EMA peuvent produire de fréquentes fausses ruptures dans un marché en mouvement, entraînant des pertes continues. Les fausses signaux peuvent être réduits en ajoutant des conditions de filtrage supplémentaires (comme la confirmation de la quantité de transaction, un filtre de taux de fluctuation ou un indicateur de la force de la tendance).
La distance d’arrêt est trop grande.: Dans certaines conditions de marché, les positions de stop-loss basées sur les niveaux de Fibonacci peuvent être plus éloignées du point d’entrée, augmentant le risque d’une seule transaction. Il peut être envisagé de définir une limite de distance de stop-loss maximale ou d’ajuster dynamiquement la distance de stop-loss en utilisant l’ATR.
piège d’optimisation des paramètres: Les paramètres d’optimisation excessive peuvent conduire une stratégie à bien fonctionner sur les données historiques, mais à échouer sur les marchés futurs. Il est recommandé d’utiliser des tests de prospective et des tests de robustesse pour vérifier la stabilité de la stratégie.
Une mauvaise gestion des fonds: La stratégie utilise par défaut des transactions à nombre fixe, sans taille de position ajustée en fonction de la taille du compte et du risque. Il est recommandé d’intégrer des modules de gestion de fonds tels que le pourcentage de risque fixe ou les critères de Kelly pour ajuster dynamiquement la taille de la position.
Le manque de filtrage des conditions du marché: La stratégie génère des signaux dans toutes les conditions du marché, sans distinction entre les marchés tendance et les marchés oscillante. Des fonctions d’identification de l’environnement du marché peuvent être ajoutées, utilisant différents paramètres de négociation ou suspendant les transactions dans différents états du marché.
Ajout d’une confirmation de plusieurs périodes: Il est possible d’introduire des mécanismes de confirmation de tendance à plus longs cycles et d’exécuter des transactions uniquement lorsque la direction de la tendance principale est cohérente, réduisant ainsi le nombre de transactions de contre-courant. Par exemple, il est possible de vérifier la direction de la tendance de la ligne solaire ou de la courbe circulaire et d’exécuter plusieurs ordres uniquement lorsque la ligne solaire est en hausse.
Adaptation intégrée des fluctuations: Introduction d’indicateurs ATR pour ajuster dynamiquement les arrêts et les arrêts de distance, permettant à la stratégie de s’adapter à différents environnements de taux d’oscillation. Augmenter la distance d’arrêt lorsque le taux d’oscillation est élevé et réduire la distance d’arrêt lorsque le taux d’oscillation est faible.
Ajouter une confirmation de transaction: Vérifiez si le volume de transaction est amplifié lors de la génération du signal, n’exécutez les transactions que si le volume de transaction est supporté, pour améliorer la qualité du signal.
Optimisation de la gestion des fondsGestion dynamique des positions basée sur la taille et le risque du compte, en veillant à ce que le risque de chaque transaction soit maîtrisé dans une proportion fixe du capital total.
Développer des filtres environnementaux de marché: Conception d’un module de reconnaissance de l’état du marché, qui distingue les marchés tendance et les marchés oscillants, en utilisant différentes stratégies de négociation ou paramètres dans différents états du marché.
Optimiser le paramètre de Fibonacci: La stratégie actuelle utilise les niveaux fixes de Fibonacci de 0.382 et 0.618, permettant de tester l’efficacité d’autres niveaux (par exemple, 0.5 ou 0.786) ou de choisir le niveau de Fibonacci optimal en fonction de la dynamique des caractéristiques du marché.
Ajouter un filtre de temps de transaction: Suspendre la négociation pendant les périodes de publication de données économiques importantes ou d’insuffisance de la liquidité du marché, afin d’éviter des points de glissement excessifs et des comportements imprévisibles du marché.
Il s’agit d’une stratégie de trading intelligente combinant les outils classiques de l’analyse technique, qui identifie les changements de tendance par EMA, définit les points de résistance critiques à l’aide des niveaux de Fibonacci et implémente une gestion automatique des arrêts de perte. L’avantage de cette stratégie réside dans son adaptabilité et son système de gestion des risques complet, mais il faut toujours être attentif aux risques de fausses percées et de suroptimisation des paramètres.
La stratégie peut être encore améliorée en termes de stabilité et de rentabilité en ajoutant des fonctionnalités telles que la confirmation de plusieurs périodes, l’ajustement de la volatilité, le filtrage des volumes de transactions et la reconnaissance de l’environnement du marché. Pour les traders qui recherchent une méthode de négociation systématique, cela fournit un cadre de base solide qui peut être encore personnalisé et optimisé en fonction de leur style de négociation et des caractéristiques du marché.
/*backtest
start: 2024-08-13 00:00:00
end: 2025-08-11 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":5000000}]
*/
//@version=5
strategy("ETH Futures Auto Buyer with Auto Fib by Govind", overlay=true, max_labels_count=500)
// ===== Inputs =====
timeframe_input = input.timeframe("5", "Signal Timeframe")
fastLen = input.int(9, "Fast EMA Length")
slowLen = input.int(21, "Slow EMA Length")
slPercent = input.float(0.5, "Stop Loss %")
tpPercent = input.float(1.0, "Take Profit %")
trailPercent = input.float(0.3, "Trailing SL %")
lookbackBars = input.int(100, "Fib Swing Lookback")
qty = input.int(1, "Order Quantity", minval=1)
// ===== EMA Logic with no repainting =====
price = request.security(syminfo.tickerid, timeframe_input, close, lookahead=barmerge.lookahead_off)
emaFast = request.security(syminfo.tickerid, timeframe_input, ta.ema(close, fastLen), lookahead=barmerge.lookahead_off)
emaSlow = request.security(syminfo.tickerid, timeframe_input, ta.ema(close, slowLen), lookahead=barmerge.lookahead_off)
longSignal = ta.crossover(emaFast, emaSlow)
shortSignal = ta.crossunder(emaFast, emaSlow)
// Confirm signals only on closed bar (no repaint)
longSignalConfirmed = longSignal and barstate.isconfirmed
shortSignalConfirmed = shortSignal and barstate.isconfirmed
// ===== Auto Fibonacci Levels =====
swingHigh = ta.highest(high, lookbackBars)
swingLow = ta.lowest(low, lookbackBars)
fib618 = swingHigh - (swingHigh - swingLow) * 0.618
fib382 = swingHigh - (swingHigh - swingLow) * 0.382
// ===== SL & TP Prices =====
longSL = fib618
shortSL = fib382
longTP = swingHigh
shortTP = swingLow
// ===== Strategy Entries =====
if (longSignalConfirmed)
strategy.entry("Long", strategy.long, qty)
strategy.exit("Long Exit", from_entry="Long", stop=longSL, limit=longTP)
if (shortSignalConfirmed)
strategy.entry("Short", strategy.short, qty)
strategy.exit("Short Exit", from_entry="Short", stop=shortSL, limit=shortTP)
// ===== Plotting =====
plot(longSL, color=color.lime, title="Long SL")
plot(shortSL, color=color.fuchsia, title="Short SL")
plot(longTP, color=color.blue, title="Long TP")
plot(shortTP, color=color.orange, title="Short TP")
plotshape(longSignalConfirmed, title="Long Signal", style=shape.labelup, text="BUY", location=location.belowbar, color=color.green, size=size.small)
plotshape(shortSignalConfirmed, title="Short Signal", style=shape.labeldown, text="SELL", location=location.abovebar, color=color.red, size=size.small)
// ===== Alerts =====
alertcondition(longSignalConfirmed, title="Long Signal", message="ETH Futures LONG Entry")
alertcondition(shortSignalConfirmed, title="Short Signal", message="ETH Futures SHORT Entry")