Стратегия торговли по стохастическому показателю RSI
Эта стратегия торгуется на основе перекрестных сигналов от индикатора Stochastic RSI.
Особые правила ввоза:
Введите длинный, когда стохастический RSI пересекает 30
Вход в короткий период, когда стохастический RSI пересекает уровень ниже 70
Дополнительные фильтры ввода:
Долгие операции требуют 9-периодного SMA выше 21-периодного SMA
Шорты требуют 9-периодного SMA ниже 21-периодного SMA
Долгие только ниже VWAP, короткие только выше VWAP
Стратегия использует стоп-лосс и прибыль для управления рисками:
Стоп-лосс установлен на 20 тиков как для длинных, так и для коротких позиций
Приобретение прибыли установлено на 25 тиков как для длинных, так и для коротких.
Ключевым преимуществом является использование стохастического RSI для выявления регионов перекупленности/перепроданности в сочетании с фильтрами SMA и VWAP для снижения ложных сигналов.
/*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)