
A estratégia usa o indicador CCI e o indicador de dinâmica em combinação com o indicador RSI para identificar tendências de mercado, entrando em jogo quando a zona de sobrevenda e venda é detectada, e usando o Brin para identificar tendências e retornar ao centro. A estratégia pode identificar efetivamente rupturas e retrações, entrando em jogo no início da tendência, e pode ser livremente adaptada a diferentes variedades de negociação por meio de parâmetros.
Em primeiro lugar, a estratégia julga os sinais de compra e venda através da passagem do zero do CCI ou do indicador de momentum acima e abaixo do zero. Ao mesmo tempo, o indicador RSI é exigido para estar na zona de superavenda de superavenda, ou seja, o RSI acima de 65 é a zona de superavenda e abaixo de 35 é a zona de superavenda. Isso evita o envio de sinais errados na zona de superavenda não superada.
Além disso, a estratégia pode optar por julgar a divergência bullish ( ligeiramente acima) e a divergência bearish ( ligeiramente abaixo) do RSI para garantir que os sinais de compra e venda sejam mais confiáveis.
Quando os sinais de compra correspondem ao CCI ou ao momentum e o RSI está na zona de oversold, a estratégia julga se os pontos altos e baixos anteriores estão acima do centro da faixa de Brin, e, se assim for, produz um sinal de compra. Por outro lado, quando os sinais de venda correspondem e os pontos altos e baixos anteriores estão abaixo do centro da faixa de Brin, produz um sinal de venda.
Desta forma, a estratégia utiliza simultaneamente o índice de tendência e o índice de choque para capturar o início de uma tendência em tempo hábil, e usa o julgamento central para evitar falsas rupturas. Quando o preço se desvia da faixa de Brin para o lado negativo, a estratégia é totalmente plana para bloquear os lucros e evitar a expansão da retração.
A combinação de um índice de tendência e um índice de turbulência permite entrar no início de uma tendência, evitando posições desnecessárias em mercados turbulentos
Utilizando os núcleos de ligação do cinturão de Brin para saltar para cima como sinal de entrada, pode efetivamente filtrar a falsa brecha
Olhar para a trajetória histórica do RSI para evitar sinais de negociação errados
Transações totalmente automáticas, sem necessidade de intervenção humana, adequadas para transações algorítmicas
Parâmetros de estratégia podem ser ajustados livremente para diferentes variedades de negociação
Capacidade de definir um stop loss e controlar o risco de forma eficaz
A configuração incorreta dos parâmetros da faixa de Bryn pode causar falha de julgamento central
Parâmetros de indicador mal definidos podem gerar muitos sinais errados
A breakout falhou e o preço precisou de um stop loss em tempo para voltar para o centro da faixa de Brin
A falta de liquidez nas variedades negociadas pode prejudicar o sucesso da ruptura
Antes de negociar, verifique se os dados históricos são suficientes para evitar um ajuste de curva ruim
O que você precisa saber sobre o horário de transação para evitar brechas falsas
Optimizar os parâmetros da faixa de Bryn para tornar a central mais estável
Teste dos efeitos de diferentes parâmetros de indicadores em diferentes variedades
Aumentar o controle do volume de transações e evitar posições individuais excessivas
Aumentar o julgamento de períodos de tempo, operando em horários de negociação principais
Aumentar os algoritmos de aprendizagem de máquina para produzir sinais mais inteligentes
Acesso a mais fontes de dados para avaliar tendências globais do mercado
Aumentar a integração de mais indicadores, formando um portfólio de indicadores
Esta estratégia integra o índice de tendência e o índice de oscilação para entrar no mercado quando a tendência começa. Ao mesmo tempo, o uso de um núcleo de junção em uma faixa de brinquedos como sinal de entrada, pode evitar efetivamente a falsa ruptura. Os parâmetros da estratégia podem ser ajustados de forma flexível, adaptados a diferentes variedades, com ótima eficácia de retrocesso.
/*backtest
start: 2022-10-18 00:00:00
end: 2023-10-24 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy(title='BroTheJo Strategy', shorttitle='BTJ', overlay=true)
// Input settings
ccimomCross = input.string('CCI', 'Entry Signal Source', options=['CCI', 'Momentum'])
ccimomLength = input.int(10, minval=1, title='CCI/Momentum Length')
useDivergence = input.bool(false, title='Find Regular Bullish/Bearish Divergence')
rsiOverbought = input.int(65, minval=1, title='RSI Overbought Level')
rsiOversold = input.int(35, minval=1, title='RSI Oversold Level')
rsiLength = input.int(14, minval=1, title='RSI Length')
plotMeanReversion = input.bool(true, 'Plot Mean Reversion Bands on the chart')
emaPeriod = input(200, title='Lookback Period (EMA)')
bandMultiplier = input.float(1.6, title='Outer Bands Multiplier')
// CCI and Momentum calculation
momLength = ccimomCross == 'Momentum' ? ccimomLength : 10
mom = close - close[momLength]
cci = ta.cci(close, ccimomLength)
ccimomCrossUp = ccimomCross == 'Momentum' ? ta.cross(mom, 0) : ta.cross(cci, 0)
ccimomCrossDown = ccimomCross == 'Momentum' ? ta.cross(0, mom) : ta.cross(0, cci)
// RSI calculation
src = close
up = ta.rma(math.max(ta.change(src), 0), rsiLength)
down = ta.rma(-math.min(ta.change(src), 0), rsiLength)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - 100 / (1 + up / down)
oversoldAgo = rsi[0] <= rsiOversold or rsi[1] <= rsiOversold or rsi[2] <= rsiOversold or rsi[3] <= rsiOversold
overboughtAgo = rsi[0] >= rsiOverbought or rsi[1] >= rsiOverbought or rsi[2] >= rsiOverbought or rsi[3] >= rsiOverbought
// Regular Divergence Conditions
bullishDivergenceCondition = rsi[0] > rsi[1] and rsi[1] < rsi[2]
bearishDivergenceCondition = rsi[0] < rsi[1] and rsi[1] > rsi[2]
// Mean Reversion Indicator
meanReversion = plotMeanReversion ? ta.ema(close, emaPeriod) : na
stdDev = plotMeanReversion ? ta.stdev(close, emaPeriod) : na
upperBand = plotMeanReversion ? meanReversion + stdDev * bandMultiplier : na
lowerBand = plotMeanReversion ? meanReversion - stdDev * bandMultiplier : na
// Entry Conditions
prevHigh = ta.highest(high, 1)
prevLow = ta.lowest(low, 1)
longEntryCondition = ccimomCrossUp and oversoldAgo and (not useDivergence or bullishDivergenceCondition) and (prevHigh >= meanReversion) and (prevLow >= meanReversion)
shortEntryCondition = ccimomCrossDown and overboughtAgo and (not useDivergence or bearishDivergenceCondition) and (prevHigh <= meanReversion) and (prevLow <= meanReversion)
// Plotting
oldLongEntryCondition = ccimomCrossUp and oversoldAgo and (not useDivergence or bullishDivergenceCondition)
oldShortEntryCondition = ccimomCrossDown and overboughtAgo and (not useDivergence or bearishDivergenceCondition)
plotshape(oldLongEntryCondition, title='BUY', style=shape.triangleup, location=location.belowbar, color=color.new(color.lime, 0), textcolor=color.new(color.white, 0), size=size.tiny)
plotshape(oldShortEntryCondition, title='SELL', style=shape.triangledown, location=location.abovebar, color=color.new(color.red, 0), textcolor=color.new(color.white, 0), size=size.tiny)
// Strategy logic
if (longEntryCondition)
strategy.entry("Buy", strategy.long)
if (shortEntryCondition)
strategy.entry("Sell", strategy.short)
// Close all open positions when outside of bands
closeAll = (high >= upperBand) or (low <= lowerBand)
if (closeAll)
strategy.close_all("Take Profit/Cut Loss")
// Plotting
plot(upperBand, title='Upper Band', color=color.fuchsia, linewidth=1)
plot(meanReversion, title='Mean', color=color.gray, linewidth=1)
plot(lowerBand, title='Lower Band', color=color.blue, linewidth=1)