Estratégia de negociação quantitativa cruzada da EMA

Autora:ChaoZhang, Data: 2024-01-29
Tags:

img

Resumo

Esta é uma estratégia de negociação quantitativa cruzada da EMA. Ela usa duas EMAs com períodos diferentes como sinais de negociação, indo longo quando o EMA de período mais curto cruza a EMA de período mais longo e indo curto quando o EMA de período mais curto cruza abaixo do EMA de período mais longo. Ela pertence à tendência de seguir estratégias. Esta estratégia também define stop loss e take profit para controlar riscos.

Estratégia lógica

Esta estratégia usa a cruz de ouro e a cruz da morte das EMAs como sinais de negociação. Especificamente, calcula a EMA de período mais curto e a EMA de período mais longo, respectivamente. Quando a EMA de período mais curto cruza a EMA de período mais longo, gera um sinal de compra para longo. Quando a EMA de período mais curto cruza abaixo da EMA de período mais longo, gera um sinal de venda para curto. Assim, as tendências em movimento das EMAs determinam as direções de negociação.

Após entrar em posições, a estratégia também define stop loss e take profit simultaneamente. O stop loss é uma certa porcentagem do preço de entrada como a linha de stop loss. Se o preço tocar a linha de stop loss, ele sairá da posição para stop loss. O take profit é uma certa porcentagem do preço de entrada como a linha de take profit. Se o preço tocar a linha de take profit, ele sairá da posição para take profit.

Esta estratégia também permite escolher apenas negociação longa, apenas curta, intradiária ou negociação de posição.

Análise das vantagens

Esta estratégia tem as seguintes vantagens:

  1. Usar o indicador EMA para filtrar ruídos e captar tendências de médio e longo prazo sem problemas.

  2. Adopção de cruzeiros da EMA entre períodos mais curtos e mais longos como sinais de negociação para evitar o excesso de negociação.

  3. Configurar stop loss e take profit para controlar a relação risco-recompensa de cada negociação, o que é bom para a gestão de dinheiro.

  4. Permitir apenas negociações longas, curtas, intradiárias e de posições para atender a diferentes tipos de operadores.

  5. Apoio a múltiplos ativos comerciais como ações, forex, criptomoedas, etc.

Análise de riscos

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

  1. O indicador EMA tem um efeito de atraso e pode perder alguns pontos de virada da tendência a curto prazo.

  2. As escolhas inadequadas de períodos EMA mais curtos e mais longos podem causar sinais de negociação confusos.

  3. A detenção de posições por muito tempo pode sofrer flutuações do mercado mais elevadas.

  4. O stop loss mecânico e o take profit podem deixar as posições demasiado cedo ou reduzir os lucros prematuramente.

As medidas de gestão de riscos correspondentes:

  1. Otimizar os parâmetros da EMA para encontrar a melhor combinação de períodos.

  2. Adicionar outros indicadores como juízo auxiliar.

  3. Ajuste dinâmico de stop loss e take profit.

  4. Intervenção manual em condições de mercado incomuns.

Orientações de otimização

Esta estratégia pode ser otimizada nos seguintes aspectos:

  1. Melhor otimização dos parâmetros da EMA para encontrar combinações adequadas de períodos mais curtos e mais longos para diferentes ativos negociados.

  2. Adicionar outros indicadores como MACD, KD para sinergia multi-indicador.

  3. Adicionar modelos de aprendizagem de máquina para gerar stop loss dinâmico e tirar lucro.

  4. Conectar indicadores de RISK mais avançados para engenharia de recursos.

  5. Adicionar componentes de negociação adaptativos para auto-otimização de parâmetros.

Resumo

Em resumo, esta é uma excelente tendência seguindo o modelo de estratégia. Sua principal força reside em usar o indicador EMA para filtrar ruídos e alcançar lucros constantes, ao mesmo tempo em que possui uma gestão abrangente de risco-recompensa. Através da otimização contínua, esta estratégia pode se tornar uma estratégia quantitativa universal em todos os mercados e vale a pena para os traders aprenderem e praticarem.


/*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")

Mais.