Stratégie de rupture de l'élan de la moyenne mobile

Auteur:ChaoZhang est là., Date: 2023-11-27 16:25:54 Je vous en prie.
Les étiquettes:

img

Résumé

La stratégie de la moyenne mobile de rupture de momentum est une stratégie de négociation boursière qui combine les signaux de croisement de la moyenne mobile avec des indicateurs de momentum. La stratégie utilise plusieurs indicateurs techniques, y compris l'EMA (moyenne mobile exponentielle), la moyenne mobile simple (SMA), la divergence de convergence de la moyenne mobile (MACD) et un indice de force relative modifié (StockRSI) pour générer des signaux d'achat lors de la confirmation d'une tendance à la hausse à long terme. Lorsque les indicateurs de momentum à court terme montrent des signaux d'inversion, la stratégie tire profit.

La logique de la stratégie

Les éléments clés de cette stratégie sont les suivants:

  1. Le transfert entre les EMA et les SMA: Une ligne rapide EMA de 9 périodes traverse une ligne lente SMA de 21 périodes pour déclencher un signal d'achat.

  2. Indicateur MACD: L'histogramme MACD doit être positif lorsqu'il est combiné avec le signal de croisement EMA/SMA comme confirmation supplémentaire.

  3. Indicateur StockRSI: Les signaux sont déclenchés lorsque le StockRSI est supérieur au niveau de survente (80) ou inférieur au niveau de survente (20).

  4. Les bandes de Bollinger: Exiger que le prix se situe dans les bandes où la bande du milieu est une SMA à 20 périodes et où la largeur des bandes est de deux écarts types.

  5. Arrêtez de perdre et profitez: calculé sur la base de l'ATR à 14 périodes.

La stratégie nécessite au moins 2 des 3 indicateurs pour donner des signaux d'achat, le prix se situe dans les bandes de Bollinger et la tendance à long terme reste haussière pour générer le signal d'achat final.

Analyse des avantages

Les principaux points forts de cette stratégie sont:

  1. D'excellents résultats: Le fait de disposer de plusieurs indicateurs éprouvés conduit à des performances supérieures à celles de l'indicateur de référence et des indicateurs individuels.

  2. Paramètres optimisés: Les paramètres clés tels que les périodes EMA et les bandes de Bollinger sont optimisés pour une meilleure stabilité.

  3. L'exposition au risque est calculée sur la base de l'exposition au risque.: Les bandes de Bollinger et ATR permettent un ajustement dynamique des arrêts pour un meilleur contrôle des risques.

  4. Facile à mettre en œuvre: Une structure de code propre et une facilité d'accès aux données permettent des opérations pratiques simples.

Analyse des risques

Malgré les bonnes performances, les principaux risques sont les suivants:

  1. Faux signaux: Les fluctuations inhabituelles du marché ou les défaillances des indicateurs peuvent générer des signaux incorrects.

  2. Paramètres inadéquats: Des paramètres inappropriés pourraient conduire à des échanges trop fréquents ou à une sensibilité insuffisante.

  3. Stop-loss inapproprié: Un stop loss trop serré a tendance à être arrêté prématurément, tandis qu'un stop loss trop large peut entraîner des pertes excessives.

Pour lutter contre les risques susmentionnés, les mesures suivantes peuvent être prises:

  1. Intervention manuelle: Dans des situations anormales, les signaux peuvent être vérifiés manuellement, les paramètres réajustés ou les stratégies temporairement arrêtées.

  2. Optimisation des paramètres: Des méthodes plus scientifiques et objectives comme les algorithmes génétiques peuvent être utilisées pour l'optimisation systématique.

  3. Résultats de l'évaluation de la volatilité: les plages de stop loss peuvent être définies à 1 à 3 fois l'ATR pour tenir compte de la volatilité.

Des possibilités d'amélioration

La stratégie peut être encore améliorée dans les domaines suivants:

  1. Des mécanismes d'arrêt des pertes plus robustes: les arrêts de perte ou les arrêts basés sur des moyennes mobiles peuvent être incorporés.

  2. Filtres de volume: Ajout d'indicateurs de volume pour éviter les fausses écarts.

  3. Paramètres dynamiques: Optimisation automatique des paramètres tels que les périodes moyennes mobiles et la largeur de bande en fonction de l'évolution des conditions du marché.

  4. Apprentissage automatique: LSTM, RNN et autres algorithmes peuvent permettre une optimisation dynamique des paramètres.

