Эта стратегия использует комбинацию индикаторов RSI в разные временные рамки, чтобы определить, является ли текущий рынок перекупленным или перепроданным, и объединяет взаимосвязь между ценой и скользящей средней для генерации сигналов покупки и продажи.
Вычислить значения RSI 5-минутных, 15-минутных и 1-часовых временных рамок. Когда 5-минутный, 15-минутный и 1-часовой RSI одновременно находятся ниже 25, он рассматривается как состояние перепродажи и генерирует сигнал покупки. Когда 5-минутный, 15-минутный и 1-часовой RSI одновременно находятся выше 75, он рассматривается как состояние перекупки и генерирует сигнал продажи.
Если цена ниже скользящей средней, генерируется сигнал покупки. Если цена выше скользящей средней, генерируется сигнал продажи.
На основе текущей позиции устанавливается начальный размер сделки и правила пирамиды: 2 контракта для первой записи, а затем каждый раз добавляется 1 контракт, пока позиция не достигнет 2 контрактов.
Стоп-лосс запускается, когда убыток достигает 3%.
Использование индикаторов RSI на нескольких временных отрезках для определения условий перекупа и перепродажи улучшает надежность сигнала.
Объединение скользящей средней генерирует дополнительные торговые сигналы и расширяет торговые возможности.
Установка контроля размеров позиций и коэффициента прибыли/убытка для остановки и получения прибыли управляет рисками.
Увеличение с фиксированным количеством расширяет потенциал прибыли.
Риск дивергенции RSI. Цена может продолжать развиваться в течение периода после того, как RSI достигнет порога перекупленности или перепроданности до обратного движения. Слепое следование сигналу RSI может привести к потерям.
Движущийся средний торговый сигнал может вводить в заблуждение. Движущийся средний не может своевременно отслеживать изменение цены во время огромных колебаний цен.
Неправильное размещение позиций и неправильное установление коэффициента прибыли/убытка приводят к неправильному контролю рисков.
Условия пирамиды должны быть установлены разумно, чтобы избежать увеличения потерь.
Корректировать параметры RSI и тестировать различные комбинации периодов, чтобы найти более надежные сигналы перекупленности/перепроданности.
Испытать различные скользящие средние в качестве вспомогательных торговых сигналов или других технических индикаторов.
Оптимизировать размер позиций и правила стоп-лосса/приобретения прибыли для создания более научных механизмов контроля рисков.
Оптимизируйте условия пирамиды, чтобы предотвратить увеличение потерь.
Эта стратегия использует RSI в нескольких временных рамках для определения потенциала тренда и достижения более высокой ставки выигрыша. Дополнительные сигналы генерируются с помощью скользящих средних для расширения торговых возможностей. Риск управляется с помощью размещения позиций, стоп-лосса / прибыли и фиксированной пирамиды количества.
/*backtest start: 2023-09-29 00:00:00 end: 2023-10-29 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("5M_RSI_Strategy", overlay=true, pyramiding = 1) len =14 Initial_Trade_Size = 2 up = rma(max(change(close), 0), len) down = rma(-min(change(close), 0), len) rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down)) RSI_1h = request.security(syminfo.tickerid, "60", rsi) RSI_3h = request.security(syminfo.tickerid, "180", rsi) RSI_15m = request.security(syminfo.tickerid, "15", rsi) RSI_5m = request.security(syminfo.tickerid, "5", rsi) RSI_1m = request.security(syminfo.tickerid, "1", rsi) ema21_5 = ema(request.security(syminfo.tickerid, "5", close), 21) ema21_15 = ema(request.security(syminfo.tickerid, "15", close), 21) //(RSI_3h<=25) and (RSI_1h<=25) and (RSI_15m<=25) and Positive = ((RSI_5m<=25) and (RSI_15m<=25) and (RSI_1h<=25))?true:false //alertcondition(Positive, title='POS', message='POS') //plotshape(Positive, style=shape.triangleup,location=location.belowbar, color=green,size =size.tiny) Negative = (( RSI_5m>=75) and ( RSI_15m>=75) and ( RSI_1h>=75))?true:false //alertcondition(Negative, title='NEG', message='NEG') //plotshape(Negative, style=shape.triangledown,location=location.abovebar, color=red,size=size.tiny) Positive and Negative and lastordersize = abs(strategy.position_size)>=Initial_Trade_Size?abs(strategy.position_size):Initial_Trade_Size //lastordersize =1 // and ((ema21_15-low)/ema21_15) > 0.077 //Adding to position rules if (abs(strategy.position_size) >= Initial_Trade_Size and (abs(close - strategy.position_avg_price)/abs(strategy.position_avg_price)>0.03)) if(strategy.position_avg_price > close and strategy.position_size > 0) strategy.entry("Add", strategy.long , qty = lastordersize , when = true) if(strategy.position_avg_price < close and strategy.position_size < 0) strategy.entry("Add", strategy.short, qty = lastordersize , when = true) if (strategy.position_size == 0) if (Positive or ((ema21_5-low)/ema21_5) > 0.07) strategy.entry("1St Entry", strategy.long , qty = lastordersize , when = true) // and ((high-ema21_15)/ema21_15) > 0.077 if (Negative or ((high-ema21_5)/ema21_5) > 0.07) strategy.entry("1St Entry", strategy.short, qty = lastordersize , when = true) //lastordersize := lastordersize * 2 //or (strategy.openprofit / abs(strategy.position_size * close))>=0.01 if(cross(ema21_5, high) or cross(ema21_5, low)) strategy.close_all()