Stratégie de croisement à double moyenne mobile

Auteur:ChaoZhang est là., Date: 2024-01-04 15:03:14 Je suis désolé
Les étiquettes:

img

Résumé

Cette stratégie utilise des croisements simples de moyennes mobiles et un indicateur de plage moyenne vraie pour générer des signaux d'achat et de vente. Elle appartient aux stratégies de suivi des tendances.

La logique de la stratégie

  1. Calculer la moyenne mobile simple de 50 jours SMA1 et la moyenne mobile simple de 100 jours SMA2
  2. Lorsque le SMA1 traverse le SMA2, un signal d'achat est généré. Lorsque le SMA1 traverse le SMA2, un signal de vente est généré.
  3. Calcul du RTA à 14 jours
  4. L'ATR multiplié par un facteur fixe est utilisé comme point d'arrêt des pertes
  5. Lorsqu'un signal d'achat est déclenché, le prix de clôture moins le point de stop-loss est le point de vente de stop-loss.

On peut voir que cette stratégie repose principalement sur la capacité de jugement des tendances des moyennes mobiles et la capacité de contrôle des risques de l'ATR.

Les avantages

  1. Logique simple facile à mettre en œuvre, adapté aux débutants
  2. Les moyennes mobiles peuvent suivre efficacement les tendances
  3. ATR stop loss peut contrôler efficacement les pertes des événements individuels du cygne noir
  4. Les paramètres peuvent être facilement ajustés pour différents environnements de marché

Les risques

  1. Beaucoup de faux signaux peuvent être déclenchés pendant les marchés à fourchette, manquant des points d'inversion
  2. L'ATR peut ne pas réagir suffisamment sensiblement à l'évolution rapide des marchés, entraînant des pertes plus importantes que prévues
  3. Les paramètres et le multiplicateur ATR sont basés sur l'expérience.
  4. Les moyennes mobiles doubles elles-mêmes ont un effet de retard, peuvent manquer des points tournants

Gestion des risques:

  1. Réduction des périodes de moyenne mobile pour accroître la sensibilité de l'indicateur
  2. Ajustez dynamiquement le multiplicateur ATR pour un stop loss plus souple
  3. Ajouter d'autres indicateurs pour filtrer les faux signaux
  4. Opérer sur la base de jugements structurels de plus grande durée

Directions d'optimisation

  1. Essayez d'autres types de moyennes mobiles, comme les EMA qui filtrent mieux
  2. Considérer le stop loss dynamique avec Keltner Channels etc. pour remplacer l'ATR
  3. Ajouter des indicateurs de support comme le volume aux signaux filtrés
  4. Identifier les points clés de la tendance avec des concepts tels que les ondes d'Elliott, la résistance de support, etc.

Résumé

Il s'agit d'une stratégie typique de suivi de tendance, utilisant des moyennes mobiles pour déterminer la direction de la tendance et l'ATR stop loss pour contrôler les risques. La logique est simple et facile à saisir. Mais elle comporte certains risques de retard et de faux signaux. Des améliorations peuvent être apportées grâce à l'ajustement des paramètres, à l'optimisation des indicateurs, à l'incorporation de plus de facteurs, etc. pour rendre la stratégie plus adaptable.


/*backtest
start: 2023-12-27 00:00:00
end: 2024-01-03 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("SMA and ATR Strategy", overlay=true)

// Step 1. Define strategy settings
lengthSMA1 = input.int(50, title="50 SMA Length")
lengthSMA2 = input.int(100, title="100 SMA Length")
atrLength = input.int(14, title="ATR Length")
atrMultiplier = input.int(4, title="ATR Multiplier")

// Step 2. Calculate strategy values
sma1 = ta.sma(close, lengthSMA1)
sma2 = ta.sma(close, lengthSMA2)
atr = ta.atr(atrLength)

// Step 3. Output strategy data
plot(sma1, color=color.blue, title="50 SMA")
plot(sma2, color=color.red, title="100 SMA")

// Step 4. Determine trading conditions
longCondition = ta.crossover(sma1, sma2)
shortCondition = ta.crossunder(sma1, sma2)

longStopLoss = close - (atr * atrMultiplier)
shortStopLoss = close + (atr * atrMultiplier)

// Step 5. Execute trades based on conditions
if (longCondition)
    strategy.entry("Buy", strategy.long)
    strategy.exit("Sell", "Buy", stop=longStopLoss)

if (shortCondition)
    strategy.entry("Sell", strategy.short)
    strategy.exit("Buy", "Sell", stop=shortStopLoss)


Plus de