Estratégia de negociação entre períodos com base no indicador EMA


Data de criação: 2024-01-29 15:56:56 última modificação: 2024-01-29 15:56:56
cópia: 0 Cliques: 608
1
focar em
1617
Seguidores

Estratégia de negociação entre períodos com base no indicador EMA

Visão geral

Esta estratégia é uma estratégia de negociação de longo prazo baseada em EMAs. Utiliza EMAs de dois períodos diferentes como sinais de compra e venda, fazendo mais em EMAs de longo prazo em EMAs de curto prazo e fechando em EMAs de longo prazo em EMAs de curto prazo. Esta estratégia é uma estratégia de acompanhamento de tendências.

Princípio da estratégia

A estratégia usa o indicador de EMA como sinal de negociação. Concretamente, calcula-se o EMA de curto prazo e o EMA de longo prazo, respectivamente, gerando um sinal de compra quando o EMA de curto prazo atravessa o EMA de longo prazo e um sinal de venda quando o EMA de curto prazo atravessa o EMA de longo prazo.

Depois de entrar em uma posição, a estratégia configura um stop loss e um stop loss simultaneamente. O stop loss é uma porcentagem do preço de entrada como uma linha de stop loss, e se o preço tocar a linha de stop loss, a posição é parada; o stop stop é uma porcentagem do preço de entrada como uma linha de stop, e se o preço tocar a linha de stop loss, a posição é parada.

A estratégia também permite a opção de fazer apenas mais ou apenas menos, bem como a opção de negociar no dia ou manter a posição. Para negociar no dia, a posição zero é obrigatória antes do fechamento das ações americanas.

Análise de vantagens

A estratégia tem as seguintes vantagens:

  1. O EMA utiliza um indicador de filtragem de curvas para evitar a manipulação de ondas de alta frequência e captar as tendências de linha média e longa.

  2. Utilize o cruzamento de EMA de curto e EMA de longo período como sinal de negociação, evitando negociações frequentes.

  3. A configuração de um stop loss para controlar a taxa de risco-receita de cada ordem é benéfica para a gestão de fundos.

  4. A opção de fazer apenas ativos ou ativos líquidos, bem como a opção de day trading ou a opção de posicionamento, é adequada para diferentes tipos de traders.

  5. Compatível com vários tipos de transações, incluindo ações, divisas, moedas digitais, etc.

Análise de Riscos

A estratégia também apresenta alguns riscos potenciais:

  1. Os indicadores EMA estão atrasados e podem ter perdido o ponto de viragem de tendência de curto prazo.

  2. A escolha incorreta de EMAs de curto e longo prazo pode levar a sinais de negociação confusos.

  3. O excesso de tempo de detenção pode levar a um maior choque de mercado.

  4. A paralisação mecânica pode levar a uma saída prematura ou a uma diminuição de lucro.

As medidas de gestão de riscos correspondentes incluem:

  1. Optimizar os parâmetros EMA para encontrar a melhor combinação de ciclos.

  2. Adicionar outros indicadores como critérios auxiliares.

  3. Ajuste dinâmico de parada de perda.

  4. Intervenção humana em situações anormais.

Direção de otimização

A estratégia pode ser otimizada nas seguintes direções:

  1. Optimizar os parâmetros EMA para encontrar combinações de ciclo longo e curto adequadas para diferentes variedades.

  2. A adição de outros indicadores de julgamento, como MACD, KD, etc., permite a ressonância de vários indicadores.

  3. Aumentar o treinamento de modelos de aprendizagem de máquina, gerando um stop loss dinâmico.

  4. Acesso a indicadores mais avançados de RISK para engenharia de características.

  5. Adição de elementos de negociação adaptáveis para a otimização dos parâmetros.

Resumir

A estratégia global é um excelente modelo de estratégia de acompanhamento de tendências, com a principal vantagem de usar o EMA para filtrar o ruído e obter ganhos estáveis, além de ter um bom gerenciamento de riscos e ganhos. Com a otimização contínua, a estratégia pode se tornar uma estratégia quantitativa para todos os mercados e vale a pena aprender e praticar.

Código-fonte da estratégia
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("EMA Crossover Strategy by Vikrant Singh", overlay=true)


// Input for EMA Lengths
var bool runningPOS = false
var float stopLossLevel = na
var float targetLevel = na
shortLength = input(11, title="Short EMA Length")
longLength = input(21, title="Long EMA Length")

// Input for Stop-Loss and Target
stopLossPct = input(1, title="Stop-Loss (%)")
targetPct = input(3, title="Target (%)")
longOnly = input(true, title="Long Only")
intraDay = input(true, title="intraday?")


// Calculate EMAs
emaShort = ta.ema(close, shortLength)
emaLong = ta.ema(close, longLength)

// Calculate crossover conditions
crossoverCondition = ta.crossover(emaShort, emaLong)
crossunderCondition = ta.crossunder(emaShort, emaLong)

// Entry condition (long position just before crossover)
if crossoverCondition and not runningPOS and longOnly and (hour <= 15)
    strategy.entry("Long", strategy.long)
    runningPOS := true
    stopLossLevel := close * (1 - stopLossPct / 100)
    targetLevel := close * (1 + targetPct / 100)

//Entry condition (short position just before crossover)
if crossunderCondition and not runningPOS and not longOnly and (hour <= 15)
    strategy.entry("Short", strategy.short)
    runningPOS := true
    stopLossLevel := close * (1 + stopLossPct / 100)
    targetLevel := close * (1 - targetPct / 100)

// Exit conditions (square off on reverse crossover)
//Exit long
if (crossunderCondition or (low < stopLossLevel) or (high > targetLevel) ) and longOnly and runningPOS
    strategy.close("Long",comment = "Exit long")// ("Long", from_entry="Long",stop=stopLossLevel, limit=targetLevel)
    runningPOS := false

//Exit short
if (crossoverCondition or (high > stopLossLevel) or (low < targetLevel) ) and not longOnly and runningPOS
    strategy.close("Short", comment = "Exit Short")
    runningPOS := false

if intraDay and runningPOS
    if (hour >= 15)
        strategy.close_all(comment = "Intraday square off")
        //strategy.close("Long",comment = "intraday square off")
        runningPOS := false


// Plot EMAs
plot(emaShort, color=color.blue, title="Short EMA")
plot(emaLong, color=color.red, title="Long EMA")