Stratégie stochastique à moyenne mobile double

Auteur:ChaoZhang est là., Date: 2024-01-29 11:54:10 Je suis désolé.
Les étiquettes:

img

Résumé

La stratégie stochastique de la moyenne mobile double tente d'identifier les opportunités de trading en utilisant une combinaison d'indicateurs de moyenne mobile et de l'oscillateur stochastique.

La logique de la stratégie

La stratégie repose principalement sur deux indicateurs techniques:

  1. Moyennes mobiles: Il calcule une EMA rapide, une SMA lente et une VWMA lente à l'aide de différents paramètres et génère des signaux de trading lorsque l'EMA rapide traverse la SMA lente.

  2. Oscillateur stochastique: il calcule la valeur %K et considère que le marché est suracheté ou survendu lorsque %K franchit les seuils supérieurs ou inférieurs prédéfinis, ce qui permet de filtrer certains signaux de moyenne mobile.

Plus précisément, la logique de la génération de signaux est la suivante:

  1. Lorsque l'EMA rapide dépasse le niveau de la SMA lente et que %K est inférieur au niveau de survente, passez long. Lorsque l'EMA rapide dépasse le niveau de la SMA lente et que %K est supérieur au niveau de surachat, passez court.

  2. Pour les positions longues existantes, fermer lorsque %K entre à nouveau dans la zone de surachat ou lorsque le prix dépasse le seuil de stop loss.

En combinant les moyennes mobiles et l'oscillateur stochastique, la stratégie tente d'identifier des points de signal de moyenne mobile à forte probabilité pour entrer dans les transactions, tout en utilisant le stochastique pour filtrer certains des faux signaux.

Analyse des avantages

Les principaux avantages de cette stratégie sont les suivants:

  1. La combinaison de plusieurs indicateurs techniques permet un jugement plus complet que l'utilisation d'un seul indicateur.
  2. Le filtrage avec l'oscillateur stochastique évite certains faux signaux.
  3. L'utilisation de multiples moyennes mobiles avec des paramètres mixtes permet des signaux plus robustes.
  4. Le montant de l'obligation de dépôt est calculé à partir de l'indice de dépôt.

Analyse des risques

Il y a aussi des risques:

  1. Les moyennes mobiles peuvent générer de nombreux signaux incertains entraînant plus de fausses entrées; capacité limitée de stop loss.
  2. L'oscillateur stochastique peut également produire des signaux incorrects par lui-même.
  3. L'optimisation des paramètres est nécessaire (par exemple, surachat/survente, moyenne mobile), sinon les performances sont affectées.
  4. Manque d'analyse fondamentale.

Les mesures d'atténuation

  1. Optimiser les paramètres pour trouver la meilleure combinaison de réglages d'indicateur.
  2. Utilisez une position plus petite, à l'échelle.
  3. Incorporer l'analyse fondamentale pour éviter les événements.

Des possibilités d'amélioration

Les principales possibilités d'optimisation sont les suivantes:

  1. Testez et optimisez les paramètres de la moyenne mobile pour trouver l'optimum.
  2. Testez les paramètres stochastiques tels que les zones de surachat/survente pour des réglages optimaux.
  3. Incorporer des indicateurs supplémentaires tels que le volume ou la volatilité pour une logique d'entrée plus riche.
  4. Améliorer la méthodologie des arrêts de perte, par exemple les arrêts de trailing pour réduire le risque.
  5. Améliorer la gestion de l'argent, par exemple la dimensionnement dynamique des positions basé sur l'ATR.
  6. Évitez les événements à risque en utilisant VIX, etc.

Conclusion

La stratégie stochastique des moyennes mobiles doubles utilise un mélange de moyennes mobiles et de l'oscillateur stochastique pour concevoir un système de suivi de tendance robuste, mais présente certaines opportunités d'amélioration autour des paramètres, des arrêts, etc. D'autres raffinements tels que des indicateurs supplémentaires et des optimisations peuvent potentiellement fournir un alpha plus cohérent.


/*backtest
start: 2023-01-22 00:00:00
end: 2024-01-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("TVIX MEAN REV V2 TREND", overlay=true)
length = input(16, minval=1)
OverBought = input(80)
OverSold = input(20)
TradeLong = input (true)
TradeShort = input (true)

OverBoughtClose = input(80)
OverSoldClose = input(20)

smoothK = 3
smoothD = 3
trail_points = input(50)

k = sma(stoch(close, high, low, length), smoothK)
d = sma(k, smoothD)
k2 = sma(stoch(close, high, low, length), smoothK)
d2 = sma(k, smoothD)


// === GENERAL INPUTS ===
// short Ema
maFastSource = input(defval=close, title="Fast EMA Source")
maFastLength = input(defval=1, title="Fast EMA Period", minval=1)
// long Sma
maSlowSource = input(defval=close, title="Slow SMA Source")
maSlowLength = input(defval=100, title="Slow SMA Period", minval=1)
// longer Sma
maSlowerSource = input(defval=close, title="Slower SMA Source")
maSlowerLength = input(defval=30, title="Slower SMA Period", minval=1)

//ATR Stop Loss Indicator by Keith Larson
atrDays = input(7, "ATR Days Lookback")
theAtr = atr(atrDays)
atrModifier = input(5.0, "ATR Modifier")
//plot(atr * atrModifier, title="ATR")

LstopLoss = close - (theAtr * atrModifier)
SstopLoss = close + (theAtr * atrModifier)



// === SERIES SETUP ===
/// a couple of ma's..
maFast = ema(maFastSource, maFastLength)
maSlow = sma(maSlowSource, maSlowLength)
maSlower = vwma(maSlowerSource, maSlowerLength)
rsi = rsi(maSlowerSource, maSlowerLength)

// === PLOTTING ===
fast = plot(maFast, title="Fast MA", color=color.red, linewidth=2, style=plot.style_line, transp=30)
slow = plot(maSlow, title="Slow MA", color=color.green, linewidth=2, style=plot.style_line, transp=30)
slower = plot(maSlower, title="Slower MA", color=color.teal, linewidth=2, style=plot.style_line, transp=30)


// === LOGIC === Basic - simply switches from long to short and vice-versa with each fast-slow MA cross
LongFilter = maFast > maSlow
ShortFilter = maSlow > maFast




BUY=crossover(k, d) and k < OverSold
SELL=crossunder(k, d) and k > OverBought

SELLCLOSE=crossover(k, d) and k < OverSoldClose
BUYCLOSE=crossunder(k, d) and k > OverBoughtClose

Open = open


if not na(k) and not na(d)
    if crossover(k, d) and k < OverSold and LongFilter and TradeLong
        strategy.entry("$", strategy.long, limit = Open, comment="Long")
    
    strategy.close("$",when = crossunder(k, d) and k > OverBoughtClose or open < LstopLoss  )
    ///strategy.close("$",when = open < LstopLoss  )
    
if not na(k) and not na(d)
    if crossunder(k, d) and k > OverBought and ShortFilter and TradeShort
        strategy.entry("$1", strategy.short, limit = Open, comment="S")
        
    strategy.close ("$1", when = crossover(k, d) and k < OverSoldClose or open > SstopLoss  )
    ///strategy.close ("$1", when = open < SstopLoss) 
    
  
        





Plus de