Estrategia de seguimiento de tendencias basada en Renko y el índice de vigor relativo


Fecha de creación: 2024-02-04 15:49:19 Última modificación: 2024-02-04 15:49:19
Copiar: 1 Número de Visitas: 686
1
Seguir
1617
Seguidores

Estrategia de seguimiento de tendencias basada en Renko y el índice de vigor relativo

Descripción general

La estrategia combina dos indicadores, el gráfico de Renko y el índice de dinámica relativa (RVI), con el objetivo de capturar la mayor parte de las principales tendencias del mercado.

Principio de estrategia

La estrategia utiliza el ATR de 9 días para construir un Renko Wall, construyendo un nuevo Wall cuando el precio de cierre supera el punto más alto del anterior Renko Wall, color verde; construyendo un nuevo Wall cuando el precio de cierre está por debajo del punto más bajo del anterior Renko Wall, color rojo. La combinación del indicador RVI determina la dirección de la tendencia.

El indicador RVI se utiliza para determinar la intensidad relativa de la fuerza de la cabeza múltiple y la fuerza de la cabeza vacía. El valor RVI oscila entre 0-1, más alto que 0,5 significa que la fuerza de la cabeza múltiple es más fuerte que la cabeza vacía; menos de 0,5 significa que la fuerza de la cabeza vacía es más fuerte que la fuerza de la cabeza múltiple. Cuando el RVI cruza su media móvil de deslizamiento, la fuerza de la cabeza vacía se debilita y la fuerza de la cabeza múltiple se incrementa, dando una señal de deslizamiento.

La combinación de la dirección de la barra Renko y el indicador RVI para hacer más señales de toque de queda, para entrar en la posición de toque de queda o de toque de queda correspondiente.

Ventajas estratégicas

  1. Renko evita las fluctuaciones normales del mercado y sólo se fija en los cambios de precios más grandes para evitar ser atrapado.
  2. El indicador RVI determina el momento en que se produce una reversión de la tendencia y bloquea aún más las señales comerciales.
  3. La combinación de los dos indicadores permite filtrar las principales tendencias del mercado y eliminar parte del ruido.

Análisis de riesgos

  1. El tamaño de la Renko afecta directamente a la frecuencia de las transacciones, lo que hace que la Junta de Mujeres de Mujeres se pierda la oportunidad, mientras que el tamaño de la Renko aumenta la frecuencia de las transacciones y los honorarios.
  2. La configuración incorrecta de los parámetros del indicador RVI también puede causar señales perdidas o amplificar falsas señales.
  3. El filtro de doble indicador puede pasar por alto ciertas señales y no captar todo lo que sucede.

Dirección de optimización

  1. El tamaño de Renko se ha optimizado dinámicamente para adaptarse a la volatilidad del mercado.
  2. Optimizar los parámetros del indicador RVI para encontrar el punto de equilibrio óptimo.
  3. Probar diferentes variedades y combinaciones de parámetros de ciclo para evaluar la estabilidad.

Resumir

La estrategia combina las ventajas de dos tipos diferentes de indicadores, con el objetivo de capturar las tendencias dominantes del mercado. Se puede obtener una mayor estabilidad mediante la optimización de los parámetros de Renko y RVI. Sin embargo, ningún modelo puede ser perfecto, perder ciertas señales es inevitable, la clave es comprender las principales direcciones.

