Stratégie de rupture de tendance Double MA


Date de création: 2024-01-08 16:43:38 Dernière modification: 2024-01-08 16:43:38
Copier: 0 Nombre de clics: 653
1
Suivre
1617
Abonnés

Stratégie de rupture de tendance Double MA

Aperçu

La stratégie de rupture de tendance à double MA est une stratégie de trading quantitatif qui utilise des moyennes mobiles de deux cycles différents pour la détermination de la tendance et l’entrée. La stratégie consiste principalement à déterminer la direction de la tendance globale à partir d’une MA lente et à filtrer l’entrée à l’aide d’une MA rapide.

Principe de stratégie

La stratégie est principalement composée des éléments suivants:

Les tendances sont les suivantes:En calculant une MA de 21 cycles, définie comme une MA lente et relativement stable, on peut déterminer la direction de la tendance générale. Une MA proche de cette valeur est une tendance à la hausse lorsque le prix augmente, et une MA proche de cette valeur est une tendance à la baisse lorsque le prix baisse.

Filtre d’entrée:Calculer une MA de 5 cycles, définie comme une MA rapide. Un signal de transaction n’est généré que lorsque le prix franchit une MA lente et une MA rapide. Cette conception vise principalement à filtrer la possibilité d’une fausse rupture supplémentaire.

Filtre de ligne K:La stratégie ne fait plus que lorsque la ligne K de la période est négative ou vide lorsque la ligne K de la période est positive. Cela tient compte du fait que l’utilisation d’une ligne K inversée permet d’obtenir un taux de réussite plus élevé. En combinaison avec l’indicateur RSI rapide, il est également possible d’éviter d’entrer dans des zones de survente ou de survente excessive.

Filtre pour le stockage:Pour le marché de la crypto-monnaie, la stratégie a ajouté une condition de mise en surpoids pour une rupture de volatilité de trois fois plus, en sélectionnant des opportunités de dépassement lors d’une baisse à grande échelle.

La conception de l’arrêt des dommages:La stratégie prend en charge le stop-loss mobile. Lorsque la position est ouverte, le stop-loss est mis à jour en temps réel en fonction du pourcentage de stop-loss défini.

Analyse des avantages

Cette stratégie présente les avantages suivants:

  1. La conception du double MA est simple, pratique et facile à comprendre et à maîtriser.
    1. le filtrage de la combinaison MA rapide et fiable pour déterminer les tendances;
  2. La rétrogradation de la ligne K pour augmenter le taux de réussite;
  3. La méthodologie globale est solide et adaptée à tous les niveaux de transaction.
  4. Le projet a été financé par la Banque Mondiale de développement (BMD) et la Banque mondiale.
  5. En tenant compte des caractéristiques du marché de la crypto-monnaie, il est possible d’obtenir des gains supplémentaires en ajoutant des opportunités de mise en position à la baisse.

Analyse des risques

Cette stratégie comporte aussi des risques:

  1. Il y a plusieurs petites pertes lors des tremblements de terre dans la catégorie Double MA.
  2. L’entrée de la ligne K inverse peut se produire à certains moments de niveau avec un faible taux de victoire.
  3. Le marché de la crypto-monnaie est très volatil et la probabilité de déclenchement d’un stop loss est élevée.
  4. Il n’y a pas beaucoup d’opportunités de hausse ou de baisse, et les rendements sont très volatils.

Les risques peuvent être optimisés de la manière suivante:

  1. Les conditions d’entrée sont renforcées pour éviter les chocs de nullité.
  2. Ajuster la périodicité de la ligne K ou ajouter d’autres filtres d’indicateurs;
  3. Optimisation des algorithmes de stop-loss pour suivre les stops près de l’axe central;
  4. Évaluation de l’efficacité réelle de la stratégie de mise à la baisse.

Direction d’optimisation

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

  1. Optimisation des paramètres: Optimisation de la combinaison de paramètres cycliques de l’AM rapide et lente par une rétroaction plus systématique, améliorant le ratio de risque-bénéfice global.

  2. Reconnaissance des modèles: Ajout d’autres indicateurs comme KDJ, MACD, etc. pour identifier des signaux de retour plus fiables.

  3. Optimisation des pertes: Développer des algorithmes de stop-loss flottants, de suivi des stops, etc., afin de réduire la probabilité que le stop-loss soit déclenché.

  4. Apprentissage automatiqueLes règles de trading sont générées automatiquement à l’aide d’une méthode d’apprentissage automatique.

  5. Déplacement quantitatif: Adapter automatiquement la stratégie de gestion de position en fonction de l’état du marché.

