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.
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.
Quando o preço cai abaixo da EMA de cima para baixo, um sinal de venda é gerado para negociação curta.
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.
A estratégia de cruzamento da média móvel do Galileo Galilei tem as seguintes vantagens:
Os riscos potenciais desta estratégia incluem:
Algumas maneiras de otimizar a estratégia:
Incorporar outros indicadores para construir uma estratégia composta para aumentar a robustez contra falsos sinais.
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.
Testar EMAs com diferentes combinações de parâmetros para encontrar configurações ideais.
Avaliação da lógica de reentrada para captar rebotes após reversões iniciais de preços, melhorando a rentabilidade.
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)