Estrategias de negociación con osciladores


Fecha de creación: 2023-12-13 14:45:51 Última modificación: 2023-12-13 14:45:51
Copiar: 0 Número de Visitas: 795
1
Seguir
1621
Seguidores

Estrategias de negociación con osciladores

Descripción general

Se trata de una estrategia de inversión basada en varios indicadores técnicos. Se combina con indicadores como el CCI, el índice de movimiento y el RSI para identificar posibles oportunidades de operación de más y de menos. La estrategia emite una señal de negociación cuando el indicador muestra una señal de sobreventa y el precio se correcta.

Principio de estrategia

Las señales de negociación de esta estrategia se derivan de un indicador personalizado, el punto de venta y compra de Edri Points, que tiene en cuenta la intersección de CCI, el indicador de movimiento y el RSI. La lógica específica es:

Condiciones de la señal múltiple:

  1. El indicador de puntos de venta y venta de Edri envía una señal de compra, es decir, el CCI pasa por el eje 0 o el indicador de movimiento pasa por el eje 0 y el RSI está por debajo de la línea de venta por encima.
  2. El precio retrocede o baja por debajo de la EMA de 100 ciclos.

Condiciones de la señal de cabeza vacía:

  1. El indicador de puntos de venta y venta de Edri emite una señal de venta, es decir, el CCI pasa por el eje 0 o el indicador de movimiento pasa por el eje 0 y el RSI es superior al de la línea de compra y venta.
  2. El precio retrocede o se eleva por encima de la EMA de 100 ciclos.

La estrategia también puede configurar la búsqueda de desviaciones habituales, es decir, que el RSI se desvía claramente del precio para generar una señal de negociación.

Cuando se cumplen las señales de negociación, el punto de parada de la estrategia es el precio de entrada + 2 ATR y el punto de parada es el precio de entrada + 4 ATR. Esto permite establecer un rango razonable de parada de pérdida según la volatilidad del mercado.

Análisis de las ventajas

  1. La integración de varios indicadores ayuda a evitar falsas señales de un solo indicador.
  2. El método de negociación inversa es útil para capturar oportunidades de negociación en corto plazo en situaciones de crisis.
  3. El ATR es un método de suspensión de pérdidas y se puede ajustar la posición de acuerdo con la volatilidad del mercado.
  4. Se puede buscar un desvío de las condiciones para evitar la apertura de posiciones en casos de sobrecompra o sobreventa no extremos.

Análisis de riesgos

  1. La configuración incorrecta de los parámetros del indicador puede causar oportunidades de negociación perdidas o generar demasiadas señales erróneas.
  2. El modelo de negociación inversa puede tener pérdidas continuas en la tendencia.
  3. El ATR es retrasado y no se puede actualizar el punto de parada de pérdidas a tiempo en situaciones de cambio rápido.

La solución:

  1. Los parámetros del indicador se analizan y optimizan varias veces para encontrar la combinación óptima de parámetros.
  2. Se puede considerar suspender el uso de la estrategia cuando la tendencia es más fuerte.
  3. En combinación con otros métodos de detención de pérdidas, como la detención móvil o la violación de la detención.

Dirección de optimización

  1. Prueba diferentes combinaciones de parámetros, como el CCI y el ciclo del indicador de movimiento, los parámetros RSI, los múltiplos ATR, etc.
  2. Añadir otras condiciones de filtración auxiliares, como el modelo de precios, los cambios en el volumen de ventas, etc.
  3. Ajuste de la gestión de posiciones, como el establecimiento de la proporción de posiciones según el valor de ATR, etc.
  4. Configuración de las plantillas de parámetros para diferentes variedades y períodos.
  5. Considere la posibilidad de suspender el comercio inverso en el contexto de una tendencia, combinado con un mecanismo de seguimiento de tendencias.

Resumir

La estrategia se aplica principalmente en situaciones de volatilidad, para obtener ganancias más estables mediante la captura de inversiones de líneas cortas en el medio. Ayuda a identificar el fenómeno de estiramiento corto de los precios y a generar señales de negociación basadas en el juicio de varios indicadores.

Código Fuente de la Estrategia
/*backtest
start: 2023-11-12 00:00:00
end: 2023-12-02 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © MagicStrategies

//@version=5
strategy("Reversal Indicator Strategy", overlay = true)

// Input settings
ccimomCross = input.string('CCI', 'Entry Signal Source', options=['CCI', 'Momentum'], tooltip='CCI or Momentum will be the final source of the Entry signal if selected.')
ccimomLength = input.int(10, minval=1, title='CCI/Momentum Length')
useDivergence = input.bool(true, title='Find Regular Bullish/Bearish Divergence', tooltip='If checked, it will only consider an overbought or oversold condition that has a regular bullish or bearish divergence formed inside that level.')
rsiOverbought = input.int(65, minval=1, title='RSI Overbought Level', tooltip='Adjusting the level to extremely high may filter out some signals especially when the option to find divergence is checked.')
rsiOversold = input.int(35, minval=1, title='RSI Oversold Level', tooltip='Adjusting this level extremely low may filter out some signals especially when the option to find divergence is checked.')
rsiLength = input.int(14, minval=1, title='RSI Length')
plotMeanReversion = input.bool(false, 'Plot Mean Reversion Bands on the chart', tooltip='This function doesn\'t affect the entry of signal but it suggests buying when the price is at the lower band, and then sell it on the next bounce at the higher bands.')
emaPeriod = input(200, title='Lookback Period (EMA)')
bandMultiplier = input.float(1.8, title='Outer Bands Multiplier', tooltip='Multiplier for both upper and lower bands')


// 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]

// Entry Conditions
longEntryCondition = ccimomCrossUp and oversoldAgo and (not useDivergence or bullishDivergenceCondition)
shortEntryCondition = ccimomCrossDown and overboughtAgo and (not useDivergence or bearishDivergenceCondition)


// 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


// Plotting
plotshape(longEntryCondition, title='BUY', style=shape.triangleup, text='B', location=location.belowbar, color=color.new(color.lime, 0), textcolor=color.new(color.white, 0), size=size.tiny)
plotshape(shortEntryCondition, title='SELL', style=shape.triangledown, text='S', location=location.abovebar, color=color.new(color.red, 0), textcolor=color.new(color.white, 0), size=size.tiny)

plot(upperBand, title='Upper Band', color=color.new(color.fuchsia, 0), linewidth=1)
plot(meanReversion, title='Mean', color=color.new(color.gray, 0), linewidth=1)
plot(lowerBand, title='Lower Band', color=color.new(color.blue, 0), linewidth=1)

// Entry signal alerts
alertcondition(longEntryCondition, title='BUY Signal', message='Buy Entry Signal')
alertcondition(shortEntryCondition, title='SELL Signal', message='Sell Entry Signal')
alertcondition(longEntryCondition or shortEntryCondition, title='BUY or SELL Signal', message='Entry Signal')

ema100 = ta.ema(close, 100)
plot(ema100, color=color.red)

// Define trading signals based on the original indicator's entry conditions
// Buy if long condition is met and price has pulled back to or below the 100 EMA
longCondition  = longEntryCondition and close <= ema100
// Sell if short condition is met and price has pulled back to or above the 100 EMA
shortCondition = shortEntryCondition and close >= ema100

// Strategy Entries
if longCondition
    strategy.entry("Buy", strategy.long)
if shortCondition
    strategy.entry("Sell", strategy.short)