
A ideia central da estratégia é a combinação de dois indicadores técnicos, o RSI (indicador relativamente fraco) e o Brin, para filtragem de sinais de dupla negociação, reduzindo ao máximo a interferência de sinais falsos e melhorando a qualidade do sinal.
O indicador RSI cria oportunidades de negociação quando os preços se rompem ou se reajustam para baixo do correio de Bolingbroke. Ele combina as vantagens de dois indicadores diferentes, levando em consideração as características estatísticas das flutuações do mercado e também a situação de falta de disponibilidade dos participantes do mercado, formando uma base de julgamento abrangente.
Na seção RSI, observamos simultaneamente dois indicadores RSI de diferentes períodos, um com um período mais curto usado para capturar sinais de overbought e oversold, e um com um período mais longo usado para confirmar a reversão da tendência. Quando o RSI de curto período mostra um excesso de overbought e o RSI de longo período mostra uma reversão, é considerado uma oportunidade de negociação.
Na seção de Brin, nós nos preocupamos se o preço está se movendo para cima ou para baixo. Se o preço está se movendo para cima, é um ponto de venda. Se o preço está se movendo para baixo, é um ponto de compra. Ao mesmo tempo, nós também nos preocupamos se o preço está se movendo para trás, para que possamos capturar oportunidades de reversão.
Quando os sinais RSI e os sinais de Brin aparecem simultaneamente, consideramos que a oportunidade de negociação se formou e emitimos uma instrução de negociação.
Os riscos podem ser evitados e controlados por meio de otimização de parâmetros, redução apropriada de posições e intervenções humanas.
O RSI e a dupla estratégia de Brinks aproveitam as vantagens de ambos os indicadores para gerar sinais de alta qualidade e obter um retorno estável do investimento, desde que os parâmetros sejam otimizados e o gerenciamento de risco esteja em vigor. A combinação de mais sinais e modelos também é uma direção possível para o futuro.
/*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)