Cette stratégie est appelée
L'idée principale derrière la stratégie est: Calculer d'abord la valeur du RSI, puis construire l'indicateur stochastique RSI basé sur le RSI, à savoir les valeurs K et D. Lorsque la valeur K dépasse la valeur D, un signal d'achat est généré. Lorsque la valeur K dépasse la valeur D, un signal de vente est généré. Pour filtrer les faux signaux, la stratégie introduit également l'indice de taux de changement (RVI) et sa ligne moyenne mobile pour confirmation.
Calculer la valeur du RSI à 14 périodes.
Construire un indicateur stochastique RSI à 14 périodes basé sur le RSI pour obtenir les valeurs K et D (D est la moyenne mobile à 3 périodes de K).
Calculer le RVI à 5 périodes et sa ligne de signal (moyenne mobile du RVI).
Lorsque K traverse au-dessus de D, si RVI > Signal Line et la dernière période
Ouvrir des positions longues ou courtes en fonction des signaux générés.
La combinaison du RSI stochastique et de la double confirmation du RVI peut filtrer efficacement les faux signaux.
L'indicateur RVI peut refléter des conditions de surachat/survente à court terme et évite d'ouvrir des positions à des points extrêmes.
L'indicateur RSI stochastique identifie les zones de surachat/survente. Il utilise la croix dorée/mort de l'indicateur KDJ pour déterminer les points d'entrée.
Les résultats des tests en arrière-plan montrent que cette stratégie a obtenu de bonnes performances sur certaines paires de crypto-monnaies (telles que FCT/BTC).
La mise en place incorrecte d'un stop loss de stratégies de stop trailing similaires peut entraîner un arrêt prématuré.
Une fréquence de signal élevée peut entraîner des frais de négociation excessifs qui doivent être pris en considération.
Les indicateurs KDJ et RVI peuvent générer de faux signaux, entraînant des pertes inutiles.
Les paramètres de stratégie doivent être optimisés pour les différentes paires de négociation.
L'ATR peut être référencé pour définir des niveaux de stop loss.
Optimiser les paramètres RVI et les paramètres RSI stochastiques pour des signaux plus propres.
Ajouter un contrôle de la taille des transactions pour éviter les commandes uniques trop importantes.
Ajouter des mécanismes de filtrage pour éviter d'ouvrir des positions à des niveaux défavorables.
Testez sur différentes paires de crypto-monnaie pour trouver la meilleure solution.
Cette stratégie construit d'abord un RSI stochastique basé sur l'indicateur RSI, puis utilise l'indicateur RVI pour la confirmation, afin de détecter les conditions de surachat/survente à court terme et les positions ouvertes aux points tournants. L'avantage est que la double confirmation peut filtrer les faux signaux. L'inconvénient est le risque de surajustement des paramètres.
/*backtest start: 2022-12-08 00:00:00 end: 2023-12-14 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title="Stochastic RSI", shorttitle="Stoch RSI", overlay = true) Per = input(5, title="Length", minval=1) 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) rvi = sum(swma(close-open), Per)/sum(swma(high-low),Per) sig = swma(rvi) //plot(rvi, color=green, title="RVI") //plot(sig, color=red, title="Signal") //plot(K, title="K") //plot(D, title="D") Dn = K <= D and K > 70 and rvi <= sig and rvi[1] >= sig[1] Up= K >= D and K < 30 and rvi >= sig and rvi[1] <= sig[1] ARROW = Up - Dn plotarrow(ARROW, title="Down Arrow", colordown=red, transp=0, maxheight=10, minheight=10) plotarrow(ARROW, title="Up Arrow", colorup=lime, transp=0, maxheight=10, minheight=10) long = crossover(Up, Dn) short = crossunder(Up, Dn) last_long = long ? time : nz(last_long[1]) last_short = short ? time : nz(last_short[1]) long_signal = crossover(last_long, last_short) short_signal = crossover(last_short, last_long) //plot(long_signal, "BUY", color=green) //plot(short_signal, "SELL", color=red) strategy.entry("BUY", strategy.long, when=long_signal) strategy.entry("SELL", strategy.short, when=short_signal)