Stratégie de rupture de la fourchette de stochastique MACD

Auteur:ChaoZhang est là., Date: 2023-12-11 11:48:27 Je suis désolé
Les étiquettes:

img

Résumé

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 logique de la stratégie

La stratégie MACD Stochastics Range Breakout est principalement basée sur les principes suivants:

  1. L'indicateur MACD peut identifier efficacement la direction et l'élan des tendances des prix
  2. L'indicateur stochastique peut repérer les conditions de surachat ou de survente d'un stock
  3. Lorsque le cours de l'action varie depuis un certain temps, un mouvement directionnel significatif après avoir brisé la fourchette précédente est susceptible de se produire
  4. La combinaison des signaux du MACD et du Stochastique sur les écarts de gamme permet des entrées en temps opportun et améliore la qualité

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.

Points forts

La stratégie MACD Stochastics Range Breakout présente les points forts suivants:

  1. 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.

  2. 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.

  3. 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.

Les risques

Malgré une conception soignée, la stratégie de rupture de gamme MACD Stochastics comporte certains risques inhérents:

  1. Manque de temps d'entrée parfait

    Les fausses ruptures sont fréquentes avant que des ruptures valides ne se produisent.

  2. É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.

  3. 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:

  1. Ajout d'autres indicateurs aux signaux filtrants

  2. Intervention manuelle pour assurer une rupture valide

  3. Tests rigoureux d'optimisation de paramètres à multiples ensembles

Directions d'optimisation

Il reste encore une marge d'optimisation supplémentaire de la stratégie de rupture de la fourchette stochastique MACD:

  1. Optimiser les paramètres MACD pour trouver la meilleure combinaison

  2. Optimiser les paramètres stochastiques pour trouver la meilleure combinaison

  3. Incorporer d'autres indicateurs tels que KDJ, BOLL pour améliorer la qualité des entrées

  4. Tester différentes périodes de détention, optimiser le stop loss/take profit

  5. Différences entre les paramètres des actifs

  6. Introduire des algorithmes d'apprentissage automatique pour l'optimisation automatisée des paramètres

Conclusion

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)

Plus de