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


Data de criação: 2024-03-29 10:59:57 última modificação: 2024-03-29 10:59:57
cópia: 1 Cliques: 517
1
focar em
1617
Seguidores

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

Visão geral

A estratégia usa o cruzamento de duas médias móveis de índices (EMA) como um sinal de compra e venda. Quando a EMA de curto prazo atravessa a EMA de longo prazo de baixo para cima, gera um sinal de compra; ao contrário, quando a EMA de curto prazo atravessa a EMA de longo prazo de cima para baixo, gera um sinal de venda. Ao mesmo tempo, a estratégia também determina se o ponto de cruzamento é o preço mais alto ou mais baixo nos últimos 10 ciclos de negociação, para confirmar a força da tendência. Se o ponto de cruzamento é o mais alto, o preço é mostrado em verde no fundo; se é o preço mais baixo, é mostrado em vermelho.

Princípio da estratégia

  1. Calcule o EMA de dois períodos diferentes, com os períodos padrão de 5 e 10.
  2. Para avaliar se dois EMAs se cruzam, um sinal de compra é gerado se o EMA curto atravessar o EMA longo de baixo para cima; um sinal de venda é gerado se o EMA curto atravessar o EMA longo de cima para baixo.
  3. Ao gerar um sinal de cruzamento, julgue se o ponto de cruzamento atual é o preço mais alto ou mais baixo nos últimos 10 ciclos de negociação. Se for o preço mais alto, considere uma forte tendência ascendente; se for o preço mais baixo, considere uma forte tendência descendente.
  4. Se um sinal de compra for gerado e não houver uma posição atual, será aberto um pedido adicional; se um sinal de venda for gerado e não houver uma posição atual, será aberto um pedido vazio.
  5. Se já houver várias posições em que o EMA curto atravessa o EMA longo de cima para baixo, então as posições estão em branco. Se já houver várias posições em que o EMA curto atravessa o EMA longo de baixo para cima, então as posições estão em branco.

Vantagens estratégicas

  1. As médias móveis indexadas são capazes de reagir mais rapidamente às mudanças de preço do que as médias móveis simples, o que permite a geração de sinais de negociação mais oportunos.
  2. Ao julgar se o ponto de interseção é o preço mais alto ou o preço mais baixo da última hora, é possível selecionar oportunidades de negociação com maior intensidade de tendência e aumentar os ganhos estratégicos.
  3. Os preços dos pontos de cruzamento são marcados no gráfico para fornecer uma referência de negociação mais intuitiva para os comerciantes.
  4. A lógica do código é clara, fácil de entender e de implementar.

Risco estratégico

  1. O sinal gerado pelo cruzamento da EMA pode ter um atraso, resultando em perda do melhor momento de negociação.
  2. Em mercados de turbulência, os cruzamentos EMA podem ocorrer com frequência, resultando em um excesso de transações e aumentando os custos de transação.
  3. A estratégia não possui parâmetros de perda e, se for mal julgada, pode ter um risco maior de retração.

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

  1. A introdução de mais indicadores técnicos, como RSI, MACD e outros, para auxiliar na determinação da força e direção da tendência, aumentando a precisão do sinal.
  2. Estabeleça um limite razoável de stop loss e stop loss para controlar o risco de uma única transação.
  3. Optimizar os parâmetros de negociação, como o ciclo EMA, a janela de tempo de confirmação cruzada, etc., para melhorar a adaptabilidade da estratégia.
  4. Combinado com indicadores de sentimento de mercado, como o VIX, para filtrar os sinais de negociação, reduzindo os sinais errados.
  5. Considere a adição de módulos de gerenciamento de posições e gerenciamento de fundos, ajustando dinamicamente a quantidade de fundos em cada transação e aumentando a eficiência do uso de fundos.

Resumir

A estratégia usa o cruzamento de médias móveis indexadas como lógica central, combinando a posição relativa dos preços dos pontos de cruzamento no período recente, para determinar a força da tendência. No geral, a lógica da estratégia é clara, as vantagens são evidentes, mas há também certas limitações e riscos.

Código-fonte da estratégia
/*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")