Stratégie de moyenne mobile dynamique


Date de création: 2023-11-23 11:39:24 Dernière modification: 2023-11-23 11:39:24
Copier: 0 Nombre de clics: 654
1
Suivre
1617
Abonnés

Stratégie de moyenne mobile dynamique

Aperçu

Cette stratégie est appelée la stratégie de la courbe dynamique de la courbe mobile. L’idée principale est d’utiliser la direction de la courbe mobile et la relation entre le prix et la tendance, d’entrer dans la courbe dans la direction de la tendance et de la position de la courbe en l’absence de tendance.

Principe de stratégie

La stratégie utilise le prix source de longueur de chaque cycle pour calculer la moyenne mobile, le prix source peut choisir OHLC4, HLC3, le prix de clôture, etc. La moyenne mobile calculée est définie comme sma. Ensuite, le long et le court sont tracés en fonction de la proportion de la valeur de la moyenne mobile, et le rapport entre la position de la longue et la courte ligne permet de déterminer si la tendance est actuellement à la hausse ou à la baisse.

Plus précisément, la formule de calcul de la courte ligne est: shortline = sma * ((100 + shortlevel) / 100), où shortlevel est un nombre positif qui peut être défini par l’utilisateur pour représenter le rapport entre la courte ligne et la moyenne mobile. De même, la formule de calcul de la longue ligne est: longline = sma * ((100 + longlevel) / 100), où longlevel est un nombre négatif qui peut être défini par l’utilisateur pour représenter le rapport entre la longue ligne et la moyenne mobile.

Ainsi, la courte ligne est toujours supérieure à la moyenne mobile, et la longue ligne est toujours inférieure à la moyenne mobile. Lorsque le prix monte, la courte ligne représente une tendance à la hausse.

Qu’il s’agisse d’une survente ou d’une perte de valeur, la fin de la tendance est marquée par le retour du prix à la moyenne mobile, auquel cas toutes les positions précédentes sont effacées.

Ainsi, la direction de la tendance est déterminée par la relation dynamique entre la ligne longue et courte et la ligne moyenne mobile et les entrées et sorties sont déterminées en fonction de cela.

Avantages stratégiques

Le plus grand avantage de cette stratégie réside dans la possibilité de saisir les principales tendances de manière plus flexible, en définissant les points d’achat et de vente en utilisant des lignes longues et courtes. Cette stratégie est plus avancée et plus intelligente que la stratégie qui déclenche simplement des points d’achat et de vente à un niveau fixe.

Deuxièmement, la moyenne mobile a elle-même un effet de filtrage, qui évite d’être bloquée par des oscillations à haute fréquence. Il est également essentiel de déterminer si la tendance se termine à temps en fonction du niveau de la moyenne mobile.

Risque stratégique

Le plus grand risque de cette stratégie réside dans le fait que les moyennes mobiles se comportent différemment selon les périodes. Normalement, les moyennes mobiles sont suffisantes pour représenter la direction de la tendance, mais dans certains cas extrêmes, les moyennes mobiles peuvent être percutées à court terme, ce qui entraîne des entrées erronées ou une déviation de la tige.

L’autre aspect du risque est que les moyennes mobiles sont elles-mêmes très lentes. Pour certaines fluctuations de prix courtes et violentes, les moyennes mobiles sont difficiles à suivre et peuvent manquer un point d’entrée ou un point de sortie.

Optimisation de la stratégie

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

  1. Augmentation de la logique de stop-loss. Les moyennes mobiles sont retardées dans le jugement de la tendance et ne peuvent pas être complètement évitées, de sorte qu’une addition appropriée de stop-loss mobile peut encore réduire le risque.
  2. Optimiser les paramètres des moyennes longues et courtes. Actuellement, le rapport entre les moyennes longues et courtes et les moyennes mobiles est fixe et permet de tester différents ensembles de données pour trouver les paramètres optimaux.
  3. Augmentation de la détermination de l’intensité de la tendance. En plus de la position de la moyenne courte et longue, l’intensité de la tendance peut également être déterminée par certains algorithmes, afin d’éviter les signaux erronés sous une tendance faible.
  4. Il est possible d’essayer d’appliquer la ligne mobile à d’autres variétés commerciales pour une vérification inter-variétés.

Résumer

Cette stratégie permet de juger des tendances et de correspondre aux trades multi-zones en définissant des points d’achat et de vente de manière dynamique. Cette méthode, basée sur la mise en place dynamique de signaux de négociation sur la moyenne mobile, permet de capturer les tendances des prix de manière plus flexible et intelligente que les points de déclenchement statiques.

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

//Noro
//2018

//@version=3
strategy(title = "Noro's ShiftMA Strategy v1.1", shorttitle = "ShiftMA str 1.1", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 100)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(false, defval = false, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
per = input(3, title = "Length")
src = input(ohlc4, title = "Source")
shortlevel = input(10.0, title = "Short line (red)")
longlevel = input(-5.0, title = "Long line (lime)")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//SMAs
sma = sma(src, per) 
//sma = lowest(low, per)
shortline = sma * ((100 + shortlevel) / 100)
longline = sma * ((100 + longlevel) / 100)
plot(shortline, linewidth = 2, color = red, title = "Short line")
plot(sma, linewidth = 2, color = blue, title = "SMA line")
plot(longline, linewidth = 2, color = lime, title = "Long line")

//plot(round(buy * 100000000), linewidth = 2, color = lime)
//plot(round(sell * 100000000), linewidth = 2, color = red)

//Trading
size = strategy.position_size
lot = 0.0
lot := size == 0 ? strategy.equity / close * capital / 100 : lot[1]

if (not na(close[per])) and size == 0 and needlong
    strategy.entry("L", strategy.long, lot, limit = longline, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if (not na(close[per])) and size == 0 and needshort
    strategy.entry("S", strategy.short, lot, limit = shortline, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if (not na(close[per])) and size > 0 
    strategy.entry("Close", strategy.short, 0, limit = sma, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if (not na(close[per])) and size < 0 
    strategy.entry("Close", strategy.long, 0, limit = sma, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))

if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()