Cette stratégie combine les moyennes mobiles et les indicateurs Stoch dans un système de négociation quantitatif avec des capacités à la fois de suivi des tendances et de détection de surachat/survente.
La logique de la stratégie:
Calculer l'EMA à long terme et l'EMA à court terme pour déterminer la direction de la tendance.
Calculer les valeurs des stocks K et D pour identifier les niveaux de surachat/survente.
Quand CLOSE dépasse MA, et que Stoch K&D est au-dessus de la ligne de surachat, passez long.
Lorsque CLOSE dépasse la EMA, et que Stoch K&D est en dessous de la ligne de survente, passez court.
Utilisez COLOR pour marquer la direction commerciale déterminée.
Les avantages:
Les deux MAs améliorent la précision de la tendance et évitent les faux signaux.
Stoch identifie les zones d'achat/de vente à forte probabilité.
La combinaison d'indicateurs améliore la fiabilité grâce à la vérification.
Les risques:
Un mauvais réglage des paramètres provoque des signaux excessifs ou des incohérences.
Les deux MAs et Stoch peuvent retarder, provoquant des entrées prématurées ou retardées.
Plus d'indicateurs signifie plus de complexité malgré une fiabilité améliorée.
En résumé, cette stratégie consiste à négocier quantitativement en utilisant les MA pour la tendance et les stocks pour les niveaux de surachat / survente. Avec une optimisation robuste des paramètres, elle peut améliorer la stabilité et la fiabilité du système.
/*backtest start: 2023-08-12 00:00:00 end: 2023-09-11 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 // strategy("PMB2", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 20, initial_capital=1000, currency=currency.USD) //study(title="PMB2", overlay=true) l_ma = input(50, title="MA (green)", type=input.integer) l_ema = input(25, title="EMA (red)", type=input.integer) MA = sma(close,l_ma) EMA = ema(close,l_ema) plot(MA, color=color.green) plot(EMA, color=color.red) //STOCH(14,3,3) length = input(20, minval=1, title="STOCH - K") smoothK = input(2, minval=1, title="STOCH - D") smoothD = input(2 , minval=1, title="STOCH - Smooth") StkLong= input(50 , minval=1, maxval=100, title="Long when Close > MA and Stoch > ") StkShort= input(80 , minval=1, maxval=100, title="Short when Close < EMA and Stoch < ") k = sma(stoch(close, high, low, length), smoothK) d = sma(k, smoothD) //plot(k, color=color.blue, title="STOCH - K") //plot(d, color=color.orange, title="STOCH - D") //band180 = hline(80, title="STOCH - Banda superior") //band120 = hline(20, title="STOCH - Banda superior") //band100 = hline(50, color=color.gray, editable=false, linestyle=hline.style_solid) //fill(band180, band120, color=color.gray, transp=75, title="STOCH - Fundo") BTStartY = input(title="Strategy Test Start Year", type=input.integer, defval=2019, minval=2010, maxval=2100) BTStartM = input(title="Strategy Test Start Month", type=input.integer, defval=1, minval=1, maxval=12) BTStartD = input(title="Strategy Test Start Day", type=input.integer, defval=1, minval=1, maxval=31) BTStopY = input(title="Strategy Test Stop Year", type=input.integer, defval=2019, minval=2010, maxval=2100) BTStopM = input(title="Strategy Test Stop Month", type=input.integer, defval=12, minval=1, maxval=12) BTStopD = input(title="Strategy Test Stop Day", type=input.integer, defval=31, minval=1, maxval=31) // set up min and max date for strategy test TMin = timestamp(BTStartY, BTStartM, BTStartD, 00, 00) TMax = timestamp(BTStopY, BTStopM, BTStopD, 00, 00) InTime = true bool long = false, short = false, trade = false trade := trade[1] long := long[1] short := short[1] if (crossover(close, MA) and k > StkLong and d > StkLong) // "LONG!" //if (close > MA and k > StkLong and d > StkLong) // "LONG!" short := false long := true trade := true // LONG if (crossunder(close, EMA) and k < StkShort and d < StkShort) // "SHORT!"" //if (close < EMA and k < StkShort and d < StkShort) // "SHORT!"" long := false short := true trade := false // SHORT //bgcolor(FL > SH ? color.green : FH < SL ? color.red : na, transp=80) bgcolor(trade ? color.green : color.red, transp=90) //alertcondition((crossover(close, MA) and k > 50 and d > 50) , title='Buy', message='Buy') //alertcondition((crossunder(close, EMA) and k > 80 and d > 80) , title='Sell', message='Sell') if ((crossover(close, MA) and k > StkLong and d > StkLong) and InTime) //if ((close > MA and k > StkLong and d > StkLong) and InTime) strategy.entry("Long", strategy.long) if ((crossunder(close, EMA) and k < StkShort and d < StkShort) and InTime) //if ((close < EMA and k < StkShort and d < StkShort) and InTime) strategy.entry("Short", strategy.short)