Stratégie de suivi des tendances à long terme basée sur la combinaison de moyennes mobiles


Date de création: 2024-02-23 14:54:34 Dernière modification: 2024-02-23 14:54:34
Copier: 1 Nombre de clics: 612
1
Suivre
1617
Abonnés

Stratégie de suivi des tendances à long terme basée sur la combinaison de moyennes mobiles

Aperçu

La stratégie consiste à calculer une combinaison de plusieurs ensembles de moyennes rapides et l’identification de la direction de la tendance pour permettre le suivi des positions longues. Un signal d’achat est généré lorsque la moyenne rapide se déplace vers le bas vers la moyenne lente; un signal de vente est généré lorsque la moyenne rapide se déplace vers le haut vers le bas vers la moyenne lente.

Principe de stratégie

  1. Calculer la moyenne des EMA rapides de 7 groupes pour le 3/6/9/12/15/18/21
  2. Calculer la moyenne EMA du 24/27/30/…/200 pour 14 groupes de ralentissement.
  3. Règles de jugement des couleurs de l’EMA rapide: la ligne 6 en direction de la ligne 3 représente la hausse, réglée en bleu; la descente représente la baisse, réglée en orange.
  4. Règle de jugement de couleur de l’uniformité de l’EMA lente: la ligne de 24e jour sur la ligne de 25e jour représente la hausse, définie en vert; la descente représente la baisse, définie en rouge 。
  5. Un signal d’achat est généré lorsque le groupe des lignes EMA rapides traverse le groupe des lignes EMA lentes de bas en haut, ce qui signifie que la tendance est à la hausse.
  6. Un signal de vente est généré lorsque le groupe des lignes EMA rapides passe de haut en bas à travers le groupe des lignes EMA lentes, ce qui signifie que la tendance se transforme en baisse.

La combinaison de la ligne moyenne rapide et lente permet d’identifier efficacement les variations de la tendance de la ligne moyenne et longue et d’effectuer un suivi de la ligne longue.

Avantages stratégiques

  1. La combinaison de la ligne moyenne rapide et rapide permet d’identifier les changements de tendance. La ligne moyenne rapide permet d’identifier les tendances à court terme, le filtre de la ligne moyenne lente s’ajuste et l’utilisation combinée améliore la précision d’identification.
  2. Plusieurs combinaisons d’équivalents permettent de juger les signaux de manière plus claire et plus fiable, et d’éviter les faux signaux.
  3. Il utilise différents paramètres de périodes EMA pour identifier les tendances de la ligne moyenne longue à différents niveaux, avec des périodes d’opération flexibles.
  4. La stratégie de suivi des positions longues suit le modèle de la plupart des fonds de placement privés qui fonctionnent en ligne moyenne-longue.

Risque stratégique

  1. Le suivi des positions est trop long et peut laisser passer des opportunités de négociation à court terme.
  2. L’EMA n’est pas adapté pour capturer les fluctuations de prix à court terme. Il peut générer des signaux de négociation inutiles lorsqu’il s’agit d’une correction de la fourchette avec une forte volatilité des prix.
  3. Une mauvaise configuration des paramètres peut entraîner des signaux de transaction trop fréquents ou conservateurs. Il est recommandé de tester les paramètres et de les vérifier en temps réel.

Conseils pour optimiser la stratégie

  1. L’augmentation du nombre de groupes de moyennes rapides et la mise en place de plus d’EMA à courtes périodes permettent de mieux juger les tendances de courte durée.
  2. L’augmentation du nombre de composantes de la moyenne lente et la mise en place d’un plus grand nombre d’EMA à moyen et long terme permettent d’améliorer la capacité de jugement sur les tendances à moyen et long terme.
  3. Augmentation de la confirmation du signal MA, en vérifiant simultanément le support de la ligne moyenne MA lors de l’émission d’un signal EMA, afin de réduire le faux signal.
  4. L’analyse de la volatilité combinée à l’analyse de la quantité de transactions permet d’éviter les signaux erronés lors d’une fausse rupture lors d’une forte fluctuation des prix.

Résumer

Cette stratégie est typique pour le suivi des positions en construisant un système composé de courbes rapides et de courbes lentes, pour identifier les variations des tendances de la courbe longue dans le cours de l’action. Il y a encore beaucoup de place pour l’optimisation de la sélection des paramètres et du filtrage des signaux, que l’investisseur peut ajuster selon son propre style pour s’adapter à différents environnements.

Code source de la stratégie
/*backtest
start: 2023-02-16 00:00:00
end: 2024-02-22 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("CM Super Guppy ala WY", pyramiding=1, default_qty_type=strategy.percent_of_equity, default_qty_value=99, overlay=true)


///////////////////////////////////////////////
//* Backtesting Period Selector | Component *//
///////////////////////////////////////////////

//* https://www.tradingview.com/script/eCC1cvxQ-Backtesting-Period-Selector-Component *//
//* https://www.tradingview.com/u/pbergden/ *//
//* Modifications made *//

