Stratégie de négociation de recul basée sur la moyenne mobile dynamique

Auteur:ChaoZhang est là., Date: le 27 février 2024 à 14h38h45
Les étiquettes:

img

Résumé

Cette stratégie utilise un double système de moyenne mobile pour identifier les opportunités de rupture potentielles dans des actions ou des crypto-monnaies sélectionnées.

La logique de la stratégie

La stratégie utilise deux moyennes mobiles simples (SMA) avec des périodes différentes comme signaux de trading. La première SMA a une période plus longue pour représenter la direction générale de la tendance.

Lorsque la SMA à court terme franchit le niveau de la SMA à plus long terme en bas, elle indique une tendance haussière des prix dans l'ensemble, de sorte que la stratégie ouvre une position longue. Lorsque les prix baissent pour réévaluer la SMA à plus long terme, cela indique que le recul à court terme est terminé et que la stratégie envisage de s'arrêter ou de tirer profit de la position.

En outre, la stratégie comporte des conditions de "survente" et de "surachat" afin d'éviter de négocier dans des situations extrêmes.

Les avantages

  • Le système de moyenne mobile double permet d'identifier efficacement les tendances à moyen terme
  • Combine les avantages du suivi de tendance et du trading de rebond
  • Les conditions de survente et de surachat intégrées réduisent les transactions inutiles

Analyse des risques

  • Difficile de déterminer le moment précis de la fin du retrait, peut s'arrêter prématurément
  • Incapacité de réduire rapidement les pertes en cas de changement de tendance, risque de subir de gros retrait
  • Un mauvais réglage des paramètres peut entraîner une survente ou une négociation conservatrice

Directions d'optimisation

Il y a encore des possibilités d'optimisation de cette stratégie:

  1. Utiliser des indicateurs techniques plus avancés comme les bandes de Bollinger et KD pour mesurer les vagues et les tendances des prix
  2. Incorporer plus de facteurs tels que le changement de volume, la volatilité pour déterminer la fin du retrait
  3. Taille dynamique des positions pour maximiser le potentiel de profit
  4. Optimiser la logique de stop loss avec KAMA, les nuages Ichimoku et les signaux à plus bas délai

Conclusion

Cette stratégie combine les atouts du trading de suivi de tendance et de pullback en utilisant un double système de moyenne mobile pour détecter les opportunités.


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

// @version=5
strategy("Profitable Pullback Trading Strategy", overlay=true,initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// Inputs
ma_length1 = input.int(280,'MA length 1', step = 10,group = 'Moving Avg. Parameters', inline = 'MA')
ma_length2 = input.int(13,'MA length 2', step = 1,group = 'Moving Avg. Parameters', inline = 'MA')
sl = input.float(title="Stop Loss (%)", defval=0.07, step=0.1, group="Moving Avg. Parameters")
too_deep    = input.float(title="Too Deep (%)", defval=0.27, step=0.01, group="Too Deep and Thin conditions", inline = 'Too')
too_thin    = input.float(title="Too Thin (%)", defval=0.03, step=0.01, group="Too Deep and Thin conditions", inline = 'Too')

// Calculations
ma1 = ta.sma(close,ma_length1)
ma2 = ta.sma(close,ma_length2)
too_deep2   = (ma2/ma1-1) < too_deep
too_thin2   = (ma2/ma1-1) > too_thin

// Entry and close condtions
var float buy_price = 0
buy_condition = (close > ma1) and (close < ma2) and strategy.position_size == 0 and too_deep2 and too_thin2
close_condition1  = (close > ma2) and strategy.position_size > 0 and (close < low[1])
stop_distance = strategy.position_size > 0 ? ((buy_price - close) / close) : na
close_condition2 = strategy.position_size > 0 and stop_distance > sl
stop_price = strategy.position_size > 0 ? buy_price - (buy_price * sl) : na

// Entry and close orders
if buy_condition
    strategy.entry('Long',strategy.long)
if buy_condition[1]
    buy_price := open
if close_condition1 or close_condition2
    strategy.close('Long',comment="Exit" + (close_condition2 ? "SL=true" : ""))
    buy_price := na

plot(ma1,color = color.blue)
plot(ma2,color = color.orange)



Plus de