O recurso está a ser carregado... Carregamento...

Estratégia otimizada do rácio risco-recompensa baseada no cruzamento da média móvel

Autora:ChaoZhang, Data: 2024-12-27 15:46:05
Tags:MASMARRSLTP

img

Resumo

Esta estratégia é um sistema de negociação automatizado baseado em sinais cruzados de média móvel, otimizado através de uma relação risco-recompensa fixa.

Princípio da estratégia

A lógica central baseia-se em sinais cruzados gerados por duas médias móveis (10 períodos e 30 períodos). O sistema gera sinais longos quando o MA rápido cruza acima do MA lento e sinais curtos quando o MA rápido cruza abaixo. Após cada entrada, o sistema calcula automaticamente os níveis de stop-loss com base em uma porcentagem de perda de 2% pré-definida e define metas de lucro de acordo com uma relação risco-recompensa de 2,5. Esta abordagem garante que cada negociação tenha características de risco-recompensa consistentes.

Vantagens da estratégia

  1. Gestão sistemática do risco: alcança uma gestão de capital normalizada através de percentagens fixas de stop-loss e rácios risco-retorno
  2. Mecanismo de negociação objetivo: sistema de sinalização baseado em cruzamento de MA elimina preconceitos de julgamento subjetivo
  3. Forte adaptabilidade dos parâmetros: os parâmetros-chave, como a percentagem de stop-loss e o rácio risco-recompensa, podem ser ajustados de forma flexível
  4. Alto nível de automação: processos automatizados desde a geração de sinal até o gerenciamento de posição reduzem o erro humano

Riscos estratégicos

  1. Risco de choppy market: os sinais de cruzamento MA podem gerar frequentes falsas rupturas em mercados variados
  2. Risco de deslizamento: os preços de execução efetivos podem afastar-se significativamente dos preços de sinal em mercados em rápida evolução.
  3. Risco fixo de stop-loss: a percentagem única de stop-loss pode não corresponder a todas as condições de mercado
  4. Custos da Comissão: a troca frequente pode resultar em elevados custos de transacção

Orientações para a otimização da estratégia

  1. Implementar filtros de tendência: adicionar médias móveis de período mais longo ou outros indicadores de tendência para filtrar sinais falsos
  2. Mecanismo dinâmico de stop-loss: ajustar as percentagens de stop-loss com base na volatilidade do mercado para melhor adaptabilidade
  3. Confirmação do volume: Incorporar indicadores de volume para verificar a validade do rompimento
  4. Optimização do tempo de entrada: espere por retrações após cruzamento de MA antes de entrar em posições

Resumo

Esta estratégia combina métodos clássicos de análise técnica com conceitos modernos de gerenciamento de riscos para construir um sistema de negociação completo. Embora tenha certas limitações, a otimização e melhoria contínua permitem que a estratégia mantenha um desempenho estável em diferentes condições de mercado. A chave está em ajustar constantemente as configurações de parâmetros com base nos resultados reais da negociação para encontrar a configuração mais adequada para o ambiente atual do mercado.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-25 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("SOL 15m 2.5 R:R Strategy", overlay=true, margin_long=100, margin_short=100, initial_capital=10000, commission_type=strategy.commission.percent, commission_value=0.1)

//---------------------------------------------------
// User Inputs
//---------------------------------------------------
// sym = input.symbol("swap", "Symbol")
timeframe = input.timeframe("15", "Timeframe")

fastLength  = input.int(10, "Fast MA Length")
slowLength  = input.int(30, "Slow MA Length")

stopLossPerc = input.float(2.0, "Stop Loss %", step=0.1) // This is an example; adjust to achieve ~45% win rate
RR           = input.float(2.5, "Risk to Reward Ratio", step=0.1)

//---------------------------------------------------
// Data Sources
//---------------------------------------------------
price = request.security("swap", timeframe, close)

// Compute moving averages
fastMA = ta.sma(price, fastLength)
slowMA = ta.sma(price, slowLength)

// Entry Conditions
longCondition  = ta.crossover(fastMA, slowMA)
shortCondition = ta.crossunder(fastMA, slowMA)

//---------------------------------------------------
// Stop Loss and Take Profit Calculation
//---------------------------------------------------
var entryPrice = 0.0

if (strategy.position_size == 0) // not in a position
    if longCondition
        // Long entry
        entryPrice := price
        strategy.entry("Long", strategy.long)

    if shortCondition
        // Short entry
        entryPrice := price
        strategy.entry("Short", strategy.short)

if strategy.position_size > 0
    // We are in a long position
    if strategy.position_avg_price > 0 and strategy.position_size > 0
        longStop  = strategy.position_avg_price * (1 - stopLossPerc/100)
        longTarget = strategy.position_avg_price * (1 + (stopLossPerc/100)*RR)
        strategy.exit("Long Exit", "Long", stop=longStop, limit=longTarget)

if strategy.position_size < 0
    // We are in a short position
    if strategy.position_avg_price > 0 and strategy.position_size < 0
        shortStop  = strategy.position_avg_price * (1 + stopLossPerc/100)
        shortTarget = strategy.position_avg_price * (1 - (stopLossPerc/100)*RR)
        strategy.exit("Short Exit", "Short", stop=shortStop, limit=shortTarget)

//---------------------------------------------------
// Plotting
//---------------------------------------------------
plot(fastMA, color=color.new(color.teal, 0), title="Fast MA")
plot(slowMA, color=color.new(color.orange, 0), title="Slow MA")


Relacionados

Mais.