En la carga de los recursos... Cargando...

RSI Dinámica Estrategia de negociación inteligente de stop-loss

El autor:¿ Qué pasa?, fecha: 2024-11-12 11:39:06
Las etiquetas:Indicador de riesgoLa SMAEl ATR

img

Resumen general

Esta estrategia es un sistema de trading de stop-loss dinámico basado en el indicador RSI, que combina los indicadores SMA y ATR para optimizar las decisiones comerciales. Emplea un enfoque de take-profit de varios niveles con cierre de posición de estilo pirámide para maximizar los retornos mientras utiliza el stop-loss dinámico ATR para controlar el riesgo. La estrategia cuenta con una alta adaptabilidad y ajusta automáticamente los parámetros de trading basados en la volatilidad del mercado.

Principios de estrategia

La estrategia utiliza principalmente las condiciones de sobreventa del RSI (RSI<30) como señales de entrada, mientras que requiere que el precio esté por encima del promedio móvil de 200 días para garantizar una tendencia alcista.

  1. Condiciones de entrada: RSI inferior a 30 y precio superior a SMA200
  2. Gestión de posiciones: 75% del capital por operación
  3. Stop-loss: parada dinámica basada en el ATR de 1,5x
  4. Las empresas que se beneficien de la ayuda se beneficiarán de la ayuda en el caso de que se cumplan las condiciones siguientes:

Ventajas estratégicas

  1. Gestión dinámica del riesgo: adaptación del ATR a la volatilidad del mercado
  2. Profit-taking por etapas: Reduce la interferencia emocional y mejora la probabilidad de ganar
  3. Confirmación de tendencia: utiliza la media móvil para filtrar señales falsas
  4. Gestión de fondos: Tamaño de las posiciones basado en el porcentaje para los diferentes tamaños de cuentas
  5. Optimización de la Comisión: considera los costes comerciales para su aplicación práctica

Riesgos estratégicos

  1. El retraso de la media móvil puede retrasar las entradas
  2. El RSI sobrevendido no garantiza la reversión
  3. Los grandes tamaños de las posiciones pueden dar lugar a importantes reducciones
  4. Las salidas parciales frecuentes pueden aumentar los costes comerciales Estos riesgos se pueden gestionar mediante ajustes de parámetros y filtros adicionales.

Direcciones de optimización

  1. Añadir señales de confirmación de volumen
  2. Incorporar indicadores de fuerza de tendencia
  3. Optimizar las tasas de rentabilidad
  4. Añadir filtros de tiempo
  5. Considerar el tamaño de las posiciones adaptado a la volatilidad

Resumen de las actividades

Esta estrategia combina indicadores técnicos con una gestión dinámica del riesgo para crear un sistema de negociación integral. Sus fortalezas se encuentran en la adaptabilidad y el riesgo controlado, aunque todavía es necesaria la optimización de parámetros basada en las condiciones del mercado.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-11 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This work is licensed under a Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA/4.0) https://creativecommons.org/licenses/by-nc-sa/4.0/
// © wielkieef

//@version=5
strategy("Simple RSI stock Strategy [1D] ", overlay=true, pyramiding=1, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=75, calc_on_order_fills=false, slippage=0, commission_type=strategy.commission.percent, commission_value=0.03)

// Rsi
oversoldLevel = input(30, title="Oversold Level")
overboughtLevel = input(70, title="Overbought Level")
rsi = ta.rsi(close, 5)
rsi_overbought = rsi > overboughtLevel  
rsi_oversold = rsi < oversoldLevel

// Sma 200
lenghtSMA = input(200, title = "SMA lenght")
sma200 = ta.sma(close, lenghtSMA)

// ATR stop-loss
atrLength = input.int(20, title="ATR Length")
atrMultiplier = input.float(1.5, title="ATR Multiplier")
atrValue = ta.atr(atrLength)
var float long_stop_level = na
var float short_stop_level = na
var float tp1_level = na
var float tp2_level = na
var float tp3_level = na

// Strategy entry
long = (rsi_oversold ) and close > sma200 

// Take Profit levels
tp_1 = input.float(5.0, "TP 1", minval=0.1, step=0.1)
tp_2 = input.float(10.0, "TP 2", minval=0.2, step=0.1)
tp_3 = input.float(15.0, "TP 3", minval=0.3, step=0.1)

if long
    strategy.entry('Long', strategy.long)
    long_stop_level := close - atrMultiplier * atrValue
    tp1_level := strategy.position_avg_price * (1 + tp_1 / 100)
    tp2_level := strategy.position_avg_price * (1 + tp_2 / 100)
    tp3_level := strategy.position_avg_price * (1 + tp_3 / 100)

// basic SL - this code is from author RafaelZioni, modified by wielkieef
sl = input.float(25.0, 'Basic Stop Loss %', step=0.1)
per(procent) =>
    strategy.position_size != 0 ? math.round(procent / 100 * strategy.position_avg_price / syminfo.mintick) : float(na)

// ATR SL
if (strategy.position_size > 0 and (close <= long_stop_level))
    strategy.close("Long")
    tp1_level := na
    tp2_level := na
    tp3_level := na
plot(long_stop_level, color=color.orange, linewidth=2, title="Long Stop Loss")

// TP levels
if (strategy.position_size > 0)
    if (not na(tp1_level) and close >= tp1_level)
        tp1_level := na
    if (not na(tp2_level) and close >= tp2_level)
        tp2_level := na
    if (not na(tp3_level) and close >= tp3_level)
        tp3_level := na

plot(strategy.position_size > 0 and not na(tp1_level) ? tp1_level : na, color=color.gray, style=plot.style_circles , linewidth=1, title="Take Profit 1")
plot(strategy.position_size > 0 and not na(tp2_level) ? tp2_level : na, color=color.gray, style=plot.style_circles , linewidth=1, title="Take Profit 2")
plot(strategy.position_size > 0 and not na(tp3_level) ? tp3_level : na, color=color.gray, style=plot.style_circles , linewidth=1, title="Take Profit 3")

// Strategy exit points for Take Profits
strategy.exit('TP 1', from_entry="Long", qty_percent=33, profit=per(tp_1), loss=per(sl))
strategy.exit('TP 2', from_entry="Long", qty_percent=66, profit=per(tp_2), loss=per(sl))
strategy.exit('TP 3', from_entry="Long", qty_percent=100, profit=per(tp_3), loss=per(sl))

// by wielkieef

Relacionados

Más.