Estrategia de seguimiento de la reversión del CCTBBO

El autor:¿ Qué pasa?, Fecha: 2023-11-23 13:42:03
Las etiquetas:

img

Resumen general

Esta estrategia se basa en el indicador CCT Bollinger Band Oscillator (CCTBO) desarrollado por Steve Karnish.

Estrategia lógica

La estrategia utiliza el precio alto como los datos de origen para calcular el valor de CCTBBO. El oscilador fluctúa entre -200 y 200, donde 0 representa el precio medio menos 2 desviaciones estándar y 100 es el precio medio más 2 desviaciones estándar. Las señales de negociación se generan cuando el oscilador cruza o cae por debajo de su línea EMA. Específicamente, cuando el oscilador cruza por encima de su línea EMA y la distancia entre ellos es mayor que el valor de margen establecido, se abre una posición larga. Cuando el oscilador cae por debajo de su línea EMA y la distancia es menor que el valor establecido negativo, se abre una posición corta. El tamaño del margen de posición se calcula de acuerdo con el porcentaje establecido. Además, la estrategia utiliza un stop loss basado en el cambio porcentual de precio o el número de movimientos de tick para salir de posiciones.

Análisis de ventajas

  • Utiliza el influyente indicador CCT Bollinger Band Oscillator para reducir las señales falsas
  • La combinación de la línea de la EMA y la condición de margen filtra las señales para evitar operaciones invalidas excesivas durante las oscilaciones
  • Aplica el mecanismo de suspensión de pérdidas para detener las pérdidas de manera oportuna cuando las pérdidas son demasiado grandes

Análisis de riesgos

  • El propio oscilador CCT tiene cierto retraso, por lo que se pierde el mejor momento para las reversiones de precios
  • El valor excesivo del margen y los ajustes de los períodos de EMA demasiado cortos aumentan la frecuencia y el riesgo de las operaciones
  • El riesgo de pérdida se incrementa si el límite de pérdida de seguimiento es demasiado flexible.

Gestión de riesgos:

  • Ajustar el período de la línea EMA, utilizar un período más largo para filtrar
  • Ajustar adecuadamente el valor del margen para equilibrar el riesgo y el rendimiento
  • Reducir el porcentaje de posición para controlar la pérdida única
  • Reducir razonablemente el rango de pérdidas de detención trasera para una detención más rápida

Direcciones de optimización

La estrategia se puede optimizar en los siguientes aspectos:

  1. Para determinar las entradas y salidas, sustituir con otros indicadores de volatilidad como bandas de Bollinger, canales de Keltner, etc.
  2. Añadir otros indicadores de filtrado como MACD, RSI para garantizar la fiabilidad de la señal
  3. Utilice algoritmos de aprendizaje automático para optimizar automáticamente parámetros como el período EMA, los valores de margen, etc.
  4. Añadir mecanismos de posicionamiento de tamaño como la fracción fija, Martingale para controlar el riesgo comercial
  5. Optimización de los mecanismos de detención de pérdidas de seguimiento mediante detenciones de volatilidad o ATR

Resumen de las actividades

En resumen, esta es una estrategia de negociación cuantitativa para identificar las reversiones de precios utilizando el indicador CCT Bollinger Band. Tiene ciertas ventajas pero también margen de mejora. Al optimizar parámetros, agregar filtros, usar ingeniería de características, introducir aprendizaje automático, etc., la estabilidad y rentabilidad de esta estrategia se pueden mejorar aún más.


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

Más.