Stratégie de négociation du RSI stochastique
Cette stratégie est basée sur les signaux croisés de l'indicateur stochastique RSI.
Les règles spécifiques d'entrée sont les suivantes:
Entrer long lorsque le RSI stochastique dépasse 30
Entrer à court lorsque le RSI stochastique dépasse 70
Filtres d'entrée supplémentaires:
Les positions longues nécessitent une SMA de 9 périodes supérieure à la SMA de 21 périodes
Les courts nécessitent une SMA de 9 périodes inférieure à la SMA de 21 périodes
Longs seulement en dessous de VWAP, shorts seulement en dessous de VWAP
La stratégie utilise le stop loss et le take profit pour la gestion des risques:
Stop-loss défini à 20 ticks pour les longs et les courts
Prenez un profit fixé à 25 ticks pour les longs et les courts
L'avantage clé est d'utiliser le RSI stochastique pour identifier les régions surachetées / survendues combinées avec des filtres SMA et VWAP pour réduire les faux signaux.
/*backtest start: 2023-09-03 00:00:00 end: 2023-09-10 00:00:00 period: 1m basePeriod: 1m 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/ // © thedoggwalker //@version=4 strategy("Stochastic RSI Strategy", overlay=true) // Stochastic RSI length = input(14, title="Length") src = input(close, title="Source") smoothK = input(3, title="K") smoothD = input(3, title="D") rsiValue = rsi(src, length) highestRSI = highest(rsiValue, length) lowestRSI = lowest(rsiValue, length) k = (rsiValue - lowestRSI) / (highestRSI - lowestRSI) * 100 d = sma(k, smoothD) // Moving averages maShort = sma(close, 9) maLong = sma(close, 21) // Spread between moving averages spread = maShort - maLong // VWAP vwapValue = vwap(hlc3) // Entry conditions longCondition = crossover(k, 30) and spread > 0 and close < vwapValue shortCondition = crossunder(k, 70) and spread < 0 and close > vwapValue // Entry orders if (longCondition) strategy.entry("Long", strategy.long) if (shortCondition) strategy.entry("Short", strategy.short) // Exit orders // longStopLoss = close - 20 * syminfo.mintick // longTakeProfit = close + 25 * syminfo.mintick // strategy.exit("Exit Long", "Long", stop=longStopLoss, limit=longTakeProfit) // shortStopLoss = close + 20 * syminfo.mintick // shortTakeProfit = close - 25 * syminfo.mintick // strategy.exit("Exit Short", "Short", stop=shortStopLoss, limit=shortTakeProfit)