Estratégia de acompanhamento da tendência e do ímpeto do EMA RSI

Autora:ChaoZhang, Data: 2024-03-29 16:30:42
Tags:

img

Resumo

A estratégia de seguimento de tendências e impulso da Bybit EMA RSI é uma estratégia quantitativa de negociação que combina médias móveis exponenciais (EMA) e o índice de força relativa (RSI). A estratégia usa duas EMAs com períodos diferentes para determinar as tendências do mercado e o indicador RSI para confirmar a validade das tendências. Quando a EMA rápida cruza acima da EMA lenta e o RSI está abaixo de um limite inferior específico, a estratégia gera um sinal longo. Por outro lado, quando a EMA rápida cruza abaixo da EMA lenta e o RSI está acima de um limite superior específico, a estratégia gera um sinal curto.

Princípios de estratégia

  1. Calcular a EMA rápida e a EMA lenta com períodos de 90 e 300, respectivamente.
  2. Calcular o indicador RSI com um período de 5.
  3. Gerenciar um sinal longo quando a EMA rápida cruza acima da EMA lenta e o RSI está abaixo de 45; gerar um sinal curto quando a EMA rápida cruza abaixo da EMA lenta e o RSI está acima de 85.
  4. Defina diferentes porcentagens de comissão com base no nível da conta Bybit, variando de 0,075% para VIP 0 a 0,035% para VIP 4.
  5. Calcular os preços de entrada com comissão incluída.
  6. Calcular os preços de captação de lucro e de stop loss com base nas percentagens fixadas (5% e 3%).
  7. Trace os preços de entrada, tire as linhas de lucro e as linhas de stop loss no gráfico.
  8. Execução de ordens de entrada com base nos sinais de negociação.

Vantagens da estratégia

  1. Combina indicadores de tendência e de dinâmica para captar eficazmente as tendências do mercado.
  2. Inclui funções integradas de captação de lucro e de stop loss para gerir o risco de forma eficaz.
  3. Estabelece diferentes porcentagens de comissão com base no nível da conta Bybit, adaptando-se às diferentes condições de negociação dos usuários.
  4. Traça os preços de entrada, as linhas de lucro e as linhas de stop loss no gráfico, fornecendo confirmação visual dos sinais comerciais.

Riscos estratégicos

  1. A seleção dos parâmetros EMA e RSI pode não ser adequada a todas as condições de mercado e pode exigir otimização com base nas situações reais.
  2. Em mercados agitados, a estratégia pode gerar sinais de negociação frequentes, levando a altos custos de negociação.
  3. As configurações de take profit e stop loss podem ser demasiado conservadoras ou agressivas e poderão necessitar de ajustamento com base nas preferências pessoais de risco.

Orientações para a otimização da estratégia

  1. Otimizar os parâmetros EMA e RSI para se adaptar às diferentes condições do mercado.
  2. Introduzir outros indicadores técnicos, tais como bandas de Bollinger, MACD, etc., para melhorar a precisão dos sinais de negociação.
  3. Otimizar as configurações de take profit e stop loss, por exemplo, utilizando trailing stops ou métodos de stop loss dinâmicos para melhor proteger os lucros e gerir o risco.
  4. Considerar fatores como a volatilidade do mercado e o volume de negociação para filtrar os sinais de negociação e reduzir os custos associados à negociação frequente.

Resumo

A estratégia de seguimento de tendências e momento é uma estratégia quantitativa de negociação que combina indicadores de tendência e momento. Ao usar EMAs e RSI juntos, ele pode capturar efetivamente as tendências do mercado. A estratégia inclui funções de take profit e stop loss e define porcentagens de comissão com base no nível da conta Bybit, gerenciando efetivamente o risco e se adaptando às diferentes condições de negociação dos usuários. No entanto, ainda há espaço para otimização na estratégia, como otimização de parâmetros, introdução de outros indicadores técnicos e otimização de configurações de take profit e stop loss. Com otimização e melhoria contínua, a estratégia deve alcançar melhores resultados na negociação real.


