
Основная идея стратегии заключается в сочетании относительно слабых индикаторов (RSI) и технических индикаторов, связанных с Бриндом, для фильтрации двойных торговых сигналов, максимального уменьшения помех от ложных сигналов и улучшения качества сигналов.
Торговые возможности возникают, когда RSI показывает сигналы о перекупке или перепродаже, а также когда цена прорывается или отклоняется в сторону понижения по коридору. Он объединяет преимущества двух различных индикаторов, учитывает статистические характеристики рыночных колебаний и обращает внимание на многообещающую ситуацию участников рынка, чтобы сформировать общую основу для суждения.
В разделе RSI мы одновременно обращаем внимание на два различных цикла RSI, более короткий цикл используется для захвата сигналов о перепродаже, более длинный цикл используется для подтверждения обратного тренда. Когда короткий цикл RSI показывает перепродажу, а длинный цикл RSI показывает обратный тренд, считается, что это создает торговые возможности.
На участке бурин-пояса мы обращаем внимание на то, будет ли цена пробиваться вверх-вниз. Пробивание бурин-пояса вверх-вниз - это точка продажи, а вниз-вниз - точка покупки. В то же время мы также обращаем внимание на то, будет ли цена отклоняться от бурин-пояса, чтобы вовремя уловить возможность поворота.
Когда сигнал RSI и сигнал Brin-band появляются одновременно, мы считаем, что сделка сформировалась, и выпускаем торговые указания.
Риски могут быть избежены и контролированы с помощью оптимизации параметров, соответствующего сокращения позиций и других методов.
Двойная стратегия RSI и BRI позволяет использовать преимущества обоих индикаторов для создания высококачественных сигналов, при условии оптимизации параметров и управления рисками.
/*backtest
start: 2023-11-11 00:00:00
end: 2023-12-04 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Ezieh Str.v2", shorttitle="Ezieh Str.v2", overlay=true, pyramiding=10, currency=currency.USD, slippage=3, commission_type=strategy.commission.cash_per_order, commission_value=0.04, initial_capital=1000)
UseDateFilter = input(title="Enable Date Filter" ,type=input.bool ,defval=false ,group="Date & Time" ,tooltip="Turns on/off date filter")
StartDate = input(title="Start Date Filter" ,type=input.time ,defval=timestamp("1 Jan 2000 00:00 +0000") ,group="Date & Time" ,tooltip="Date & time to start excluding trades")
EndDate = input(title="End Date Filter" ,type=input.time ,defval=timestamp("1 Jan 2100 00:00 +0000") ,group="Date & Time" ,tooltip="Date & time to stop excluding trades")
UseTimeFilter = input(title="Enable Time Session Filter" ,type=input.bool ,defval=false ,group="Date & Time" ,tooltip="Turns on/off time session filter")
TradingSession = input(title="Trading Session" ,type=input.session ,defval="1000-2200:1234567" ,group="Date & Time" ,tooltip="No trades will be taken outside of this range")
In(t) => na(time(timeframe.period, t)) == false
TimeFilter = (UseTimeFilter and not In(TradingSession)) or not UseTimeFilter
DateFilter = time >= StartDate and time <= EndDate
DateTime = (UseDateFilter ? not DateFilter : true) and (UseTimeFilter ? In(TradingSession) : true)
///////////// RSI
L_RSI_Length = input(7 , title="L_Length")
L_RSI_OverSold = input(45 , title="L_OverSold")
S_RSI_Length = input(14 , title="S_Length")
S_RSI_OverBought = input(65 , title="S_OverBought")
price = close
Lvrsi = rsi(price, L_RSI_Length)
Svrsi = rsi(price, S_RSI_Length)
///////////// Bollinger Bands
BBlength = input(title="Bollinger Period Length", type=input.integer, defval=100, minval=2)
BBmult = 2.1 // input(2.0, minval=0.001, maxval=50,title="Bollinger Bands Standard Deviation")
BBbasis = sma(price, BBlength)
BBdev = BBmult * stdev(price, BBlength)
BBupper = BBbasis + BBdev
BBlower = BBbasis - BBdev
source = close
plot(BBbasis, color=color.aqua,title="Bollinger Bands SMA Basis Line")
p1 = plot(BBupper, color=color.silver,title="Bollinger Bands Upper Line")
p2 = plot(BBlower, color=color.silver,title="Bollinger Bands Lower Line")
fill(p1, p2)
///////////// Colors
switch1=input(true, title="Enable Bar Color?")
switch2=input(true, title="Enable Background Color?")
///////////// Condition
LongCondition = crossover(Lvrsi, L_RSI_OverSold) and crossover(close ,BBlower)
ShortCondition = crossunder(Svrsi, S_RSI_OverBought) and crossunder(close,BBupper)
Longexcon = crossunder(low, BBupper)
Shortexcon = crossover(low, BBlower)
qt = round(strategy.equity/price, 3)
///////////// RSI + Bollinger Bands Strategy
if (not na(Lvrsi))
if LongCondition and DateTime
strategy.entry("RSI_BB_L", strategy.long, qty=qt, comment="Long")
else
strategy.cancel(id="RSI_BB_L")
if Longexcon
strategy.close("RSI_BB_L", qty_percent = 100, comment = "L_exit")
if ShortCondition and DateTime
strategy.entry("RSI_BB_S", strategy.short, qty=qt, comment="Short")
else
strategy.cancel(id="RSI_BB_S")
if Shortexcon
strategy.close("RSI_BB_S", qty_percent = 100, comment = "S_exit")
//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)