Código Fuente de la Estrategia
/*backtest
start: 2023-01-28 00:00:00
end: 2024-02-03 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Lancelot RR Strategy", overlay=false)
p=9
CO=close-open
HL=high-low
value1 = (CO + 2*CO[1] + 2*CO[2] + CO[3])/6
value2 = (HL + 2*HL[1] + 2*HL[2] + HL[3])/6
num=sum(value1,p)
denom=sum(value2,p)
RVI=denom!=0?num/denom:0
RVIsig=(RVI+ 2*RVI[1] + 2*RVI[2] + RVI[3])/6

rvicloselongcondition = crossunder(RVI, RVIsig)
rvicloseshortcondition = crossover(RVI, RVIsig)

plot(RVI,color=green,style=line,linewidth=1)
plot(RVIsig,color=red,style=line,linewidth=1)
bgcolor(rvicloseshortcondition ? green : na, transp = 75)
bgcolor(rvicloselongcondition ? red : na, transp = 75)

///Renko///
TF = input(title='TimeFrame', defval="D")
ATRlength = input(title="ATR length",  defval=9, minval=2, maxval=100)
SMAlength = input(title="SMA length",  defval=5, minval=2, maxval=100)
SMACurTFlength = input(title="SMA CurTF length",  defval=20, minval=2, maxval=100)

HIGH = request.security(syminfo.tickerid, TF, high)
LOW = request.security(syminfo.tickerid, TF, low)
CLOSE = request.security(syminfo.tickerid, TF, close)
ATR = request.security(syminfo.tickerid, TF, atr(ATRlength))
SMA = request.security(syminfo.tickerid, TF, sma(close, SMAlength))
SMACurTF = sma(close, SMACurTFlength)

RENKOUP = na
RENKODN = na
H = na
COLOR = na
BUY = na
SELL = na
UP = na
DN = na
CHANGE = na

RENKOUP := na(RENKOUP[1]) ? ((HIGH+LOW)/2)+(ATR/2) : RENKOUP[1]
RENKODN := na(RENKOUP[1]) ? ((HIGH+LOW)/2)-(ATR/2) : RENKODN[1]
H := na(RENKOUP[1]) or na(RENKODN[1]) ? RENKOUP-RENKODN : RENKOUP[1]-RENKODN[1]
COLOR := na(COLOR[1]) ? white : COLOR[1]
BUY := na(BUY[1]) ? 0 : BUY[1]
SELL := na(SELL[1]) ? 0 : SELL[1]
UP := false
DN := false
CHANGE := false

if(not CHANGE and close >= RENKOUP[1]+H*3)
    CHANGE := true
    UP := true
    RENKOUP := RENKOUP[1]+ATR*3
    RENKODN := RENKOUP[1]+ATR*2
    COLOR := lime
    SELL := 0
    BUY := BUY+3

if(not CHANGE and close >= RENKOUP[1]+H*2)
    CHANGE := true
    UP := true
    RENKOUP := RENKOUP[1]+ATR*2
    RENKODN := RENKOUP[1]+ATR
    COLOR := lime
    SELL := 0
    BUY := BUY+2

if(not CHANGE and close >= RENKOUP[1]+H)
    CHANGE := true
    UP := true
    RENKOUP := RENKOUP[1]+ATR
    RENKODN := RENKOUP[1]
    COLOR := lime
    SELL := 0
    BUY := BUY+1

if(not CHANGE and close <= RENKODN[1]-H*3)
    CHANGE := true
    DN := true
    RENKODN := RENKODN[1]-ATR*3
    RENKOUP := RENKODN[1]-ATR*2
    COLOR := red
    BUY := 0
    SELL := SELL+3

if(not CHANGE and close <= RENKODN[1]-H*2)
    CHANGE := true
    DN := true
    RENKODN := RENKODN[1]-ATR*2
    RENKOUP := RENKODN[1]-ATR
    COLOR := red
    BUY := 0
    SELL := SELL+2

if(not CHANGE and close <= RENKODN[1]-H)
    CHANGE := true
    DN := true
    RENKODN := RENKODN[1]-ATR
    RENKOUP := RENKODN[1]
    COLOR := red
    BUY := 0
    SELL := SELL+1
    
plotshape(UP, style=shape.arrowup, location=location.bottom, size=size.normal)

renkolongcondition = UP
renkoshortcondition = DN

///Long Entry///
longcondition = UP
if (longcondition)
    strategy.entry("Long", strategy.long)
    
///Long exit///
closeconditionlong = rvicloselongcondition
if (closeconditionlong)
    strategy.close("Long")