Stratégie de suivi de tendance basée sur la moyenne mobile dynamique


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

Stratégie de suivi de tendance basée sur la moyenne mobile dynamique

Aperçu

Cette stratégie est basée sur un indicateur dynamique de la ligne de parité, permettant un suivi en temps réel de la tendance des prix et émettant des signaux de négociation par rupture de la ligne de parité. L’avantage de la stratégie est la simplicité de la configuration des paramètres, la clarté du jugement des signaux et la possibilité de détenir des positions sur les lignes moyennes et longues.

Principe de stratégie

La stratégie utilise des indicateurs de courbe dynamique, y compris plusieurs types de courbe, tels que ALMA, EMA et SMA. Le principe de base est de faire plus lorsque le prix est au-dessus de la courbe et de faire moins lorsque le prix est en dessous de la courbe.

En particulier, la stratégie utilise la ligne moyenne formée par les hauts et les bas, puis utilise la ligne moyenne des bas comme ligne de signal de multiplication, et la ligne moyenne des hauts comme ligne de signal de réduction. Lorsque le prix de clôture est supérieur à la ligne moyenne des bas, faites plus; lorsque le prix de clôture est inférieur à la ligne moyenne des hauts, faites une réduction.

L’utilisation de l’indicateur de la moyenne pour déterminer la tendance des prix, combinée avec le principe de la rupture pour émettre un signal, forme une stratégie de suivi de tendance simple et pratique.

Avantages stratégiques

  • L’indicateur de la moyenne est utilisé pour juger, le paramètre est simple et facile à utiliser
  • Les règles de détection des signaux sont claires et ne produisent pas de faux signaux.
  • L’algorithme homogène de choix libre et la flexibilité pour répondre aux changements du marché
  • Paramètres de moyenne réglables pour s’adapter aux tendances de différentes périodes
  • Les signaux peuvent être vérifiés sur plusieurs périodes, ce qui améliore la fiabilité.

Risques et solutions

  • La moyenne des indicateurs est en retard, et certaines opportunités pourraient être manquées
    • raccourcissement approprié des périodes de la moyenne, ou utilisation d’une moyenne mobile indicielle EMA
  • Un risque de rupture plus important à court terme
    • Laissez suffisamment de marge de manœuvre
  • Les risques à long terme peuvent ne pas s’arrêter à temps
    • Les résultats de l’étude ont été publiés dans le journal Nature.

Optimisation de la stratégie

  • Adaptation de l’algorithme et des paramètres de la ligne moyenne en fonction des caractéristiques des différentes variétés
  • Augmentation des sous-indicateurs de jugement et amélioration de l’efficacité de la stratégie
  • Augmentation du mécanisme d’arrêt des dégâts
  • Évaluation de la fiabilité du signal sur plusieurs périodes
  • La recherche de paramètres plus élevés avec l’apprentissage automatique

Résumer

La stratégie utilise des indicateurs de la même ligne pour déterminer la direction de la tendance des prix et émettre des signaux de négociation basés sur la théorie de la rupture. L’avantage est qu’il est simple et facile à utiliser, adapté à la position de la ligne moyenne et longue, et que les paramètres peuvent être ajustés pour s’adapter aux changements du marché.

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

//@version=4
strategy(title="Baseline Strategy - evo", shorttitle="Baseline", overlay=true)

//INPUTS
mat =               input("ALMA", "MA Type", options=["SMA", "EMA", "WMA", "HMA", "VWMA", "RMA", "ALMA"])
baseline =          input(55, title="MA Length")
src =               input(ohlc4, title="Closing Source")

offset =            input(0.85, step=0.05, title="Offset (alma only)")
sigma =             input(10, title="Sigma (alma only)")

useCurrentRes =     input(true, title="Use Current Resolution")
resCustom =         input("1440", title="Timeframe")

showsignals =       input(false, title="Show Signals ?")

//BASELINE
baselinehigh = 

 mat=="SMA" ? sma(high,baseline) : 
 mat=="EMA" ? ema(high,baseline) : 
 mat=="WMA" ? wma(high,baseline) : 
 mat=="HMA" ? wma(2*wma(high, baseline/2)-wma(high, baseline), round(sqrt(baseline))) : 
 mat=="VWMA" ? vwma(high,baseline) : 
 mat=="RMA" ? rma(high,baseline) :
 mat=="ALMA" ? alma(high, baseline, offset, sigma) : na

baselinelow = 

 mat=="SMA" ? sma(low,baseline) : 
 mat=="EMA" ? ema(low,baseline) : 
 mat=="WMA" ? wma(low,baseline) : 
 mat=="HMA" ? wma(2*wma(low, baseline/2)-wma(low, baseline), round(sqrt(baseline))) : 
 mat=="VWMA" ? vwma(low,baseline) : 
 mat=="RMA" ? rma(low,baseline) : 
 mat=="ALMA" ? alma(low, baseline, offset, sigma) : na

//RESOLUTION
res =               useCurrentRes ? timeframe.period : resCustom

mtfhigh =           security(syminfo.tickerid, res, baselinehigh)
mtflow =            security(syminfo.tickerid, res, baselinelow)

//PLOTS
plot(mtfhigh, color=color.navy, linewidth=2, transp=0, title="Baseline High")
plot(mtflow, color=color.navy, linewidth=2, transp=0, title="Baseline Low")

long =              src > mtfhigh
short =             src < mtflow

barcolor(long ? #ffe0b2 : short ? #2a2e39 : not long and not short ? #b09e82 : na, title="BaseLine BarColor")

signal = 0
signal := long ? 1 : short ? 2 : nz(signal[1])

plotshape(showsignals ? (signal != signal[1] and long ? mtflow : na) : na, title="Long", location=location.absolute, size=size.small, style=shape.labelup, text="Long", textcolor=color.black, transp=40, color=#00ff00)
plotshape(showsignals ? (signal != signal[1] and short ? mtfhigh : na) : na, title="Short", location=location.absolute, size=size.small, style=shape.labeldown, text="Short", textcolor=color.white, transp=40, color=#ff0000)

alertcondition(signal != signal[1], title="Trend Change !", message="Trend Change !")

if (long)
    strategy.entry("Long", strategy.long)
if (short)
    strategy.entry("Short", strategy.short)