Использование стратегии двунаправленного прорыва RSI


Дата создания: 2023-12-27 14:33:15 Последнее изменение: 2023-12-27 14:33:15
Копировать: 0 Количество просмотров: 974
1
Подписаться
1623
Подписчики

Использование стратегии двунаправленного прорыва RSI

Обзор

Двухсторонняя стратегия RSI-прорыва - это алгоритмическая торговая стратегия, которая использует индикатор RSI для определения точек обратной точки цены. Она сравнивает индикатор RSI с установленными верхними и нижними отклонениями, чтобы определить, превышает ли рынок перекуп и посылает торговый сигнал.

Стратегический принцип

Эта стратегия основана на RSI. RSI рассчитывается на основе изменений в цене закрытия в течение определенного периода, который отражает покупательскую способность акций. Когда RSI пересекает установленную верхнюю отметку ((по умолчанию 75), означает, что акция входит в зону перекупа; когда RSI пересекает установленную нижнюю отметку ((по умолчанию 25), означает, что акция входит в зону перепродажи.

Правило стратегического суждения:

  1. Если RSI достигнет отметки, то следует сделать пробел.
  2. Если RSI пересекает порог, делайте больше.
  3. Прямое положение после остановки или остановки.

Его логика торговли проста и понятна, референсные параметры установлены разумно, конфигурируемое пространство большое, подходящее для использования для захвата больших тенденций в ситуации.

Анализ преимуществ

Эта стратегия имеет следующие преимущества:

  1. Логика проста, ее легко понять и реализовать.
  2. Настройка референтных параметров является разумной и может быть настроена индивидуально;
  3. Настройка реверсивной логики торгов, гибкая реакция на ситуацию;
  4. Это позволяет эффективно идентифицировать переломные моменты цены и улавливать тенденции.

В целом, эта стратегия имеет разумные параметры, простые в реализации, может эффективно определять ценовые повороты с помощью показателей RSI, подходит для хранения больших тенденций в средней и долгой линии, является простой в освоении и использовании количественной стратегией.

Анализ рисков

Несмотря на простоту и надежность этой стратегии, мы не можем игнорировать ее потенциальные риски:

  1. RSI имеет большую вероятность подать ошибочный сигнал. RSI не может точно предсказать обратную сторону цены и может быть ошибочным.
  2. Вероятность последовательных остановок в тренде. Показатель RSI не может различить нормальные корректировки диапазона от обратного тренда.
  3. Потери в шоковых ситуациях выше. RSI не может эффективно оценить шоковый тренд, и в этой среде убытки стратегии увеличиваются.

Чтобы контролировать риски, нужно обратить внимание на следующие моменты:

  1. Применение соответствующих параметров для предотвращения ошибочных вычислений;
  2. Повышение точности в сочетании с другими индикаторами, подтверждающими торговые сигналы;
  3. Повышение коэффициента остановки и уменьшение однократных остановок;
  4. Внимание, избегайте рискованных сделок.

Направление оптимизации

Учитывая, что данная стратегия в основном рискует обернуться ошибочным суждением и потерять при шокирующих событиях, мы можем оптимизировать ее в следующих аспектах:

  1. Фильтрация сигналов в сочетании с другими показателями. Такие показатели, как KDJ, MACD, могут играть фильтрующую роль, чтобы избежать ошибочного суждения.
  2. Увеличение условного однократного стоп-массива. Надлежащее увеличение однократного стоп-массива помогает стратегии работать с большим трендом.
  3. Ограничение на частоту открытия позиций. Включение логического порога, чтобы совершать только одну или N сделок в каждый определенный цикл, позволяет контролировать слишком плотные открытия позиций.
  4. Настройка оценки состояния рынка. Стратегия оценки работает только в условиях тренда, избегая шокирующих ситуаций, что позволяет значительно оптимизировать соотношение риска и прибыли стратегии.

Подвести итог

Двухсторонняя стратегия RSI-прорыва в целом является простой и практичной количественной стратегией. Она определяет обратную сторону цены с помощью показателя RSI и обеспечивает простое отслеживание тенденции. Несмотря на определенный риск ошибочного суждения, она может быть оптимизирована с помощью корректировки параметров и фильтрации сигнала и играет важную роль в захвате средне-длинных тенденций.

Исходный код стратегии
/*backtest
start: 2023-12-19 00:00:00
end: 2023-12-26 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("RSI Algo", overlay=true)

// Calculate start/end date and time condition
DST = 1 //day light saving for usa
//--- Europe
London = iff(DST==0,"0000-0900","0100-1000")
//--- America
NewYork = iff(DST==0,"0400-1500","0500-1600")
//--- Pacific
Sydney = iff(DST==0,"1300-2200","1400-2300")
//--- Asia
Tokyo = iff(DST==0,"1500-2400","1600-0100")

//-- Time In Range
timeinrange(res, sess) => time(res, sess) != 0

london = timeinrange(timeframe.period, London)
newyork = timeinrange(timeframe.period, NewYork)

time_cond = true


myPeriod = input(defval=14, type=input.integer, title="Period")
myThresholdUp = input(defval=75, type=input.float, title="Upper Threshold")
myThresholdDn = input(defval=25, type=input.float, title="Lower Threshold")
myAlgoFlipToggle = input(defval=false, type=input.bool, title="Imverse Algorthim")
myLineToggle = input(defval=true, type=input.bool, title="Show Lines")
myLabelToggle = input(defval=true, type=input.bool, title="Show Labels")
myRSI=rsi(close, myPeriod)
buy = myAlgoFlipToggle ? falling(myRSI,1) and cross(myRSI, myThresholdDn) : rising(myRSI, 1) and cross(myRSI,myThresholdUp) //and time_cond
sell = myAlgoFlipToggle ? rising(myRSI, 1) and cross(myRSI,myThresholdUp) : falling(myRSI,1) and cross(myRSI, myThresholdDn) //and time_cond
myPosition = 0
myPosition := buy==1 ? 0 : sell==1 or myPosition[1]==1 ? 1 : 0
trendColor = buy ? color.red : sell ? color.green : na
plot(myLineToggle ? buy and myPosition[1]==1 ? low - 0.004: sell and myPosition[1]==0 ? high + 0.004 : na : na, color=trendColor, style=plot.style_line, linewidth=4, editable=false)
plotshape(myLabelToggle ? buy and myPosition[1]==1 ? low - 0.005 : na : na, style=shape.labelup, location=location.absolute, text="Buy", transp=0, textcolor = color.white, color=color.black, editable=false)
plotshape(myLabelToggle ? sell and myPosition[1]==0 ? high + 0.005 : na : na, style=shape.labeldown, location=location.absolute, text="Sell", transp=0, textcolor = color.white, color=color.black, editable=false)

strategy.initial_capital = 50000
    //Calculate the size of the next trade
balance = strategy.netprofit + strategy.initial_capital //current balance
floating = strategy.openprofit          //floating profit/loss
risk = input(2,type=input.float,title="Risk %")/100           //risk % per trade
isTwoDigit = input(false,"Is this a 2 digit pair? (JPY, XAU, XPD...")


stop = input(250, title="stop loss pips")
tp = input(2500, title="take profit pips")
if(isTwoDigit)
    stop := stop/100
    
temp01 = balance * risk     //Risk in USD
temp02 = temp01/stop        //Risk in lots
temp03 = temp02*100000      //Convert to contracts
size = 1
    
strategy.entry("long",1,size,when=buy and myPosition[1]==1 )
strategy.entry("short",0,size,when=sell and myPosition[1]==0)

strategy.exit("exit_long","long",loss=stop, profit=tp)      //Long exit (stop loss)
strategy.exit("exit_short","short",loss=stop, profit=tp)      //Short exit (stop loss)

//strategy.close_all(when= not time_cond)