Stratégie de cassure croisée à double moyenne mobile


Date de création: 2023-11-27 16:21:45 Dernière modification: 2023-11-27 16:21:45
Copier: 0 Nombre de clics: 553
1
Suivre
1617
Abonnés

Stratégie de cassure croisée à double moyenne mobile

Aperçu

La stratégie consiste à calculer une moyenne mobile simple rapide de 30 jours et une moyenne mobile simple lente de 33 jours pour les actions et à effectuer une entrée LONG ou SHORT lorsqu’elles se forment ou se forment. L’arrêt immédiat des pertes en cas de signal contraire. Cela permet de capturer efficacement les changements de tendance.

Principe de stratégie

Le cœur de la stratégie est de calculer une moyenne rapide de 30 jours et une moyenne lente de 33 jours. La ligne rapide est plus réactive aux variations de prix, tandis que la ligne lente a un meilleur effet d’entraînement.

Grâce à cette conception rapide et linéaire, il est possible de générer des signaux de transaction au début d’une tendance et d’arrêter une perte lorsque le signal inverse apparaît, capturant ainsi efficacement la tendance des prix de la ligne moyenne et longue. En même temps, il est également possible d’éviter d’être confondu par les fluctuations excessives du marché.

Analyse des avantages

Cette stratégie présente les avantages suivants:

  1. L’utilisation d’une moyenne mobile simple est facile à comprendre et à mettre en œuvre.
  2. La combinaison des lignes rapides et lentes permet de réagir rapidement aux variations de prix et d’avoir un effet de filtrage
  3. Les signaux de fourche dorée et de fourche morte sont simples, clairs et faciles à utiliser.
  4. Une façon efficace de capturer les tendances à moyen et long terme
  5. Arrêt rapide en cas de signal de recul, risque maîtrisé

Analyse des risques

Cette stratégie comporte aussi des risques:

  1. Lorsque les prix sont en état de choc, il peut y avoir plusieurs faux signaux qui entraînent des transactions trop fréquentes.
  2. Le gouvernement a été incapable de faire face à la forte fluctuation des prix provoquée par l’incident.
  3. Les paramètres sélectionnés, tels que la périodicité de la moyenne, peuvent nécessiter une optimisation, et une mauvaise configuration peut affecter les performances de la stratégie.
  4. Les frais de transaction ont une certaine influence sur les bénéfices

Ces risques peuvent être contrôlés et réduits par des méthodes telles que l’optimisation des paramètres, la définition des points de perte et la négociation uniquement lorsque la tendance est claire.

Direction d’optimisation

Cette stratégie peut être optimisée dans les domaines suivants:

  1. Optimisation des cycles de moyenne et des types de croix pour trouver la combinaison optimale de paramètres
  2. Ajout de filtres sur d’autres indicateurs techniques, tels que le volume de négociation, le MACD, etc., afin de réduire les faux signaux
  3. Ajout d’un mécanisme d’arrêt de perte adaptatif, plutôt que d’un simple arrêt de signal inversé
  4. Combinaison des paramètres de conception et des règles de stop-loss pour différents produits
  5. Paramètres d’ajustement dynamique des méthodes combinées avec l’apprentissage automatique

Grâce à des tests et à l’optimisation, il est possible d’améliorer continuellement les règles de la stratégie et d’obtenir des signaux de trading plus fiables dans différents environnements de marché.

Résumer

Cette stratégie de rupture croisée bi-médian est plus simple et plus pratique dans l’ensemble. La combinaison de la moyenne rapide et de la moyenne lente permet d’identifier efficacement le début d’une tendance à la moyenne et à la longue ligne et de générer un signal de négociation plus fiable.

Code source de la stratégie
/*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=3
//future strategy
//strategy(title = "es1!_1minute_hull", default_qty_type = strategy.fixed, initial_capital=250000,  overlay = true, commission_type=strategy.commission.cash_per_contract,commission_value=2, calc_on_order_fills=false, calc_on_every_tick=false,pyramiding=0)
//strategy.risk.max_position_size(2)
//stock strategy
strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital=1000000, overlay = false)//, calc_on_order_fills=true, calc_on_every_tick=true)
//forex strategy
//strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 100,  overlay = true,initial_capital=250000, default_qty_type = strategy.percent_of_equity)
//crypto strategy
//strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 100,  overlay = true, commission_type=strategy.commission.percent,commission_value=.005,default_qty_value=10000)
//strategy.risk.allow_entry_in(strategy.direction.long) // There will be no short entries, only exits from long.




testStartYear = 2010
testStartMonth = 1
testStartDay = 1
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)


testEndYear = 2039
testEndMonth = 1
testEndDay = 1
testPeriodEnd = timestamp(testEndYear,testEndMonth,testEndDay,0,0)


testPeriod() =>
    //true
    time >= testPeriodStart and time <= testPeriodEnd ? true : false

fast_length = 30
slow_length = 33

ema1 = 0.0
ema2 = 0.0

volumeSum1 = sum(volume, fast_length)
volumeSum2 = sum(volume, slow_length)

//ema1 := (((volumeSum1 - volume) * nz(ema1[1]) + volume * close) / volumeSum1)
ema1 :=  ema(close,fast_length)
//ema2 := (((volumeSum2 - volume) * nz(ema2[1]) + volume * close) / volumeSum2)
ema2 :=  ema(close,slow_length)



plot(ema1,color=#00ff00, linewidth=3)
plot(ema2, color=#ffff00, linewidth=3)

go_long = crossover(ema1,ema2)
go_short = crossunder(ema1,ema2)

if testPeriod()
    strategy.entry("long_ride", strategy.long, when=go_long)
    strategy.entry("short_ride", strategy.short,when=go_short)
    
        
    strategy.close("long_ride",when=go_short)
    strategy.close("short_ride",when=go_long)