Outil de backtesting de stratégie de trading multi-indicateurs MA MACD BB

MA MACD BB
Date de création: 2024-06-03 09:49:08 Dernière modification: 2024-06-03 09:49:08
Copier: 0 Nombre de clics: 684
1
Suivre
1617
Abonnés

Outil de backtesting de stratégie de trading multi-indicateurs MA MACD BB

Aperçu

L’outil MA MACD BB est une plateforme de développement et de rétroaction de stratégies de trading quantitatives dotée de nombreuses fonctionnalités. L’outil prend en charge l’utilisation de trois indicateurs techniques couramment utilisés: les moyennes mobiles ((MA), les moyennes mobiles convergentes ((MACD) et les bandes blanches ((BB), permettant à l’utilisateur de choisir l’un d’entre eux comme indicateur de signal de trading principal.

Principe de stratégie

Le principe central de cette stratégie est d’utiliser trois indicateurs techniques couramment utilisés (MA, MACD et BB) pour identifier les tendances du marché et les signaux de négociation.

  1. Lorsque l’utilisateur choisit MA comme indicateur principal, la stratégie calcule la moyenne mobile pour la période spécifiée, générant des signaux d’achat et de vente lorsque les prix traversent la moyenne mobile vers le haut ou vers le bas.
  2. Lorsque l’utilisateur choisit le MACD comme indicateur principal, la stratégie calcule la valeur du MACD et la ligne de signal, générant respectivement des signaux d’achat et de vente lorsque le MACD traverse la ligne de signal en haut ou en bas. En outre, la stratégie trace un diagramme en colonnes du MACD pour afficher plus intuitivement la force de la tendance.
  3. Lorsque l’utilisateur choisit BB comme indicateur principal, la stratégie calcule la trajectoire ascendante et descendante de la ceinture de Brin, génère un signal d’achat lorsque le prix franchit la trajectoire descendante, génère un signal de vente lorsqu’il franchit la trajectoire ascendante, et est en position de vente lorsqu’il revient près de la trajectoire moyenne.

Lors de transactions spécifiques, la stratégie calcule automatiquement la taille de position de chaque transaction en fonction de l’orientation de la transaction choisie par l’utilisateur (multiple ou vide) et des paramètres de gestion des fonds, puis exécute les opérations d’ouverture de position et de position correspondantes en fonction du signal.

Avantages stratégiques

  1. Flexibilité des indicateurs: les utilisateurs peuvent choisir MA, MACD ou BB comme indicateurs de négociation principaux en fonction de leurs préférences et de leurs caractéristiques du marché, en s’adaptant à différents styles de négociation et environnements de marché.
  2. Le trading bidirectionnel: la stratégie prend en charge le trading bidirectionnel à plusieurs niveaux, permettant aux utilisateurs de choisir la direction de leur transaction en fonction de la tendance du marché, ce qui leur permet non seulement de profiter d’une tendance à la hausse, mais aussi de profiter d’une tendance à la baisse.
  3. Risque contrôlable: l’utilisateur peut définir avec souplesse le pourcentage de fonds pour chaque transaction, contrôler raisonnablement l’ouverture de risque pour chaque transaction, et la stratégie calcule automatiquement la taille de la position pour chaque transaction en fonction du solde du compte, afin d’éviter les risques excessifs.
  4. Signal clarté: la stratégie utilise des indicateurs techniques courants pour générer des signaux de négociation clairs et objectifs, et une représentation intuitive du graphique permettant à l’utilisateur d’identifier clairement la direction de la tendance et le moment de la négociation.
  5. Facilité de retracement: l’outil permet aux utilisateurs de retracer les données historiques, d’évaluer et d’optimiser rapidement la performance de la stratégie, et de fournir une référence importante pour les transactions en direct.

Risque stratégique

  1. Risque de marché: toute stratégie de négociation est exposée à des risques de volatilité et d’incertitude du marché, et cette stratégie n’est pas une exception. Si le marché est très volatil ou irrationnel, cela peut entraîner de faux signaux et des pertes.
  2. Risque paramétrique: la performance de la stratégie dépend dans une certaine mesure des paramètres de l’indicateur choisis par l’utilisateur, tels que la période de la MA, la période de la ligne rapide et lente de la MACD, la période et la largeur de la BB, etc. Une mauvaise configuration des paramètres peut entraîner une mauvaise efficacité de la stratégie.
  3. Risque de suradaptation: si l’utilisateur sur-optimise les paramètres de la stratégie dans la rétroanalyse, cela peut entraîner une mauvaise performance de la stratégie sur des données historiques spécifiques dans le marché réel, c’est-à-dire qu’il y a un problème de suradaptation.
  4. Risque de l’échine noire: la stratégie repose principalement sur des indicateurs techniques pour générer des signaux de négociation. Si le marché subit des changements fondamentaux majeurs ou des événements extrêmes, la stratégie peut ne pas être en mesure de réagir en temps opportun, ce qui entraîne des pertes importantes.

Afin de réduire ces risques, les utilisateurs doivent définir des paramètres stratégiques raisonnables, évaluer et ajuster régulièrement leurs stratégies, tout en surveillant de près les mouvements du marché et en intervenant manuellement si nécessaire. En outre, des mesures de gestion des risques strictes telles que la définition d’un stop-loss et d’une limite de position sont également indispensables.

Orientation de l’optimisation de la stratégie

  1. Optimisation des paramètres dynamiques: les paramètres de l’indicateur de la stratégie actuelle sont fixes, il est possible d’envisager l’introduction d’un mécanisme d’adaptation, en ajustant les paramètres dynamiques en fonction des changements de l’état du marché, afin de mieux s’adapter au marché.
  2. Optimisation des signaux combinés: les stratégies actuelles sont principalement basées sur un seul indicateur pour générer des signaux de négociation. Il est possible d’envisager de combiner des signaux de plusieurs indicateurs, tels que des signaux combinés de MA et MACD, pour améliorer la fiabilité et la robustesse du signal.
  3. Optimisation de la gestion des positions: les stratégies actuelles utilisent une gestion des positions à taux fixe. Des méthodes plus avancées telles que la formule de Kelly ou la stratégie d’équilibrage dynamique peuvent être envisagées pour optimiser la taille des positions et le rapport risque/bénéfice.
  4. Optimisation des stop-loss: les stratégies actuelles manquent d’une logique de stop-loss claire et peuvent envisager l’ajout d’un mécanisme de stop-loss dynamique basé sur l’ATR ou le pourcentage pour mieux contrôler le risque de baisse.
  5. Optimisation multi-marchés: les stratégies actuelles ne visent qu’un seul marché, mais il est possible d’envisager d’étendre à plusieurs marchés liés ou complémentaires, en utilisant les liens entre les marchés pour améliorer la stabilité des stratégies et les niveaux de rendement.

L’orientation d’optimisation ci-dessus est principalement basée sur l’amélioration de l’adaptabilité, de la stabilité, de la rentabilité et du contrôle des risques de la stratégie, en introduisant des méthodes plus avancées et flexibles pour améliorer et perfectionner continuellement la performance de la stratégie.

Résumer

MA MACD BB est un outil de trading quantitatif riche en fonctionnalités, flexible et pratique. Il capture les signaux de trading grâce à trois indicateurs techniques courants, tout en prenant en charge le trading bidirectionnel multi-channel et la gestion flexible des risques, et est capable de s’adapter à différents marchés et styles de trading. L’utilisateur peut utiliser l’outil pour le suivi et l’optimisation des données historiques, mais il peut également l’appliquer à la négociation en bourse.

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

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Future_Billi0naire_

//@version=5
strategy("MA MACD BB Backtester", overlay=true)

//@variable Input for Strategy
which_ta = input.string("MA", title="Select Indicator", options=["MACD", "BB", "MA"])
which_camp = input.string("Long", title="Select Long / Short", options=["Short", "Long"])

//@variable Input parameters for Risk Management
positionSize = input.float(100.0, title="Each position's capital allocation %", minval=0.0, maxval = 100.0) / 100

//@variable Input parameters for MACD
fast_length = input.int(12, title="MACD Fast Length")
slow_length = input.int(26, title="MACD Slow Length")
signal_smoothing = input.int(9, title="MACD Signal Smoothing")
macd_source = input.source(close, title="MACD Source")

//@variable Input parameters for Moving Average
ma_length = input.int(50, title="Moving Average Length")

//@variable Input parameters for Bollinger Bands
bb_length = input.int(20, title="Bollinger Bands Length")
bb_mult = input.float(2.0, title="Bollinger Bands Multiplier")

// Choosing the Strategy
int x = na
if which_ta == "MA"
    x := 1
else if which_ta == "MACD"
    x := 2
else if which_ta == "BB"
    x := 3

// Calculate MACD and Signal line
[macdLine, signalLine, _] = ta.macd(macd_source, fast_length, slow_length, signal_smoothing)

// Calculate Moving Average
ma = ta.sma(close, ma_length)

// Calculate Bollinger Bands
basis = ta.sma(close, bb_length)
dev = bb_mult * ta.stdev(close, bb_length)
upper = basis + dev
lower = basis - dev

// Plotting MACD and Signal lines
plot(x == 2 ? macdLine : na, color=color.blue, title="MACD Line")
plot(x == 2 ? signalLine : na, color=color.red, title="Signal Line")

// Plotting histogram
histogram = macdLine - signalLine
plot(x == 2 ? histogram : na, color=color.gray, style=plot.style_histogram, title="MACD Histogram")

// Plotting Moving Average
plot(x == 1 ? ma : na, color=color.orange, title="Moving Average")

// Plotting Bollinger Bands
plot(x == 3 ? upper : na, color=color.green, title="Upper Bollinger Band")
plot(x == 3 ? lower : na, color=color.red, title="Lower Bollinger Band")
plot(x == 3 ? basis : na, color=color.blue, title="Basis Bollinger Band")

// Generate buy signals
buySignalMACD = ta.crossover(macdLine, signalLine)
buySignalMA = ta.crossover(close, ma)
buySignalBB = close < lower
sellSignalBBExit = close > basis

// Generate sell signals
sellSignalMACD = ta.crossunder(macdLine, signalLine)
sellSignalMA = ta.crossunder(close, ma)
sellSignalBB = close > upper
buySignalBBExit = close < basis

// Plot buy signals on the chart
plotshape(series=buySignalMACD and x == 2 and which_camp=="Long" and strategy.opentrades == 0 ? buySignalMACD : na, title="Buy Signal MACD", location=location.belowbar, color=color.lime, style=shape.labelup, text="BUY MACD")
plotshape(series=buySignalMA and x == 1 and which_camp=="Long" and strategy.opentrades == 0 ? buySignalMA : na, title="Buy Signal MA", location=location.belowbar, color=color.lime, style=shape.labelup, text="BUY MA")
plotshape(series=buySignalBB and x == 3 and which_camp=="Long" and strategy.opentrades == 0 ? buySignalBB : na, title="Buy Signal BB", location=location.belowbar, color=color.lime, style=shape.labelup, text="BUY BB")

// Plot sell signals on the chart
plotshape(series=sellSignalMACD and x == 2 and which_camp=="Short" and strategy.opentrades == 0 ? sellSignalMACD : na, title="Sell Signal MACD", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL MACD")
plotshape(series=sellSignalMA and x == 1 and which_camp=="Short" and strategy.opentrades == 0 ? sellSignalMA : na, title="Sell Signal MA", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL MA")
plotshape(series=sellSignalBB and x == 3 and which_camp=="Short" and strategy.opentrades == 0 ? sellSignalBB : na, title="Sell Signal BB", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL BB")

// Calculate stop loss and take profit levels
accountSize = strategy.equity
positionSizeAmount = accountSize * positionSize

// Calculate order size based on stop loss amount
orderSize = math.floor(positionSizeAmount / close)

// Enter long positions based on buy signals
if strategy.opentrades == 0
    if (buySignalMACD) and x == 2 and which_camp == "Long"
        strategy.entry("Buy MACD", strategy.long, qty=orderSize)
    if (buySignalMA) and x == 1 and which_camp == "Long"
        strategy.entry("Buy MA", strategy.long, qty=orderSize)
    if (buySignalBB) and x == 3 and which_camp == "Long"
        strategy.entry("Buy BB", strategy.long, qty=orderSize)

// Enter short positions based on sell signals
if strategy.opentrades == 0
    if (sellSignalMACD) and x == 2 and which_camp == "Short"
        strategy.entry("Sell MACD", strategy.short, qty=orderSize)
    if (sellSignalMA) and x == 1 and which_camp == "Short"
        strategy.entry("Sell MA", strategy.short, qty=orderSize)
    if (sellSignalBB) and x == 3 and which_camp == "Short"
        strategy.entry("Sell BB", strategy.short, qty=orderSize)

// Close positions based on exit signals
if (sellSignalMACD) and which_camp == "Long"
    strategy.close("Buy MACD")
if (sellSignalMA) and which_camp == "Long"
    strategy.close("Buy MA")
if (sellSignalBBExit) and which_camp == "Long"
    strategy.close("Buy BB")
if (buySignalMACD) and which_camp == "Short"
    strategy.close("Sell MACD")
if (buySignalMA) and which_camp == "Short"
    strategy.close("Sell MA")
if (buySignalBBExit) and which_camp == "Short"
    strategy.close("Sell BB")