testStartYear = input(2017, "Backtest Start Year") 
testStartMonth = input(01, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(3, "Backtest Stop Month")
testStopDay = input(1, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

testPeriod() => true

///////////////////////////////////////////////

src = close, 
len1 = input(3, minval=1, title="Fast EMA 1")
len2 = input(6, minval=1, title="Fast EMA 2")
len3 = input(9, minval=1, title="Fast EMA 3")
len4 = input(12, minval=1, title="Fast EMA 4")
len5 = input(15, minval=1, title="Fast EMA 5")
len6 = input(18, minval=1, title="Fast EMA 6")
len7 = input(21, minval=1, title="Fast EMA 7")
//Slow EMA
len8 = input(24, minval=1, title="Slow EMA 8")
len9 = input(27, minval=1, title="Slow EMA 9")
len10 = input(30, minval=1, title="Slow EMA 10")
len11 = input(33, minval=1, title="Slow EMA 11")
len12 = input(36, minval=1, title="Slow EMA 12")
len13 = input(39, minval=1, title="Slow EMA 13")
len14 = input(42, minval=1, title="Slow EMA 14")
len15 = input(45, minval=1, title="Slow EMA 15")
len16 = input(48, minval=1, title="Slow EMA 16")
len17 = input(51, minval=1, title="Slow EMA 17")
len18 = input(54, minval=1, title="Slow EMA 18")
len19 = input(57, minval=1, title="Slow EMA 19")
len20 = input(60, minval=1, title="Slow EMA 20")
len21 = input(63, minval=1, title="Slow EMA 21")
len22 = input(66, minval=1, title="Slow EMA 22")
len23 = input(200, minval=1, title="EMA 200")

//Fast EMA
ema1 = ema(src, len1)
ema2 = ema(src, len2)
ema3 = ema(src, len3)
ema4 = ema(src, len4)
ema5 = ema(src, len5)
ema6 = ema(src, len6)
ema7 = ema(src, len7)

//Slow EMA
ema8 = ema(src, len8)
ema9 = ema(src, len9)
ema10 = ema(src, len10)
ema11 = ema(src, len11)
ema12 = ema(src, len12)
ema13 = ema(src, len13)
ema14 = ema(src, len14)
ema15 = ema(src, len15)
ema16 = ema(src, len16)
ema17 = ema(src, len17)
ema18 = ema(src, len18)
ema19 = ema(src, len19)
ema20 = ema(src, len20)
ema21 = ema(src, len21)
ema22 = ema(src, len22)

//EMA 200
ema23 = ema(src, len23)

//Fast EMA Color Rules
colfastL = (ema1 > ema2 and ema2 > ema3 and ema3 > ema4 and ema4 > ema5 and ema5 > ema6 and ema6 > ema7)
colfastS = (ema1 < ema2 and ema2 < ema3 and ema3 < ema4 and ema4 < ema5 and ema5 < ema6 and ema6 < ema7)
//Slow EMA Color Rules
colslowL = ema8 > ema9 and ema9 > ema10 and ema10 > ema11 and ema11 > ema12 and ema12 > ema13 and ema13 > ema14 and ema14 > ema15 and ema15 > ema16 and ema16 > ema17 and ema17 > ema18 and ema18 > ema19 and ema19 > ema20 and ema20 > ema21 and ema21 > ema22
colslowS = ema8 < ema9 and ema9 < ema10 and ema10 < ema11 and ema11 < ema12 and ema12 < ema13 and ema13 < ema14 and ema14 < ema15 and ema15 < ema16 and ema16 < ema17 and ema17 < ema18 and ema18 < ema19 and ema19 < ema20 and ema20 < ema21 and ema21 < ema22 
//Fast EMA Final Color Rules
colFinal = colfastL and colslowL? aqua : colfastS and colslowS? orange : gray
//Slow EMA Final Color Rules
colFinal2 = colslowL  ? lime : colslowS ? red : gray
//Fast EMA Plots
p1=plot(ema1, title="Fast EMA 1", style=line, linewidth=2, color=colFinal)
plot(ema2, title="Fast EMA 2", style=line, linewidth=1, color=colFinal)
plot(ema3, title="Fast EMA 3", style=line, linewidth=1, color=colFinal)
plot(ema4, title="Fast EMA 4", style=line, linewidth=1, color=colFinal)
plot(ema5, title="Fast EMA 5", style=line, linewidth=1, color=colFinal)
plot(ema6, title="Fast EMA 6", style=line, linewidth=1, color=colFinal)
p2=plot(ema7, title="Fast EMA 7", style=line, linewidth=2, color=colFinal)

//Slow EMA Plots
p3=plot(ema8, title="Slow EMA 8", style=line, linewidth=1, color=colFinal2)
plot(ema9, title="Slow EMA 9", style=line, linewidth=1, color=colFinal2)
plot(ema10, title="Slow EMA 10", style=line, linewidth=1, color=colFinal2)
plot(ema11, title="Slow EMA 11", style=line, linewidth=1, color=colFinal2)
plot(ema12, title="Slow EMA 12", style=line, linewidth=1, color=colFinal2)
plot(ema13, title="Slow EMA 13", style=line, linewidth=1, color=colFinal2)
plot(ema14, title="Slow EMA 14", style=line, linewidth=1, color=colFinal2)
plot(ema15, title="Slow EMA 15", style=line, linewidth=1, color=colFinal2)
plot(ema16, title="Slow EMA 16", style=line, linewidth=1, color=colFinal2)
plot(ema17, title="Slow EMA 17", style=line, linewidth=1, color=colFinal2)
plot(ema18, title="Slow EMA 18", style=line, linewidth=1, color=colFinal2)
plot(ema19, title="Slow EMA 19", style=line, linewidth=1, color=colFinal2)
plot(ema20, title="Slow EMA 20", style=line, linewidth=1, color=colFinal2)
plot(ema21, title="Slow EMA 21", style=line, linewidth=1, color=colFinal2)
plot(ema22, title="Slow EMA 22", style=line, linewidth=2, color=colFinal2)
p4=plot(ema23, title="EMA 200", style=line, linewidth=2)


// Strategy Center
enterLong = colfastL and colslowL
exitLong = not colfastL

if testPeriod()
    strategy.entry("WY Long", strategy.long, when=enterLong, comment="WY Long")
else
    strategy.cancel(id="WY Long")

if testPeriod()
    strategy.close("WY Long", when=exitLong)