Estrategia de negociación para la inversión de los índices de variabilidad de las cotizaciones

El autor:¿ Qué pasa?, Fecha: 2023-09-28 16:09:39
Las etiquetas:

Resumen general

Esta estrategia utiliza el indicador RSI para juzgar las tendencias del mercado y generar señales comerciales cuando ocurren condiciones de sobrecompra o sobreventa. Su objetivo es capturar movimientos de reversión a corto plazo en el mercado. También incorpora promedios móviles y lógica de toma de ganancias / stop-loss para filtrar las señales y controlar los riesgos.

Estrategia lógica

  1. Calcule el RSI de 14 períodos y establezca la línea de sobrecompra en 67 y la línea de sobreventa en 44.

  2. Cuando el RSI cruza por encima de la línea de sobrecompra, se genera una señal de venta.

  3. Añadir filtro de promedio móvil. Las señales de venta solo ocurren cuando el cierre está por debajo del MA del día anterior; Las señales de compra solo ocurren cuando el cierre está por encima del MA del día anterior.

  4. Incorpore la lógica de toma de ganancias y stop-loss. Se pueden usar puntos fijos o salidas basadas en RSI.

Análisis de ventajas

  1. Captura las oportunidades de reversión a corto plazo utilizando los niveles de sobrecompra/sobreventa del RSI.

  2. El filtro de media móvil evita el comercio contra la tendencia.

  3. La toma de ganancias y el stop-loss controlan la pérdida de una sola operación.

  4. Puede detectar oportunidades de inversión de tendencia temprano.

Riesgos y soluciones

  1. El retraso del RSI puede causar señales falsas. Ajuste los parámetros o combine con otros indicadores.

  2. El stop-loss fijo puede ser demasiado ancho o demasiado estrecho.

  3. La toma de ganancias fijas puede salir demasiado temprano o el objetivo demasiado pequeño.

  4. No puede filtrar los mercados, causando sobre-negociación y pérdidas.

Direcciones de optimización

  1. Prueba los parámetros del RSI en diferentes plazos.

  2. Ajustar los niveles de RSI sobrecomprados/sobrevendidos.

  3. Pruebe con otras medias móviles u otros filtros.

  4. Prueba objetivos/paradas de ganancias fijos frente a objetivos/paradas dinámicas.

  5. Optimizar los valores de ganancia/detención para adaptarse a la volatilidad del mercado.

  6. Añadir filtros para evitar los golpes en los mercados variados.

  7. Considere la confluencia de múltiples marcos de tiempo para mejorar la calidad de la señal.

Resumen de las actividades

Esta estrategia opera inversiones utilizando el RSI combinado con promedios móviles y lógica de toma de ganancias / stop-loss. Su objetivo es capturar los giros a corto plazo en el mercado. Una mayor optimización de parámetros y filtros adicionales pueden mejorar la rentabilidad al tiempo que reducen los riesgos. Es adecuado para inversores que son sensibles a los movimientos a corto plazo y buscan operaciones frecuentes.


