Эта стратегия объединяет RSI и скользящие средние для тенденционного уклонения и добавляет последующие остановки для управления рисками.
Логика стратегии:
Вычислить RSI, чтобы судить о уровнях перекупленности/перепроданности.
Вычисляет быстрые и медленные средние, золотой крест сигнализирует бычий тренд.
Устойчивый рост RSI также сигнализирует о длинном входе.
После входа, установите остановку потерь и возьмите линию прибыли.
Остановить потерю ниже цены, взять прибыль выше.
Выйти, когда цена достигнет остановки или прибыли.
Преимущества:
РСИ избегает погони за вершинами и дном.
Движущиеся средние определяют направление тренда.
Задержки/прибыль динамически адаптируются к цене.
Риски:
RSI и MAs склонны к ложным сигналам на различных рынках.
Ширина задней остановки требует осторожной калибровки, слишком широкая или слишком узкая проблематична.
Невозможно ограничить размер потерь, рискует большими потерями.
В целом, эта стратегия сочетает в себе RSI и MAs, затем использует последующие остановки для управления рисками.
/*backtest start: 2022-09-06 00:00:00 end: 2023-09-12 00:00:00 period: 4d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("RSI and MA Strategy with Trailing Stop Loss and Take Profit", overlay=true, initial_capital=1000, process_orders_on_close=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.1) showDate = input(defval=true, title='Show Date Range') timePeriod = time >= timestamp(syminfo.timezone, 2022, 1, 1, 0, 0) notInTrade = strategy.position_size <= 0 //==================================Buy Conditions============================================ //RSI length = input(14) rsi = ta.rsi(close, length) buyCondition1 = rsi > 50 //MA SMA9 = ta.sma(close, 9) SMA50 = ta.sma(close, 50) SMA100 = ta.sma(close, 100) plot(SMA9, color = color.green) plot(SMA50, color = color.orange) plot(SMA100, color = color.blue) buyCondition2 = SMA9 > SMA50//ta.crossover(SMA9, SMA100) //RSI Increase increase = 5 buyCondition3 = (rsi > rsi[1] + increase) if (buyCondition1 and buyCondition2 and buyCondition3 and timePeriod) //and buyCondition strategy.entry("Long", strategy.long) //==================================Sell Conditions============================================ //Trailing Stop Loss and Take Profit longTrailPerc = input.float(title='Trail Long Loss (%)', minval=0.0, step=0.1, defval=2) * 0.01 shortTrailPerc = input.float(title='Trail Short Loss (%)', minval=0.0, step=0.1, defval=1) * 0.01 longStopPrice = 0.0 shortStopPrice = 0.0 longStopPrice := if strategy.position_size > 0 stopValue = close * (1 - longTrailPerc) math.max(stopValue, longStopPrice[1]) else 0 shortStopPrice := if strategy.position_size < 0 stopValue = close * (1 + shortTrailPerc) math.min(stopValue, shortStopPrice[1]) else 999999 strategy.exit(id="Exit", stop = longStopPrice, limit = shortStopPrice)