L'oscillateur stochastique intraday avec stratégie de croisement de moyenne mobile double

Auteur:ChaoZhang est là., Date: 2023-10-27 à 17h04
Les étiquettes:

img

Résumé

Cette stratégie combine le double croisement de la moyenne mobile et l'oscillateur stochastique pour identifier les opportunités d'inversion de tendance pour une négociation efficace à court terme.

La logique de la stratégie

La stratégie est basée sur la combinaison du double croisement de la moyenne mobile et de l'oscillateur stochastique.

La double moyenne mobile se compose d'une moyenne mobile rapide, d'une moyenne mobile lente et d'une moyenne mobile ultra-rapide. Lorsque la moyenne mobile rapide dépasse la moyenne mobile lente, c'est un signal d'achat. Lorsque la moyenne mobile rapide dépasse la moyenne mobile lente, c'est un signal de vente. La double moyenne mobile peut identifier des points d'inversion de tendance à moyen terme.

L'oscillateur stochastique contient les valeurs %K et %D. %K montre où la clôture actuelle est relative aux prix les plus élevés et les plus bas des N derniers jours. %D est la moyenne mobile simple de %K pour les jours M. Les valeurs supérieures à 80 signifient des niveaux de surachat et les valeurs inférieures à 20 signifient des niveaux de survente. L'oscillateur stochastique peut identifier les zones de surachat/survente à court terme.

Cette stratégie combine le double MA crossover et l'oscillateur stochastique. Elle recherche les signaux d'inversion de tendance du double MA crossover lorsque le stochastique montre des niveaux de surachat/survente. Elle vise à capter les inversions de tendance à court terme.

Analyse des avantages

Les avantages de cette stratégie:

  1. Combinaison d'un double croisement MA et d'un oscillateur stochastique pour identifier à la fois les renversements de tendance à moyen et à court terme.

  2. Utilisation de signaux stochastiques de surachat/survente pour sélectionner des opérations de renversement croisées à double MA plus efficaces.

  3. Des règles commerciales claires et faciles à mettre en œuvre.

  4. Paramètres de temps et de mois de négociation réglables, adaptés à différents produits et périodes.

  5. Arrêter les pertes pour contrôler les risques.

Analyse des risques

Les risques de cette stratégie:

  1. Double MA peut avoir de fausses ruptures. Stochastique peut avoir des divergences invalide taureau / ours, conduisant à de mauvais signaux de trading. Paramètres d'ajustement fin ou ajouter d'autres indicateurs pour la confirmation de combo.

  2. Basé uniquement sur des indicateurs techniques sans tenir compte des fondamentaux.

  3. Difficile de déterminer le moment exact de l'inversion de MA, peut avoir des problèmes d'arrêt trop serré ou trop large.

  4. Optimiser les paramètres pour différents produits et délais par le backtesting.

  5. Convient uniquement pour les transactions à court terme, pas pour les détentions à long terme.

Directions d'optimisation

La stratégie peut être optimisée sous plusieurs aspects:

  1. Testez plus de combinaisons d'indicateurs comme KDJ, MACD, etc. pour améliorer la validité du signal.

  2. Ajoutez une analyse du volume des transactions pour éviter de fausses ruptures.

  3. Optimiser les paramètres de double MA pour identifier des points d'inversion plus précis.

  4. Optimiser la stratégie de stop loss pour réduire les risques d'être arrêté.

  5. Ajouter des modules de contrôle des risques liés aux événements économiques pour éviter les effets des événements majeurs.

  6. Utilisez des techniques d'apprentissage automatique pour optimiser automatiquement les paramètres pour une meilleure adaptabilité.

  7. Tests de retour sur plus de produits et de délais pour trouver les meilleures applications.

Conclusion

Cette stratégie se négocie à des points d'inversion de tendance à moyen terme identifiés par le double MA crossover et les divergences stochastiques taureau/ours. Par rapport à l'utilisation d'un seul indicateur, elle peut améliorer la rentabilité du commerce avec des règles claires. Mais elle comporte également des risques qui nécessitent une optimisation des paramètres et des stop-loss, et plus de filtres et de contrôles des risques. Dans l'ensemble, c'est une stratégie de trading à court terme fiable et à moyenne fréquence.


