Basé sur une stratégie de croisement de moyennes mobiles dynamiques


Date de création: 2024-02-01 10:42:53 Dernière modification: 2024-02-01 10:42:53
Copier: 0 Nombre de clics: 543
1
Suivre
1617
Abonnés

Basé sur une stratégie de croisement de moyennes mobiles dynamiques

Aperçu

La stratégie de croisement d’une moyenne mobile dynamique est une stratégie de suivi de tendance typique. La stratégie consiste à calculer des moyennes mobiles rapides (Fast MA) et des moyennes mobiles lentes (Slow MA) et à générer des signaux d’achat et de vente lorsqu’elles se croisent pour capturer les virages des tendances du marché.

Principe de stratégie

La logique centrale de cette stratégie est la suivante: un signal d’achat est généré lorsque la moyenne mobile rapide traverse la moyenne mobile lente par le bas; un signal de vente est généré lorsque la moyenne mobile rapide traverse la moyenne mobile lente par le haut et par le bas.

Les moyennes mobiles sont plus sensibles aux changements de tendance et captent plus rapidement les changements de tendance. Les moyennes mobiles plus lentes sont plus stables et éliminent plus efficacement les effets des fluctuations à court terme. Lorsque la moyenne rapide se transforme en une fourche dorée (crossing from bottom to top), le marché entre dans un mouvement à plusieurs têtes; lorsque la fourche morte se transforme en un mouvement à vide (crossing from top to bottom).

La stratégie émet un signal de transaction immédiatement après le croisement de la ligne d’équilibre, adopte une stratégie de suivi de la tendance et suit les tendances du marché pour obtenir des bénéfices plus importants. En même temps, la stratégie définit des points de perte et des points d’arrêt, et contrôle strictement le risque.

Analyse des avantages

  • Les stratégies de suivi ont bien fonctionné, capturant les grandes tendances
  • Le croisement homogène génère un signal clair et facile à mettre en œuvre
  • Réglez le stop-loss et maîtrisez le risque

Analyse des risques

  • Une erreur de signal susceptible d’entraîner des pertes importantes
  • La fréquence des transactions et la durée des positions sont réduites.
  • Paramètres à régler de manière raisonnable

Les paramètres peuvent être optimisés, la longueur des cycles de la ligne moyenne peut être ajustée ou des conditions de filtrage peuvent être ajoutées.

Direction d’optimisation

  • Ajustez les paramètres de la moyenne pour trouver la meilleure combinaison de paramètres
  • Ajout d’indicateurs de quantité d’énergie et conditions de filtrage pour réduire les signaux erronés
  • Optimisation du réglage du stop-loss
  • Indicateur de tendance combiné à d’autres

Résumer

La stratégie de croisement linéaire dynamique est plus efficace dans l’ensemble. Elle permet d’améliorer encore la performance de la stratégie en ajustant les paramètres de l’optimisation.

Code source de la stratégie
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Simple Moving Average Crossover", shorttitle="SMAC", overlay=true)

// Define input parameters
fast_length = input.int(9, title="Fast MA Length")
slow_length = input.int(21, title="Slow MA Length")
stop_loss = input.float(1, title="Stop Loss (%)", minval=0, maxval=100)
take_profit = input.float(2, title="Take Profit (%)", minval=0, maxval=100)

// Calculate moving averages
fast_ma = ta.sma(close, fast_length)
slow_ma = ta.sma(close, slow_length)

// Define conditions for long and short signals
long_condition = ta.crossover(fast_ma, slow_ma)
short_condition = ta.crossunder(fast_ma, slow_ma)

// Plot moving averages on the chart
plot(fast_ma, title="Fast MA", color=color.blue)
plot(slow_ma, title="Slow MA", color=color.red)

// Execute long and short trades
if (long_condition)
    strategy.entry("Long", strategy.long)
if (short_condition)
    strategy.entry("Short", strategy.short)

// Set stop loss and take profit levels
stop_loss_price = close * (1 - stop_loss / 100)
take_profit_price = close * (1 + take_profit / 100)
strategy.exit("Take Profit/Stop Loss", stop=stop_loss_price, limit=take_profit_price)

// Plot signals on the chart
plotshape(series=long_condition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(series=short_condition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)