Estrategia de trading de seguimiento de tendencias y brechas centrales


Fecha de creación: 2023-10-25 18:02:11 Última modificación: 2023-10-25 18:02:11
Copiar: 1 Número de Visitas: 667
1
Seguir
1617
Seguidores

Estrategia de trading de seguimiento de tendencias y brechas centrales

Descripción general

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.

Principio de estrategia

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.

Análisis de las ventajas

  1. 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

  2. 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

  3. Revisar la trayectoria histórica del RSI para evitar más señales falsas

  4. Las transacciones son totalmente automáticas, no requieren intervención humana, y son adecuadas para operaciones algorítmicas.

  5. Los parámetros de la estrategia se pueden ajustar libremente para adaptarse a diferentes variedades de operaciones

  6. Pueden establecer paradas de pérdidas y controlar el riesgo de manera efectiva

Análisis de riesgos

  1. La configuración incorrecta de los parámetros de la banda de Bryn puede causar fallas en el juicio central

  2. Los parámetros del indicador están mal configurados y pueden generar demasiadas señales erróneas

  3. La ruptura fracasó y el precio tuvo que detenerse a tiempo para volver al centro de la franja de Brin.

  4. La falta de liquidez en las variedades comercializadas puede hacer que las brechas no sean efectivas.

  5. Antes de la transacción, verifique si los datos históricos son suficientes para evitar una mala adaptación de la curva.

  6. La necesidad de prestar atención a las horas de transacción para evitar falsos brechas

Dirección de optimización

  1. Optimización de los parámetros de la banda de Bryn para una mayor estabilidad de la central

  2. Pruebas de los diferentes parámetros indicadores para diferentes variedades

  3. Aumentar el control del volumen de operaciones para evitar posiciones individuales excesivas

  4. Aumentar el juicio sobre el horario, operando en horas de negociación primarias

  5. El aumento de algoritmos de aprendizaje automático para generar señales más inteligentes

  6. Accede a más fuentes de datos para conocer la tendencia general del mercado

  7. Aumentar la integración de más indicadores para formar una combinación de indicadores

Resumir

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.

Código Fuente de la Estrategia
/*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)