Estrategia de ruptura de zonas de valor entre ciclos


Fecha de creación: 2023-12-12 10:58:22 Última modificación: 2023-12-12 10:58:22
Copiar: 0 Número de Visitas: 362
1
Seguir
1212
Seguidores

Estrategia de ruptura de zonas de valor entre ciclos

Descripción general

La idea central de esta estrategia es combinar los indicadores RSI de diferentes períodos para determinar la zona de precios actual, y tomar las operaciones de compra o venta correspondientes en los períodos más pequeños cuando se detecta una ruptura en los indicadores RSI de períodos más grandes. La estrategia combina las ventajas de los indicadores técnicos de diferentes períodos para determinar el valor relativo de los precios actuales a través de varias dimensiones temporales y buscar mejores puntos de entrada.

Principio de estrategia

La estrategia se basa en determinar las zonas de precios y buscar oportunidades de negociación a través de los siguientes pasos:

  1. Calcula los puntos más altos (Swing High) y más bajos (Swing Low) del indicador RSI en períodos más largos (por ejemplo, el Solsticio)
  2. Para determinar si el RSI de ciclo mayor ha tenido un máximo o un mínimo en un período de revisión dado
  3. Si se produce una ruptura, entonces en un período más pequeño (por ejemplo, en la línea de 5 minutos) juzgar el movimiento del precio (político o vacío), tomar las operaciones de compra o venta correspondientes

Por ejemplo, si el RSI de la línea diaria se rompe a un nuevo máximo, consideramos que se encuentra en una posición de venta libre, y si el RSI de la línea diaria rompe a una nueva baja, consideramos que se encuentra en una posición de venta libre. En ambos casos, tomamos operaciones de compra y venta en la línea de 5 minutos.

Análisis de las ventajas

En comparación con las estrategias tradicionales que se centran en un solo ciclo de tiempo, esta estrategia tiene las siguientes ventajas:

  1. Evaluar con mayor precisión el valor relativo de los precios actuales. Indicadores de grandes ciclos como el Sol pueden filtrar el ruido del mercado a corto plazo y determinar tendencias de grandes ciclos y áreas de valor.

  2. La combinación de diferentes indicadores de ciclo de tiempo mejora la fiabilidad de la señal. La dependencia de un solo indicador de ciclo es propensa a la señal errónea, mientras que la señal de varios indicadores de ciclo simultáneamente es más confiable.

  3. Aprovechar las oportunidades a corto plazo de manera más eficiente. Las rupturas de grandes ciclos como el Sol nos indican la dirección a seguir, y sólo necesitamos buscar oportunidades en ciclos cortos como los de 5 minutos para obtener beneficios.

  4. Retirada menor. Combinación a lo largo de los ciclos de tiempo, que ayuda a evitar ser encajonado. Cuando el indicador de ciclo grande se convierte, vamos a parar el retiro en el momento oportuno.

Análisis de riesgos

Los principales riesgos de esta estrategia son:

  1. Los indicadores de grandes períodos de error. Cuando los indicadores como el RSI de la línea de día no pueden determinar eficazmente las áreas de valor, esto puede causar errores en la señal. Esto requiere la configuración de parámetros para optimizar el RSI.

  2. El movimiento de los precios de los ciclos pequeños no coincide con el juicio del ciclo grande. A veces, los movimientos de los precios de los ciclos pequeños se oponen a la tendencia del ciclo grande, en cuyo caso es necesario establecer un stop loss para controlar las pérdidas.

  3. Una mala gestión de fondos. Si la gestión de riesgos es inadecuada, la pérdida individual es demasiado grande y puede resultar difícil de recuperar. Esto requiere una administración de posiciones razonable.

Dirección de optimización

