Stratégie d'entrée unilatérale basée sur la moyenne mobile

Auteur:ChaoZhang est là., Date: 2023-12-25 14h09h49
Les étiquettes:

img

Résumé

Cette stratégie calcule différents types de moyennes mobiles pour déterminer la direction de la tendance des prix et mettre en œuvre une entrée unilatérale.

Principe de stratégie

La stratégie permet de sélectionner parmi 7 types de moyennes mobiles différents, notamment la moyenne mobile simple (SMA), la moyenne mobile exponentielle (EMA), la moyenne mobile pondérée par volume (VWMA), la moyenne mobile exponentielle double (DEMA), la moyenne mobile exponentielle triple (TEMA), la moyenne mobile adaptative de Kaufman (KAMA) et la ligne moyenne du canal de prix.

Lorsque le prix de clôture franchit la ligne de la moyenne mobile vers le haut, il est jugé comme une tendance haussière et une position longue est ouverte. Lorsque le prix de clôture franchit la ligne de la moyenne mobile vers le bas, il est jugé comme une tendance baissière et une position courte est ouverte. Cela peut capturer des points tournants dans la tendance des prix et atteindre une entrée unilatérale.

Analyse des avantages

Les avantages de cette stratégie sont les suivants:

  1. Divers types de moyennes mobiles peuvent être sélectionnés pour une flexibilité adaptée aux différents produits et cycles.

  2. L'entrée d'un seul côté peut contrôler efficacement les risques.

  3. L'entrée dans la direction de la tendance est facile à tirer profit.

  4. Il est facile à comprendre et à mettre en œuvre.

Analyse des risques

Cette stratégie comporte également certains risques:

  1. Lorsque le prix oscille autour de la ligne moyenne mobile, il y aura plusieurs faux signaux et des positions d'entrée inversées.

  2. Il n'est pas possible d'éviter complètement les risques causés par des mouvements rapides de prix à la hausse ou à la baisse.

  3. L'analyste doit sélectionner les paramètres de moyenne mobile appropriés.

Directions d'optimisation

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

  1. Combinez avec d'autres indicateurs techniques tels que MACD, RSI pour juger du signal de tendance et former une combinaison de négociation.

  2. Ajouter une logique de stop loss, telle que le stop loss de suivi ou le stop loss d'ordre en attente.

  3. Testez et optimisez des paramètres comme la période moyenne mobile, le type de moyenne mobile pour trouver la combinaison optimale de paramètres.

  4. Considérez l'utilisation du type d'ordre MarketIfTouched pour l'entrée, afin de suivre la tendance.

Résumé

La stratégie détermine la direction de la tendance des prix en fonction des moyennes mobiles et implémente une entrée à un seul côté. Elle est simple à utiliser et à mettre en œuvre et peut contrôler efficacement les risques. Mais il existe également des risques de faux signaux et d'entrées inversées. Elle peut être continuellement améliorée en combinant d'autres indicateurs de signal, en optimisant les paramètres, en ajoutant un stop loss, pour rendre la stratégie plus stable et fiable.


/*backtest
start: 2023-11-24 00:00:00
end: 2023-12-24 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title = "Noro's MAs Tests v1.1", shorttitle = "MAs tests 1.1", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)

needlong = input(true, "long")
needshort = input(true, "short")
len = input(30, defval = 30, minval = 2, maxval = 1000, title = "MA length")
type = input(1, defval = 1, minval = 1, maxval = 7, title = "Type")
src = input(close, defval = close, title = "Source")
anti = input(true, defval = true, title = "Antipila")

//DEMA
dema = 2 * ema(src, len) - ema(ema(close, len), len)

//TEMA
xPrice = close
xEMA1 = ema(src, len)
xEMA2 = ema(xEMA1, len)
xEMA3 = ema(xEMA2, len)
tema = 3 * xEMA1 - 3 * xEMA2 + xEMA3

//KAMA
xvnoise = abs(src - src[1])
nfastend = 0.20
nslowend = 0.05
nsignal = abs(src - src[len])
nnoise = sum(xvnoise, len)
nefratio = iff(nnoise != 0, nsignal / nnoise, 0)
nsmooth = pow(nefratio * (nfastend - nslowend) + nslowend, 2) 
kama = nz(kama[1]) + nsmooth * (src - nz(kama[1]))

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

ma = type == 1 ? sma(src, len) : type == 2 ? ema(src, len) : type == 3 ? vwma(src, len) : type == 4 ? dema : type == 5 ? tema : type == 6 ? kama : type == 7 ? center : 0

plot(ma, color = blue, linewidth = 3, transp = 0)

trend = anti == false and close > ma ? 1 : anti == false and close < ma ? -1 : low > ma ? 1 : high < ma ? -1 : trend[1]

longCondition = trend == 1 and trend[1] == -1
if (longCondition)
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na)

shortCondition = trend == -1 and trend[1] == 1
if (shortCondition)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na)
    
    
    
    

Plus de