RSI Dinámica Estrategia de Stop Loss y Take Profit

El autor:¿ Qué pasa?, Fecha: 2024-03-19 15:54:01
Las etiquetas:

img

Resumen de la estrategia: La estrategia se basa en la relación entre el indicador RSI y el precio, optimizando el rendimiento comercial ajustando dinámicamente los niveles de take profit y stop loss.

Principio de la estrategia:

  1. Calcular el valor del indicador RSI y determinar los umbrales de sobrecompra y sobreventa en función de los parámetros de entrada.
  2. Juzgue si aparece una formación de pico (isPeak) o una formación de fondo (isBottom) comparando el valor actual del RSI con los valores del RSI de las velas anteriores.
  3. Cuando aparece una formación de pico, si el precio actual es mayor que el máximo del pico anterior y el volumen de negociación es menor que el volumen de negociación del pico anterior, se genera una señal de venta.
  4. Cuando aparece una formación de fondo, si el precio actual es inferior al mínimo del fondo anterior y el volumen de negociación es menor que el volumen de negociación del fondo anterior, se genera una señal de compra.
  5. Después de que se activa una señal de compra, tome ganancias cuando el precio vuelva al mínimo del fondo anterior o el volumen de negociación sea menor que el volumen de negociación del fondo anterior.
  6. Después de que se activa una señal de venta, obtenga ganancias cuando el precio rebote al máximo del pico anterior o el volumen de negociación sea menor que el volumen de negociación del pico anterior.
  7. Después de abrir una posición, fije el precio de stop loss en un cierto porcentaje (2%) del precio de apertura para controlar el riesgo.

Ventajas estratégicas:

  1. Al tomar ganancias dinámicamente, las ganancias se pueden bloquear de manera oportuna al comienzo de una inversión de tendencia, mejorando los rendimientos de la estrategia.
  2. El uso de cambios en el volumen de operaciones como condición de juicio auxiliar puede filtrar eficazmente las señales falsas y mejorar la precisión de la señal.
  3. El establecimiento de pérdidas de parada puede controlar eficazmente la exposición al riesgo de una sola transacción y reducir los retiros de la estrategia.
  4. Los parámetros son ajustables y aplicables a diferentes entornos de mercado y variedades comerciales.

Riesgos estratégicos:

  1. En un mercado lateral, el indicador RSI puede generar frecuentes señales de sobrecompra y sobreventa, lo que hace que la estrategia produzca más señales falsas.
  2. El establecimiento de stop losses puede hacer que la estrategia experimente grandes reducciones a corto plazo.
  3. El rendimiento de la estrategia en los mercados de tendencia puede no ser tan bueno como el de las estrategias de tendencia.

Dirección de optimización:

  1. Considere la posibilidad de introducir otros indicadores técnicos, como el MACD, las bandas de Bollinger, etc., para mejorar la fiabilidad de las señales.
  2. Optimizar los umbrales para obtener ganancias y para detener pérdidas, y ajustarlos dinámicamente de acuerdo con las características de las diferentes variedades y entornos de mercado.
  3. Añadir un módulo de gestión de posiciones para ajustar el tamaño de la posición en función de la volatilidad del mercado y el estado del riesgo de la cuenta.
  4. Realizar la optimización de parámetros en la estrategia para encontrar la combinación óptima de parámetros.

Resumen: La estrategia de stop loss y take profit dinámica de RSI obtiene ganancias de manera oportuna al comienzo de una tendencia mediante la utilización de la relación de divergencia entre el indicador de RSI y el precio, combinada con cambios en el volumen de negociación, mientras se establecen stop losses dinámicos para controlar el riesgo. Las ventajas de esta estrategia son que puede bloquear las ganancias al comienzo de una inversión de tendencia, reducir las reducciones de estrategia y tiene una cierta adaptabilidad. Sin embargo, en un mercado lateral, la estrategia puede generar más señales falsas, por lo que es necesario introducir otros indicadores técnicos y optimizar los umbrales de take profit y stop loss para mejorar el rendimiento de la estrategia. Además, agregar gestión de posiciones y optimización de parámetros también son direcciones importantes para mejorar aún más la estabilidad y los retornos de la estrategia.


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

//@version=4
strategy("RMM_byMR", overlay=true)

// RSI uzunluğu girişi
rsiLength = input(14, title="RSI Uzunluğu")

