
O Momentum Indicator Crossover Strategy é uma estratégia de negociação que combina o Exponential Moving Average (EMA) e o Relative Strength Index (RSI). Esta estratégia visa usar o cruzamento das duas linhas de EMA para gerar sinais de compra e venda, de modo a negociar nos mercados financeiros.
O núcleo da estratégia é o sistema de cruzamento de linhas rápidas e lentas da EMA. A estratégia define três linhas EMA com diferentes parâmetros:ema1、ema2eema3Entre eles,ema1A tendência é de curto prazo.ema2A tendência a médio prazo.ema3Representa a tendência de longo prazo. Quando a tendência de curto prazo cruza a tendência de médio prazo, gera um sinal de compra; Quando a tendência de curto prazo cruza a tendência de médio prazo, gera um sinal de venda.
Para filtrar sinais de diagnóstico errados, a política define duas condições adicionais:bodybar1 > bodybar2eclose > entrybar(Sinais de compra) ouclose < entrybarIsso garante que a relação de comprimento entre as duas linhas K mais próximas esteja de acordo com a direção do sinal e que o preço ultrapasse o ponto de entrada para evitar a repetição.
Além disso, a estratégia é combinada com o indicador RSI evalue, onde as áreas altas do RSI são usadas para definir sinais de sobrecompra e as áreas baixas do RSI são usadas para definir sinais de sobrevenda. Isso ajuda a evitar sinais errados em mercados com preços muito quentes e muito frios.
A estratégia tem as seguintes vantagens:
A estratégia também apresenta os seguintes riscos:
A estratégia pode ser otimizada em várias direções:
A estratégia de cruzamento de indicadores dinâmicos integra os benefícios da EMA e do RSI, formando sinais de negociação com base no cruzamento de indicadores. A estratégia é simples e prática, adequada para o uso de iniciantes, mas também pode ser ampliada e otimizada de acordo com as necessidades reais, aumentando a eficácia da estratégia.
/*backtest
start: 2022-12-20 00:00:00
end: 2023-12-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy('EMA Crossover Strategy', shorttitle='EMA Crossover', overlay=true)
// Define input for position size as a percentage of equity
position_size_pct = input(1, title='Position Size (%)') / 100
//Input EMA
len1 = input.int(25, minval=1, title='EMA 1')
src1 = input(close, title='Source')
ema1 = ta.ema(src1, len1)
len2 = input.int(100, minval=1, title='EMA 2')
src2 = input(close, title='Source')
ema2 = ta.ema(src2, len2)
len3 = input.int(200, minval=1, title='EMA 3')
src3 = input(close, title='Source')
ema3 = ta.ema(src3, len3)
//End of format
//Format RSI
lenrsi = input(14, title='RSI length')
outrsi = ta.rsi(close,lenrsi)
//plot(outrsi, title='RSI', color=color.new(color.blue, 0), linewidth=1)
//hline(70, 'Overbought', color=color.red)
//hline(30, 'Oversold', color=color.green)
//End of format
bodybar1 = math.abs(close - open)
bodybar2 = math.abs(close[1] - open[1])
// Plot the EMAs
plot(ema1, color=color.new(color.blue, 0), title='EMA 1')
plot(ema2, color=color.new(color.red, 0), title='EMA 2')
//plot(ema3, color=color.new(#ffffff, 0), title='EMA 3')
// EMA Crossover conditions
emaCrossoverUp = ta.crossover(ema1, ema2)
emaCrossoverDown = ta.crossunder(ema1, ema2)
var entrybar = close // Initialize entrybar with the current close
// Calculate crossovers outside of the if statements
emaCrossoverUpOccured = ta.crossover(close, ema1) and ema1 > ema2 and bodybar1 > bodybar2 and close > entrybar
emaCrossoverDownOccured = ta.crossunder(close, ema1) and ema1 < ema2 and bodybar1 > bodybar2 and close < entrybar
plotshape(series=emaCrossoverUpOccured, location=location.abovebar, color=color.new(color.green, 0), style=shape.triangleup, title='New Buy Order', size=size.tiny)
plotshape(series=emaCrossoverDownOccured, location=location.belowbar, color=color.new(color.red, 0), style=shape.triangledown, title='New Sell Order', size=size.tiny)
// Define trading logic with custom position size and RSI conditions
if emaCrossoverUp or emaCrossoverUpOccured
strategy.entry('Buy', strategy.long)
entrybar := close // Update entrybar when entering a new buy position
entrybar
if emaCrossoverDown or emaCrossoverDownOccured
strategy.entry('Sell', strategy.short)
entrybar := close // Update entrybar when entering a new sell position
entrybar