Résumer

La stratégie de rupture de tendance à double MA est une stratégie de suivi de tendance plus simple et pratique dans l’ensemble. Comparée aux algorithmes d’apprentissage automatique complexes, la stratégie est plus facile à interpréter et à maîtriser, et sa fiabilité est plus élevée. Avec l’optimisation des paramètres, l’extension des fonctionnalités et l’introduction de l’apprentissage automatique, la stratégie a un grand potentiel d’amélioration et constitue un bon point de départ pour la négociation quantifiée.

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

//@version=2
strategy(title = "Noro's Trend MAs Strategy v2.0 +CB", shorttitle = "Trend MAs str 2.0", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)

//Settings
needlong = input(true, "long")
needshort = input(true, "short")
needstops = input(false, "stops")
stoppercent = input(5, defval = 5, minval = 1, maxval = 50, title = "Stop, %")
useohlc4 = input(false, defval = false, title = "Use OHLC4")
usefastsma = input(true, "Use fast MA Filter")
fastlen = input(5, defval = 5, minval = 1, maxval = 50, title = "fast MA Period")
slowlen = input(21, defval = 20, minval = 2, maxval = 200, title = "slow MA Period")
bars = input(2, defval = 2, minval = 0, maxval = 3, title = "Bars Q")
needbg = input(false, defval = false, title = "Need trend Background?")
needarr = input(false, defval = false, title = "Need entry arrows?")
needex = input(true, defval = true, title = "Need extreme? (crypto/fiat only!!!)")

src = useohlc4 == true ? ohlc4 : close

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

//PriceChannel 2
lasthigh2 = highest(src, fastlen)
lastlow2 = lowest(src, fastlen)
center2 = (lasthigh2 + lastlow2) / 2

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

//Bars
bar = close > open ? 1 : close < open ? -1 : 0
redbars = bars == 0 ? 1 : bars == 1 and bar == -1 ? 1 : bars == 2 and bar == -1 and bar[1] == -1 ? 1 : bars == 3 and bar == -1 and bar[1] == -1 and bar[2] == -1 ? 1 : 0
greenbars = bars == 0 ? 1 : bars == 1 and bar == 1 ? 1 : bars == 2 and bar == 1 and bar[1] == 1 ? 1 : bars == 3 and bar == 1 and bar[1] == 1 and bar[2] == 1 ? 1 : 0

//Fast RSI
fastup = rma(max(change(close), 0), 2)
fastdown = rma(-min(change(close), 0), 2)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))

//CryptoBottom
mac = sma(close, 10)
len = abs(close - mac)
sma = sma(len, 100)
max = max(open, close)
min = min(open, close)
up3 = close < open and len > sma * 3 and min < min[1] and fastrsi < 10 ? 1 : 0

//Signals
up = trend == 1 and (low < center2 or usefastsma == false) and (redbars == 1) ? 1 : 0
dn = trend == -1 and (high > center2 or usefastsma == false) and (greenbars == 1) ? 1 : 0

up2 = high < center and high < center2 and bar == -1 ? 1 : 0
dn2 = low > center and low > center2 and bar == 1 ? 0 : 0

//Lines
plot(center, color = blue, linewidth = 3, transp = 0, title = "Slow MA")
plot(center2, color = red, linewidth = 3, transp = 0, title = "PriceChannel 2")

//Arrows
plotarrow(up == 1 and needarr == true ? 1 : 0, colorup = black, colordown = black, transp = 0)
plotarrow(dn == 1 and needarr == true ? -1 : 0, colorup = black, colordown = black, transp = 0)

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

//Alerts
alertcondition(up == 1, title='buy', message='Uptrend')
alertcondition(dn == 1, title='sell', message='Downtrend')

//Trading
stoplong = up == 1 and needstops == true ? close - (close / 100 * stoppercent) : stoplong[1]
stopshort = dn == 1 and needstops == true ? close + (close / 100 * stoppercent) : stopshort[1]

longCondition = up == 1 or (up2 == 1 and needex == true) or up3 == 1
if (longCondition)
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na)
    strategy.exit("Stop Long", "Long", stop = stoplong)

shortCondition = dn == 1
if (shortCondition)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na)
    strategy.exit("Stop Short", "Short", stop = stopshort)