Cette stratégie est développée sur la base de l'indicateur StochRSI. La stratégie utilise principalement l'indicateur StochRSI pour juger des situations de surachat et de survente. Combiné avec l'indicateur RSI pour filtrer certains faux signaux, allez court lorsque l'indicateur StochRSI montre une zone de surachat et allez long lorsqu'il montre une zone de survente pour réaliser des bénéfices.
Cette stratégie applique principalement l'indicateur StochRSI pour juger des zones de surachat et de survente sur le marché. L'indicateur StochRSI se compose de la ligne K et de la ligne D. La ligne K reflète la position de la valeur actuelle du RSI dans la fourchette de prix du RSI au cours d'une période récente. La ligne D est la moyenne mobile de la ligne K. Lorsque la ligne K traverse au-dessus de la ligne D, c'est une zone de surachat et des positions longues peuvent être prises. Lorsque la ligne K tombe en dessous de la ligne D, c'est une zone de survente et des positions courtes peuvent être prises.
Plus précisément, la stratégie calcule d'abord la valeur de l'indicateur RSI de 14 périodes, puis applique l'indicateur StochRSI sur l'indicateur RSI. Les paramètres de l'indicateur StochRSI sont définis avec une longueur de 14, une période de ligne K lissée de 3 et une période de ligne D lissée de 3. Lorsque la ligne K franchit la zone de survente définie par l'utilisateur (défaut est 1), une position longue sera prise. Lorsque la ligne K tombe en dessous de la zone de surachat définie par l'utilisateur (défaut est 99), une position courte sera prise.
En outre, les paramètres de stop loss et de take profit sont définis dans la stratégie. Le stop loss est par défaut à 10000. Le take profit utilise un stop trailing avec des points de trailing par défaut de 300 et un décalage de 0.
Pour les risques susmentionnés, des paramètres de cycle plus long peuvent être définis ou envisagés en combinaison avec d'autres indicateurs pour filtrer les signaux, ajuster les paramètres de surachat et de survente afin de les adapter à différents marchés et tester différents paramètres de stop loss et de prise de profit.
Cette stratégie se base sur les zones de surachat et de survente jugées par l'indicateur StochRSI. Par rapport à l'indicateur RSI unique, StochRSI combine l'idée de KDJ et peut juger plus précisément les points tournants. Dans le même temps, les faux signaux sont filtrés par RSI et les risques sont contrôlés par stop loss et take profit. Il y a encore une grande marge d'optimisation, il peut être combiné avec d'autres indicateurs ou paramètres optimisés.
/*backtest start: 2023-11-06 00:00:00 end: 2023-12-06 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version= 2 strategy("STOCHRSI JURE", overlay=false) lengthrsi = input(10) overSold = input( 1 ) overBought = input(99) call_trail_stop = input(300) call_trail_offset = input(0) call_sl = input(10000) price = ohlc4 vrsi = rsi(price, lengthrsi) smoothK = input(3, minval=1) smoothD = input(3, minval=1) lengthRSI = input(14, minval=1) lengthStoch = input(14, minval=1) src = input(close, title="RSI Source") rsi1 = rsi(src, lengthRSI) k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK) d = sma(k, smoothD) plot( k, color=blue, linewidth=1, title="K") plot( d, color=red, linewidth=1, title="D") if (crossover(k, overSold) ) strategy.entry("BUY", strategy.long, stop=close, oca_name="TREND", comment="BUY") strategy.exit("BUY EXIT", "BUY", trail_points=call_trail_stop, trail_offset=call_trail_offset, loss = call_sl) if (crossunder(k, overBought) ) strategy.entry("SELL", strategy.short,stop=close, oca_name="TREND", comment="SELL") strategy.exit("SELL EXIT", "SELL", trail_points=call_trail_stop, trail_offset=call_trail_offset, loss = call_sl) //if ( ( crossover(k,d)) and ( (vrsi<overSold) or crossover(vrsi,overSold) ) and year >= yearfrom and year <= yearuntil and month>=monthfrom and month <=monthuntil and dayofmonth>=dayfrom and dayofmonth < dayuntil) // strategy.entry("BUY", strategy.long, stop=close, oca_name="TREND", oca_type=strategy.oca.cancel, comment="BUY") //else // strategy.cancel(id="BUY") //if ( ( crossunder(k,d) ) and ( (vrsi >overBought) or crossunder(vrsi,overBought) ) and year >= yearfrom and year <= yearuntil and month>=monthfrom and month <=monthuntil and dayofmonth>=dayfrom and dayofmonth < dayuntil ) // strategy.entry("SELL", strategy.short,stop=close, oca_name="TREND", oca_type=strategy.oca.cancel, comment="SELL") //else // strategy.cancel(id="SELL")