Estratégia de acompanhamento de tendência de cruzamento de média móvel dinâmica

SMA MA TP SL
Data de criação: 2024-12-27 15:08:40 última modificação: 2024-12-27 15:08:40
cópia: 4 Cliques: 398
1
focar em
1617
Seguidores

Estratégia de acompanhamento de tendência de cruzamento de média móvel dinâmica

Visão geral

A estratégia é um sistema de rastreamento de tendências baseado em sinais de cruzamento de média móvel dupla, combinados com um mecanismo dinâmico de stop-profit e stop-loss. A estratégia usa médias móveis simples (SMAs) de 5 e 12 períodos para gerar sinais de negociação e otimiza a relação risco-retorno ajustando dinamicamente os níveis de take-profit e stop-loss. O take-profit inicial é definido em 10% e o stop-loss é definido em 5%. Quando o preço se move em uma direção favorável, o nível de take-profit é ajustado para 20% e o stop-loss é apertado para 2,5%. para proteger os lucros.

Princípio da estratégia

A lógica central da estratégia é baseada na relação de cruzamento entre a média móvel rápida (5 períodos) e a média móvel lenta (12 períodos). Quando a linha rápida cruza a linha lenta de baixo para cima, o sistema gera um sinal longo e abre uma posição; quando a linha rápida cruza a linha lenta de cima para baixo, o sistema fecha a posição. A singularidade da estratégia reside no seu mecanismo dinâmico de gestão de risco: uma vez estabelecida uma posição, o sistema monitoriza as tendências de preços em tempo real e ajusta dinamicamente os níveis de take-profit e stop-loss de acordo com as alterações de preços para maximizar os lucros e, ao mesmo tempo, controlar os riscos. .

Vantagens estratégicas

  1. O sistema adota a estratégia clássica de cruzamento de média móvel dupla, com sinais claros, fáceis de entender e executar.
  2. O mecanismo dinâmico de stop-profit e stop-loss pode proteger eficazmente os lucros realizados e evitar reduções
  3. Os parâmetros da estratégia podem ser ajustados de forma flexível de acordo com diferentes características do mercado, com forte adaptabilidade
  4. O mecanismo de gestão de risco é perfeito e pode controlar eficazmente o risco de uma única transação
  5. A estrutura do código é clara, fácil de manter e otimizar

Risco estratégico

  1. Um mercado volátil pode gerar sinais falsos, levando a negociações frequentes
  2. Um grande retrocesso pode ocorrer em uma reversão rápida
  3. Configurações de parâmetros inadequadas podem afetar o desempenho da estratégia
  4. A liquidez insuficiente do mercado pode afetar a execução do stop loss As seguintes medidas são recomendadas para gerenciar riscos:
  • Adicionar filtro de tendência
  • Seleção de parâmetros de otimização
  • Monitoramento em tempo real da liquidez do mercado
  • Estabelecer um sistema sólido de gestão de fundos

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

  1. Introduzir indicadores de força de tendência para filtrar sinais de choque do mercado
  2. Considere adicionar fatores de volume para melhorar a confiabilidade do sinal
  3. Otimizar os parâmetros stop-profit e stop-loss para melhorar a relação risco-retorno
  4. Adicionando mecanismo adaptativo de volatilidade de mercado
  5. Melhore o sistema de gestão de armazém

Resumir

Essa estratégia alcança uma compreensão eficaz das tendências e controle dinâmico dos riscos ao combinar sinais clássicos de cruzamento de média móvel com mecanismos inovadores de gerenciamento dinâmico de risco. O conceito de design da estratégia é claro, o método de implementação é conciso e eficaz, e tem boa praticidade e escalabilidade. Por meio de otimização e melhoria contínuas, espera-se que essa estratégia alcance um desempenho de lucro estável em transações reais.

Código-fonte da estratégia
/*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=6
strategy("My Moving Average Crossover Strategy with Take Profit and Stop Loss", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
//risk_free_rate = float(request.security("IRUS", "D", close)/request.security("IRUS", "D", close[1]) - 1  ))




// MA periods
fastLength = input.int(5, title="Fast MA Length")
slowLength = input.int(12, title="Slow MA Length")




// Take Profit and Stop Loss
takeProfitLevel = input(10, title="Take Profit (пункты)") // Take profit % from the last price
stopLossLevel = input(5, title="Stop Loss (пункты)") // Stop loss  % from the last price
takeProfitLevel_dyn = input(20, title="Dynamic Take Profit (пункты)") // Move TP if current_price higher buy_px
stopLossLevel_dyn =  input(2.5, title="Dynamic Stop Loss (пункты)") // S Move SL if current_price higher buy_px


// Вычисление скользящих средних
fastMA = ta.sma(close, fastLength)
slowMA= ta.sma(close, slowLength)


// Conditions for Sell and Buy
longCondition = ta.crossover (fastMA, slowMA) // покупаем, если короткая MA персекает длинную снизу-вверх
shortCondition = ta.crossunder(fastMA, slowMA) // продаем, если короткая MA персекает длинную сверху-вниз




// Buy position condition
if (longCondition)
    strategy.entry("Buy", strategy.long)






// Dynamic TP SL leveles
takeProfitPrice = strategy.position_avg_price * (1+ takeProfitLevel / 100)
stopLossPrice = strategy.position_avg_price * (1-stopLossLevel / 100)


entryPrice = strategy.position_avg_price




if (strategy.position_size > 0) // если есть открытая позиция




    // takeProfitPrice := entryPrice * (1+ takeProfitLevel / 100)
    // stopLossPrice := entryPrice * (1-stopLossLevel / 100)


    // // Перемещение Stop Loss и Take Profit
    if (close > entryPrice)
   
        takeProfitPrice := close * (1+ takeProfitLevel_dyn / 100)
        stopLossPrice := close * (1- stopLossLevel_dyn/ 100)






if (shortCondition)
    strategy.close("Buy")




strategy.exit("Take Profit/Stop loss", "Buy", limit=takeProfitPrice, stop=stopLossPrice)


// Drawing MA lines
plot(fastMA, color=color.blue, title="Fast Moving Average")
plot(slowMA, color=color.orange, title="Slow Moving Average")




// Визуализация
plot(longCondition ? na : takeProfitPrice, title="Take Profit Level", color=color.green, linewidth=1, style=plot.style_line)
plot(longCondition ? na: stopLossPrice, title="Stop Loss Level", color=color.red, linewidth=1, style=plot.style_line)