Estratégia de otimização de negociação dinâmica de combinação de múltiplos indicadores

CCI RSI MFI WMA IFT
Data de criação: 2024-12-20 16:31:21 última modificação: 2024-12-20 16:31:21
cópia: 1 Cliques: 397
1
focar em
1617
Seguidores

Estratégia de otimização de negociação dinâmica de combinação de múltiplos indicadores

Visão geral

A estratégia é um sistema de negociação baseado em uma combinação de vários indicadores tecnológicos, que constrói uma estrutura de análise de mercado abrangente por meio da integração de quatro indicadores principais, como CCI, RSI, Stochastic e MFI, e em combinação com o processamento de suavização de índices. A estratégia usa a conversão Inverse Fisher Transform (IFT) para normalizar a saída de indicadores e, finalmente, produz decisões de negociação por meio da síntese de sinais.

Princípio da estratégia

O núcleo da estratégia é fornecer um sinal de negociação mais confiável por meio da fusão de vários indicadores. Primeiro, o processamento padronizado e a suavização WMA de cada indicador, e depois o mapeamento do valor do indicador para[-1,1], que inclui:

  1. Os quatro indicadores CCI, RSI, Stochastic e MFI são calculados e unificados separadamente
  2. Processamento suave dos valores do indicador com WMA
  3. Converte o valor do indicador para um intervalo uniforme através da conversão IFT
  4. Calcular a média dos quatro indicadores após a conversão como sinal final
  5. Quando a linha de sinalização ultrapassa -0,5 gera um sinal de multitoque, quando ultrapassa 0,5 gera um sinal de vazio
  6. Configurar 0,5% de stop loss e 1% de stop loss para controlar o risco

Vantagens estratégicas

  1. A integração de múltiplos indicadores proporciona uma visão mais abrangente do mercado, reduzindo as limitações de um único indicador
  2. A conversão IFT garante a consistência da saída do indicador, facilitando a síntese do sinal
  3. O processamento suave do WMA reduziu efetivamente o falso sinal
  4. Estabelecer um limite de perda razoável para controlar o risco e garantir a margem de lucro
  5. Mecanismos de geração de sinais são claros e fáceis de configurar e otimizar

Risco estratégico

  1. Indicadores podem ficar para trás em mercados de alta volatilidade
  2. Parâmetros de stop loss fixos podem não ser adequados para todos os cenários de mercado
  3. WMA suavização pode causar atraso no sinal
  4. Os parâmetros do indicador precisam ser otimizados para diferentes mercados Recomendação: Ajuste dinâmico dos parâmetros de suspensão e travamento, introdução de indicadores de oscilação e otimização dos parâmetros de suavização

Direção de otimização da estratégia

  1. Introdução de um mecanismo de parada de perda adaptável, ajustado à dinâmica de flutuação do mercado
  2. Adição de mecanismos de filtragem de mercado, usando diferentes parâmetros para diferentes intensidades de tendências
  3. Optimizar a síntese de sinais, considerando a média ponderada como alternativa à média simples
  4. Introdução de uma ponderação de volume de transação e de um mecanismo de ajuste de taxa de flutuação
  5. Desenvolvimento de um sistema de otimização automática de parâmetros de indicadores

Resumir

A estratégia, por meio da fusão de vários indicadores e otimização de sinais, constrói um sistema de negociação relativamente completo. A vantagem da estratégia reside na confiabilidade do sinal e na integridade do controle de risco, mas ainda requer otimização de parâmetros de acordo com as características do mercado na aplicação real.

Código-fonte da estratégia
/*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)