La stratégie de rupture de la fourchette des stochastiques MACD combine les indicateurs MACD et Stochastique dans une stratégie de trading quantitative.
Lors de la prise de positions, cette stratégie prend en compte les signaux du MACD et du Stochastique pour améliorer la qualité des entrées.
La stratégie MACD Stochastics Range Breakout est principalement basée sur les principes suivants:
Plus précisément, la stratégie utilise la ligne MACDDIFF qui traverse la ligne DEA pour déterminer les signaux de tendance haussière ou baissière.
Pendant ce temps, les croisements entre la ligne K et la ligne D de Stochastics autour des zones de surachat/survente (défaut 30 et 70) produisent également des signaux de trading.
Lorsque le MACD et le Stochastique donnent des signaux alignés, la stratégie prendra position.
Après l'entrée, les points stop loss et take profit sont définis pour contrôler rationnellement les pertes d'une seule transaction et verrouiller les bénéfices.
La stratégie MACD Stochastics Range Breakout présente les points forts suivants:
La combinaison d'indicateurs améliore la qualité du signal
L'utilisation du MACD et du Stochastique filtre certains faux signaux et permet une meilleure qualité d'entrée.
Capturer les mouvements de rupture et le trading de tendance
La stratégie est spécialisée dans la capture de mouvements significatifs de rupture après le rangement.
Un mécanisme de stop loss/take profit optimisé permet de contrôler efficacement les risques
La logique de stop loss/take profit intégrée limite raisonnablement les pertes d'une seule transaction et les gains en temps opportun.
Malgré une conception soignée, la stratégie de rupture de gamme MACD Stochastics comporte certains risques inhérents:
Manque de temps d'entrée parfait
Les fausses ruptures sont fréquentes avant que des ruptures valides ne se produisent.
Échec de l' évasion
Bien que des préparatifs adéquats soient effectués avant les entrées, il est toujours possible que des évasions échouent, entraînant des pertes.
Optimisation incorrecte des paramètres
Des paramètres inappropriés nuisent gravement aux performances de la stratégie.
Pour faire face aux risques susmentionnés, les optimisations suivantes peuvent être adoptées:
Ajout d'autres indicateurs aux signaux filtrants
Intervention manuelle pour assurer une rupture valide
Tests rigoureux d'optimisation de paramètres à multiples ensembles
Il reste encore une marge d'optimisation supplémentaire de la stratégie de rupture de la fourchette stochastique MACD:
Optimiser les paramètres MACD pour trouver la meilleure combinaison
Optimiser les paramètres stochastiques pour trouver la meilleure combinaison
Incorporer d'autres indicateurs tels que KDJ, BOLL pour améliorer la qualité des entrées
Tester différentes périodes de détention, optimiser le stop loss/take profit
Différences entre les paramètres des actifs
Introduire des algorithmes d'apprentissage automatique pour l'optimisation automatisée des paramètres
La stratégie de rupture de gamme de stochastique du MACD capitalise sur les ruptures de gamme en entrant en fonction de signaux alignés du MACD et du stochastique. Le mécanisme stop loss / take profit contrôle davantage les risques. Il vise à capturer les tendances à court terme, mais laisse encore la place à l'ajustement des paramètres et à plus de combinaisons d'indicateurs pour une meilleure performance.
/*backtest start: 2022-12-04 00:00:00 end: 2023-12-10 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy(title="macd stoch strategy", shorttitle="benzo MACD stoch",overlay=true) // Getting inputs fast_length = input(title = "Fast Length", defval = 180) slow_length = input(title = "Slow Length", defval = 390) src = input(title = "Source", defval = close) signal_length = input.int(title = "Signal Smoothing", minval = 1, maxval = 500, defval = 135) sma_source = input.string(title = "Oscillator MA Type", defval = "EMA", options = ["SMA", "EMA"]) sma_signal = input.string(title = "Signal Line MA Type", defval = "EMA", options = ["SMA", "EMA"]) // Calculating fast_ma = sma_source == "SMA" ? ta.sma(src, fast_length) : ta.ema(src, fast_length) slow_ma = sma_source == "SMA" ? ta.sma(src, slow_length) : ta.ema(src, slow_length) macd = fast_ma - slow_ma signal = sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length) hist = macd - signal // hline(0, "Zero Line", color = color.new(#787B86, 50)) // plot(hist, title = "Histogram", style = plot.style_columns, color = (hist >= 0 ? (hist[1] < hist ? #26A69A : #B2DFDB) : (hist[1] < hist ? #FFCDD2 : #FF5252))) // plot(macd, title = "MACD", color = #2962FF) // plot(signal, title = "Signal", color = #FF6D00) periodK = input.int(14, title="%K Length", minval=1) smoothK = input.int(1, title="%K Smoothing", minval=1) periodD = input.int(3, title="%D Smoothing", minval=1) k = ta.sma(ta.stoch(close, high, low, periodK), smoothK) d = ta.sma(k, periodD) // plot(k, title="%K", color=#2962FF) // plot(d, title="%D", color=#FF6D00) // h0 = hline(80, "Upper Band", color=#787B86) // hline(50, "Middle Band", color=color.new(#787B86, 50)) // h1 = hline(20, "Lower Band", color=#787B86) // fill(h0, h1, color=color.rgb(33, 150, 243, 90), title="Background") // Make inputs that set the take profit % (optional) longProfitPerc = input.float(3, title="Long Take Profit (%)", minval=0.0, step=0.1) * 0.01 shortProfitPerc = input.float(3, title="Short Take Profit (%)",minval=0.0, step=0.1) * 0.01 // Calculate trading conditions enterLong = macd>signal and ta.crossover(k,30) enterShort = macd<signal and ta.crossunder(k,70) // Figure out take profit price longExitPrice = strategy.position_avg_price * (1 + longProfitPerc) shortExitPrice = strategy.position_avg_price * (1 - shortProfitPerc) // Plot take profit values for confirmation plot(strategy.position_size > 0 ? longExitPrice : na, color=color.green, style=plot.style_circles, linewidth=3, title="Long Take Profit") plot(strategy.position_size < 0 ? shortExitPrice : na, color=color.red, style=plot.style_circles, linewidth=3, title="Short Take Profit") // Submit entry orders if enterLong strategy.entry("long", strategy.long) if enterShort strategy.entry("short", strategy.short) // STEP 3: // Submit exit orders based on take profit price if strategy.position_size > 0 strategy.exit("long TP", limit=longExitPrice) if strategy.position_size < 0 strategy.exit("short TP", limit=shortExitPrice)