Les ressources ont été chargées... Je charge...

Stratégie de croisement dynamique des SMMA et des SMA

Auteur:ChaoZhang est là., Date: 2024-02-02 11:38:08 Je suis désolé
Les étiquettes:

img

Résumé

Cette stratégie utilise les signaux de croisement entre la moyenne mobile lissée à 50 périodes (SMMA) et la moyenne mobile simple à 20 périodes (SMA) pour déterminer les entrées et les sorties. Elle génère des signaux d'achat lorsque la ligne SMA rapide traverse au-dessus de la ligne SMMA lente, et des signaux de vente lorsque la SMA traverse au-dessous de la SMMA.

La logique de la stratégie

  1. Calculer et tracer la SMMA à 50 périodes et la SMA à 20 périodes.
  2. Lorsque la SMA traverse le SMMA depuis le bas, un signal d'achat est généré.
  3. Lorsqu'un signal d'achat et un signal de vente se produisent, établir des positions achat et vente respectivement.
  4. Définir un niveau de profit fixe de 150 ticks pour chaque position.
  5. Définir un niveau de stop loss dynamique au prix de clôture de la barre suivante après la barre de signal.
  6. Si le prix atteint le niveau de prise de profit, le profit de prise se produit.

Points forts

  1. Les stratégies de moyenne mobile doubles sont faciles à utiliser avec des principes simples et faciles à comprendre.
  2. Le SMMA est une amélioration par rapport au SMA pour mieux détecter les tendances.
  3. La combinaison de SMA et SMMA de périodes différentes aide à filtrer le bruit tout en détectant les tendances.
  4. L'adoption d'un stop loss dynamique permet d'ajuster le niveau de stop en fonction des changements du marché afin de contrôler efficacement les risques.
  5. Le niveau de prise de bénéfices prédéfini aide à verrouiller les bénéfices en temps opportun.

Les risques

  1. Les stratégies de moyenne mobile doubles ont tendance à générer de faux signaux et à être égarées.
  2. Les bénéfices fixes peuvent manquer des tendances fortes.
  3. L'élargissement approprié de la plage de stop loss devrait être envisagé.
  4. Les différences entre les produits et les délais nécessitent une attention particulière.

Directions d'optimisation

  1. Test de combinaisons de différents paramètres (périodes de cycle, critères de filtrage, etc.) pour trouver l'optimum.

  2. Incorporer d'autres facteurs comme les pics de volume pour filtrer les signaux.

  3. Utiliser des outils d'optimisation des paramètres pour trouver les paramètres optimaux.

  4. Envisagez d'intégrer d'autres méthodes de prise de profit comme le trailing stop ou les sorties basées sur le ratio de profit.

  5. Calculer la fourchette de stop loss dynamique en fonction de la volatilité du marché.

Conclusion

Cette stratégie a une logique relativement simple, capturant les directions de tendance via des moyennes mobiles doubles. L'utilisation flexible de profit fixe et de stop loss dynamique pour la prise de profit et le contrôle des risques parvient à un équilibre entre risque et récompense.


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

//@version=4
strategy("50 SMMA and 20 SMA Crossover with TP and SL", overlay=true)

// Define 50 SMMA
smma50 = sma(close, 50)

// Define 20 SMA
sma20 = sma(close, 20)

// Plotting the SMMA and SMA
plot(smma50, color=color.blue, title="50 SMMA")
plot(sma20, color=color.red, title="20 SMA")

// Initialize TP and SL variables
tp = 150
var float sl_price = na

// Buy Signal
buySignal = crossover(sma20, smma50)
strategy.entry("Buy", strategy.long, when = buySignal)
strategy.exit("Take Profit/Stop Loss", from_entry="Buy", profit=tp, loss=sl_price)

// Sell Signal
sellSignal = crossunder(sma20, smma50)
strategy.entry("Sell", strategy.short, when = sellSignal)
strategy.exit("Take Profit/Stop Loss", from_entry="Sell", profit=tp, loss=sl_price)

// Update stop loss level on every crossover
if (buySignal or sellSignal)
    sl_price := close[bar_index + 1]

// Plot Stop Loss level
plotshape(series=sl_price != na, title="Stop Loss Level", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)


Plus de