// Tepe ve dip seviyeleri için girişler
overboughtLevel = input(70, title="Aşırı Alım Seviyesi")
oversoldLevel = input(30, title="Aşırı Satım Seviyesi")

// RSI hesaplama
rsiValue = rsi(close, rsiLength)

// Son tepe noktalarını tespit etme // Son dip noktalarını tespit etme
isPeak = rsiValue[2] > overboughtLevel and rsiValue[2] > rsiValue[1] and rsiValue[2] > rsiValue[3] and (rsiValue[1] > rsiValue or rsiValue[3] > rsiValue[4])
isBottom = rsiValue[2] < oversoldLevel and rsiValue[2] < rsiValue[1] and rsiValue[2] < rsiValue[3] and (rsiValue[1] < rsiValue or rsiValue[3] < rsiValue[4])

// Önceki tepe noktalarını tespit etme
prevPeak = valuewhen(isPeak, rsiValue[2], 1)
prevPeakHighPrice = valuewhen(isPeak, high[2], 1)
volumePeak = valuewhen(isPeak, volume[1]+volume[2]+volume[3], 1)
prevPeakBarIndex = valuewhen(isPeak, bar_index, 1)

// Önceki dip noktalarını tespit etme
prevBottom = valuewhen(isBottom, rsiValue[2], 1)
prevBottomLowPrice = valuewhen(isBottom, low[2], 1)
volumeBottom = valuewhen(isBottom, volume[1]+volume[2]+volume[3], 1)
prevBottomBarIndex = valuewhen(isBottom, bar_index, 1)

// Tepe noktasında satış sinyali
isSellSignal = prevPeakBarIndex > prevBottomBarIndex and isPeak and rsiValue[2] < prevPeak and high[2] > prevPeakHighPrice and (volume[1]+volume[2]+volume[3]) < volumePeak
isBuyTakeProfit = isPeak and ((rsiValue[2] < prevPeak and high[2] > prevPeakHighPrice) or (rsiValue[2] < prevPeak and (volume[1]+volume[2]+volume[3]) < volumePeak))

// Dip noktasında alış sinyali
isBuySignal = prevBottomBarIndex > prevPeakBarIndex and isBottom and rsiValue[2] > prevBottom and low[2] < prevBottomLowPrice and (volume[1]+volume[2]+volume[3]) < volumeBottom
isSellTakeProfit = isBottom and ((rsiValue[2] > prevBottom and low[2] < prevBottomLowPrice) or (rsiValue[2] > prevBottom and (volume[1]+volume[2]+volume[3]) < volumeBottom))

sellTakeProfit = valuewhen(isSellTakeProfit, low, 1)
buyTakeProfit = valuewhen(isBuyTakeProfit, high, 1)

// isSellTakeProfit koşulu için işaretlemeyi yap
plotshape(isSellTakeProfit, style=shape.triangleup, location=location.abovebar, color=color.green, size=size.small, title="Sell Take Profit", offset=-2) 

// isBuyTakeProfit koşulu için işaretlemeyi yap
plotshape(isBuyTakeProfit, style=shape.triangledown, location=location.belowbar, color=color.red, size=size.small, title="Buy Take Profit", offset=-2)

buyComment = "Buy \n Rsi:" + tostring(round(rsiValue[2], 2)) + " \n Low:" + tostring(round(low[2],2)) + " \n Hacim:" + tostring(round(volume[1]+volume[2]+volume[3],2))
sellComment = "Sell \n Rsi:" + tostring(round(rsiValue[2], 2)) + " \n High:" + tostring(round(high[2],2)) + " \n Hacim:" + tostring(round(volume[1]+volume[2]+volume[3],2)) 

// Alış sinyali durumunda uzun pozisyon aç
if (isBuySignal)
    strategy.entry("Buy", strategy.long, comment = buyComment )
    strategy.exit("SL", "Buy", stop=close * 0.98)

// Satış sinyali durumunda kısa pozisyon aç
if (isSellSignal)
    strategy.entry("Sell", strategy.short, comment = sellComment )
    strategy.exit("SL","Sell", stop=close * 1.02)
// Limit değerini sonradan belirleme


// Alış sinyali durumunda uzun pozisyon kapat
if (isBuyTakeProfit)
    strategy.close("Buy", comment="TP")

// Satış sinyali durumunda kısa pozisyon kapat
if (isSellTakeProfit)
    strategy.close("Sell", comment="TP")

Más.