/*backtest
start: 2024-03-21 00:00:00
end: 2024-03-28 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// @BryanAaron

//@version=5
strategy("Bybit EMA RSI Strategy", overlay=true)

// Input parameters
fastLength = input(90, title="Fast EMA Length")
slowLength = input(300, title="Slow EMA Length")
rsiLength = input(5, title="RSI Length")
rsiUpperThreshold = input(85, title="RSI Upper Threshold")
rsiLowerThreshold = input(45, title="RSI Lower Threshold")
takeProfitPerc = input(5, title="Take Profit %")
stopLossPerc = input(3, title="Stop Loss %")
bybitAccountLevel = input.string("VIP 0", title="Bybit Account Level", options=["VIP 0", "VIP 1", "VIP 2", "VIP 3", "VIP 4"])

// Calculate moving averages
fastMA = ta.ema(close, fastLength)
slowMA = ta.ema(close, slowLength)

// Calculate RSI
rsi = ta.rsi(close, rsiLength)

// Trading conditions
longCondition = (fastMA > slowMA) and (rsi < rsiLowerThreshold)
shortCondition = (fastMA < slowMA) and (rsi > rsiUpperThreshold)

// Set commission based on Bybit account level
commissionPerc = switch bybitAccountLevel
    "VIP 0" => 0.075
    "VIP 1" => 0.065
    "VIP 2" => 0.055
    "VIP 3" => 0.045
    "VIP 4" => 0.035
    => 0.075

// Calculate entry prices with commission
var float longEntryPrice = na
var float shortEntryPrice = na

longEntryPriceWithCommission = close * (1 + commissionPerc / 100)
shortEntryPriceWithCommission = close * (1 - commissionPerc / 100)

// Calculate take profit and stop loss prices
takeProfitPrice(entryPrice) => entryPrice * (1 + takeProfitPerc / 100)
stopLossPrice(entryPrice) => entryPrice * (1 - stopLossPerc / 100)

// Plot entry prices
plotchar(longCondition, title="Long Entry Price", char="LE", location=location.belowbar, color=color.green)
plotchar(shortCondition, title="Short Entry Price", char="SE", location=location.abovebar, color=color.red)

// Draw position on the chart
longColor = color.green
shortColor = color.red
profitColor = color.new(color.green, 80)
lossColor = color.new(color.red, 80)

plotshape(longCondition and strategy.position_size > 0, title="Long Position", text="Long", location=location.belowbar, style=shape.labelup, size=size.small, color=longColor, textcolor=color.white)
plotshape(shortCondition and strategy.position_size < 0, title="Short Position", text="Short", location=location.abovebar, style=shape.labeldown, size=size.small, color=shortColor, textcolor=color.white)

if (strategy.position_size > 0)
    line.new(bar_index, longEntryPrice, bar_index + 1, longEntryPrice, color=longColor, width=2)
    
    longProfitLine = line.new(bar_index, takeProfitPrice(longEntryPrice), bar_index + 1, takeProfitPrice(longEntryPrice), color=profitColor, width=1)
    longLossLine = line.new(bar_index, stopLossPrice(longEntryPrice), bar_index + 1, stopLossPrice(longEntryPrice), color=lossColor, width=1)
    

else if (strategy.position_size < 0)
    line.new(bar_index, shortEntryPrice, bar_index + 1, shortEntryPrice, color=shortColor, width=2)
    
    shortProfitLine = line.new(bar_index, stopLossPrice(shortEntryPrice), bar_index + 1, stopLossPrice(shortEntryPrice), color=profitColor, width=1)
    shortLossLine = line.new(bar_index, takeProfitPrice(shortEntryPrice), bar_index + 1, takeProfitPrice(shortEntryPrice), color=lossColor, width=1)
    


// Entry
if (longCondition)
    strategy.entry("Long", strategy.long)
    longEntryPrice := longEntryPriceWithCommission
else if (shortCondition)
    strategy.entry("Short", strategy.short)
    shortEntryPrice := shortEntryPriceWithCommission

Mais.