Stratégie de négociation en moyenne mobile de tendance

Auteur:ChaoZhang est là., Date: 2021-09-21 20:34:43 Je vous en prie.
Les étiquettes:

Résumé

Cette stratégie utilise une combinaison de moyennes mobiles rapides et lentes pour déterminer la direction de la tendance et capturer les tendances à moyen et long terme pour le trading de tendance.

La logique de la stratégie

La stratégie s'appuie principalement sur la croix dorée et la croix de mort des moyennes mobiles pour déterminer les tendances du marché.

Lorsque le MA rapide traverse au-dessus du MA lent, il indique une tendance haussière sur le marché, et la stratégie sera longue à l'ouverture de la barre suivante.

En outre, le paramètre bars est réglé pour filtrer les fausses ruptures. La valeur par défaut est 2, ce qui signifie que le MA rapide doit fermer au-dessus du MA lent pendant 2 barres consécutives avant de déclencher un signal long. Cela évite efficacement les fausses ruptures.

Pour le trading de crypto, la stratégie intègre également une logique de valeur extrême - seulement lorsque les MAs rapides et lents atteignent des zones extrêmes, les signaux de trading seront déclenchés.

La règle de sortie est simple et directe - position de fermeture lorsque l'arrêt de perte est atteint.

Les avantages

  • Le double système d'AM permet de suivre efficacement les tendances
  • Le MA rapide réagit rapidement aux changements de tendance
  • Le MA lent détermine la direction globale
  • Le paramètre bars filtre certaines fausses éruptions
  • Les détecteurs de valeur extrême évitent les faux signaux sporadiques autour des points critiques
  • Le déplacement du stop loss gère les risques

Les risques

  • Les systèmes à double MA ont tendance à perdre en cas d'inversion de tendance
  • Le stop-loss mobile peut être arrêté prématurément
  • Le filtre bars peut manquer certains signaux valides
  • Les gardiens de valeur extrêmes manquent parfois de bonnes entrées.
  • La stratégie fonctionne mieux sur les marchés en forte tendance

Les risques peuvent être réduits par:

  • Optimisation du paramètre bars
  • Ajout d'autres filtres comme le MACD
  • Ajustement des niveaux de stop loss pour éviter un stop-out prématuré
  • En considérant les réentrées

Directions d'optimisation

La stratégie peut être améliorée par les aspects suivants:

  1. Paramètres de réglage de la MA

Tester plus de combinaisons d'AM pour trouver les paramètres optimaux pour le marché actuel, par exemple une AM rapide de 10 périodes et une AM lente de 50 périodes.

  1. Ajout d'autres indicateurs

Testez en ajoutant le MACD, le KDJ et d'autres indicateurs pour établir des règles d'entrée plus strictes et éviter de faux signaux.

  1. Optimisation des entrées

L'entrée simple actuelle en double MA peut être améliorée:

  • Entrez long uniquement si le MACDDIFF dépasse également 0 lorsque le MA rapide dépasse le MA lent
  • Entrez long uniquement si KDJ donne une croix d'or lorsque le MA rapide dépasse le MA lent
  1. Optimisation des arrêts

Testez d'autres mécanismes d'arrêt tels que l'arrêt de traction pour éviter un arrêt prématuré.

  1. Ajout de nouvelles entrées

Permettre les réentrées après les arrêts, pour éviter de manquer les tendances.

Résumé

En résumé, cette stratégie de base de suivi des tendances a une logique simple et directe - en utilisant des MAs doubles pour la direction de la tendance et des arrêts en mouvement pour la gestion des risques. Les avantages sont faciles à comprendre, peuvent tirer profit des tendances et gérer les risques. Mais des limitations existent également, comme de mauvais signaux lors de consolidations, des arrêts prématurés, etc. Un réglage et une optimisation en direct sont nécessaires, tels que l'ajout de filtres, l'ajustement des arrêts, pour la rendre adaptable à différents environnements de marché. En tant que stratégie de trading de tendance d'introduction, elle convient aux débutants pour apprendre et appliquer. Mais ses limitations doivent être notées et des stratégies plus avancées doivent être explorées.


/*backtest
start: 2023-08-21 00:00:00
end: 2023-09-20 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title = "Noro's Trend MAs Strategy v2.3", shorttitle = "Trend MAs str 2.3", 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, %")
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?")
needex = input(true, defval = true, title = "Need extreme? (crypto/fiat only!!!)")
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")

src = 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)

//Signals
up1 = trend == 1 and (low < center2 or usefastsma == false) and redbars == 1
dn1 = trend == -1 and (high > center2 or usefastsma == false) and greenbars == 1
up2 = high < center and high < center2 and bar == -1 and needex
dn2 = low > center and low > center2 and bar == 1 and needex
up3 = close < open and len > sma * 3 and min < min[1] and fastrsi < 10 ? 1 : 0

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

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

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

if up1 or up2 or up3
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    strategy.exit("Stop Long", "Long", stop = stoplong)

if dn1
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    strategy.exit("Stop Short", "Short", stop = stopshort)
    
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()
    

Plus de