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


Date de création: 2023-11-02 14:21:24 Dernière modification: 2023-11-02 14:21:24
Copier: 0 Nombre de clics: 657
1
Suivre
1617
Abonnés

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

Aperçu

La stratégie utilise le croisement des doubles moyennes mobiles comme signal de négociation, en combinaison avec des arrêts ATR pour effectuer des transactions de suivi de tendance. L’idée centrale est de faire plus lorsque vous traversez la moyenne mobile à court terme et de faire moins lorsque vous la traversez, tout en utilisant ATR pour définir des arrêts de perte, des arrêts de trail dynamiquement.

Principe de stratégie

La stratégie utilise principalement deux ensembles de moyennes mobiles pour juger de la direction de la tendance. La longueur des moyennes mobiles rapides est de 25 jours et celle des moyennes mobiles lentes de 100 jours. Un signal d’achat est généré lorsque la moyenne mobile rapide est traversée par la moyenne mobile lente; un signal de vente est généré lorsque la moyenne mobile lente est traversée par la moyenne mobile rapide.

Pour filtrer certains faux signaux, la stratégie a ajouté un compteur de croisement, le crossCount. Le signal ne sera déclenché que si la moyenne mobile rapide a été croisée moins de maxNoCross (par défaut 10 fois) pendant la période de lookback (par défaut 25 jours).

En outre, la stratégie a ajouté un mécanisme de confirmation, qui confirme le signal si le prix revient entre les deux moyennes mobiles après l’émission du signal initial.

Après l’entrée, la stratégie utilise l’indicateur ATR pour définir la distance de stop loss. L’ATR mesure la portée des fluctuations de prix au cours d’un certain cycle passé, où la distance de stop loss est définie avec 14 fois l’ATR. La ligne de stop loss est suivie en flottant avec le mouvement des prix.

Analyse des avantages

Cette stratégie présente les avantages suivants:

  1. L’utilisation d’une moyenne mobile double combinée à un mécanisme de filtrage croisé permet de filtrer efficacement les faux signaux et de saisir les tendances les plus fortes.

  2. Le gouvernement a décidé d’augmenter les mécanismes de confirmation pour éviter les fausses intrusions.

  3. L’utilisation d’ATR pour le suivi des pertes flottantes permet de bloquer au maximum les bénéfices et d’éviter les retraits excessifs.

  4. Les paramètres d’optimisation sont moins nombreux et plus faciles à mettre en œuvre.

  5. Il peut être utilisé dans de nombreux marchés, y compris les monnaies numériques et les marchés traditionnels de base.

  6. L’utilisation d’indicateurs multiples pour la construction d’une stratégie rend la stratégie plus solide.

Analyse des risques

La stratégie présente principalement les risques suivants:

  1. Les moyennes mobiles se croisent fréquemment pendant la phase de rattrapage, ce qui peut entraîner des pertes multiples.

  2. Une mauvaise configuration des paramètres ATR peut entraîner des arrêts trop lâches ou trop serrés.

  3. Un grand saut ou un Gap peut déclencher directement un arrêt.

  4. Des événements majeurs soudains peuvent aussi entraîner une forte fluctuation des prix et entraîner une perte directe.

  5. Des paramètres de moyenne mobile déraisonnables peuvent entraîner des tendances manquées ou générer trop de faux signaux.

  6. Les variations récentes de la fourchette de fluctuation des prix peuvent entraîner une inadéquation de la distance de stop-loss ATR.

Direction d’optimisation

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

  1. Optimiser les paramètres des moyennes mobiles pour trouver les combinaisons les plus appropriées. Vous pouvez tester différents paramètres périodiques et moyennes mobiles pondérées.

  2. Testez différents paramètres de cycle ATR pour trouver la meilleure distance de rupture.

  3. L’ajout de conditions de filtrage supplémentaires, telles que l’amplification du volume de transactions, l’indicateur de choc, etc., améliore la qualité du signal.

  4. Les indicateurs de tendance peuvent être combinés pour éviter d’être pris dans une situation de choc.

  5. Ajout d’algorithmes d’apprentissage automatique pour optimiser automatiquement les combinaisons de paramètres grâce à la formation des données historiques.

  6. Cherchez plus de confirmations dans les graphiques de grande échelle et évitez d’être induits en erreur par le bruit des lignes courtes.

  7. Définir les règles de réduction de la position sur les bénéfices et verrouiller progressivement les bénéfices.

Résumer

Cette stratégie intègre plusieurs indicateurs techniques tels que la croisée des moyennes mobiles, le filtrage des tendances, le mécanisme de confirmation et l’arrêt dynamique de l’ATR. Il y a encore de la place pour l’optimisation des paramètres et le contrôle des risques, mais son idée de trading est simple et claire, facile à reproduire, une stratégie de suivi de tendance plus robuste.

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

//@version=3
strategy("QuantCat Intraday Strategy (15M)", overlay=true)

//MA's for basic signals, can experiment with these values

fastEMA = sma(close, 25)
slowEMA = sma(close, 100)

//Parameters for validation of position

lookback_value = 25
maxNoCross=10 //value used for maximum number of crosses on a certain MA to mitigate noise and maximise value from trending markets

//Amount of crosses on MA to filter out noise

ema25_crossover = (cross(close, fastEMA)) == true ? 1 : 0
ema25_crossover_sum = sum(ema25_crossover, lookback_value) ///potentially change lookback value to alter results
crossCount = (ema25_crossover_sum <= maxNoCross)

//Entries long

agrLong =  ((crossover(fastEMA, slowEMA)) and (crossCount == true)) ? true : false
consLong = ((close < fastEMA) and (close > slowEMA) and (fastEMA > slowEMA) and (crossCount == true)) ? true : false

//Entries short

agrShort =  ((crossunder(fastEMA, slowEMA)) and (crossCount == true)) ? true : false
consShort = ((close > fastEMA) and (close < slowEMA) and (fastEMA < slowEMA) and (crossCount == true)) ? true : false

//ATR

atrLkb = input(14, minval=1, title='ATR Stop Period')
atrRes = input("15",  title='ATR Resolution')
atr = request.security(syminfo.tickerid, atrRes, atr(atrLkb))

//Strategy

longCondition = ((agrLong or consLong) == true)
if (longCondition)
    strategy.entry("Long", strategy.long)

shortCondition = ((agrShort or consShort) == true)
if (shortCondition)
    strategy.entry("Short", strategy.short)

//Stop multiplier 

stopMult = 4

//horizontal stoplosses

longStop = na
longStop :=  shortCondition ? na : longCondition and strategy.position_size <=0 ? close - (atr * stopMult) : longStop[1] 
shortStop = na
shortStop := longCondition ? na : shortCondition and strategy.position_size >=0 ? close + (atr * stopMult) : shortStop[1]

//Strategy exit functions

strategy.exit("Long ATR Stop", "Long", stop=longStop)
strategy.exit("Short ATR Stop", "Short", stop=shortStop)

//Plots 

redgreen = (fastEMA > slowEMA) ? green : red
    
p1 = plot(fastEMA, title="Fast EMA", color=redgreen, linewidth=2) 
p2 = plot(slowEMA, title="Slow EMA", color=redgreen, linewidth=2) 
fill(p1, p2, color=redgreen)

s1 = plot(longStop, style=linebr, color=red, linewidth=2,     title='Long ATR Stop')
s2 = plot(shortStop, style=linebr, color=red, linewidth=2,  title='Short ATR Stop')

fill(p2, s1, color=red, transp=95)
fill(p2, s2, color=red, transp=95)