Estratégia de rastreamento de tendências de combinação multiindicador adaptável multimercado

CMF DPO ROC WMA ATR
Data de criação: 2024-12-12 15:23:28 última modificação: 2024-12-12 15:23:28
cópia: 0 Cliques: 459
1
focar em
1617
Seguidores

Estratégia de rastreamento de tendências de combinação multiindicador adaptável multimercado

Visão geral

Trata-se de uma estratégia de acompanhamento de tendências auto-adaptável baseada em uma combinação de vários indicadores técnicos, que pode ajustar automaticamente os parâmetros de acordo com as diferentes características do mercado. A estratégia utiliza o CMF, o DPO e o Coppock para capturar as tendências do mercado e ajustar os fatores de volatilidade para se adaptar às características de diferentes mercados.

Princípio da estratégia

A lógica central da estratégia é confirmar a direção da tendência e o tempo de negociação através da combinação de vários indicadores.

  1. Usar o CMF para medir o fluxo de capitais e o sentimento do mercado
  2. Os indicadores DPO são usados para excluir os efeitos de tendências de longo prazo e focar nas flutuações de preços de curto e médio prazo.
  3. O indicador de Coppock foi modificado para capturar os pontos de inflexão da tendência
  4. O sinal de negociação é gerado quando os três indicadores são co-confirmados
  5. Posições de stop loss calculadas dinamicamente através do ATR
  6. Ajuste automático de parâmetros de taxa de alavancagem e de volatilidade de acordo com diferentes características de mercado (ações, divisas, futuros)

Vantagens estratégicas

  1. Multi-indicadores de verificação cruzada para filtrar sinais falsos
  2. Adaptável a diferentes cenários de mercado
  3. Sistema de gestão de posições perfeito, com posições ajustadas dinamicamente de acordo com a volatilidade
  4. Contém um mecanismo de bloqueio de perdas que protege os lucros enquanto controla o risco.
  5. Apoio a transações simultâneas de várias variedades para diversificar o risco
  6. Logística de transação clara, fácil de manter e de otimizar

Risco estratégico

  1. O sistema de múltiplos indicadores pode estar atrasado e perder oportunidades em um ritmo rápido.
  2. Otimização excessiva de parâmetros pode levar a uma superalimentação
  3. Os sinais de erro podem ocorrer durante a transição do mercado.
  4. A configuração de parada de perda muito apertada pode causar parada de perda frequente
  5. Custo de transação pode afetar receita estratégica Recomenda-se que os riscos sejam gerenciados da seguinte forma:
  • Verificar periodicamente a validade dos parâmetros
  • Monitoramento em tempo real do desempenho das posições
  • Controle racional da alavancagem
  • Configure o limite máximo de retirada

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

  1. Introduzir um julgamento de estado de taxa de flutuação do mercado, usando diferentes conjuntos de parâmetros em diferentes ambientes de flutuação
  2. Adicionar mais indicadores de identificação de características de mercado e aumentar a adaptabilidade da estratégia
  3. Optimizar o mecanismo de parada de perda, podendo ser considerado o uso de parada móvel
  4. Desenvolver um sistema de otimização automática de parâmetros, ajustando os parâmetros regularmente
  5. Adição de módulo de análise de custos de transação
  6. Participação no mecanismo de alerta de risco

Resumir

A estratégia é um sistema de acompanhamento de tendências mais completo, com combinação de vários indicadores e mecanismo de controle de risco, que também controla bem o risco ao mesmo tempo em que garante os ganhos. A estratégia é altamente escalável e tem um grande espaço para otimização. É recomendado começar em pequenas escalas em negociações em disco e aumentar gradualmente a escala de negociação, enquanto monitora continuamente o desempenho da estratégia e ajusta os parâmetros em tempo hábil.

