
La estrategia utiliza el indicador CCI y el indicador de dinámica en combinación con el indicador RSI para identificar la tendencia del mercado, entrar en juego cuando se detecta el fenómeno de saltos en las zonas de sobreventa y sobreventa, y al mismo tiempo utilizar el browning para identificar la tendencia y el retorno a la central. La estrategia puede identificar con eficacia las rupturas y los retrocesos, entrar en juego en la etapa de inicio de la tendencia, y puede adaptarse libremente a las diferentes variedades de operaciones a través de parámetros.
En primer lugar, la estrategia determina las señales de compra y venta a través de la penetración en el eje cero del indicador CCI o el indicador de movimiento por encima y por debajo del eje cero. Al mismo tiempo, se requiere que el indicador RSI se encuentre en la zona de venta por encima de la compra, es decir, que el RSI sea más alto que el 65 para la zona de venta por encima de la compra, y más bajo que el 35 para la zona de venta por encima de la venta. Esto evita que se emita una señal errónea en la zona de venta por encima de la venta por encima de la compra.
Además, la estrategia puede elegir si juzgar la divergencia alcista (alza ligeramente) y la divergencia bajista (desciende ligeramente) del RSI para asegurar que las señales de compra y venta sean más confiables.
Cuando coincide con la señal de compra del CCI o del impulso y el RSI está en la zona de venta por encima, la estrategia determina si el anterior alto y el anterior bajo están por encima del centro de la banda de Brin, y si lo son, produce una señal de compra. Por el contrario, cuando coincide con la señal de venta y el anterior alto y bajo están por debajo del centro de la banda de Brin, produce una señal de venta.
De esta manera, la estrategia utiliza tanto el índice de tendencia como el índice de oscilación para capturar el inicio de la tendencia a tiempo y evitar falsas rupturas utilizando el juicio central. Cuando el precio se desvía de la banda de Brin hacia abajo, la estrategia se aplanará completamente para bloquear las ganancias y evitar la expansión de las retracciones.
La combinación de un índice de tendencia y un índice de oscilación permite entrar al comienzo de una tendencia y evitar posiciones innecesarias en un mercado de oscilación
El uso de la conexión central en la banda de Bryn para saltar como señal de entrada, puede filtrar eficazmente las brechas falsas
Revisar la trayectoria histórica del RSI para evitar más señales falsas
Las transacciones son totalmente automáticas, no requieren intervención humana, y son adecuadas para operaciones algorítmicas.
Los parámetros de la estrategia se pueden ajustar libremente para adaptarse a diferentes variedades de operaciones
Pueden establecer paradas de pérdidas y controlar el riesgo de manera efectiva
La configuración incorrecta de los parámetros de la banda de Bryn puede causar fallas en el juicio central
Los parámetros del indicador están mal configurados y pueden generar demasiadas señales erróneas
La ruptura fracasó y el precio tuvo que detenerse a tiempo para volver al centro de la franja de Brin.
La falta de liquidez en las variedades comercializadas puede hacer que las brechas no sean efectivas.
Antes de la transacción, verifique si los datos históricos son suficientes para evitar una mala adaptación de la curva.
La necesidad de prestar atención a las horas de transacción para evitar falsos brechas
Optimización de los parámetros de la banda de Bryn para una mayor estabilidad de la central
Pruebas de los diferentes parámetros indicadores para diferentes variedades
Aumentar el control del volumen de operaciones para evitar posiciones individuales excesivas
Aumentar el juicio sobre el horario, operando en horas de negociación primarias
El aumento de algoritmos de aprendizaje automático para generar señales más inteligentes
Accede a más fuentes de datos para conocer la tendencia general del mercado
Aumentar la integración de más indicadores para formar una combinación de indicadores
Esta estrategia integra el índice de tendencia y el índice de oscilación, para que pueda entrar en el mercado cuando comience la tendencia. Al mismo tiempo, se puede utilizar el núcleo de la unión de saltos en el cinturón de Brin como señal de entrada, para evitar eficazmente los falsos breaks. Los parámetros de la estrategia se pueden ajustar con flexibilidad para adaptarse a diferentes variedades, con un óptimo efecto de retroalimentación.
/*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)