Système de stratégie de moyenne des coûts dynamique basé sur les bandes de Bollinger et le RSI

BB RSI DCA SMA TP
Date de création: 2024-11-27 16:37:12 Dernière modification: 2024-11-27 16:37:12
Copier: 0 Nombre de clics: 467
1
Suivre
1617
Abonnés

Système de stratégie de moyenne des coûts dynamique basé sur les bandes de Bollinger et le RSI

Aperçu

La stratégie est un système de trading quantitatif combinant les bandes de Bollinger, les indices de force relative (RSI) et les moyennes de coût dynamiques (DCA). La stratégie impose des règles de gestion de fonds, exécute automatiquement des opérations de construction de position en lots dans les fluctuations du marché, tout en combinant des indicateurs techniques pour juger des signaux d’achat et de vente, et exécute des transactions à risque contrôlable. Le système contient également une logique de stop-loss et un suivi des bénéfices cumulés, permettant de surveiller et de gérer efficacement la performance des transactions.

Principe de stratégie

La stratégie repose principalement sur les éléments fondamentaux suivants :

  1. L’indicateur de la ceinture de Brin est utilisé pour juger de la zone de fluctuation des prix, en considérant l’achat lorsque le prix touche le bas et la vente lorsque le prix touche le haut
  2. L’indicateur RSI est utilisé pour confirmer un état de survente du marché. Le RSI est confirmé en survente lorsque le RSI est inférieur à 25 et confirmé en survente lorsqu’il est supérieur à 75
  3. Le module DCA calcule le montant de chaque placement en fonction de la dynamique des intérêts du compte et permet une gestion adaptative des fonds
  4. Le module de stop-loss fixe un objectif de profit de 5% pour atteindre l’objectif.
  5. Le module de surveillance de l’état du marché calcule l’ampleur des variations du marché sur 90 jours pour aider à déterminer les tendances globales
  6. Le module de suivi des bénéfices cumulés enregistre les pertes et les pertes de chaque transaction afin d’évaluer la performance de la stratégie

Avantages stratégiques

  1. Amélioration de la fiabilité du signal combinée à une vérification croisée de multiples indicateurs techniques
  2. Gestion dynamique des positions pour éviter les risques liés aux positions fixes
  3. La mise en place de conditions de stop-loss raisonnables et le verrouillage des bénéfices en temps opportun
  4. Une fonctionnalité de surveillance des tendances du marché pour mieux comprendre le contexte
  5. Un système de suivi des bénéfices parfait pour analyser la performance de la stratégie
  6. Alerte en temps réel sur les opportunités de trading

Risque stratégique

  1. La volatilité des marchés pourrait souvent déclencher des signaux conduisant à une augmentation des coûts de transaction.
  2. L’indicateur RSI pourrait être en retard sur un marché en tendance
  3. Le taux fixe d’arrêt pourrait être abandonné trop tôt dans un marché en forte tendance
  4. La stratégie de la DCA pourrait entraîner un retrait plus important dans un marché en baisse unilatérale Les mesures suivantes sont recommandées pour gérer les risques :
  • Définition de la limite de position maximale
  • Paramètres adaptés à la dynamique des fluctuations du marché
  • Ajouter un filtre de tendance
  • Mise en œuvre d’une stratégie de blocage par paliers

Orientation de l’optimisation de la stratégie

  1. Optimisation dynamique des paramètres :
  • Les paramètres de la bande de Bryn peuvent être ajustés en fonction des fluctuations
  • La marge RSI peut varier selon le cycle du marché
  • Le pourcentage de fonds DCA peut être ajusté en fonction de la taille du compte
  1. Le système de signalisation est renforcé:
  • Confirmation d’augmentation du volume
  • Ajout d’une analyse de ligne de tendance
  • La vérification croisée des indicateurs techniques
  1. Le risque est bien maîtrisé:
  • Réalisation d’un arrêt de perte dynamique
  • Ajout de contrôle de rétractation maximale
  • Limite de perte par jour

Résumer

La stratégie utilise une approche intégrée de l’analyse technique et de la gestion des fonds pour construire un système de négociation relativement complet. L’avantage de la stratégie réside dans la reconnaissance de signaux multiples et une bonne gestion des risques, mais elle nécessite toujours un test et une optimisation approfondis sur le marché.

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

//@version=5
strategy("Combined BB RSI with Cumulative Profit, Market Change, and Futures Strategy (DCA)", shorttitle="BB RSI Combined DCA Strategy", overlay=true)

