Estratégia quantitativa de negociação de média móvel exponencial

Autora:ChaoZhang, Data: 2024-03-29 10:59:57
Tags:

img

Resumo

Esta estratégia usa o cruzamento de duas médias móveis exponenciais (EMA) como sinais de compra e venda. Quando a EMA de curto período cruza acima da EMA de longo período de baixo, ela gera um sinal de compra; inversamente, quando a EMA de curto período cruza abaixo da EMA de longo período de cima, ela gera um sinal de venda. Além disso, a estratégia determina se o ponto de cruzamento é o preço mais alto ou mais baixo nos últimos 10 períodos de negociação para confirmar a força da tendência. Se o ponto de cruzamento for o preço mais alto, o fundo será colorido de verde; se for o preço mais baixo, ele será colorido de vermelho. Além disso, a estratégia exibe o preço do ponto de cruzamento no gráfico.

Princípios de estratégia

  1. Calcular duas EMA com períodos diferentes, com períodos de incumprimento de 5 e 10.
  2. Determine se as duas EMA se cruzam. Se a EMA de curto prazo cruzar acima da EMA de longo prazo de baixo, ela gera um sinal de compra; se a EMA de curto prazo cruzar abaixo da EMA de longo prazo de cima, ela gera um sinal de venda.
  3. Quando ocorre um sinal de cruzamento, determinar se o ponto de cruzamento atual é o preço mais alto ou mais baixo nos últimos 10 períodos de negociação.
  4. Se for gerado um sinal de compra e não existir uma posição corrente, abrir uma posição longa; se for gerado um sinal de venda e não existir uma posição corrente, abrir uma posição curta.
  5. Se for realizada uma posição longa e a EMA de curto prazo cruzar abaixo da EMA de longo prazo de cima, fechar a posição longa; se for realizada uma posição curta e a EMA de curto prazo cruzar acima da EMA de longo prazo de baixo, fechar a posição curta.

Vantagens da estratégia

  1. As médias móveis exponenciais reagem mais rapidamente às mudanças de preço em comparação com as médias móveis simples, gerando assim sinais de negociação mais oportunos.
  2. Ao determinar se o ponto de cruzamento é o preço mais alto ou mais baixo recente, pode filtrar oportunidades de negociação com maior força de tendência e melhorar a rentabilidade da estratégia.
  3. A marcação do preço do ponto de cruzamento no gráfico fornece aos traders referências de negociação mais intuitivas.
  4. A lógica do código é clara e fácil de entender e implementar.

Riscos estratégicos

  1. Os sinais gerados pelos crossovers da EMA podem ter um atraso, o que pode conduzir à perda das melhores oportunidades de negociação.
  2. Em um mercado flutuante, os crossovers da EMA podem ocorrer com frequência, o que resulta numa frequência excessiva das negociações e num aumento dos custos de negociação.
  3. A estratégia carece de medidas de stop-loss, pelo que, se o julgamento for errado, pode enfrentar um risco de retirada maior.

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

  1. Introduzir mais indicadores técnicos, como RSI, MACD, etc., para ajudar a julgar a força e a direção da tendência e melhorar a precisão do sinal.
  2. Estabelecer níveis razoáveis de stop-loss e take-profit para controlar o risco de negociação única.
  3. Otimizar os parâmetros de negociação, tais como os períodos de EMA e as janelas temporais de confirmação de cruzamento, para melhorar a adaptabilidade da estratégia.
  4. Combinar indicadores de sentimento do mercado, como o VIX, para filtrar sinais de negociação e reduzir sinais falsos.
  5. Considere a adição de módulos de gestão de posições e gestão de capital para ajustar dinamicamente o montante de fundos para cada transação e melhorar a eficiência da utilização do capital.

Resumo

Esta estratégia usa cruzamento de média móvel exponencial como sua lógica central, considerando também a posição relativa do preço do ponto de cruzamento no período recente para determinar a força da tendência.


/*backtest
start: 2024-02-01 00:00:00
end: 2024-02-29 23:59:59
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/
// © ZenAndTheArtOfTrading
// @version=5
strategy("ema giao nhau", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// Get user input
emaLength1 = input.int(title="EMA #1 Length", defval=5)
emaLength2 = input.int(title="EMA #2 Length", defval=10)

// Get MAs
ema1 = ta.ema(close, emaLength1)
ema2 = ta.ema(close, emaLength2)

// Draw MAs
plot(ema1, color=color.blue, title="EMA 1")
plot(ema2, color=color.red, title="EMA 2")

// Detect crossovers
bool crossOver = ta.crossover(ema1, ema2)
bool crossUnder = ta.crossunder(ema1, ema2)
bool cross = crossOver or crossUnder
//float crossPrice = ta.valuewhen(cross, close, 0)
float crossPrice = cross ? close : na

// Check if the crossover price is the highest price over the past 10 bars
bool highestPrice = crossOver
for i = 1 to 10
    if crossPrice <= close[i]
        highestPrice := false
        break

// Check if the crossover price is the lowest price over the past 10 bars
bool lowestPrice = crossUnder
for i = 1 to 10
    if crossPrice >= close[i]
        lowestPrice := false
        break

// Flag the bar if it is a high/low close
bgcolor(highestPrice ? color.new(color.green, 50) : na)
bgcolor(lowestPrice ? color.new(color.red, 50) : na)

// Display crossover price
if cross
    highestEmaPrice = ema1 > ema2 ? ema1 : ema2
    label myLabel = label.new(bar_index, highestEmaPrice, "CrossPrice=" + str.tostring(crossPrice), color=color.white)
    if highestPrice and strategy.position_size == 0
        strategy.entry(id="Buy", direction=strategy.long)
    if lowestPrice and strategy.position_size == 0
        strategy.entry(id="Sell", direction=strategy.short)

// Exit trades when short-term EMA is breached
if strategy.position_size > 0 and crossUnder
    strategy.close("Buy")
if strategy.position_size < 0 and crossOver
    strategy.close("Sell")

Mais.