
Esta estratégia permite a geração de sinais de negociação de cruzamento de EMAs de linha rápida e de linha lenta para a geração de sinais de negociação de cruzamento de ouro e cruzamento de morte. Quando a EMA de linha rápida atravessa a EMA de linha lenta, gera um sinal de compra; quando a EMA de linha rápida atravessa a EMA de linha lenta, gera um sinal de venda. A estratégia aproveita as vantagens da média móvel para acompanhar efetivamente as tendências do mercado e gera sinais de negociação na fase de início da tendência.
O indicador central desta estratégia é a linha EMA rápida e a linha EMA lenta. A estratégia usa dois parâmetros diferentes da linha EMA, o parâmetro EMA rápido é 10, o parâmetro EMA lento é 20. A linha EMA de 10 dias responde mais rapidamente às mudanças de preço, enquanto a linha EMA de 20 dias responde mais lentamente. Quando a linha EMA de curto prazo atravessa a linha EMA de longo prazo, a média de curto prazo começa a liderar a média de longo prazo para cima, indicando que a tendência pode entrar em um estado de baixa, o que gera um sinal de compra; ao contrário, quando a média de curto prazo atravessa a média de longo prazo, a média de curto prazo começa a perder a vantagem sobre a média de longo prazo, indicando que a tendência pode entrar em um estado de baixa, o que gera um sinal de venda.
Através do princípio do cruzamento de linhas de EMAs rápidas e lentas, a estratégia captura adequadamente o momento da transição da tendência do mercado e é capaz de produzir sinais de negociação em tempo hábil. Ao mesmo tempo, o indicador EMA em si tem a capacidade de filtrar falsos sinais e evitar a abertura frequente de posições em momentos de turbulência no mercado. Isso permite que a estratégia possa capturar pontos de mudança no mercado e, ao mesmo tempo, reduzir as transações erradas.
Para o risco acima, pode ser otimizado através da introdução de indicadores adicionais, como aumento das condições de filtragem de transação, evitar sinais de erro em combinação com o indicador MACD, usar a velocidade de resposta do indicador de aceleração do EMA auto-adaptável, etc. Além disso, o stop loss razoável e a parada ativa também são necessários.
A estratégia pode ser melhorada em várias áreas, incluindo:
Esta estratégia capta pontos de inflexão do mercado através do princípio de cruzamento de linhas rápidas e lentas de duas EMAs, com um forte efeito de mercado. Em combinação com indicadores auxiliares e otimizando o stop loss, pode aumentar ainda mais a estabilidade da estratégia. A ideia da estratégia é simples e clara, vale a pena aprender e usar o comerciante de quantificação, e tem um grande espaço de expansão e potencial de otimização.
/*backtest
start: 2023-01-15 00:00:00
end: 2024-01-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Backtest single EMA cross", overlay=true)
qty = input(100000, "Buy quantity")
testStartYear = input(2019, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testStartHour = input(0, "Backtest Start Hour")
testStartMin = input(0, "Backtest Start Minute")
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, testStartHour, testStartMin)
testStopYear = input(2099, "Backtest Stop Year")
testStopMonth = input(1, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0)
testPeriodBackground = input(title="Color Background?", type=input.bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and time >= testPeriodStart and time <= testPeriodStop ?
#00FF00 : na
testPeriod() => true
ema1 = input(10, title="Select EMA 1")
ema2 = input(20, title="Select EMA 2")
expo = ema(close, ema1)
ma = ema(close, ema2)
avg_1 = avg(expo, ma)
s2 = cross(expo, ma) ? avg_1 : na
//plot(s2, style=plot.style_line, linewidth=3, color=color.red, transp=0)
p1 = plot(expo, color=#00FFFF, linewidth=2, transp=0)
p2 = plot(ma, color=color.orange, linewidth=2, transp=0)
fill(p1, p2, color=color.white, transp=80)
longCondition = crossover(expo, ma)
shortCondition = crossunder(expo, ma)
if testPeriod()
strategy.entry("Long", strategy.long, when=longCondition)
strategy.entry("Short", strategy.short, when=shortCondition)
plotshape(longCondition, title = "Buy Signal", text ="BUY", textcolor =#FFFFFF , style=shape.labelup, size = size.normal, location=location.belowbar, color = #1B8112, transp = 0)
plotshape(shortCondition, title = "Sell Signal", text ="SELL", textcolor = #FFFFFF, style=shape.labeldown, size = size.normal, location=location.abovebar, color = #FF5733, transp = 0)