
A estratégia de negociação de forcas de ouro de média móvel gera sinais de compra e venda por meio do cálculo do cruzamento da linha rápida (EMA) e da linha lenta (EMA). Quando a linha rápida atravessa a linha lenta, gera um sinal de compra; Quando a linha rápida atravessa a linha lenta, gera um sinal de venda.
A estratégia usa duas médias móveis, a linha rápida e a linha lenta. O parâmetro de linha rápida, EMAfastLength, assume a linha de 9 dias, e o parâmetro de linha lenta, EMAAslowLength, assume a linha de 26 dias. A interseção das duas linhas EMA é calculada para determinar os sinais de compra e venda do mercado:
Os sinais de negociação e as regras de estratégia são as seguintes:
Portanto, a estratégia é executar uma operação de negociação quando as duas médias móveis ocorrem em um golden fork e um dead fork.
Os parâmetros que podem ser otimizados para o risco, como o ciclo de média móvel, a variedade de negociação, a taxa de stop-loss, etc., requerem um grande número de testes para reduzir o risco.
A estratégia de cruzamento de médias móveis é simples e prática e pode ser otimizada da seguinte forma:
Com esses testes de otimização, a eficácia e a estabilidade da estratégia podem ser significativamente aumentadas.
A estratégia de cruzamento de médias móveis é simples e precisa ser constantemente otimizada. Esta estratégia fornece a lógica de geração de sinais de negociação e as regras básicas de negociação, com base nisso, pode ser fortemente otimizada para torná-la uma estratégia quantitativa viável. A aplicação das médias móveis também nos fornece a estratégia de pensamento, com base na qual 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)