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

Estrategia de negociación de impulso de tendencia del RSI con doble MA y confirmación de volumen

El autor:¿ Qué pasa?, Fecha: 2024-11-28 17:02:32
Las etiquetas:Indicador de riesgoLa SMA

img

Resumen general

Esta estrategia es un sistema de seguimiento de tendencias que combina señales de sobreventa del RSI, promedios móviles a largo plazo y confirmación de volumen. Su objetivo es capturar posiciones largas durante condiciones de sobreventa dentro de tendencias alcistas establecidas, validadas por la expansión de volumen. La estrategia utiliza un RSI de 10 períodos, SMA dobles de 250 y 500 períodos y un promedio móvil de volumen de 20 períodos como indicadores básicos.

Principios de estrategia

La lógica central se basa en tres condiciones clave que trabajan en armonía:

  1. Signo de sobreventa del índice de rentabilidad (RSI<=30): Captura las oportunidades de repunte del mercado
  2. Alineación alcista con doble MA (SMA250>SMA500): confirma la tendencia alcista a largo plazo
  3. Confirmación de volumen (volumen actual>volumen de 20 períodos MA*2.5): Valida los movimientos de precios

Una posición larga se inicia cuando se cumplen las tres condiciones simultáneamente. La señal de salida se activa mediante una cruz de muerte (cruce de MA más corto por debajo de MA más largo). Además, se implementa un stop-loss del 5% para la gestión del riesgo.

Ventajas estratégicas

  1. La confirmación múltiple reduce las señales falsas: la integración de RSI, MAs y volumen proporciona un filtrado de señal robusto
  2. Características de seguimiento de tendencias: las MAs a largo plazo impiden la negociación contraria a la tendencia
  3. Control integral del riesgo: el stop-loss fijo gestiona eficazmente el riesgo por operación
  4. Alta adaptabilidad: los parámetros pueden ajustarse a las diferentes condiciones del mercado
  5. Selección estricta del comercio: múltiples condiciones aseguran el momento óptimo de entrada

Riesgos estratégicos

  1. Riesgo de retraso: los MAs a largo plazo introducen un retraso significativo en la identificación de tendencias
  2. Riesgo de filtración excesiva: condiciones múltiples estrictas podrían perder oportunidades comerciales válidas
  3. Riesgo de mercado variable: en los mercados laterales pueden producirse frecuentemente señales falsas
  4. El riesgo de configuración de pérdidas y pérdidas: es posible que las pérdidas y pérdidas en porcentaje fijo no se adapten a todas las condiciones del mercado.
  5. Riesgo de optimización de parámetros: la optimización excesiva puede conducir a un mal rendimiento de las operaciones en vivo

Direcciones de optimización

  1. Las pérdidas de liquidación de los activos de la entidad que no sean objeto de una operación de liquidación de los activos de la entidad que no sean objeto de una operación de liquidación de los activos de la entidad que no sean objeto de una operación de liquidación de los activos.
  2. Cuantificación de la fuerza de la tendencia: Incorporar indicadores ADX o similares para una mejor evaluación de la tendencia
  3. Optimización del tamaño de las posiciones: ajustar el tamaño de las posiciones en función de la fuerza de la señal y la volatilidad del mercado
  4. Mejora del mecanismo de salida: añadir objetivos de ganancia y paradas para salidas flexibles
  5. Filtración del tiempo: Implementar filtros de tiempo de negociación para evitar períodos ineficientes

Resumen de las actividades

Se trata de una estrategia de seguimiento de tendencias bien diseñada con una lógica rigurosa, que equilibra eficazmente los rendimientos y los riesgos a través de múltiples indicadores técnicos.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-27 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(title=' Rsi Long-Term Strategy [15min]', overlay=true, pyramiding=1, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_order_fills=false, slippage=0, commission_type=strategy.commission.percent, commission_value=0.03)

// Rsi
rsi_lenght = input.int(10, title='RSI lenght', minval=0)
rsi_up = ta.rma(math.max(ta.change(close), 0), rsi_lenght)
rsi_down = ta.rma(-math.min(ta.change(close), 0), rsi_lenght)
rsi_value = rsi_down == 0 ? 100 : rsi_up == 0 ? 0 : 100 - 100 / (1 + rsi_up / rsi_down)
rsi_overs = rsi_value <= 30
rsi_overb = rsi_value >= 70

// Volume
vol_sma_length = input.int(20, title='Volume lenght  ', minval=1)
Volume_condt = volume > ta.sma(volume, vol_sma_length) * 2.5

//SMA1
lengthSMA1 = input(250, title="Lenght SMA 1")
SMA1 = ta.sma(close, lengthSMA1)
//plot(SMA1, color=color.rgb(245, 108, 3), linewidth=1, title="SMA250")

//SMA2
lengthSMA2 = input(500, title="Lenght SMA 2")
SMA2 = ta.sma(close, lengthSMA2)
//plot(SMA2, color=#9803f5, linewidth=1, title="SMA500")


//Entry Logic
Long_cond = (rsi_overs and SMA1 > SMA2 and Volume_condt )  

if Long_cond
    strategy.entry('Long', strategy.long)

//Close Logic
Long_close = ta.crossunder(SMA1,SMA2)

if Long_close
    strategy.close("Long")

//Bar colors
Bar_color = Volume_condt ? #fc9802 : SMA1 > SMA2 ? color.rgb(84, 252, 0) : SMA1 < SMA2 ? color.maroon : color.gray
barcolor(color=Bar_color)

// Rsi value Plotshapes
plotshape(rsi_value < 30 and SMA1 > SMA2 and Volume_condt, title='Buy', color=color.new(color.green, 0), style=shape.circle, location=location.belowbar, size=size.tiny, textcolor=color.new(color.black, 0))
plotshape(rsi_value > 70 and SMA1 < SMA2 and Volume_condt, title='Sell', color=color.new(color.red, 0), style=shape.circle, location=location.abovebar, size=size.tiny, textcolor=color.new(color.black, 0))
plotshape(ta.crossunder(SMA1,SMA2) , title='DEATH CROSS', color=#000000, style=shape.xcross, location=location.abovebar, size=size.small, textcolor=color.new(color.black, 0))

//Stop-Loss// this code is from author RafaelZioni, modified by wielkieef
pera(pcnt) =>
    strategy.position_size != 0 ? math.round(pcnt / 100 * strategy.position_avg_price / syminfo.mintick) : float(na)
stoploss = input.float(title=' stop loss', defval=5.0, minval=0.5)
los = pera(stoploss)
strategy.exit('SL', loss=los)




// by wielkieef

Relacionados

Más.