Stratégie de rupture de la dynamique stochastique

Auteur:ChaoZhang est là., Date: 2023-10-24 16h35 et 24h
Les étiquettes:

img

Résumé

La stratégie Momentum Breakout utilise principalement l'indicateur d'oscillateur stochastique pour déterminer la direction de la tendance du marché, combiné avec l'indicateur ADX pour juger de la force de la tendance, pour générer des signaux de trading.

La logique de la stratégie

La stratégie repose sur deux indicateurs techniques:

  1. L'oscillateur stochastique est utilisé pour déterminer la direction de la tendance du marché. La valeur de l'oscillateur stochastique varie de 0 à 100.

  2. Indicateur ADX: utilisé pour juger de la force de la tendance.

La stratégie juge d'abord s'il existe une tendance haussière ou baissière claire en fonction de la valeur de l'oscillateur stochastique.

Il vérifie ensuite si l'ADX est supérieur à 20 pour confirmer une tendance forte. Si l'ADX est supérieur à 20, cela signifie que la tendance est suffisamment forte pour le trading de tendance. Si l'ADX est inférieur à 20, la tendance n'est pas considérée comme évidente et aucun signal de trading ne sera généré.

En combinant l'oscillateur stochastique et l'ADX, les signaux de négociation sont générés lorsque les deux conditions suivantes sont remplies:

  1. Stochastique au-dessus de 55, ce qui indique une tendance haussière.
  2. ADX au-dessus de 20, ce qui confirme que la tendance haussière est forte.

Les signaux de vente sont générés lorsque les deux conditions suivantes sont remplies:

  1. Stochastique inférieur à 45, signalant une tendance à la baisse.
  2. ADX au-dessus de 20, confirmant la tendance à la baisse est forte.

Avec ces règles, la stratégie forme un système de suivi de tendance à moyen et long terme.

Les avantages

Les avantages de cette stratégie sont les suivants:

  1. Capture des tendances à moyen et long terme: en combinant Stochastic et ADX, il peut déterminer efficacement la direction et la force de la tendance du marché, capturant les tendances majeures.

  2. Contrôle de la baisse: Seule la négociation lorsque la tendance est claire peut aider à contrôler les baisses inutiles.

  3. Paramètre de réglage: les périodes de Stochastique et ADX peuvent être optimisées pour différents marchés.

  4. Simplicité: la logique globale est simple et intuitive, composée de deux indicateurs techniques communs.

  5. Universalité: la stratégie peut être appliquée à différents marchés en ajustant les paramètres.

Les risques

Quelques risques de cette stratégie:

  1. Points de rupture manquants: en tant qu'indicateurs de tendance, le Stochastique et l'ADX peuvent manquer des points de renversement de tendance potentiels et des opérations de rupture précoce.

  2. Risques d'inversion de tendance: Ils peuvent juger à tort que la tendance se poursuit près de la fin d'une tendance, en manquant les chances de sortir en temps opportun, ce qui entraîne des pertes amplifiées.

  3. Difficulté d'optimisation des paramètres: les paramètres doivent être ajustés pour différents marchés, ce qui pose certaines difficultés.

  4. Whipsaws: Il peut générer plusieurs signaux non valides sur les marchés à plage sans tendance claire.

  5. Divergence: lorsque la tendance des prix entre en conflit avec la tendance de l'oscillateur stochastique, une divergence apparaît, ce qui peut entraîner une perte de transactions.

Les risques pourraient être atténués par:

  1. Ajout d'autres indicateurs pour identifier les tendances locales et les points de rupture potentiels.

  2. Incorporer des signaux d'inversion de tendance pour sortir en temps opportun lorsque les tendances s'inversent de manière substantielle.

  3. Utiliser l'apprentissage automatique pour optimiser automatiquement les paramètres.

  4. L'augmentation du seuil ADX pour filtrer les faibles signaux de tendance sur les différents marchés.

  5. Appliquer des indicateurs supplémentaires pour confirmer les signaux stochastiques et éviter les opérations de divergence.

Directions d'amélioration

