Estrategia de optimización de trading dinámico con combinación de múltiples indicadores

CCI RSI MFI WMA IFT
Fecha de creación: 2024-12-20 16:31:21 Última modificación: 2024-12-20 16:31:21
Copiar: 1 Número de Visitas: 397
1
Seguir
1617
Seguidores

Estrategia de optimización de trading dinámico con combinación de múltiples indicadores

Descripción general

La estrategia es un sistema de negociación basado en una combinación de varios indicadores técnicos, que construye un marco integral de análisis de mercado mediante la integración de cuatro indicadores principales, como CCI, RSI, indicadores aleatorios (estocásticos) y MFI, junto con el procesamiento suave de índices. La estrategia utiliza la conversión inversa de Fisher (IFT) para normatizar la salida de indicadores y, finalmente, generar decisiones de negociación a través de la síntesis de señales.

Principio de estrategia

El núcleo de la estrategia es proporcionar una señal de negociación más confiable a través de la fusión de múltiples indicadores. Primero se realiza el procesamiento estandarizado y el suavizado WMA de cada indicador, y luego se mapea el valor del indicador a través de la conversión IFT[-1,1], que incluye específicamente:

  1. Los cuatro indicadores CCI, RSI, Stochastic y MFI se calculan y se unifican por separado
  2. WMA para el tratamiento suave de los valores del indicador
  3. Convierte el indicador a un intervalo unificado mediante la conversión IFT
  4. Calcula el promedio de los cuatro indicadores después de la conversión como señal final
  5. Cuando la línea de señal se rompe -0.5 produce una señal de multitarea, cuando se rompe 0.5 produce una señal de vacío
  6. Establezca un 0,5% de stop loss y un 1% de parón para controlar el riesgo

Ventajas estratégicas

  1. La fusión de múltiples indicadores ofrece una visión más completa del mercado y reduce las limitaciones de un solo indicador
  2. La conversión IFT asegura la consistencia de la salida del indicador para facilitar la síntesis de la señal
  3. El procesamiento suavizado de WMA reduce eficazmente las señales falsas
  4. Establece un límite de pérdidas razonable para controlar el riesgo y garantizar un margen de beneficio
  5. Mecanismo de generación de señales claro, fácil de configurar y optimizar

Riesgo estratégico

  1. Los indicadores pueden retrasarse en un mercado muy volátil
  2. Los parámetros fijos de stop loss pueden no ser adecuados para todos los entornos de mercado
  3. La suavización de WMA puede causar retrasos en la señal
  4. Los parámetros del indicador necesitan ser optimizados para diferentes mercados Recomendación: Ajuste dinámico de los parámetros de frenado de pérdida, introducción de indicadores de fluctuación y optimización de los parámetros de suavizado

Dirección de optimización de la estrategia

  1. Introducción de un mecanismo de suspensión de pérdidas adaptativo que se ajuste a las fluctuaciones del mercado
  2. Añadir un mecanismo de filtración del entorno del mercado, utilizando diferentes parámetros para diferentes intensidades de tendencias
  3. Optimización de la síntesis de señales, se puede considerar la media ponderada en lugar de la media simple
  4. Introducción de un mecanismo de ajuste de las ponderaciones de volumen de negocios y de fluctuaciones
  5. Sistemas de optimización automática para el desarrollo de parámetros de indicadores

Resumir

La estrategia construye un sistema de negociación relativamente completo a través de la fusión de múltiples indicadores y la optimización de señales. La ventaja de la estrategia reside en la fiabilidad de las señales y la integridad del control de riesgos, pero aún así se necesita una optimización de los parámetros en función de las características del mercado en la aplicación real.

Código Fuente de la Estrategia
/*backtest
start: 2024-11-19 00:00:00
end: 2024-12-18 08:00:00
period: 4h
basePeriod: 4h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy('wombocombo', overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// IFTCOMBO Hesaplamaları
ccilength = input.int(5, 'CCI Length')
wmalength = input.int(9, 'Smoothing Length')
rsilength = input.int(5, 'RSI Length')
stochlength = input.int(5, 'STOCH Length')
mfilength = input.int(5, 'MFI Length')

// CCI
v11 = 0.1 * (ta.cci(close, ccilength) / 4)
v21 = ta.wma(v11, wmalength)
INV1 = (math.exp(2 * v21) - 1) / (math.exp(2 * v21) + 1)

// RSI
v12 = 0.1 * (ta.rsi(close, rsilength) - 50)
v22 = ta.wma(v12, wmalength)
INV2 = (math.exp(2 * v22) - 1) / (math.exp(2 * v22) + 1)

// Stochastic
v1 = 0.1 * (ta.stoch(close, high, low, stochlength) - 50)
v2 = ta.wma(v1, wmalength)
INVLine = (math.exp(2 * v2) - 1) / (math.exp(2 * v2) + 1)

// MFI
source = hlc3
up = math.sum(volume * (ta.change(source) <= 0 ? 0 : source), mfilength)
lo = math.sum(volume * (ta.change(source) >= 0 ? 0 : source), mfilength)
mfi = 100.0 - 100.0 / (1.0 + up / lo)
v13 = 0.1 * (mfi - 50)
v23 = ta.wma(v13, wmalength)
INV3 = (math.exp(2 * v23) - 1) / (math.exp(2 * v23) + 1)

// Ortalama IFTCOMBO değeri
AVINV = (INV1 + INV2 + INVLine + INV3) / 4

// Sinyal çizgileri
hline(0.5, color=color.red, linestyle=hline.style_dashed)
hline(-0.5, color=color.green, linestyle=hline.style_dashed)

// IFTCOMBO çizgisi
plot(AVINV, color=color.red, linewidth=2, title='IFTCOMBO')

// Long Trading Sinyalleri
longCondition = ta.crossover(AVINV, -0.5) 
longCloseCondition = ta.crossunder(AVINV, 0.5) 

// Short Trading Sinyalleri
shortCondition = ta.crossunder(AVINV, 0.5) 
shortCloseCondition = ta.crossover(AVINV, -0.5) 

// Stop-loss seviyesi (%0.5 kayıp)
stopLoss = strategy.position_avg_price * (1 - 0.005) // Long için
takeProfit = strategy.position_avg_price * (1 + 0.01) // Long için


// Long Strateji Kuralları
if longCondition
    strategy.entry('Long', strategy.long)
    strategy.exit('Long Exit', 'Long', stop=stopLoss, limit=takeProfit) // Stop-loss eklendi


if longCloseCondition
    strategy.close('Long')

// Stop-loss seviyesi (%0.5 kayıp)
stopLossShort = strategy.position_avg_price * (1 + 0.005) // Short için
takeProfitShort = strategy.position_avg_price * (1 - 0.01) // Short için

// Short Strateji Kuralları
if shortCondition
    strategy.entry('Short', strategy.short)
    strategy.exit('Short Exit', 'Short', stop=stopLossShort, limit=takeProfitShort) // Stop-loss eklendi


if shortCloseCondition
    strategy.close('Short')

// Sinyal noktalarını plotlama
plotshape(longCondition, title='Long Signal', location=location.belowbar, color=color.purple, size=size.small)
plotshape(shortCondition, title='Short Signal', location=location.abovebar, color=color.yellow, size=size.small)