Stratégie de trading quantitative avec indicateur multiple de retracement et d'extension de Fibonacci

EMA
Date de création: 2024-11-12 10:51:02 Dernière modification: 2024-11-12 10:51:02
Copier: 0 Nombre de clics: 150
1
Suivre
1166
Abonnés

Stratégie de trading quantitative avec indicateur multiple de retracement et d’extension de Fibonacci

Aperçu

La stratégie est un système de trading quantitatif composite basé sur les niveaux de rétractation et de prolongation de Fibonacci, combiné à un jugement de tendance de la moyenne EMA. La stratégie traite en identifiant les points de résistance de soutien importants du marché, combinés à des signaux de tendance. Le système utilise les courbes de 20 et 50 cycles EMA pour juger de la tendance du marché et, sur cette base, exploiter les niveaux de rétractation de Fibonacci pour trouver les meilleures opportunités de négociation.

Principe de stratégie

La logique centrale de la stratégie comprend trois parties principales: d’abord, le calcul des prix les plus élevés et les plus bas de près de 10 cycles, pour déterminer la zone de fluctuation des prix; ensuite, le calcul des cinq principaux niveaux de rétraction de Fibonacci basés sur cette zone: 0,236, 0,382, 0,5, 0,618, 0,786; enfin, la direction de la tendance est déterminée par le croisement des EMAs de 20 et 50 cycles.

Avantages stratégiques

  1. La combinaison de deux concepts de trading, le suivi de la tendance et le retrait des prix, améliore la précision des transactions
  2. Utilisation de la suite de Fibonacci comme niveaux de prix clés, qui ont une forte signification psychologique sur le marché
  3. Les tendances sont évaluées à l’aide de l’EMA pour éviter les échanges fréquents sur le marché horizontal.
  4. La conception du système est simple, facile à comprendre et à entretenir
  5. Peut s’appliquer à différentes périodes de temps, avec une forte adaptabilité

Risque stratégique

  1. Des signaux erronés peuvent être générés dans des marchés très volatils
  2. La tendance à la baisse des prix des produits alimentaires et des boissons alcoolisées est un phénomène courant dans le monde de la santé.
  3. Le calcul du niveau de retrait est basé sur des hauts et des bas historiques et pourrait être en retard sur le marché.
  4. Le choix du point d’entrée peut ne pas être suffisamment précis, ce qui entraîne une position d’arrêt plus éloignée.
  5. Le manque de dynamisme du système en matière de gestion des positions

Orientation de l’optimisation de la stratégie

  1. L’introduction d’indicateurs de volumes de transactions pour améliorer la précision des jugements de tendances
  2. Augmentation des mécanismes d’arrêt des pertes dynamiques pour une meilleure maîtrise des risques
  3. Optimiser les cycles de calcul des niveaux de retrait pour les rendre plus adaptés au rythme du marché
  4. Ajouter un filtre de volatilité pour éviter de négocier pendant les périodes de forte volatilité
  5. Conception d’un système de gestion de position plus flexible, permettant d’ajuster les positions en fonction des conditions du marché

Résumer

La stratégie a été construite en combinant les outils d’analyse technique classiques pour construire un système de trading relativement complet. Bien qu’il y ait des endroits qui nécessitent des optimisations, le cadre global a une bonne adaptabilité au marché. Grâce à une optimisation et à une amélioration continues, la stratégie est susceptible d’obtenir de meilleures performances dans les transactions réelles.

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

//@version=5
strategy("Fibonacci Retracement and Extension Strategy", overlay=true)

// Define the Fibonacci levels for retracement and extension
fibRetracementLevels = array.new_float(5)
array.set(fibRetracementLevels, 0, 0.236)
array.set(fibRetracementLevels, 1, 0.382)
array.set(fibRetracementLevels, 2, 0.5)
array.set(fibRetracementLevels, 3, 0.618)
array.set(fibRetracementLevels, 4, 0.786)

fibExtensionLevels = array.new_float(5)
array.set(fibExtensionLevels, 0, 1.618)
array.set(fibExtensionLevels, 1, 2.618)
array.set(fibExtensionLevels, 2, 3.618)
array.set(fibExtensionLevels, 3, 4.236)
array.set(fibExtensionLevels, 4, 5.618)

// Calculate the high and low prices for the last 10 bars
highPrice = ta.highest(high, 10)
lowPrice = ta.lowest(low, 10)

// Calculate the Fibonacci retracement levels
fibRetracement = array.new_float(5)
for i = 0 to 4
    array.set(fibRetracement, i, highPrice - (highPrice - lowPrice) * array.get(fibRetracementLevels, i))

// Calculate the trend using the Exponential Moving Average (EMA)
shortEMA = ta.ema(close, 20)
longEMA = ta.ema(close, 50)

// Define the trend conditions
isUptrend = shortEMA > longEMA
isDowntrend = shortEMA < longEMA

// Generate buy and sell signals
var float lastFibRetracementLevel = na
var float lastFibExtensionLevel = na

// Buy condition: price crosses above the highest retracement level
if (isUptrend)
    for i = 0 to 4
        if (close > array.get(fibRetracement, i))
            lastFibRetracementLevel := array.get(fibRetracement, i)
            strategy.entry("Buy", strategy.long)

// Sell condition: price crosses below the lowest retracement level
if (isDowntrend)
    for i = 0 to 4
        if (close < array.get(fibRetracement, i))
            lastFibRetracementLevel := array.get(fibRetracement, i)
            strategy.entry("Sell", strategy.short)

// Plotting the Fibonacci levels on the chart
// for i = 0 to 4
//     line.new(bar_index[10], array.get(fibRetracement, i), bar_index, array.get(fibRetracement, i), color=color.new(color.blue, 70), width=1)

// Plot the EMAs
plot(shortEMA, color=color.red, title="Short EMA")
plot(longEMA, color=color.blue, title="Long EMA")