Estrategia de seguimiento de reversiones basada en el oscilador de banda de volatilidad


Fecha de creación: 2023-11-23 13:42:03 Última modificación: 2023-11-23 13:42:03
Copiar: 0 Número de Visitas: 670
1
Seguir
1617
Seguidores

Estrategia de seguimiento de reversiones basada en el oscilador de banda de volatilidad

Descripción general

Esta estrategia se basa en el indicador CCT Bollinger Band Oscillator, desarrollado por Steve Karnish, que permite el comercio inverso mediante la identificación de brechas de precios y la combinación de mecanismos de retiro.

Principio de estrategia

La estrategia utiliza los precios altos como datos de origen y calcula el valor del oscilador de la banda de ondas CCT. El valor del oscilador oscila entre 200 y 200, 0 representa el precio promedio menos 2 veces el diferencial estándar, y 100 representa el precio promedio más 2 veces el diferencial estándar. La estrategia genera una señal de transacción cuando el oscilador cruza o desciende por su línea media EMA.

Análisis de las ventajas

  • El uso de un indicador de vibración de banda de CCT con cierta influencia en el mercado puede reducir las falsas señales
  • La combinación de la línea media de EMA y las señales de filtro de condiciones marginales evita que se produzcan demasiadas transacciones no válidas durante los temblores
  • El uso de un mecanismo de suspensión de pérdidas de retiro, que puede detener los pérdidas en el momento en que las pérdidas son excesivas

Análisis de riesgos

  • El propio oscillador CCT genera un cierto retraso, perdiendo así el momento óptimo para que el precio se invierta
  • El exceso de margen y el exceso de corto período de EMA aumentan la frecuencia de las operaciones y el riesgo
  • El retiro de una suspensión de pérdidas demasiado flexible aumenta el riesgo de pérdidas

Los métodos para controlar el riesgo:

  • Ajustar el ciclo de la línea media del EMA para usar filtros de ciclo más largo
  • Ajuste apropiado del margen para equilibrar riesgos y beneficios
  • Reducir el porcentaje de posiciones para controlar las pérdidas individuales
  • Reducir adecuadamente el rango de retirada de los pérdidas y acelerar la velocidad de los pérdidas

Dirección de optimización

La estrategia puede ser optimizada en los siguientes aspectos:

  1. Reemplazar otros indicadores de fluctuación, como el indicador de la banda de Brin, el canal de Keltner, etc., para determinar el punto de compra y venta
  2. Añadir otros indicadores de filtración, como MACD, RSI, etc., para garantizar la fiabilidad de las señales de negociación
  3. Optimización automática de parámetros con algoritmos de aprendizaje automático, como el ciclo EMA, los valores marginales, etc.
  4. Aumentar los mecanismos de gestión de posiciones, como posiciones de proporción fija, Martingales, etc., para controlar el riesgo de las transacciones
  5. Optimizar el mecanismo de suspensión de pérdidas, utilizando el suspensión de volatilidad o el suspensión de ATR

Resumir

Esta estrategia en su conjunto es una estrategia de comercio cuantitativa basada en el indicador de la banda de fluctuación CCT para determinar la reversión de precios. Tiene ciertas ventajas, pero también hay espacio para mejorar. La estabilidad y la rentabilidad de la estrategia se pueden mejorar aún más mediante la optimización de parámetros, el aumento de indicadores de filtrado, el uso de ingeniería de características e introducción de aprendizaje automático.

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

//@version=2
// This strategy is based on the CCT Bollinger Band Oscillator (CCTBO) 
// developed by Steve Karnish of Cedar Creek Trading and coded by LazyBear.
// Indicator is available here https://www.tradingview.com/v/iA4XGCJW/

strategy("Strategy CCTBBO v2 | Fadior", shorttitle="Strategy CCTBBO v2", pyramiding=0, precision=2, calc_on_order_fills=false, initial_capital=1000, default_qty_type=strategy.percent_of_equity, currency="USD", default_qty_value=100, overlay=false)

length_stddev=input(title="Stddev loopback period",defval=20)
length_ema=input(title="EMA period", defval=2)
margin=input(title="Margin", defval=0, type=float, step=0.1)
price = input(title="Source", defval=high)
digits= input(title="Number of digits",defval=2,step=1,minval=2,maxval=6)
offset = input(title="Trailing offset (0.01 = 1%) :", defval=0.013, type=float, step=0.01)
pips= input(title="Offset in ticks ?",defval=false,type=bool)

src=request.security(syminfo.tickerid, "1440", price)

cctbbo=100 * ( src + 2*stdev( src, length_stddev) - sma( src, length_stddev ) ) / ( 4 * stdev( src, length_stddev ) )

ul=hline(150, color=gray, editable=true)
ll=hline(-50, color=gray)
hline(50, color=gray)
fill(ul,ll, color=green, transp=90)
plot(style=line, series=cctbbo, color=blue, linewidth=2)
plot(ema(cctbbo, length_ema), color=red)

d = digits == 2 ? 100 : digits == 3 ? 1000 : digits == 4 ? 10000 : digits == 5 ? 100000 : digits == 6 ? 1000000 : na

TS = 1
TO = pips ? offset : close*offset*d
CQ = 100
TSP = TS
TOP = (TO > 0) ? TO : na

longCondition = crossover(cctbbo, ema(cctbbo, length_ema)) and cctbbo - ema(cctbbo, length_ema) > margin
if (longCondition)
    strategy.entry("Long", strategy.long)
    strategy.exit("Close Long", "Long", qty_percent=CQ, trail_points=TSP, trail_offset=TOP)


shortCondition = crossunder(cctbbo, ema(cctbbo, length_ema)) and cctbbo - ema(cctbbo, length_ema) < -margin
if (shortCondition)
    strategy.entry("Short", strategy.short)
    strategy.exit("Close Short", "Short", qty_percent=CQ, trail_points=TSP, trail_offset=TOP)