Stratégie de négociation quantitative basée sur StochRSI

Auteur:ChaoZhang est là., Date: 12-07-2023 16h05 et 17 min
Les étiquettes:

img

Résumé

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.

Principe de stratégie

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.

Analyse des avantages

  1. L'utilisation de l'indicateur StochRSI pour déterminer les zones de surachat et de survente est plus fiable que l'indicateur RSI unique
  2. Filtrer les signaux avec RSI évite les fausses ruptures
  3. Définition de mécanismes de stop loss et de prise de profit pour contrôler les risques

Analyse des risques

  1. L'indicateur StochRSI peut présenter de faux signaux
  2. Besoin de définir les paramètres de surachat et de survente raisonnablement, sinon il va causer un dysfonctionnement
  3. Si le point stop-loss est trop petit, il est facile d'être pris au piège.

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.

Directions d'optimisation

  1. Considérez l'utilisation en combinaison avec d'autres indicateurs tels que le MACD, les bandes de Bollinger, etc. pour filtrer les faux signaux.
  2. Tester différents paramètres de cycle pour s'adapter à davantage de conditions de marché
  3. Optimiser le stop-loss et prendre des points de profit par plusieurs backtesting pour trouver les paramètres optimaux

Résumé

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")
    
    
    

Plus de