A estratégia de cruzamento da média móvel de Galilei

Autora:ChaoZhang, Data: 2023-12-18 12:07:07
Tags:

img

Resumo

A estratégia de cruzamento da média móvel de Galileo Galilei é uma estratégia de negociação baseada em médias móveis. Ela gera sinais de negociação calculando a média móvel exponencial (EMA) em um período especificado e comparando cruzamento entre a EMA e o preço. Os sinais de venda são gerados quando o preço cai abaixo da EMA de cima para baixo, enquanto os sinais de compra ocorrem quando o preço quebra acima da EMA de baixo para cima.

Estratégia lógica

O núcleo da estratégia do Galileo Galilei está na média móvel exponencial (EMA).

EMA de hoje = (Preço de fechamento de hoje × Fator de suavização) + (EMA de ontem × (1 − Fator de suavização))

Onde o fator de suavização α = (2/(número de períodos + 1))

A estratégia calcula dinamicamente a EMA com base nos parâmetros do período de entrada do usuário.

  1. Quando o preço cai abaixo da EMA de cima para baixo, um sinal de venda é gerado para negociação curta.

  2. Quando o preço ultrapassa a EMA por baixo, um sinal de compra é acionado para negociação longa.

A estratégia também traça a linha EMA no gráfico, juntamente com marcadores de seta que indicam sinais de compra e venda.

Análise das vantagens

A estratégia de cruzamento da média móvel do Galileo Galilei tem as seguintes vantagens:

  1. Lógica simples que seja fácil de entender e implementar, adequada para iniciantes.
  2. Uma resposta mais rápida às alterações de preços através da utilização da EMA.
  3. Sinais de cruzamento claros sem batidas excessivas.
  4. Flexibilidade para se adaptar a diferentes ambientes de mercado através do ajustamento dos parâmetros da EMA.
  5. Os sinais de entrada e saída definidos proporcionam controlo de riscos.

Análise de riscos

Os riscos potenciais desta estratégia incluem:

  1. Uma estratégia de stop loss pode ajudar a otimizar.
  2. A dependência de um único indicador torna-o vulnerável à manipulação de preços.
  3. A redução dos períodos de EMA pode ajudar.
  4. Incapacidade de se adaptar a tendências de preços unilaterais prolongadas, uma limitação comum entre as estratégias de média móvel.

Orientações de otimização

Algumas maneiras de otimizar a estratégia:

  1. Incorporar outros indicadores para construir uma estratégia composta para aumentar a robustez contra falsos sinais.

  2. Adicionar mecanismos de stop loss como stop loss de trailing ou stop loss baseado em percentagem para controlar o montante da perda de uma única negociação.

  3. Testar EMAs com diferentes combinações de parâmetros para encontrar configurações ideais.

  4. Avaliação da lógica de reentrada para captar rebotes após reversões iniciais de preços, melhorando a rentabilidade.

Conclusão

O crossover da média móvel de Galileo Galilei é uma estratégia simples, mas prática, com lógica clara e facilidade de operação. É adequado para comerciantes quant iniciantes. Com melhorias contínuas, seu desempenho pode se tornar cada vez mais superior ao longo do tempo.


/*backtest
start: 2022-12-11 00:00:00
end: 2023-12-17 00:00:00
period: 1d
basePeriod: 1h
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/
// © armigoldman

//@version=3
strategy(title="Galileo Galilei", shorttitle="Galileo Galilei", overlay=true, initial_capital = 100000, default_qty_type=strategy.cash, default_qty_value = 100000)
len = input(11, minval=1, title="Length")
src = input(open, title="Source")
out = ema(src, len)
plot(out, title="EMA", color=yellow)
//last8h = highest(close, 8)
//lastl8 = lowest(close, 8)

//plot(last8h, color=red, linewidth=2)
//plot(lastl8, color=green, linewidth=2)

////////////////////////////////////////////////////////////////////////////////
// BACKTESTING RANGE

// From Date Inputs
fromDay = input(defval=1, title="From Day", minval=1, maxval=31)
fromMonth = input(defval=1, title="From Month", minval=1, maxval=12)
fromYear = input(defval=2020, title="From Year", minval=1970)

// To Date Inputs
toDay = input(defval=1, title="To Day", minval=1, maxval=31)
toMonth = input(defval=12, title="To Month", minval=1, maxval=12)
toYear = input(defval=2021, title="To Year", minval=1970)

// Calculate start/end date and time condition
startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true


bearish = cross(close, out) == 1 and close[1] > close
bullish = cross(close, out) == 1 and close[1] < close

plotshape(bearish, color=white, style=shape.arrowdown, text="BEAR", location=location.abovebar)
plotshape(bullish, color=white, style=shape.arrowup, text="BULL", location=location.belowbar)

buy = if cross(close, out) == 1 and close[1] < close
    strategy.entry("BUY", strategy.long, when=time_cond)
        //strategy.close_all(when=bearish)
        // strategy.exit("exit", "Long", profit =, loss = 35)


sell = if cross(close, out) == 1 and close[1] > close
    strategy.entry("SELL", strategy.short, when=time_cond)
        //sell = if bearish
        //strategy.close_all(when=bullish)
        // strategy.exit("exit", "Long", profit = bullish, loss = 100)

profit = strategy.netprofit
if not time_cond
    strategy.close_all()

//plotshape(true, style=shape.triangleup, location=location.abovebar)


Mais.