Estratégia cruzada de diferença média móvel zero

Autora:ChaoZhang, Data: 2024-01-26 15:45:03
Tags:

img

Resumo

Princípio da estratégia

  1. Calcular a média móvel exponencial de 8 períodos e a média móvel mais baixa dos últimos 8 dias
  2. Calcular a diferença entre o preço e a média móvel actual
  3. Quando o diferencial é inferior a 0, é um sinal de baixa, quando o diferencial ultrapassa 0, é um sinal de divergência inferior, indicando alta.
  4. Combine o valor numérico da diferença para comparar o declínio máximo durante a última semana para gerar sinais de negociação

Análise das vantagens

  1. Usando o sistema de média móvel dupla pode efetivamente filtrar falsos avanços
  2. Aplicando a teoria do preço mínimo para descobrir sinais de fundo
  3. Comparação numérica para julgar as condições de sobrevenda e sobrecompra, evitando perseguir altas e matar baixas

Análise de riscos

  1. As estratégias de média móvel dupla são propensas a efeitos de serra
  2. A necessidade de prestar atenção ao problema da frequência excessiva das negociações

Orientações de otimização

  1. Ajustar os parâmetros do período da média móvel para adaptá-los aos diferentes ciclos
  2. Aumentar os indicadores de volume para filtrar falsos sinais de ruptura
  3. Combinar o indicador estocástico para evitar condições de sobrevenda e sobrecompra

Resumo

Esta estratégia integra o método de diferença média móvel e o sistema de cruzamento de eixo zero para melhorar a precisão da detecção de pontos de compra e venda. No entanto, ainda é necessária uma otimização adicional das configurações de parâmetros e combinação com outros indicadores para filtrar sinais.


/*backtest
start: 2023-01-19 00:00:00
end: 2024-01-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title = "Estratégia diferença menor preço de 8")

// Configuração da Média Móvel
emaPeriod = 8

ema= ema(close, emaPeriod)
ema1= ema(close[1], emaPeriod)
lowestEMA = lowest(ema, 8)

// Calcula a diferença entre o preço e a média móvel
diff = close - ema
diff1 = close[1] - ema1
diffLow = ema - lowestEMA

//Condições
diffZero = diff < 0
diffUnder = diff < diffLow
diffUm = diff > 0
Low0 = diffLow == 0




// Sinais de entrada
buy_signal = diffUnder and crossover(diff, diff1) 
sell_signal = diffUm and diffUnder and crossunder(diff, diff1)

// Executa as operações de compra/venda
if buy_signal
    strategy.entry("Buy", strategy.long)
if sell_signal
    strategy.exit("Buy")

// Plota as linhas
plot(0, title="Linha Zero", color=color.gray)
plot(diff, title="Diferença", color=color.blue, linewidth=2)

plot(diffLow, title="Diferença", color=color.red, linewidth=2)


Mais.