Stratégie hybride de croisement de moyennes mobiles Momentum de Fibonacci

MA SMA TP SL FIBONACCI
Date de création: 2025-02-19 11:02:16 Dernière modification: 2025-02-19 11:02:16
Copier: 3 Nombre de clics: 479
1
Suivre
1617
Abonnés

Stratégie hybride de croisement de moyennes mobiles Momentum de Fibonacci

Aperçu

La stratégie est un système de négociation intégré qui combine des niveaux de rétractation de Fibonacci, des croisements de moyennes mobiles et des jugements de tendance dynamique. Il génère des signaux de négociation en croisant des moyennes mobiles rapides et des moyennes mobiles lentes, tout en utilisant les niveaux de rétractation de Fibonacci comme points de référence importants pour les prix, et en combinant des jugements de tendance pour optimiser le timing des transactions.

Principe de stratégie

La logique fondamentale de la stratégie repose sur les éléments clés suivants :

  1. Le système de croisement des moyennes mobiles utilise les moyennes mobiles simples des 9e et 21e jours (SMA) comme indicateur de signal
  2. Les niveaux de rétractation de Fibonacci calculés sur 100 cycles (23,6%, 38,2%, 50%, 61,8%) sont utilisés pour l’analyse de la structure du marché
  3. Jugez les tendances du marché par la relation entre la position des prix et la moyenne rapide
  4. Les signaux de construction d’entrepôts sont déclenchés par une traversée lente de la moyenne rapide sur la moyenne rapide ((faire plus) ou une traversée lente de la moyenne lente en bas ((faire moins)
  5. Le système définit automatiquement les niveaux de stop loss et stop loss en pourcentage en fonction du prix d’entrée

Avantages stratégiques

  1. L’analyse multidimensionnelle: elle combine les trois éléments les plus reconnus de l’analyse technique (tendance, dynamique et niveau de prix)
  2. Gestion des risques: utilisation d’un ratio de stop-loss prédéfini pour protéger la sécurité des fonds
  3. Haute visibilité: affichage clair de tous les niveaux de prix et signaux de négociation clés sur le graphique
  4. Adaptabilité: les paramètres peuvent être ajustés pour s’adapter à différents environnements de marché
  5. Les règles d’opération sont claires: les conditions de génération du signal sont claires, il faut éviter les jugements subjectifs.

Risque stratégique

  1. Le système de régularisation mobile peut générer de faux signaux dans un marché en crise
  2. Le paramètre de stop loss à pourcentage fixe peut ne pas être adapté à toutes les conditions du marché.
  3. Dans un marché très volatile, les prix peuvent rapidement dépasser les points de rupture
  4. L’efficacité des niveaux de Fibonacci peut changer en fonction des conditions du marché
  5. Les jugements de tendance peuvent être retardés à un tournant du marché

Orientation de l’optimisation de la stratégie

  1. Introduction d’un indicateur de volatilité pour ajuster dynamiquement le ratio de stop loss
  2. Ajout d’analyses de volumes pour confirmer les signaux de transaction
  3. Considérer la confirmation à différentes périodes de temps pour améliorer la fiabilité du signal
  4. Adhérer aux conditions de sélection du marché et négocier dans des conditions de marché appropriées
  5. Développer des systèmes d’optimisation de paramètres adaptés

Résumer

Il s’agit d’une stratégie de négociation intégrée qui combine plusieurs outils d’analyse technique classiques. En combinant les moyennes mobiles, les retraits de Fibonacci et l’analyse des tendances, la stratégie est capable de capturer des opportunités de négociation potentielles sur le marché.

Code source de la stratégie
/*backtest
start: 2024-02-20 00:00:00
end: 2025-02-17 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Buy/Sell Strategy with TP, SL, Fibonacci Levels, and Trend", overlay=true)

// Input for stop loss and take profit percentages
stopLossPercentage = input.int(2, title="Stop Loss (%)") // Stop loss percentage
takeProfitPercentage = input.int(4, title="Take Profit (%)") // Take profit percentage

// Example of a moving average crossover strategy
fastLength = input.int(9, title="Fast MA Length")
slowLength = input.int(21, title="Slow MA Length")

fastMA = ta.sma(close, fastLength)
slowMA = ta.sma(close, slowLength)

// Entry conditions (Buy when fast MA crosses above slow MA, Sell when fast MA crosses below slow MA)
longCondition = ta.crossover(fastMA, slowMA)
shortCondition = ta.crossunder(fastMA, slowMA)

// Plot moving averages for visual reference
plot(fastMA, color=color.blue, title="Fast MA")
plot(slowMA, color=color.red, title="Slow MA")

// Fibonacci Retracement Levels
lookback = input.int(100, title="Lookback Period for Fibonacci Levels")
highLevel = ta.highest(high, lookback)
lowLevel = ta.lowest(low, lookback)

fib236 = lowLevel + (highLevel - lowLevel) * 0.236
fib382 = lowLevel + (highLevel - lowLevel) * 0.382
fib50 = lowLevel + (highLevel - lowLevel) * 0.5
fib618 = lowLevel + (highLevel - lowLevel) * 0.618

// Display Fibonacci levels as text on the chart near price panel (left of candle)
label.new(bar_index, fib236, text="Fib 23.6%: " + str.tostring(fib236, "#.##"), style=label.style_label_left, color=color.purple, textcolor=color.white, size=size.small, xloc=xloc.bar_index, yloc=yloc.price)
label.new(bar_index, fib382, text="Fib 38.2%: " + str.tostring(fib382, "#.##"), style=label.style_label_left, color=color.blue, textcolor=color.white, size=size.small, xloc=xloc.bar_index, yloc=yloc.price)
label.new(bar_index, fib50, text="Fib 50%: " + str.tostring(fib50, "#.##"), style=label.style_label_left, color=color.green, textcolor=color.white, size=size.small, xloc=xloc.bar_index, yloc=yloc.price)
label.new(bar_index, fib618, text="Fib 61.8%: " + str.tostring(fib618, "#.##"), style=label.style_label_left, color=color.red, textcolor=color.white, size=size.small, xloc=xloc.bar_index, yloc=yloc.price)

// Trend condition: Price uptrend or downtrend
trendCondition = close > fastMA ? "Uptrending" : close < fastMA ? "Downtrending" : "Neutral"

// Remove previous trend label and add new trend label
var label trendLabel = na
if (not na(trendLabel))
    label.delete(trendLabel)

// Create a new trend label based on the current trend
trendLabel := label.new(bar_index, close, text="Trend: " + trendCondition, style=label.style_label_left, color=color.blue, textcolor=color.white, size=size.small, xloc=xloc.bar_index, yloc=yloc.price)

// Buy and Sell orders with Stop Loss and Take Profit
if (longCondition)
    // Set the Stop Loss and Take Profit levels based on entry price
    stopLossLevel = close * (1 - stopLossPercentage / 100)
    takeProfitLevel = close * (1 + takeProfitPercentage / 100)
    // Enter long position with stop loss and take profit levels
    strategy.entry("BUY", strategy.long)
    strategy.exit("Sell", "BUY", stop=stopLossLevel, limit=takeProfitLevel)
    
    // Display TP, SL, and Entry price labels on the chart near price panel (left of candle)
    label.new(bar_index, takeProfitLevel, text="TP\n" + str.tostring(takeProfitLevel, "#.##"), style=label.style_label_left, color=color.green, textcolor=color.white, size=size.small, xloc=xloc.bar_index, yloc=yloc.price)
    label.new(bar_index, stopLossLevel, text="SL\n" + str.tostring(stopLossLevel, "#.##"), style=label.style_label_left, color=color.red, textcolor=color.white, size=size.small, xloc=xloc.bar_index, yloc=yloc.price)
    label.new(bar_index, close, text="BUY\n" + str.tostring(close, "#.##"), style=label.style_label_left, color=color.blue, textcolor=color.white, size=size.small, xloc=xloc.bar_index, yloc=yloc.price)

if (shortCondition)
    // Set the Stop Loss and Take Profit levels based on entry price
    stopLossLevel = close * (1 + stopLossPercentage / 100)
    takeProfitLevel = close * (1 - takeProfitPercentage / 100)
    // Enter short position with stop loss and take profit levels
    strategy.entry("SELL", strategy.short)
    strategy.exit("Cover", "SELL", stop=stopLossLevel, limit=takeProfitLevel)
    
    // Display TP, SL, and Entry price labels on the chart near price panel (left of candle)
    label.new(bar_index, takeProfitLevel, text="TP\n" + str.tostring(takeProfitLevel, "#.##"), style=label.style_label_left, color=color.green, textcolor=color.white, size=size.small, xloc=xloc.bar_index, yloc=yloc.price)
    label.new(bar_index, stopLossLevel, text="SL\n" + str.tostring(stopLossLevel, "#.##"), style=label.style_label_left, color=color.red, textcolor=color.white, size=size.small, xloc=xloc.bar_index, yloc=yloc.price)
    label.new(bar_index, close, text="SELL\n" + str.tostring(close, "#.##"), style=label.style_label_left, color=color.orange, textcolor=color.white, size=size.small, xloc=xloc.bar_index, yloc=yloc.price)

// Plot Buy/Sell labels on chart
plotshape(series=longCondition, title="BUY Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=shortCondition, title="SELL Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")