Renko y el índice de vigor relativo siguen la estrategia

El autor:¿ Qué pasa?, Fecha: 2024-02-04 15:49:19
Las etiquetas:

img

Resumen general

Esta estrategia combina los gráficos de Renko y el índice de vigor relativo (RVI) para capturar la mayoría de las principales tendencias del mercado.

Estrategia lógica

La estrategia construye ladrillos Renko basados en el ATR de 9 períodos. Un nuevo ladrillo verde se construye cuando el precio de cierre excede el máximo del ladrillo anterior. Un nuevo ladrillo rojo se construye cuando el precio de cierre cae por debajo del mínimo del ladrillo anterior. La dirección de tendencia se determina por el indicador RVI.

RVI oscila entre 0-1 para medir la fuerza relativa entre la presión de compra y venta. Por encima de 0,5 representa una presión de compra más fuerte, mientras que por debajo de 0,5 representa una presión de venta más fuerte.

Combine la dirección del ladrillo Renko y las señales RVI para ingresar posiciones largas o cortas en consecuencia.

Ventajas

  1. Los ladrillos Renko filtran el ruido normal del mercado y solo reaccionan a movimientos significativos de precios, evitando los golpes.
  2. El RVI ayuda a identificar la reversión de tendencia, confirmando aún más las señales comerciales.
  3. La combinación de dos indicadores filtra algo de ruido y permite captar las principales tendencias.

Los riesgos

  1. El tamaño de los ladrillos afecta directamente a la frecuencia de negociación.
  2. Los parámetros de RVI incorrectos pueden causar señales faltantes o más señales falsas.
  3. El doble filtrado pierde alguna oportunidad comercial.

Mejoramiento

  1. Tamaño dinámico del ladrillo para adaptarse a la volatilidad cambiante.
  2. Optimice los parámetros de RVI para encontrar el mejor equilibrio.
  3. Prueba de estabilidad en diferentes símbolos y plazos.

Conclusión

Esta estrategia combina dos tipos diferentes de indicadores para capturar las tendencias principales. La optimización adicional de los parámetros Renko y RVI puede mejorar la estabilidad. Ningún modelo es perfecto y es inevitable que falten algunas operaciones. Los usuarios deben evaluar su propia preferencia de riesgo y elegir el símbolo / parámetro adecuado.


/*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")

Más.