Estratégia de combinação de otimização de tendência de momentum


Data de criação: 2024-02-06 15:11:57 última modificação: 2024-02-06 15:11:57
cópia: 4 Cliques: 756
1
focar em
1617
Seguidores

Estratégia de combinação de otimização de tendência de momentum

Visão geral

A estratégia de combinação de otimização de tendências dinâmicas é uma estratégia de negociação de quantificação de linhas médias e longas que combina o fator dinâmico e o fator de tendência para gerar sinais de compra e venda por meio de uma combinação de indicadores de média móvel, média móvel, volume de transação e inclinação. A estratégia é otimizada para negociação T+1 e só é adequada para fazer várias direções. A otimização também é adequada para o mercado de ações internacional.

Princípio da estratégia

A estratégia usa a média móvel simples de 6 dias e a média móvel simples de 35 dias para definir duas médias móveis. A linha de sinal de compra é definida como a média móvel de 2 dias do índice e a linha de sinal de venda é calculada com base no preço de fechamento dos últimos 8 dias. Além disso, a média móvel do índice de volume de transação de 20 dias é definida como um indicador de volume de transação.

Quando o preço de liquidação de uma ação é superior à média móvel de 35 dias e o volume de transação é superior à média de transação de 20 dias, e é verificado semanalmente como um mercado de ativos, um sinal de compra é acionado a partir de uma cruz de ouro abaixo; ao contrário, um sinal de venda é acionado a partir de uma cruz de morte acima.

Em termos de gerenciamento de risco, a estratégia introduziu um mecanismo de ajuste de posição dinâmico. O posicionamento real é calculado de acordo com a taxa de juros da conta, a taxa de posição máxima, o ATR e o fator de risco. Isso ajuda a controlar a retirada máxima da estratégia.

Análise de vantagens

A estratégia combina o factor de dinâmica com a filtragem de tendências, permitindo a identificação eficaz da direção da linha média. Ao mesmo tempo, a filtragem de Noise também é mais adequada, o que ajuda a evitar sinais errados em situações de turbulência. Além disso, a introdução de mecanismos de gerenciamento de risco também torna o controle de retração máxima adequado, garantindo a solidez da estratégia.

De acordo com os resultados do retrospecto, a taxa de retorno geral da estratégia foi de 128,86%, com um Alpha muito significativo. Ao mesmo tempo, a taxa de vitória da estratégia também atingiu 60,66%, demonstrando a estabilidade do efeito da estratégia.

Análise de Riscos

Embora a própria estratégia tenha otimizado o mecanismo de gerenciamento de riscos, ainda existem alguns riscos que devem ser considerados. Em particular, os principais riscos incluem:

  1. Risco de retração. A partir de uma perda máxima de 222.021,46 dólares, a estratégia de retração é maior. Isso está relacionado ao imperfeito mecanismo de gerenciamento de posições.

  2. Risco de estabilidade do sinal. Os sinais de estratégia podem ser afetados por fatores específicos de ações individuais, resultando em sinais errôneos. Isso pode causar um certo impacto nos ganhos da estratégia.

  3. Risco de mudança do cenário de mercado. Se houver uma mudança significativa no cenário de mercado macroeconômico, os parâmetros da estratégia podem precisar de ajustes para continuar a ter efeito.

Direção de otimização

De acordo com a análise de risco acima, a estratégia ainda tem necessity e possibility de otimização.

  1. A partir da situação de perda máxima, é possível otimizar ainda mais o mecanismo de gerenciamento de posições, introduzindo módulos de stop loss para controlar a magnitude da perda individual.

  2. Pode-se considerar a inclusão de mais indicadores de filtragem, identificando alguns fenômenos individuais especiais, para reduzir a probabilidade de sinais errados. Por exemplo, a introdução de preços de quantidade desviados dos indicadores.

  3. Os parâmetros da estratégia devem ser constantemente testados e verificados, com ajustes de parâmetros em tempo hábil de acordo com as mudanças no ambiente do mercado. Ao mesmo tempo, deve-se evitar a ocorrência de otimização excessiva.

Resumir

A estratégia de combinação de otimização de tendências dinâmicas é uma estratégia de negociação de quantificação de linhas médias e longas, combinando o fator de dinâmica e o filtro de tendência, especificamente otimizada para negociações T + 1. De acordo com os indicadores de retrospectiva, o efeito geral da estratégia é significativo e tem um alfa muito surpreendente. Mas também deve-se prestar atenção aos possíveis riscos e ajustar os parâmetros em tempo hábil de acordo com o cenário do mercado.

Código-fonte da estratégia
/*backtest
start: 2024-01-06 00:00:00
end: 2024-02-05 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © fzj20020403

////@version=5
//@version=5
strategy("Optimized Zhaocaijinbao", overlay=true, margin_long=100, margin_short=0, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// Define two moving averages
ma6 = ta.sma(close, 6)
ma35 = ta.sma(close, 35)

// Define buy and sell signal lines
buyLine = ta.ema(close, 2)
sellSlope = (close - close[8]) / 8
sellLine = sellSlope * 1 + ta.sma(close, 8)

// Define volume indicator
volumeEMA = ta.ema(volume, 20)

// Define weekly slope factor
weeklyMa = ta.sma(close, 50)
weeklySlope = (weeklyMa - weeklyMa[4]) / 4 > 0

// Generate buy and sell signals
buySignal = ta.crossover(buyLine, sellLine) and close > ma35 and volume > volumeEMA and weeklySlope
sellSignal = ta.crossunder(sellLine, buyLine)

// Define dynamic position sizing factor
equity = strategy.equity
maxPositionSize = equity * input.float(title='Max Position Size (%)', defval=0.01, minval=0.001, maxval=0.5, step=0.001)
riskFactor = input.float(title='Risk Factor', defval=2.0, minval=0.1, maxval=10.0, step=0.1)
atr = ta.atr(14)
positionSize = maxPositionSize * riskFactor / atr

// Define position status
var inPosition = false

// Define buy and sell conditions
buyCondition = buySignal and not inPosition
sellCondition = sellSignal and inPosition

// Perform buy and sell operations
if (buyCondition)
    strategy.entry("Long", strategy.long, qty=positionSize)
    inPosition := true
if (sellCondition)
    strategy.close("Long")
    inPosition := false

// Draw vertical line markers for buy and sell signals
plotshape(buyCondition, style=shape.arrowdown, location=location.belowbar, color=color.green, size=size.small)
plotshape(sellCondition, style=shape.arrowup, location=location.abovebar, color=color.red, size=size.small)

// Draw two moving averages
plot(ma6, color=color.blue)
plot(ma35, color=color.orange)

// Draw volume indicator line
plot(volumeEMA, color=color.yellow)

// Define stop loss and take profit
stopLoss = strategy.position_avg_price * 0.5
takeProfit = strategy.position_avg_price * 1.25

if inPosition
    strategy.exit("Long Stop Loss", "Long", stop=stopLoss)
    strategy.exit("Long Take Profit", "Long", limit=takeProfit)