Quelques façons d'améliorer la stratégie:

  1. Optimiser les paramètres stochastiques comme les périodes K et D pour localiser avec précision les points tournants.

  2. Optimisation de la période ADX pour déterminer les meilleurs paramètres permettant d'évaluer la force de la tendance.

  3. Ajout de signaux d'inversion de tendance tels que l'augmentation de la taille de la position dans les zones stochastiques de surachat/survente avec stop loss.

  4. Combiner d'autres indicateurs comme le RSI et le MACD pour affiner le moment de l'entrée et de la sortie.

  5. Utiliser l'apprentissage automatique pour trouver les combinaisons optimales de paramètres.

  6. Mise en œuvre de stratégies de stop-loss telles que le déplacement du stop-loss ou l'inversion du stop-loss pour contrôler les pertes d'une seule transaction.

  7. Stop-loss de trail: Ajouter un stop-loss de trail pour verrouiller les bénéfices à mesure que la tendance s'étend.

  8. Gestion de l'argent: optimiser la gestion des risques en ajustant la taille des positions en fonction de la force de l'ADX.

Résumé

En résumé, cette stratégie Momentum Breakout est globalement un système de suivi des tendances, utilisant Stochastic pour déterminer la direction de la tendance et ADX pour mesurer la force, formant une stratégie de trading à moyen et long terme. Les avantages résident dans la capture des tendances et le contrôle des retraits avec une logique simple et intuitive. Les faiblesses sont les risques de rupture précoce manquée et les risques d'inversion de tendance. Nous pouvons l'optimiser grâce à des méthodes telles que l'ajustement des paramètres, l'ajout de signaux, la mise en œuvre d'un stop loss pour améliorer la récompense / risque tout en contrôlant les risques.


/*backtest
start: 2023-09-23 00:00:00
end: 2023-10-23 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Created by Bitcoinduke
//Original Creator is Jake Bernstein 
// Link: https://school.stockcharts.com/doku.php?id=trading_strategies:stochastic_pop_drop
// Tested: XBTUSD 3h | BTCPERP FTX 3h
//@version=4
// strategy(shorttitle="Stochastic Pop and Drop", title="Pop and Drop", overlay=false, 
//      calc_on_every_tick=false, pyramiding=0, default_qty_type=strategy.cash, 
//      default_qty_value=1000, currency=currency.USD, initial_capital=1000,
//      commission_type=strategy.commission.percent, commission_value=0.075)

upper_threshold_buy = input(55, minval=50, title="Buy Entry/Exit Line")
lower_threshold_sell = input(45, maxval=50, title="Sell Entry/Exit Line")

oscillator_length = input(14, minval=1, title="Stochastic Length - Default 14")
sma_length = input(2, minval=1, title="SMA Length - 3-day (3 by default) simple moving average of stoch")

stoch_oscillator = sma(stoch(close, high, low, oscillator_length), sma_length)

//Upper and Lower Entry Lines
upper_line = upper_threshold_buy
lower_line = lower_threshold_sell

stoch_color = stoch_oscillator >= upper_line ? green : stoch_oscillator <= lower_line ? red : purple

//Charts
plot(stoch_oscillator, title="Stochastic", style=histogram, linewidth=4, color=stoch_color)
upper_threshold = plot(upper_line, title="Upper Line", style=line, linewidth=4, color=green)
lower_threshold = plot(lower_line, title="Lower Line", style=line, linewidth=4, color=red)

// Strategy Logic
LongSignal = stoch_oscillator >= upper_line and not (stoch_oscillator > lower_line and stoch_oscillator < upper_line) ? true : false
ShortSignal = stoch_oscillator <= lower_line and not (stoch_oscillator > lower_line and stoch_oscillator < upper_line) ? true : false

strategy.entry("POP_Short", strategy.short, when=ShortSignal)
strategy.entry("POP_Long", strategy.long, when=LongSignal)

// === Backtesting Dates === thanks to Trost

testPeriodSwitch = input(true, "Custom Backtesting Dates")
testStartYear = input(2019, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testStartHour = input(0, "Backtest Start Hour")
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, testStartHour, 0)
testStopYear = input(2020, "Backtest Stop Year")
testStopMonth = input(1, "Backtest Stop Month")
testStopDay = input(5, "Backtest Stop Day")
testStopHour = input(0, "Backtest Stop Hour")
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, testStopHour, 0)
testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false
testPeriod_1 = testPeriod()
isPeriod = testPeriodSwitch == true ? testPeriod_1 : true
// === /END



Plus de