Estratégia de acompanhamento de tendência e momentum do EMA RSI


Data de criação: 2024-03-29 16:30:42 última modificação: 2024-03-29 16:30:42
cópia: 0 Cliques: 612
1
focar em
1617
Seguidores

Estratégia de acompanhamento de tendência e momentum do EMA RSI

Visão geral

A estratégia de seguimento de tendências do Bybit EMA RSI com a dinâmica é uma estratégia de negociação quantitativa que combina a média móvel do índice (EMA) e o índice relativamente forte (RSI). A estratégia usa EMAs de dois períodos diferentes para julgar a tendência do mercado e, ao mesmo tempo, usa o indicador RSI para confirmar a eficácia da tendência.

Princípio da estratégia

  1. Calcule o EMA rápido e o EMA lento, com períodos de 90 e 300, respectivamente.
  2. Calcule o RSI com um período de 5 anos.
  3. Quando a EMA rápida atravessa a EMA lenta e o RSI é inferior a 45, gera um sinal de quebra-cabeça; quando a EMA rápida atravessa a EMA lenta e o RSI é superior a 85, gera um sinal de quebra-cabeça.
  4. Dependendo do nível da conta do Bybit, o percentual de taxas varia de 0,075% para VIP 0 a 0,035% para VIP 4.
  5. Calcula o preço de abertura, incluindo a taxa de transação.
  6. Calcule o preço de parada e o preço de parada de acordo com a porcentagem de parada de parada definida (5% e 3%).
  7. Desenhe o preço de abertura, a linha de parada e a linha de perda no gráfico.
  8. Execução de operações de abertura de posição de acordo com os sinais de negociação.

Vantagens estratégicas

  1. A combinação de rastreamento de tendências e indicadores de dinâmica permite capturar melhor as tendências do mercado.
  2. Função de suspensão de travão embutida para controlar o risco.
  3. De acordo com o nível da conta do Bybit, configura diferentes proporções de taxa de processamento para atender às condições de transação de diferentes usuários.
  4. O preço de abertura da posição, a linha de parada e a linha de parada são traçados no gráfico, fornecendo uma confirmação de sinal de negociação intuitiva.

Risco estratégico

  1. A escolha dos parâmetros EMA e RSI pode não ser adequada para todos os cenários de mercado e precisa ser otimizada de acordo com a situação real.
  2. Em mercados turbulentos, essa estratégia pode gerar sinais de negociação frequentes, resultando em altos custos de negociação.
  3. A configuração de stop loss pode ser muito conservadora ou radical e precisa ser ajustada de acordo com as preferências de risco individuais.

Direção de otimização da estratégia

  1. Os parâmetros do EMA e do RSI são otimizados para adaptar-se a diferentes cenários de mercado. A combinação ideal de parâmetros pode ser encontrada por meio de retracção e varredura de parâmetros.
  2. A introdução de outros indicadores técnicos, como Brinks, MACD, etc., para melhorar a precisão dos sinais de negociação.
  3. Optimizar as configurações de stop loss, por exemplo, usando stop loss móvel ou stop loss dinâmico, para melhor proteger os lucros e controlar o risco.
  4. Considerando fatores como a volatilidade do mercado e o volume de transações, os sinais de negociação são filtrados, reduzindo os custos de transações frequentes.

Resumir

A estratégia de seguimento de tendências e dinâmica do EMA RSI da Bybit é uma estratégia de negociação quantitativa que combina o acompanhamento de tendências e o indicador de dinâmica. Usando a combinação de EMA e RSI, é possível capturar melhor a tendência do mercado. A estratégia possui um função de parada de parada e uma função de taxa de comissão definida de acordo com o nível da conta da Bybit, que permite controlar o risco de forma eficaz e adaptar-se às diferentes condições de negociação do usuário.

Código-fonte da estratégia
/*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