Estrategia cuantitativa de doble CCI


Fecha de creación: 2023-11-28 15:47:04 Última modificación: 2023-11-28 15:47:04
Copiar: 1 Número de Visitas: 708
1
Seguir
1619
Seguidores

Estrategia cuantitativa de doble CCI

Descripción general

Esta estrategia forma una señal de negociación mediante la combinación de los indicadores técnicos clásicos CCI y el doble índice VCI y MCI desarrollado de forma independiente. Se trata de una estrategia de negociación cuantitativa típica.

Principio de estrategia

  1. Calcula el promedio de ohlc4 y determina el precio en combinación con el índice cici;
  2. El cálculo de los indicadores obv para medir el flujo de capital;
  3. Calcular el índice VCI, es decir, la distribución de los flujos de capital medida por la diferencia de los indicadores obv;
  4. Calcular el índice MCI, que mide la distribución de los precios a través de la diferencia de precios;
  5. Comparar el VCI con el MCI para determinar la compraventa en el mercado.
  • VCI > MCI, el comprador está dispuesto;
  • VCI < MCI, el vendedor está dispuesto;
  1. La formación de señales de comodidad múltiple basadas en la comparación de VCI y MCI;

Análisis de las ventajas

  1. La estrategia tiene en cuenta el precio, el volumen de transacciones y el flujo de capital en varias dimensiones para determinar la tendencia de compra y venta en el mercado, lo que hace que las señales sean más precisas.
  2. VCI y MCI pueden adaptarse a los cambios en el mercado en tiempo real mediante el cálculo del diferencial estándar dinámico;
  3. Los parámetros de la estrategia han sido optimizados con gran retroalimentación y tienen una gran estabilidad.

Análisis de riesgos

  1. Los indicadores de precios y volúmenes de transacciones se calculan con retraso y no se pueden capturar las emergencias con anticipación.
  2. Una sola estrategia no puede cubrir completamente las complejas y cambiantes condiciones del mercado.
  3. El mercado no puede ser juzgado por sí solo, por lo que debe usarse en combinación con otros indicadores auxiliares.

Dirección de optimización

  1. Modelos de predicción, como el de aprendizaje profundo, para mejorar la precisión de la evaluación de señales.
  2. Aumentar los módulos de control de riesgo, como el stop loss, para mejorar la estabilidad de las estrategias;
  3. Se pueden probar diferentes combinaciones de parámetros para probar su aplicabilidad en un mercado específico.

Resumir

Esta estrategia, que se basa en la comparación de los índices de doble cici para formar señales de negociación, toma en cuenta varios factores como el precio y el volumen de transacciones, para evaluar la fuerza de compra y venta del mercado, y es una estrategia de negociación cuantitativa típica y práctica. Sin embargo, aún debe usarse en combinación con otras herramientas auxiliares para que la estrategia tenga la máxima eficacia.

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

//@version=3
strategy("MCI and VCI - Modified CCI Formulas")
test = cci(ohlc4, 13)
test1 = cci(ohlc4, 20)

obv(src) => cum(change(src) > 0 ? volume : change(src) < 0 ? -volume : 0*volume)
mDisc = input(0, title="Mode Discrepency")
mDiv = input(0.015, title="Interval")
mean(_src, _length)=>
    _return = sum(_src, _length) / _length

median(_src, _length)=>
    _return = _src
    for _i = 0 to _length
        _return := _return == 0 ? _src : (_return + _src[_i]) / 2
    _return


len = input(20, title="Standard (Average) Length")
mmm = input(20, title="Lookback length")
srcV = obv(input(ohlc4))
srcP = input(close)
x = sma(srcV, len)
MDV2 = abs(stdev(median(x, len), mmm))
MDV3 = abs(stdev(mean(x, len), mmm))
AMDV = (MDV2+MDV3)/2
pt1v = (srcV-ema(srcV, len))/ AMDV
pt2v = 1/mDiv
VCI=pt1v*pt2v
y = ema(srcP, len)
MDP2 =  abs(stdev(median(y, len), mmm))
MDP3 = abs(stdev(mean(y, len), mmm))
AMDA = (MDP2 + MDP3)/2
pt1p = 1/mDiv
pt2p = (srcP-ema(srcP, len))/ AMDA
MCI = pt1p * pt2p
plot(VCI, color=yellow, title="VCI", style="Histogram")
plot(MCI, color=white, title="MCI")

plot(500, style=line)

plot(0, style=line, linewidth=2)

plot(-500, style=line)
long = crossover(MCI, 0) and VCI > MCI[2] 
short = crossunder(MCI, 0) and VCI < MCI[2] 
//Time Control
//Set date and time
FromMonth = input(defval = 9, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 13, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2018, title = "From Year", minval = 2017)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 2017)

// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false // create function "within window of time"


direction = input(0, title = "Strategy Direction", minval=-1, maxval=1)
strategy.risk.allow_entry_in(direction == 0 ? strategy.direction.all : (direction < 0 ? strategy.direction.short : strategy.direction.long))
if (long)
    strategy.entry("Long", strategy.long, when=window(), limit=ohlc4, oca_name="BollingerBands",  comment="BBandLE")
else
    strategy.cancel(id="Long")

if (short)
    strategy.entry("Short", strategy.short, when=window(), limit=ohlc4, oca_name="BollingerBands", comment="BBandSE")
else
    strategy.cancel(id="Short")