Stratégie de moyenne mobile dynamique multi-périodes


Date de création: 2023-10-27 16:07:16 Dernière modification: 2023-10-27 16:07:16
Copier: 1 Nombre de clics: 647
1
Suivre
1617
Abonnés

Stratégie de moyenne mobile dynamique multi-périodes

Cette stratégie permet de générer des signaux de trading en choisissant dynamiquement différents types de moyennes mobiles et en les combinant sur plusieurs périodes.

Principe de stratégie

La stratégie permet de choisir les cinq moyennes mobiles SMA, EMA, TEMA, WMA et HMA et de définir la durée de la période de la moyenne. La stratégie trace différents types de moyenne en fonction de la dynamique choisie. Faire plus lorsque le cours de clôture monte au-dessus de la moyenne; Faire plus lorsque le cours de clôture baisse au-dessus de la moyenne.

Plus précisément, la stratégie définit d’abord le cycle de rétroévaluation en fonction des paramètres d’entrée. Ensuite, elle calcule cinq indicateurs de moyenne:

  • SMA moyenne mobile simple
  • La moyenne mobile de l’indice EMA
  • TEMA moyenne mobile à trois indices
  • Moyenne mobile pondérée WMA
  • Moyenne mobile de HMA Hull

Selon le choix, tracez la moyenne correspondante. Lorsque le prix de clôture est supérieur à la moyenne, faites plus; lorsque le prix de clôture est inférieur à la moyenne, faites vide.

Cette stratégie permet de produire des signaux de négociation plus fiables en utilisant en combinaison différents types de courbes, ce qui permet d’aplanir les données de prix, de filtrer le bruit du marché et de permettre la personnalisation de la longueur des cycles de courbes, ce qui permet de négocier en fonction des tendances de différents cycles.

Avantages stratégiques

  • Utilisation combinée de plusieurs indicateurs de moyenne ligne, plus fiable
  • Période uniforme personnalisable, adaptée à différentes opérations de périodes
  • Dynamique de commutation homogène, paramètres d’optimisation flexibles
  • Des stratégies de suivi des tendances simples et intuitives, faciles à mettre en œuvre

Risque stratégique

  • La ligne moyenne est en retard et risque de manquer le point de basculement
  • Les paramètres fixes sont faciles à suradapter, et l’effet du disque peut être plus faible que la rétroaction
  • Les phases à plusieurs têtes sont activement surchargées et les phases à tête vide sont activement surchargées, ce qui peut affecter l’efficacité de l’utilisation des fonds.

Le risque peut être réduit en optimisant:

  • Les tendances des autres indicateurs permettent d’identifier plus précisément le moment de l’entrée.
  • Paramètres d’optimisation du disque dur, adaptation du cycle de la ligne moyenne aux différentes conditions du marché
  • Optimisation de la gestion des positions, adaptation des positions en fonction de la taille des fonds et du contrôle des risques

Direction d’optimisation

Cette stratégie peut être optimisée dans les directions suivantes:

  1. Ajout de filtres sur d’autres indicateurs pour un signal de négociation plus stable

Par exemple, on peut ajouter un indicateur de capacité quantitative, qui ne génère des signaux de transaction que si le volume de transactions est élevé, et filtrer les fausses percées.

  1. Optimisation de la logique d’entrée

Il est possible de mettre en place des canaux qui ne s’ouvrent qu’une fois que le prix a franchi le canal. Il est possible de mettre en place des lignes de stop-loss qui permettent de faire un placement après que le prix a touché la ligne de stop-loss. Cela permet de réduire les pertes inutiles.

  1. Période de régularisation dynamique

Il est possible d’ajuster la moyenne périodique en fonction de la dynamique de la situation du marché, d’utiliser la moyenne périodique longue lorsque la tendance est plus évidente, d’utiliser la moyenne périodique courte lors de la consolidation.

  1. Optimisation des stratégies de gestion des fonds

Il est possible d’ajuster la taille de la position en fonction des conditions de retrait, de réduire la position en cas de retrait et d’augmenter modérément la position en cas de profit.

Résumer

La stratégie utilise une combinaison de plusieurs indicateurs de ligne moyenne, combinés à plusieurs périodes de temps, pour former un effet de suivi de tendance relativement stable. Il y a beaucoup de place pour l’optimisation de la stratégie.

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

//@version=3
strategy("MA_strategy ", shorttitle="MA_strategy", overlay=true, initial_capital=100000)

qty = input(100000000, "Buy quantity")

testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testStartHour = input(0, "Backtest Start Hour")
testStartMin = input(0, "Backtest Start Minute")

testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,testStartHour,testStartMin)

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


testPeriodBackground = input(title="Color Background?", type=bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)

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


ma1 = input( "SMA",title="Select MA", options=["SMA", "EMA","TEMA", "WMA","HMA"])


len1 = input(7, minval=1, title="Period")

s=sma(close,len1)

e=ema(close,len1)


xEMA1 = ema(close, len1)
xEMA2 = ema(xEMA1, len1)
xEMA3 = ema(xEMA2, len1)
t = 3 * xEMA1 - 3 * xEMA2 + xEMA3


f_hma(_src, _length)=>
    _return = wma((2 * wma(_src, _length / 2)) - wma(_src, _length), round(sqrt(_length)))

h = f_hma(close, len1)

w = wma(close, len1)

ma = ma1 == "SMA"?s:ma1=="EMA"?e:ma1=="WMA"?w:ma1=="HMA"?h:ma1=="TEMA"?t:na

buy= close>ma
sell= close<ma

alertcondition(buy, title='buy', message='buy')
alertcondition(sell, title='sell', message='sell')

ordersize=floor(strategy.equity/close)

if testPeriod()
    strategy.entry("long",strategy.long,ordersize,when=buy)
    strategy.close("long", when = sell )