Código-fonte da estratégia
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-10 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Multi-Market Adaptive Trading Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// Input parameters
i_market_type = input.string("Crypto", "Market Type", options=["Forex", "Crypto", "Futures"])
i_risk_percent = input.float(1, "Risk Per Trade (%)", minval=0.1, maxval=100, step=0.1)
i_volatility_adjustment = input.float(1.0, "Volatility Adjustment", minval=0.1, maxval=5.0, step=0.1)
i_max_position_size = input.float(5.0, "Max Position Size (%)", minval=1.0, maxval=100.0, step=1.0)
i_max_open_trades = input.int(3, "Max Open Trades", minval=1, maxval=10)

// Indicator Parameters
i_cmf_length = input.int(20, "CMF Length", minval=1)
i_dpo_length = input.int(21, "DPO Length", minval=1)
i_coppock_short = input.int(11, "Coppock Short ROC", minval=1)
i_coppock_long = input.int(14, "Coppock Long ROC", minval=1)
i_coppock_wma = input.int(10, "Coppock WMA", minval=1)
i_atr_length = input.int(14, "ATR Length", minval=1)

// Market-specific Adjustments
volatility_factor = i_market_type == "Forex" ? 0.1 : i_market_type == "Futures" ? 1.5 : 1.0
volatility_factor *= i_volatility_adjustment
leverage = i_market_type == "Forex" ? 100.0 : i_market_type == "Futures" ? 20.0 : 3.0

// Calculate Indicators
mf_multiplier = ((close - low) - (high - close)) / (high - low)
mf_volume = mf_multiplier * volume
cmf = ta.sma(mf_volume, i_cmf_length) / ta.sma(volume, i_cmf_length)

dpo_offset = math.floor(i_dpo_length / 2) + 1
dpo = close - ta.sma(close, i_dpo_length)[dpo_offset]

roc1 = ta.roc(close, i_coppock_short)
roc2 = ta.roc(close, i_coppock_long)
coppock = ta.wma(roc1 + roc2, i_coppock_wma)

atr = ta.atr(i_atr_length)

// Define Entry Conditions
long_condition = cmf > 0 and dpo > 0 and coppock > 0 and ta.crossover(coppock, 0)
short_condition = cmf < 0 and dpo < 0 and coppock < 0 and ta.crossunder(coppock, 0)

// Calculate Position Size
account_size = strategy.equity
risk_amount = math.min(account_size * (i_risk_percent / 100), account_size * (i_max_position_size / 100))
position_size = (risk_amount / (atr * volatility_factor)) * leverage

// Execute Trades
if (long_condition and strategy.opentrades < i_max_open_trades)
    sl_price = close - (atr * 2 * volatility_factor)
    tp_price = close + (atr * 3 * volatility_factor)
    strategy.entry("Long", strategy.long, qty=position_size)
    strategy.exit("Long Exit", "Long", stop=sl_price, limit=tp_price)

if (short_condition and strategy.opentrades < i_max_open_trades)
    sl_price = close + (atr * 2 * volatility_factor)
    tp_price = close - (atr * 3 * volatility_factor)
    strategy.entry("Short", strategy.short, qty=position_size)
    strategy.exit("Short Exit", "Short", stop=sl_price, limit=tp_price)

// Plot Indicators
plot(cmf, color=color.blue, title="CMF")
plot(dpo, color=color.green, title="DPO")
plot(coppock, color=color.red, title="Coppock")
hline(0, "Zero Line", color=color.gray)

// Alerts
alertcondition(long_condition, title="Long Entry", message="Potential Long Entry Signal")
alertcondition(short_condition, title="Short Entry", message="Potential Short Entry Signal")

// // Performance reporting
// if barstate.islastconfirmedhistory
//     label.new(bar_index, high, text="Strategy Performance:\nTotal Trades: " + str.tostring(strategy.closedtrades) + 
//               "\nWin Rate: " + str.tostring(strategy.wintrades / strategy.closedtrades * 100, "#.##") + "%" +
//               "\nProfit Factor: " + str.tostring(strategy.grossprofit / strategy.grossloss, "#.##"))