A estratégia de negociação de crossover de média móvel gera sinais de compra e venda calculando o cruzamento das linhas de EMA rápida (fastLength) e lenta (slowLength). Quando a linha rápida cruza acima da linha lenta, um sinal de compra é gerado. Quando a linha rápida cruza abaixo da linha lenta, um sinal de venda é gerado. Esta estratégia é simples e prática, adequada para negociação de médio e curto prazo.
A estratégia usa duas linhas médias móveis, linha rápida e linha lenta. O parâmetro da linha rápida EMAfastLength é padrão para linha de 9 dias, e o parâmetro da linha lenta EMAslowLength é padrão para linha de 26 dias. Calcule o cruzamento das duas linhas EMA para determinar os sinais de compra e venda do mercado:
Os sinais de negociação específicos e as regras de estratégia são os seguintes:
Então esta estratégia é baseada na cruz de ouro e cruz morta das duas linhas de média móvel.
Para abordar os riscos, os parâmetros que podem ser otimizados incluem o ciclo da média móvel, a variedade de negociação, a taxa de captação de lucro e de stop loss, etc. São necessários testes extensos para reduzir os riscos.
A ideia de cruzamento da média móvel desta estratégia é simples e prática.
Através destes testes de otimização, o efeito prático e a estabilidade da estratégia podem ser consideravelmente melhorados.
A ideia da estratégia de cruzamento de média móvel é simples, mas a aplicação prática requer otimização contínua. Esta estratégia dá a lógica de geração de sinais de negociação e regras básicas de negociação. Nesta base, pode ser muito otimizada para se tornar uma estratégia quantitativa utilizável. A aplicação da média móvel também nos fornece ideias para estratégias, com base nas quais podemos inovar e melhorar.
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("EMA Cross by MarketAlpha", overlay=true) EMAfastLength = input(defval = 9, minval = 2) EMAslowLength = input(defval = 26, minval = 2) Targetpercentage = input(defval = 0.15, title = "Profit Target in percentage", minval = 0.05) StopLosspercentage = input(defval = 0.20, title = "Stop Loss in percentage", minval = 0.05) profitpoints = close*Targetpercentage stoplosspoints = close*StopLosspercentage price = close FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) FromYear = input(defval = 2018, title = "From Year", minval = 2000) ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) ToYear = input(defval = 9999, title = "To Year", minval = 2017) start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window window() => true // create function "within window of time" emafast = ema(price, EMAfastLength) emaslow = sma(price, EMAslowLength) plot(emafast,color=green) plot(emaslow,color=red) enterLong() => crossover(emafast, emaslow) strategy.entry(id = "MarketAlpha Long", long = true, when = window() and enterLong()) strategy.exit("Exit Long", from_entry = "MarketAlpha Long", profit = profitpoints,loss = stoplosspoints) enterShort() => crossunder(emafast, emaslow) strategy.entry(id = "MarketAlpha Short", long = false, when = window() and enterShort()) strategy.exit("Exit Short", from_entry = "MarketAlpha Short", profit = profitpoints,loss = stoplosspoints)