Les ressources ont été chargées... Je charge...

Stratégie d'inversion des moyennes mobiles doubles

Auteur:ChaoZhang est là., Date: 2023-10-24 10:56:08 Je suis désolé
Les étiquettes:

双重移动平均线反转策略

Résumé

Cette stratégie utilise principalement des moyennes mobiles doubles comme signaux d'achat et de vente pour réaliser des profits lors d'un renversement de tendance.

Les principes stratégiques

La stratégie consiste d'abord à définir deux moyennes mobiles, une moyenne de 20 jours plus courte et une moyenne de 60 jours plus longue. L'intersection de la moyenne courte et de la moyenne longue est ensuite jugée pour décider de l'entrée.

Plus précisément, lorsque la courte moyenne traverse la longue moyenne, cela signifie qu'elle est actuellement en hausse; lorsque la courte moyenne traverse la longue moyenne, cela signifie qu'elle est actuellement en baisse.

La méthode de stop-loss après un surmenage est le stop-tracking, qui consiste à faire un stop trailing en fonction du prix le plus élevé et le prix le plus bas, afin de localiser le profit maximal.

La logique de base du code est la suivante:

  1. Calcul de l'EMA du 20e jour et de l'EMA du 60e jour
  2. Déterminez si l'EMA du 20e jour est supérieur à l'EMA du 60e jour, et si oui, faites plus.
  3. Déterminez si l'EMA du 20e jour est en dessous de l'EMA du 60e jour, et si oui, faites-le.
  4. Une fois entré dans une position multiple, une ligne de stop à 3% du prix le plus élevé
  5. Après avoir franchi une position vacante, une ligne stop à 3% du prix le plus bas.
  6. L'ajustement de la ligne de stop-loss pendant le stockage

Analyse des avantages

La stratégie présente les avantages suivants:

  1. L'idée est simple, facile à comprendre et facile à réaliser.
  2. Les deux lignes homogènes sont utilisées pour filtrer efficacement les fausses percées.
  3. Le suivi des pertes et arrêts permet de localiser les gains maximaux.
  4. Les signaux peuvent être captés en temps réel lors d'un changement de tendance.
  5. Le retrait est contrôlé et relativement stable.

L'analyse des risques

La stratégie comporte également des risques:

  1. Lorsque la tendance n'est pas évidente, les doubles moyennes peuvent se croiser fréquemment, ce qui entraîne des pertes de transactions fréquentes.
  2. Une mauvaise définition de la plage d'arrêt peut entraîner un arrêt trop large ou trop radical.
  3. Les paramètres sont mis en place si la longueur du cycle est incorrecte, ce qui peut entraîner un point de signal critique manqué.
  4. Les frais de transaction sont plus élevés, ce qui affecte les marges bénéficiaires.

L'optimisation des risques peut être effectuée de la manière suivante:

  1. Dans les cas où la tendance n'est pas évidente, un système de filtrage est utilisé pour éviter les transactions aveugles.
  2. Optimiser les tests de la plage d'arrêt et définir la plage d'arrêt appropriée.
  3. Trouvez les paramètres les plus optimistes en réévaluant et en ajustant les paramètres.
  4. Il est important de réduire le nombre d'opérations et de réduire les frais de transaction.

Optimiser les idées

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

  1. L'ajout de filtrage d'autres indicateurs, la formation d'un mécanisme d'entrée multi-conditionnel, pour éviter les fausses percées. Par exemple, il est possible d'intégrer la détermination des indicateurs RSI.

  2. Optimiser les paramètres de cycle pour trouver la meilleure combinaison de paramètres.

  3. Optimisation de la plage d'arrêt. Une plage d'arrêt optimale peut être calculée à partir des données de retouche. Une plage d'arrêt dynamique peut également être définie.

  4. Mettre en place un mécanisme de réentrée. Une logique de réentrée raisonnable peut être mise en place pour réduire le nombre de transactions après une sortie au stop-loss.

  5. En combinaison avec des indicateurs de jugement des tendances, suspendre les transactions lorsque la tendance n'est pas évidente et éviter les transactions invalides.

  6. Il s'agit d'un mécanisme de gestion des positions qui permet d'ajuster dynamiquement les positions et la portée des pertes en fonction des conditions du marché.

Résumé

La stratégie d'inversion des moyennes mobiles doubles est généralement simple et pratique, et est une méthode courante et efficace pour déterminer les points de basculement de la tendance à travers la double moyenne. Cependant, il y a un certain risque, qui nécessite des tests d'optimisation des paramètres et de la plage de stop-loss, ainsi que d'autres indicateurs de filtrage à utiliser en combinaison, pour maximiser l'efficacité 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)

En savoir plus