Стратегия двойного прорыва RSI - это алгоритмическая стратегия торговли, которая определяет точки переворота цен с использованием индикатора RSI. Она генерирует торговые сигналы путем сравнения индикатора RSI с заранее установленными верхними и нижними пороговыми значениями, чтобы определить, является ли рынок перекупленным или перепроданным.
Эта стратегия в основном опирается на индикатор RSI для оценки состояния рынка. Индикатор RSI рассчитывается на основе изменений в цене закрытия за определенный период, отражая импульс покупки и продажи акций. Когда RSI пересекает предыдущий верхний порог (дефолт 75), это указывает на то, что акции вошли в зону перекупки. Когда RSI падает ниже предыдущего нижнего порога (дефолт 25), это указывает на то, что акции вошли в зону перепродажи.
Правила судебного разбирательства:
Его логика торговли проста и ясна, с разумными параметрами ориентировки, большим пространством конфигурации и подходит для улавливания более крупных тенденций на рынке.
Преимущества этой стратегии включают:
В целом, с разумными параметрами ориентировки, простой реализацией и возможностью эффективного определения переворотов цен через RSI, эта стратегия подходит для средне- и долгосрочного отслеживания тенденций и легко понимается и используется как количественная стратегия.
Хотя эта стратегия относительно проста и надежна, мы не можем игнорировать потенциальные риски, с которыми она сталкивается:
Чтобы контролировать риски, мы должны обратить внимание на следующее:
Учитывая основные риски, с которыми сталкивается эта стратегия, - ошибочные оценки и потери на различных рынках, мы можем оптимизировать следующие аспекты:
В общем, двойная стратегия прорыва 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)