Estrategia de seguimiento de tendencias y momentum para EMA RSI


Fecha de creación: 2024-03-29 16:30:42 Última modificación: 2024-03-29 16:30:42
Copiar: 0 Número de Visitas: 612
1
Seguir
1617
Seguidores

Estrategia de seguimiento de tendencias y momentum para EMA RSI

Descripción general

La estrategia de seguimiento de tendencias de EMA RSI de Bybit con dinámica es una estrategia de negociación cuantitativa que combina un índice de promedio móvil (EMA) y un índice relativamente fuerte (RSI). La estrategia utiliza EMA de dos períodos diferentes para juzgar la tendencia del mercado, mientras que el indicador RSI se utiliza para confirmar la efectividad de la tendencia.

Principio de estrategia

  1. Calcula el EMA rápido y el EMA lento, con periodos de 90 y 300, respectivamente.
  2. Calcula el RSI con un ciclo de 5 .
  3. Cuando el EMA rápido atraviesa el EMA lento y el RSI es inferior a 45, genera una señal de más; cuando el EMA rápido atraviesa el EMA lento y el RSI es superior a 85, genera una señal de menos.
  4. El porcentaje de comisiones varía según el nivel de cuenta de Bybit, desde el 0.075% de VIP 0 hasta el 0.035% de VIP 4.
  5. El precio de apertura incluye los honorarios.
  6. El precio de parada y el precio de parada se calculan de acuerdo con el porcentaje de parada y pérdida fijado (el 5% y el 3%).
  7. Traza el precio de apertura, la línea de parada y la línea de pérdida en el gráfico.
  8. La operación de apertura de posición se ejecuta según la señal de negociación.

Ventajas estratégicas

  1. La combinación de seguimiento de tendencias y indicadores de dinámica permite capturar mejor las tendencias del mercado.
  2. Función de frenado de pérdidas incorporada para controlar el riesgo de manera efectiva.
  3. Establece diferentes proporciones de comisiones según el nivel de cuenta de Bybit y se adapta a las condiciones de transacción de diferentes usuarios.
  4. El precio de apertura de la posición, la línea de parada y la línea de pérdida se trazan en el gráfico, lo que proporciona una confirmación intuitiva de la señal de negociación.

Riesgo estratégico

  1. La elección de los parámetros EMA y RSI puede no ser aplicable a todos los entornos de mercado y debe optimizarse en función de las circunstancias reales.
  2. En un mercado convulso, esta estrategia puede generar señales de negociación frecuentes, lo que genera costos de negociación elevados.
  3. La configuración de la parada de pérdidas puede ser demasiado conservadora o radical y debe ajustarse según las preferencias de riesgo personales.

Dirección de optimización de la estrategia

  1. Los parámetros de EMA y RSI se optimizan para adaptarse a diferentes entornos de mercado. Se puede buscar la combinación óptima de parámetros mediante retroalimentación y barrido de parámetros.
  2. La introducción de otros indicadores técnicos, como el Brinband, el MACD, etc., para mejorar la precisión de las señales de negociación.
  3. Optimizar la configuración del stop loss, por ejemplo, mediante el uso de un stop loss móvil o un stop loss dinámico, para proteger mejor los beneficios y controlar el riesgo.
  4. Tenga en cuenta factores como la volatilidad del mercado y el volumen de transacciones, filtre las señales de transacción y reduzca los costos de las transacciones frecuentes.

Resumir

La estrategia de seguimiento de tendencias y dinámica de Bybit EMA RSI es una estrategia de negociación cuantitativa que combina el seguimiento de tendencias y los indicadores de dinámica para capturar mejor las tendencias del mercado mediante el uso de la combinación de EMA y RSI. La estrategia tiene integrada la función de stop loss y la función de establecer comisiones según el nivel de la cuenta de Bybit para controlar el riesgo de manera efectiva y adaptarse a las diferentes condiciones de negociación de los usuarios.

Código Fuente de la Estrategia
/*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