Двойная стратегия прорыва RSI

Автор:Чао Чжан, Дата: 2023-12-27 14:33:15
Тэги:

img

Обзор

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

Логика стратегии

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

Правила судебного разбирательства:

  1. Когда RSI пересекает верхний порог, перейти на короткий;
  2. Когда RSI пересекает нижний порог, делайте длинный;
  3. Закрыть позицию при достижении стоп-лосса или прибыли.

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

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

Преимущества этой стратегии включают:

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

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

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

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

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

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

  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)


Больше