Hay mucho espacio para la optimización de esta estrategia, principalmente en los siguientes aspectos:

  1. Optimización de parámetros de ciclo. Se pueden probar más combinaciones de ciclos para encontrar los mejores parámetros.

  2. Optimización de los parámetros del RSI. Se pueden ajustar los parámetros del RSI para ver si se puede mejorar la precisión del juicio.

  3. Añadir otros indicadores. Se pueden agregar más indicadores para combinarlos, por ejemplo, agregar una línea media para determinar la dirección de la tendencia.

  4. Mecanismo de optimización de la parada de pérdidas. Se puede ajustar el punto de parada de forma dinámica en función de la situación de retirada.

  5. Optimización de la gestión de posiciones. Puede administrar de manera más científica y racional las posiciones específicas de cada transacción.

Resumir

Esta estrategia permite el arbitraje de valor entre las diferentes dimensiones temporales mediante la evaluación de las tendencias positivas de los indicadores RSI a lo largo de los períodos. Esta forma de pensar en el juicio a lo largo de los períodos merece ser explorada más a fondo, y podemos perfeccionarla continuamente a través de métodos como optimización de parámetros, optimización de stop loss y optimización de combinación. En general, esta estrategia tiene una forma de pensar única y un gran espacio de optimización.

Código Fuente de la Estrategia
/*backtest
start: 2022-12-05 00:00:00
end: 2023-12-11 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3

strategy("Swing MTF", shorttitle="Swing MTF", overlay=false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital = 10000, slippage = 5)
//
otf_period = input(defval=2, title="Look Back Period (2nd Timeframe)")
otf = input(defval="180", title="Second Momentum Timeframe")

// Function to dectect a new bar
is_newbar(res) =>
    t = time(res)
    change(t) != 0 ? true : false

// Check how many bars are in our upper timeframe
since_new_bar = barssince(is_newbar(otf))
otf_total_bars = na
otf_total_bars := since_new_bar == 0 ? since_new_bar[1] : otf_total_bars[1]

//Calculate RSI Values
ctf_rsi = rsi(open, otf_period)

breakline=input(title="Breaks in lines", defval = true, type=bool)

so = request.security(syminfo.tickerid, otf, rsi(open, otf_period))
sc = request.security(syminfo.tickerid, otf, rsi(close, otf_period))


final_otf_so = na
final_otf_so := barstate.isrealtime ? since_new_bar == otf_total_bars ? so : final_otf_so[1] : so

final_otf_sc = na
final_otf_sc := barstate.isrealtime ? since_new_bar == otf_total_bars ? sc : final_otf_sc[1] : sc

barsback = input(11, title='Bars back to check for a swing')
// showsig = input(false, title='Show Signal Markers')
 
swing_detection(index)=>
    swing_high = false
    swing_low = false
    start = (index*2) - 1 // -1 so we have an even number of
    swing_point_high = final_otf_so[index]
    swing_point_low = final_otf_sc[index]
    
    //Swing Highs
    for i = 0 to start
        swing_high := true
        if i < index 
            if final_otf_so[i] > swing_point_high 
                swing_high := false
                break
        // Have to do checks before pivot and after seperately because we can get
        // two highs of the same value in a row. Notice the > and >= difference
        if i > index
            if final_otf_so[i] >= swing_point_high 
                swing_high := false
                break
        
    //Swing lows
    for i = 0 to start
        swing_low := true
        if i < index
            if final_otf_sc[i] < swing_point_low 
                swing_low := false
                break  
        // Have to do checks before pivot and after seperately because we can get
        // two lows of the same value in a row. Notice the > and >= difference
        if i > index
            if final_otf_sc[i] <= swing_point_low 
                swing_low := false
                break 
        
    [swing_high, swing_low]
 
// Check for a swing
[swing_high, swing_low] = swing_detection(barsback)
 

long =  final_otf_so > final_otf_sc
short = final_otf_so < final_otf_sc

if swing_low and long
    strategy.entry("My Long Entry Id", strategy.long)


if swing_high and short
    strategy.entry("My Short Entry Id", strategy.short)