// Input Parameters
length = input.int(20, title="BB Length")  // Adjusted BB length
mult = input.float(2.5, title="BB Multiplier")  // Adjusted BB multiplier
rsiLength = input.int(14, title="RSI Length")  // Adjusted RSI length
rsiBuyLevel = input.int(25, title="RSI Buy Level")  // Adjusted RSI Buy Level
rsiSellLevel = input.int(75, title="RSI Sell Level")  // Adjusted RSI Sell Level
dcaPositionSizePercent = input.float(1, title="DCA Position Size (%)", tooltip="Percentage of equity to use in each DCA step")
takeProfitPercentage = input.float(5, title="Take Profit (%)", tooltip="Take profit percentage for DCA strategy")

// Calculate DCA position size
equity = strategy.equity  // Account equity
dcaPositionSize = (equity * dcaPositionSizePercent) / 100  // DCA position size as percentage of equity

// Bollinger Bands Calculation
basis = ta.sma(close, length)
dev = mult * ta.stdev(close, length)
upper = basis + dev
lower = basis - dev

// RSI Calculation
rsi = ta.rsi(close, rsiLength)

// Plotting Bollinger Bands and RSI levels
plot(upper, color=color.red, title="Bollinger Upper")
plot(lower, color=color.green, title="Bollinger Lower")
hline(rsiBuyLevel, "RSI Buy Level", color=color.green)
hline(rsiSellLevel, "RSI Sell Level", color=color.red)

// Buy and Sell Signals
buySignal = (rsi < rsiBuyLevel and close <= lower)
sellSignal = (rsi > rsiSellLevel and close >= upper)

// DCA Strategy: Enter Long or Short based on signals with calculated position size
if (buySignal)
    strategy.entry("DCA Buy", strategy.long)

if (sellSignal)
    strategy.entry("DCA Sell", strategy.short)

// Take Profit Logic
if (strategy.position_size > 0)  // If long
    strategy.exit("Take Profit Long", from_entry="DCA Buy", limit=close * (1 + takeProfitPercentage / 100))

if (strategy.position_size < 0)  // If short
    strategy.exit("Take Profit Short", from_entry="DCA Sell", limit=close * (1 - takeProfitPercentage / 100))

// Plot Buy/Sell Signals on the chart
plotshape(buySignal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY", textcolor=color.white)
plotshape(sellSignal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL", textcolor=color.white)

// Alerts for Buy/Sell Signals
alertcondition(buySignal, title="Buy Alert", message="Buy Signal Detected")
alertcondition(sellSignal, title="Sell Alert", message="Sell Signal Detected")

// Cumulative Profit Calculation
var float buyPrice = na
var float profit = na
var float cumulativeProfit = 0.0  // Cumulative profit tracker

if (buySignal)
    buyPrice := close
if (sellSignal and not na(buyPrice))
    profit := (close - buyPrice) / buyPrice * 100
    cumulativeProfit := cumulativeProfit + profit  // Update cumulative profit
    label.new(bar_index, high, text="P: " + str.tostring(profit, "#.##") + "%", color=color.blue, style=label.style_label_down)
    buyPrice := na  // Reset buyPrice after sell

// Plot cumulative profit on the chart
var label cumulativeLabel = na
if (not na(cumulativeProfit))
    if not na(cumulativeLabel)
        label.delete(cumulativeLabel)
    cumulativeLabel := label.new(bar_index, high + 10, text="Cumulative Profit: " + str.tostring(cumulativeProfit, "#.##") + "%", color=color.purple, style=label.style_label_up)

// Market Change over 3 months Calculation
threeMonthsBars = 3 * 30 * 24  // Approximation of 3 months in bars (assuming 1 hour per bar)
priceThreeMonthsAgo = request.security(syminfo.tickerid, "D", close[threeMonthsBars])
marketChange = (close - priceThreeMonthsAgo) / priceThreeMonthsAgo * 100

// Plot market change over 3 months
var label marketChangeLabel = na
if (not na(marketChange))
    if not na(marketChangeLabel)
        label.delete(marketChangeLabel)
    marketChangeLabel := label.new(bar_index, high + 20, text="Market Change (3 months): " + str.tostring(marketChange, "#.##") + "%", color=color.orange, style=label.style_label_up)

// Both labels (cumulative profit and market change) are displayed simultaneously
var label infoLabel = na
if (not na(cumulativeProfit) and not na(marketChange))
    if not na(infoLabel)
        label.delete(infoLabel)
    infoLabel := label.new(bar_index, high + 30, text="Cumulative Profit: " + str.tostring(cumulativeProfit, "#.##") + "% | Market Change (3 months): " + str.tostring(marketChange, "#.##") + "%", color=color.purple, style=label.style_label_upper_right)