/*backtest
start: 2022-10-26 00:00:00
end: 2023-10-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title="Intraday Stochiastic Strategy", shorttitle="Intraday Stochiastic Strategy", overlay=true, initial_capital = 1000)
//WORKS FOR BTCUSD M30
//OBVERVED GOOD PERFORMANCES FOR SELL MODE M15 : US30USD / UK100GBP / JP225USD / SPX500USD / BCOUSD / EURGBP
//Best Forex Hours are 7-21
//0 is Long Position
//1 is Short Position
//2 No position
mode=input(1, maxval=2, title="Mode")
lossLimit=input(10000, maxval=10000, title="Loss Limit")
hourStart=input(2, maxval=24, title="Hour Start")
hourStop=input(13, maxval=24, title="Hour Stop")

//Month selected for back testing. 0 is maximum number of months
monthSelected = input(0, maxval=12, title="Month Selected")

/////////////////////////////////////////////////

fast = 20, slow = 50, ultraSlow = 200
fastMA = sma(close, fast)
slowMA = sma(close, slow)
ultraSlowMA = sma(close, ultraSlow)

colorFast = red
colorSlow = black
colorUltraSlowMA = purple

if(timeframe.period == "1" or timeframe.period == "3" or timeframe.period == "5" or timeframe.period == "15" or timeframe.period == "30" or timeframe.period == "45" or timeframe.period == "60" or timeframe.period == "120" or timeframe.period == "180" or timeframe.period == "240")
    fastMA := ema(close, fast)
    slowMA := ema(close, slow)
    ultraSlowMA := ema(close, ultraSlow)
    colorFast := orange
    colorSlow := gray
    colorUltraSlowMA := blue

p1 = plot(fastMA, color=colorFast)
p2 = plot(slowMA, color=colorSlow, linewidth=2)  
p3 = plot(ultraSlowMA, color=colorUltraSlowMA, linewidth=3)

fill(p1, p2, color = fastMA > slowMA ? green : red)

////////////////////////////////////////////////

ema150 = 200
ema150MA = ema(close, ema150)

smooth = input(3, minval=1), K = input(14, minval=1), D=input(3,minval=1)
hh=highest(high,K)
ll=lowest(low,K)
k = sma((close-ll)/(hh-ll)*100, smooth)
d = sma(k, 3)
//plot(k, color=blue)
//plot(d, color=red)
//h0 = hline(80)
//h1 = hline(20)
//fill(h0, h1, color=purple, transp=95)


//plot(hour*100, color=red, linewidth=2)

stochiasticHigh = 80
stochiasticLow = 20

data = close < ema150MA and k>stochiasticHigh and d>stochiasticHigh and close>open
plotshape(data, style=shape.triangledown, location=location.belowbar, color=red)

data2 = close > ema150MA and k<stochiasticLow and d<stochiasticLow and close<open
plotshape(data2, style=shape.triangleup, location=location.abovebar, color=green)

isData = 0
isData := isData[1]

    
if(isData == 0)
    if(data)
        if(mode==1 and hour>hourStart and hour<hourStop and (monthSelected==0 or month==monthSelected)) //DOW hours : 2-13
            strategy.entry("SCALP SHORT", strategy.short)  
            isData := 1
else
    if(k<stochiasticLow and d<stochiasticLow)
        if(mode==1)
            strategy.close_all(when = true)
        isData := 0
        
isData2 = 0
isData2 := isData2[1]
    
if(isData2 == 0)
    if(data2)
        if(mode==0 and hour>hourStart and hour<hourStop and (monthSelected==0 or month==monthSelected))
            strategy.entry("SCALP LONG", strategy.long)  
            isData2 := 1
else
    if(k>stochiasticHigh and d>stochiasticHigh)
        if(mode==0)
            strategy.close_all(when = true)
        isData2 := 0

strategy.exit("STOP LOSS", "SCALP LONG", loss=lossLimit)
strategy.exit("STOP LOSS", "SCALP SHORT", loss=lossLimit) 

Plus de