Conclusion

La stratégie des moyennes mobiles de rupture de l'élan capitalise sur les atouts de la combinaison de plusieurs indicateurs techniques et a atteint une rentabilité décente avec une confirmation à long et à court terme.


/*backtest
start: 2022-11-20 00:00:00
end: 2023-11-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Improved Custom Strategy", shorttitle="ICS", overlay=true)

// Volatility
volatility = ta.atr(14)

// EMA/MA Crossover
fast_length = 9
slow_length = 21
fast_ma = ta.ema(close, fast_length)
slow_ma = ta.sma(close, slow_length)
crossover_signal = ta.crossover(fast_ma, slow_ma)

// MACD
[macdLine, signalLine, macdHistogram] = ta.macd(close, 12, 26, 9)
macd_signal = crossover_signal and (macdHistogram > 0)

// Bollinger Bands
source = close
basis = ta.sma(source, 20)
upper = basis + 2 * ta.stdev(source, 20)
lower = basis - 2 * ta.stdev(source, 20)

// Fractal-based Support and Resistance levels
isFractalHigh = high[2] < high[1] and high[1] > high[0]
isFractalLow = low[2] > low[1] and low[1] < low[0]
resistance = ta.valuewhen(isFractalHigh, high[1], 0)
support = ta.valuewhen(isFractalLow, low[1], 0)

// StockRSI
length = 14
K = 100 * (close - ta.lowest(close, length)) / (ta.highest(close, length) - ta.lowest(close, length))
D = ta.sma(K, 3)
overbought = 80
oversold = 20
stockrsi_signal = ((K < D) and (K < oversold)) or ((K > D) and (K > overbought))

// Buy and sell conditions
mandatory_buy_conditions = (crossover_signal ? 1 : 0) + (macd_signal ? 1 : 0) + (stockrsi_signal ? 1 : 0)

// Long-term Trend Check
long_term_ma = ta.sma(close, 200)
long_term_bullish = close > long_term_ma
long_term_bearish = close < long_term_ma

// Plot the long-term MA for visual clarity
plot(long_term_ma, color=color.gray, title="200-Day MA", linewidth=1)

// Simplified Buy and Sell conditions
buy_condition = long_term_bullish and (mandatory_buy_conditions >= 2) and (close > lower) and (close < upper)
sell_condition = (macdHistogram < 0) and (K > D) and (K > overbought)


// Potential SL and TP based on volatility
potential_SL = close - volatility
potential_TP = close + 2 * volatility

plot(potential_SL, title="SL Level", color=color.red, linewidth=1, style=plot.style_linebr)
plot(potential_TP, title="TP Level", color=color.green, linewidth=1, style=plot.style_linebr)

// ... (rest of your code above)

// State variable to track if we're in a position, a counter for trades, and a delayed counter for plotting
var bool inPosition = false
var tradeCounter = 0
var tradeCounterDelayed = 0 // Declaration of the variable

// Buy logic: Check if tradeCounter is 0 and the buy condition is met
if tradeCounter == 0 and buy_condition
    strategy.entry("BUY", strategy.long, stop=potential_SL, limit=potential_TP)
    inPosition := true
    tradeCounter := tradeCounter + 1

// Sell logic: Check if tradeCounter is 1, the sell condition is met, and we are in a position
if tradeCounter == 1 and inPosition and sell_condition
    strategy.close("BUY")
    inPosition := false
    tradeCounter := tradeCounter - 1

// Update the delayed trade counter:
tradeCounterDelayed := tradeCounter

// Plotting
bgcolor(buy_condition ? color.new(color.green, 90) : sell_condition ? color.new(color.red, 90) : na)
plotshape(series=buy_condition and tradeCounterDelayed == 0, style=shape.labelup, location=location.belowbar, color=color.green, text="BUY", size=size.small)
plotshape(series=sell_condition and tradeCounterDelayed == 1, style=shape.labeldown, location=location.abovebar, color=color.red, text="SELL", size=size.small)

// ... (rest of your code if any)


Plus de