Les ressources ont été chargées... Je charge...

Stratégie de négociation quantitative multi-indicateur de retracement et d'extension de Fibonacci

Auteur:ChaoZhang est là., Date: 2024-11-12 10:51:02 Je suis désolé
Les étiquettes:Le taux d'intérêt

img

Résumé

Cette stratégie est un système de trading quantitatif composite basé sur les niveaux de rétractation et d'extension de Fibonacci, combiné à la détermination de la tendance de l'EMA.

Principes de stratégie

La logique de base se compose de trois composantes principales: Premièrement, elle calcule les prix les plus élevés et les plus bas au cours des 10 dernières périodes pour déterminer la fourchette de prix; Deuxièmement, elle calcule cinq niveaux de retracement Fibonacci clés (0,236, 0,382, 0,5, 0,618, 0,786) basés sur cette fourchette; Enfin, elle détermine la direction de la tendance par le croisement des EMA de 20 et 50 périodes. Les signaux d'achat sont générés lorsque le prix dépasse les niveaux de retracement dans une tendance haussière, tandis que les signaux de vente sont déclenchés lorsque le prix dépasse les niveaux de retracement dans une tendance baissière.

Les avantages de la stratégie

  1. Combine les concepts de suivi de tendance et de retracement des prix, améliorant la précision des transactions
  2. Utilise les séquences de Fibonacci comme niveaux de prix clés, qui ont une forte signification psychologique sur les marchés.
  3. Utilise des croisements EMA pour l'identification des tendances, en évitant les transactions fréquentes sur différents marchés
  4. Une conception propre du système, facile à comprendre et à entretenir
  5. Adaptable à différents délais, démontrant une grande polyvalence

Risques stratégiques

  1. Peut générer de faux signaux sur des marchés très volatils
  2. S'appuie sur la poursuite de la tendance, potentiellement sous-performant sur divers marchés
  3. Les calculs des niveaux de retracement basés sur les hauts et les bas historiques peuvent être en retard par rapport au marché
  4. La sélection du point d'entrée peut ne pas être suffisamment précise, ce qui entraîne des pertes d'arrêt plus larges
  5. Le système ne dispose pas de mécanismes de gestion dynamique des positions

Directions d'optimisation de la stratégie

  1. Incorporer des indicateurs de volume pour améliorer la précision de la détermination des tendances
  2. Mettre en œuvre des mécanismes dynamiques d'arrêt des pertes pour un meilleur contrôle des risques
  3. Optimiser les périodes de calcul du niveau de retracement pour mieux correspondre au rythme du marché
  4. Ajouter des filtres de volatilité pour éviter la négociation en période de forte volatilité
  5. Concevoir des systèmes de gestion des positions plus souples qui ajustent les avoirs en fonction des conditions du marché

Résumé

La stratégie construit un système de trading relativement complet en combinant des outils d'analyse technique classiques. Bien qu'il existe des domaines d'optimisation, le cadre global démontre une bonne adaptabilité du marché.


/*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")

Relationnée

Plus de