La stratégie de rupture de dynamique utilise principalement l’indicateur d’oscillateur stochastique pour déterminer la direction de la tendance du marché, en combinaison avec l’indicateur ADX pour déterminer la force de la tendance, formant un signal de négociation. Cette stratégie s’applique principalement à la négociation de tendances de longue et moyenne ligne.
La stratégie est basée sur deux indicateurs techniques:
Les valeurs de l’oscillateur stochastique sont comprises entre 0 et 100, et entre 45 et 55 signifie qu’il n’y a pas de tendance claire. Les valeurs de l’oscillateur stochastique supérieures à 55 sont des signaux de hausse et inférieures à 45 sont des signaux de baisse.
Indicateur ADX: utilisé pour juger si la tendance est forte ou faible. L’ADX est faible si la tendance est inférieure à 20.
La stratégie consiste d’abord à déterminer si le marché est actuellement clairement à la hausse ou à la baisse en fonction de la valeur de l’oscillateur stochastique. Quand le stochastique est supérieur à 55, on considère qu’il existe une tendance à la hausse; quand le stochastique est inférieur à 45, on considère qu’il existe une tendance à la baisse.
La stratégie détecte ensuite si l’ADX est supérieur à 20 et si l’ADX est supérieur à 20, cela signifie que la tendance est forte et que la tendance peut être négociée. Si l’ADX est inférieur à 20, cela signifie que la tendance n’est pas assez évidente et que la stratégie ne génère pas de signal de négociation.
Selon le jugement combiné de l’oscillator stochastique et de l’ADX, une stratégie génère un signal d’achat/vente si les deux conditions suivantes sont réunies:
Une stratégie génère un signal de vente lorsque les deux conditions suivantes sont réunies:
Cette règle de jugement a été utilisée pour concevoir une stratégie de négociation de lignes moyennes et longues orientée vers la tendance.
Cette stratégie présente les avantages suivants:
Capture des tendances de la ligne longue et moyenne: en combinaison avec Stochastic et ADX, il est possible de déterminer efficacement la direction et la force des tendances de la ligne longue et moyenne du marché et de saisir les principales tendances.
Contrôle des retraits: il est possible de contrôler efficacement les retraits causés par des opérations de retournement inutiles en ne négociant que lorsque la tendance est évidente.
L’espace d’optimisation des paramètres: Les cycles stochastiques et les cycles ADX peuvent être optimisés et les paramètres peuvent être ajustés pour différents marchés.
Simple et intuitive: la logique globale de la stratégie est simple et claire, composée de deux indicateurs techniques couramment utilisés, et intuitive et facile à comprendre.
universality:The strategy can be applied to different markets with parameter tuning.
Cette stratégie comporte aussi des risques:
Manque de point de rupture: Stochastic et ADX sont des indicateurs qui suivent la tendance et peuvent manquer des points de rupture potentiels et des opportunités de rupture plus tôt.
Risque d’inversion de tendance: à la fin d’une tendance, Stochastic et ADX peuvent se tromper en estimant que la tendance se poursuit et manquer l’occasion de se retirer à temps, ce qui augmente les pertes.
Difficulté d’optimisation des paramètres: les paramètres stochastiques et ADX nécessitent une optimisation pour différents marchés, ce qui présente certaines difficultés.
Whipsaws: Cette stratégie peut générer plusieurs signaux de transaction inefficaces sur des marchés sans tendance claire.
Divergence:When the price trend conflicts with the Stochastic oscillator trend, divergence emerges, which may lead to losing trades.
Le risque peut être réduit par les moyens suivants:
Les tendances locales ont été évaluées en combinaison avec d’autres indicateurs et des points de rupture potentiels ont été identifiés.
Augmenter les signaux de renversement de tendance et se retirer en temps opportun lorsque la tendance est clairement inversée.
Optimisation automatique des paramètres par des méthodes telles que l’apprentissage automatique.
Increase the ADX threshold to filter out weak trend signals in ranging markets.
Apply additional indicators to confirm the Stochastic signals and avoid divergence trades.
Cette stratégie peut être optimisée dans les domaines suivants:
Optimiser les paramètres stochastiques: ajuster les paramètres cycles K, D, etc., optimiser le positionnement des points d’achat et de vente.
Optimiser les paramètres de l’ADX: ajuster les cycles de l’ADX pour déterminer les paramètres qui déterminent le mieux la force de la tendance.
Augmentation des signaux de renversement de tendance: augmentation des positions dans les zones de survente et de surachat du Stochastic, avec un arrêt de perte.
Combinaison avec d’autres indicateurs: Combinaison avec des indicateurs tels que le RSI, le MACD, pour déterminer le moment de l’achat ou de la vente.
Apprentissage automatique: utilisez l’apprentissage automatique pour obtenir la combinaison optimale de paramètres.
Augmentation de la stratégie de stop loss: définir une stratégie de stop loss mobile ou de transition vers stop loss pour contrôler les pertes individuelles.
Trailong stop loss: Add trailing stop loss to lock in profits as the trend extends.
Money management: Optimize the risk management by adjusting position sizing based on ADX strength.
En résumé, la stratégie de rupture dynamique est globalement orientée vers la tendance, utilisant le Stochastic pour déterminer la direction de la tendance, l’ADX pour déterminer la force de la tendance et former une stratégie de négociation de longue et moyenne durée. L’avantage de la stratégie est de capturer la tendance, de contrôler le retrait, de la simplicité et de l’intuition.
/*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