Stratégie d'inversion de la double moyenne mobile


Date de création: 2023-10-24 10:56:08 Dernière modification: 2023-10-24 10:56:08
Copier: 0 Nombre de clics: 589
1
Suivre
1617
Abonnés

Stratégie d’inversion de la double moyenne mobile

Aperçu

Cette stratégie utilise principalement les doubles moyennes mobiles comme signaux d’achat et de vente, et profite lorsque la tendance est inversée. Faire plus lorsque vous traversez la moyenne mobile à court terme au-dessus de la moyenne mobile à long terme et faire moins lorsque vous traversez la moyenne mobile à long terme en dessous de la moyenne mobile à court terme fait partie des stratégies de suivi de stop-loss courantes.

Principe de stratégie

La stratégie consiste d’abord à définir deux moyennes mobiles, une moyenne de 20 jours à plus court terme et une moyenne de 60 jours à plus long terme. L’entrée est ensuite déterminée en fonction de l’intersection des moyennes à court terme et à long terme.

Plus précisément, lorsque la moyenne à court terme est traversée par la moyenne à long terme, cela indique qu’elle est actuellement en tendance à la hausse, ce qui est plus; lorsque la moyenne à court terme est traversée par la moyenne à long terme, cela indique qu’elle est actuellement en tendance à la baisse, ce qui est vide.

La méthode d’arrêt après avoir effectué un short est le suivi des pertes, en fonction du prix le plus élevé et du prix le plus bas, le trailing stop, permettant de bloquer le profit maximal.

La logique principale du code est la suivante:

  1. Calculer l’EMA à 20 jours et à 60 jours
  2. Jugez si une EMA de 20 jours est supérieure à une EMA de 60 jours, et si oui, faites-en plus.
  3. Détermine si l’EMA du 20e jour est inférieure à l’EMA du 60e jour et, si c’est le cas, vide
  4. Après avoir ouvert une position en plus, utilisez 3% du prix le plus élevé comme limite de perte.
  5. Après avoir ouvert une position en cours de négociation, utilisez 3% du prix le plus bas comme limite de perte.
  6. Ajuster continuellement la limite de perte lors de la tenue d’une position

Analyse des avantages

Cette stratégie présente les avantages suivants:

  1. Les idées sont simples, faciles à comprendre et à mettre en œuvre.
  2. La double ligne d’équilibre permet de filtrer efficacement les fausses percées.
  3. Le suivi des pertes permet de bloquer le profit maximal.
  4. Les signaux de changement de tendance peuvent être saisis en temps opportun.
  5. Le retrait est bien maîtrisé et relativement stable.

Analyse des risques

Cette stratégie comporte aussi des risques:

  1. Lorsque la tendance n’est pas évidente, les doubles moyennes peuvent être fréquemment croisées, ce qui entraîne de fréquentes pertes de transactions.
  2. Une mauvaise définition de la plage de stop-loss peut entraîner une stop-loss trop relâchée ou trop radicale.
  3. Le paramètre est défini de manière incorrecte, ce qui peut entraîner la perte d’un point clé.
  4. Les frais de transaction sont élevés et affectent les marges bénéficiaires.

L’optimisation des risques peut être réalisée de la manière suivante:

  1. Le système de filtrage est utilisé pour éviter les transactions aveugles lorsque la tendance n’est pas évidente.
  2. Optimiser les tests de l’étendue des pertes et définir l’étendue des pertes appropriée.
  3. Les paramètres sont définis de manière optimale par des réglages de retour et de réglage des paramètres.
  4. Réduire de manière appropriée le nombre d’opérateurs et les frais de transaction.

Optimiser les idées

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

  1. Ajout de filtres sur d’autres indicateurs pour créer un mécanisme d’entrée à conditions multiples et éviter les fausses percées. Par exemple, un jugement sur l’indicateur RSI peut être ajouté

  2. Optimiser les paramètres de périodicité de la moyenne mobile pour trouver la combinaison optimale de paramètres. Les différents paramètres de périodicité peuvent être testés en passant par étape par étape.

  3. Optimisation de la zone d’arrêt. La meilleure zone d’arrêt peut être calculée à partir des données de retour. La zone d’arrêt dynamique peut également être définie.

  4. Mise en place d’un mécanisme de réintégration. Après l’arrêt de la perte de sortie, il est possible de mettre en place une logique de réintégration raisonnable, réduisant le nombre de transactions.

  5. En combinant les indicateurs de tendance, il est possible d’arrêter la négociation si la tendance n’est pas évidente et d’éviter les transactions invalides.

  6. Adhésion à un mécanisme de gestion des positions, permettant d’ajuster les positions et les limites de stop-loss en fonction de la dynamique du marché.

Résumer

La stratégie de retour en arrière des doubles moyennes mobiles est une méthode courante et efficace pour déterminer les points de retournement de la tendance à l’aide de deux lignes de symétrie. Cependant, il existe un certain risque.

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


//@version=2
strategy("Noro's Bands Scalper Strategy v1.4", shorttitle = "Scalper str 1.4", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
takepercent = input(0, defval = 0, minval = 0, maxval = 1000, title = "take, %")
needbe = input(true, defval = true, title = "Bands Entry")
needct = input(false, defval = false, title = "Counter-trend entry")
needdb = input(true, defval = true, title = "Double Body")
len = input(20, defval = 20, minval = 2, maxval = 200, title = "Period")
needbb = input(true, defval = true, title = "Show Bands")
needbg = input(true, defval = true, title = "Show Background")
src = close

//PriceChannel 1
lasthigh = highest(src, len)
lastlow = lowest(src, len)
center = (lasthigh + lastlow) / 2

//Distance
dist = abs(src - center)
distsma = sma(dist, len)
hd = center + distsma
ld = center - distsma
hd2 = center + distsma * 2
ld2 = center - distsma * 2

//Trend
trend = close < ld and high < center ? -1 : close > hd and low > center ? 1 : trend[1]

//Lines
colo = needbb == false ? na : black
plot(hd2, color = colo, linewidth = 1, transp = 0, title = "High band 2")
plot(hd, color = colo, linewidth = 1, transp = 0, title = "High band 1")
plot(center, color = colo, linewidth = 1, transp = 0, title = "center")
plot(ld, color = colo, linewidth = 1, transp = 0, title = "Low band 1")
plot(ld2, color = colo, linewidth = 1, transp = 0, title = "Low band 2")

//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 80)

//Body
body = abs(close - open)
smabody = needdb == false ? ema(body, 30) : ema(body, 30) * 2
candle = high - low

//Signals
bar = close > open ? 1 : close < open ? -1 : 0
up7 = trend == 1 and ((bar == -1 and bar[1] == -1) or (body > smabody and bar == -1)) ? 1 : 0
dn7 = trend == 1 and ((bar == 1 and bar[1] == 1) or (close > hd and needbe == true)) and close > strategy.position_avg_price * (100 + takepercent) / 100 ? 1 : 0
up8 = trend == -1 and ((bar == -1 and bar[1] == -1) or (close < ld2 and needbe == true)) and close < strategy.position_avg_price * (100 - takepercent) / 100 ? 1 : 0
dn8 = trend == -1 and ((bar == 1 and bar[1] == 1) or (body > smabody and bar == 1)) ? 1 : 0

if up7 == 1 or up8 == 1 
    strategy.entry("Long", strategy.long, needlong == false ? 0 : trend == -1 and needct == false ? 0 : na)

if dn7 == 1 or dn8 == 1
    strategy.entry("Short", strategy.short, needshort == false ? 0 : trend == 1 and needct == false ? 0 : na)