/*backtest
start: 2022-09-21 00:00:00
end: 2023-09-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//© профешинил хомячело
//@version = 4

strategy("RSI Strategy Professional Хомячело", overlay=false)
length = input( 14 )
overSold = input( 44 )
overBought = input( 67 )
price = open
rsi = rsi(price, length)
band1 = hline(overSold, "overSold12", color=#C0C0C0)
band0 = hline(overBought, "overBought12", color=#C0C0C0)
plot(rsi, "RSI", color=color.red)
fill(band1, band0, color=color.black, transp=90, title="Background")
src = close
a = sma(src, 1)
aaa = strategy.opentrades + 1

n = input(defval = 0.0576923077, title = "AvgPrice - n")
//n = 0.0576923077

buysignal = crossover(rsi, overSold) and (a < (strategy.position_avg_price - n) or strategy.opentrades == 0)
sellsignal = crossunder(rsi, overBought) and (a > (strategy.position_avg_price + n) or strategy.opentrades == 0)


// crossover(rsi, overSold)
// crossunder(rsi, overBought)
if (not na(rsi))
    if(buysignal)
        strategy.entry("LONG", strategy.long, comment = tostring(a) + "\n(" + tostring(aaa) + ")")
        n += 1000
    if(sellsignal)
        strategy.entry("SHORT", strategy.short, comment = tostring(a) + "\n(" + tostring(aaa) + ")")
        n += 1000

//лонги орні       
    if(rsi < 15 and strategy.opentrades != 5 and a < (strategy.position_avg_price - n))
        strategy.entry("LONG", strategy.long, comment = "ЙОБАНИЙ НАСРАВ ТА БЕРИ ЛОНГ НА ВСЬО ШО Є НАХУЙ\n" + tostring(a) + "\n(" + tostring(aaa) + "!!!)")
    if(rsi < 20 and strategy.opentrades != 5 and a < (strategy.position_avg_price - n))
        strategy.entry("LONG", strategy.long, comment = "ЛОНГ НА ВСЮ КОТЛЄТУ\n" + tostring(a) + "\n(" + tostring(aaa) + "!!!)")
//шорти орні
    if(rsi > 85 and strategy.opentrades != 5 and a < (strategy.position_avg_price - n))
        strategy.entry("SHORT", strategy.short, comment = "ЙОБАНИЙ НАСРАВ ТА БЕРИ ШОРТ НА ВСЬО ШО Є НАХУЙ\n" + tostring(a) + "\n(" + tostring(aaa) + "!!!)")
    if(rsi > 80 and strategy.opentrades != 5 and a < (strategy.position_avg_price - n))
        strategy.entry("SHORT", strategy.short, comment = "ШОРТ НА ВСЮ КОТЛЄТУ\n" + tostring(a) + "\n(" + tostring(aaa) + "!!!)")


//стоп-лосс і ціль

//rsi
rsion = input(defval = false, title = "Тейк-профіт по RSI")
rcl = input(defval = 73.0, title = "RSI тейк по лонгу")
rcs = input(defval = 44.0, title = "RSI тейк по шорту")
possize = input(defval = 250.0, title = "Маржа")
posp = input(defval = 3.0, title = "Плече")

//tick
ut = input(defval = false, title = "Тейк-профіт")
tar = input(defval = 4500.0, title = "Тейк-профіт у тіках")
us = input(defval = false, title = "Стоп-лосс")
stop = input(defval = 0.0, title = "Стоп-лосс у тіках")
tar:=tar/syminfo.mintick
stop:=stop/syminfo.mintick

if(ut==true and us==false)
    strategy.exit(id="LX", from_entry = "LONG", profit = tar, comment = "ТейкL")
    strategy.exit(id="SX", from_entry = "SHORT", profit = tar, comment = "ТейкS")
if(us==true and ut==false)
    strategy.exit(id="LX", from_entry = "LONG", loss = stop, comment = "СтопL")
    strategy.exit(id="SX", from_entry = "SHORT", loss = stop, comment = "СтопS")
    
if(ut==true and us==true)
    strategy.exit(id="LX", from_entry = "LONG", profit = tar, loss = stop, comment ="Тейк/СтопL")
    strategy.exit(id="SX", from_entry = "SHORT", profit = tar, loss = stop, comment ="Тейк/СтопS")
    
//закриття по rsi
if(rsion == 1 )
    pr = round(((a / strategy.position_avg_price - 1) * possize * posp), 2)
    ppr = round(((a / strategy.position_avg_price - 1) * 100 * posp), 2)
    spr = round((1 - (a / strategy.position_avg_price)) * possize * posp, 2)
    sppr = round((100 - (a / strategy.position_avg_price * 100)) * posp, 2)
    
    if(rsi > rcl)
        strategy.close(id="LONG", comment = "LT\n" + tostring(ppr) + "%\n" + tostring(pr) + "$\n" + tostring(a))
    if(rsi < rcs)
        strategy.close(id="SHORT", comment = "ST\n" + tostring(sppr) + "%\n" + tostring(spr) + "$\n" + tostring(a))

Más.