Cette stratégie utilise l'indicateur RSI pour déterminer si une crypto-monnaie est survendue, et achète lorsque le RSI est inférieur à 30, ce qui est considéré comme survendu.
L'indicateur RSI mesure la vitesse et l'ampleur des variations de prix pour déterminer si un actif est suracheté ou survendu.
Lorsque le RSI tombe en dessous de 30, la stratégie entre dans une position longue, en pariant sur un renversement de tendance.
Une fois la position ouverte, un stop loss et un take profit sont définis. Le stop loss est défini à 1% en dessous du prix d'entrée. Le take profit est défini à 7% au-dessus du prix d'entrée.
Si le prix tombe en dessous du stop loss, la position est fermée.
L'utilisation de l'indicateur de volatilité pour identifier les conditions de survente fournit de bons points d'entrée à des niveaux relativement bas.
Le stop loss serré contrôle le risque par transaction.
Les bénéfices de prise sont bloqués dans les bénéfices de grands mouvements à la hausse.
Cette stratégie a un fort contrôle du tirage et un risque globalement plus faible.
Les signaux de survente du RSI ne conduisent pas toujours à un renversement, les prix pourraient continuer à baisser, conduisant à un stop loss.
Le stop loss peut être trop serré, ce qui conduit à des stops prématurés si le drawdown est important.
Le bénéfice peut être trop important, fermant les bénéfices plus tôt et ne laissant pas les gagnants courir.
La stratégie pourrait faire face à de grandes pertes lors de marchés latéraux agités.
La combinaison du RSI avec d'autres indicateurs tels que le KDJ pourrait améliorer la précision du signal et éviter les faux signaux.
Optimiser les pourcentages de stop loss et de profit basés sur la volatilité des différentes pièces.
Je teste différents paramètres pour trouver des combinaisons optimales.
Optimisation du dimensionnement de la position basée sur les résultats des tests antérieurs.
Dans l'ensemble, il s'agit d'une stratégie de rupture de survente assez robuste. Prendre des positions après la survente des signaux RSI fournit de bons points d'entrée à des prix relativement bas. Les mécanismes de stop loss et take profit aident à contrôler le risque et à verrouiller les bénéfices. Les retraits sont gérables, ce qui le rend approprié pour les avoirs à plus long terme. Les paramètres peuvent être optimisés en fonction des conditions changeantes du marché pour une meilleure performance.
/*backtest start: 2023-09-18 00:00:00 end: 2023-09-25 00:00:00 period: 15m basePeriod: 5m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © brodieCoinrule //@version=4 strategy(shorttitle='Oversold RSI with tight SL',title='Oversold RSI with tight SL Strategy (by Coinrule)', overlay=true, initial_capital = 1000, process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 50, commission_type=strategy.commission.percent, commission_value=0.1) //Backtest dates fromMonth = input(defval = 1, title = "From Month", type = input.integer, minval = 1, maxval = 12) fromDay = input(defval = 1, title = "From Day", type = input.integer, minval = 1, maxval = 31) fromYear = input(defval = 2020, title = "From Year", type = input.integer, minval = 1970) thruMonth = input(defval = 1, title = "Thru Month", type = input.integer, minval = 1, maxval = 12) thruDay = input(defval = 1, title = "Thru Day", type = input.integer, minval = 1, maxval = 31) thruYear = input(defval = 2112, title = "Thru Year", type = input.integer, minval = 1970) showDate = input(defval = true, title = "Show Date Range", type = input.bool) start = timestamp(fromYear, fromMonth, fromDay, 00, 00) // backtest start window finish = timestamp(thruYear, thruMonth, thruDay, 23, 59) // backtest finish window window() => true // create function "within window of time" perc_change(lkb) => overall_change = ((close[0] - close[lkb]) / close[lkb]) * 100 // RSI inputs and calculations lengthRSI = 14 RSI = rsi(close, lengthRSI) oversold= input(30) //Entry strategy.entry(id="long", long = true, when = RSI< oversold and window()) //Exit Stop_loss= ((input (1))/100) Take_profit= ((input (7)/100)) longStopPrice = strategy.position_avg_price * (1 - Stop_loss) longTakeProfit = strategy.position_avg_price * (1 + Take_profit) strategy.close("long", when = close < longStopPrice or close > longTakeProfit and window())