Renko Yin Yang Cuántica estrategia de comercio

El autor:¿ Qué pasa?, Fecha: 2023-09-27 17:11:30
Las etiquetas:

Resumen general

La estrategia de negociación de Renko Yin Yang Quant es una estrategia de negociación a corto plazo basada en la relación precio-volumen intradiario. Utiliza la información de dirección yin yang dentro de un día y combina señales de confirmación de volumen para implementar operaciones a corto plazo de bajo riesgo.

Estrategia lógica

La estrategia calcula los precios de apertura, cierre, alto y bajo de cada día de negociación, y genera ladrillos Renko junto con el indicador ATR.

Específicamente, la estrategia primero calcula el precio de apertura o2 y el precio de cierre c2 de los ladrillos Renko. Si o2 c2, indica una línea yin. Cuando la línea yang se convierte en línea yin, se genera una señal de venta. Cuando la línea yin se convierte en línea yang, se genera una señal de compra.

Para filtrar las falsas rupturas, la estrategia también cuenta el número de períodos de la última línea yang y yin. Si la línea yang tiene más períodos, la señal es más confiable.

Ventajas

  1. Los ladrillos Renko filtran el ruido del mercado y hacen que las señales comerciales sean más claras.

  2. La combinación de la relación precio-volumen evita el riesgo de una falsa ruptura.

  3. El modelo DAPM es simple y eficaz para el comercio intradiario.

  4. Los parámetros ATR personalizables ajustan la frecuencia de las operaciones.

  5. El stop loss personalizable mejora la gestión del riesgo.

Los riesgos

  1. Todavía existe el riesgo de una fuga falsa no clara.

  2. La configuración incorrecta del parámetro Renko puede perder tendencias o aumentar la frecuencia de negociación.

  3. Un stop loss demasiado apretado puede ser detenido por un retroceso menor.

Optimización

  1. Considere la posibilidad de combinar otros indicadores técnicos para filtrar las señales.

  2. Considere la posibilidad de añadir una función de stop loss.

  3. Optimizar los parámetros para diferentes activos.

  4. Considere la posibilidad de combinar diferentes marcos de tiempo para el comercio de marcos de tiempo múltiples.

Conclusión

En conclusión, esta es una estrategia de negociación a corto plazo muy práctica. Utiliza la relación precio-volumen para filtrar de manera eficiente y capturar puntos de inflexión clave. El ajuste adecuado de parámetros, la gestión de riesgos y la estrategia de stop loss pueden mejorar en gran medida su estabilidad y rentabilidad. Con optimización y pruebas continuas, esta estrategia puede convertirse en una poderosa herramienta para los operadores intradiarios.


/*backtest
start: 2022-09-26 00:00:00
end: 2023-09-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License https://creativecommons.org/licenses/by-sa/4.0/
// © dman103
strategy(title="Renko Strategy V2", shorttitle="Renko Strategy V2", overlay=true,precision=3, commission_value=0.025, default_qty_type=strategy.cash, default_qty_value=10000, initial_capital=10000)
// Version 2.0 of my previous renko strategy using Renko calculations, this time without Tilson T3 and without using security with Renko to remove repaints!
// Seems to work nicely on cryptocurrencies on higher time frames.

//== Description ==
// Strategy gets Renko values and uses renko close and open to trigger signals.
// Base on these results the strategy triggers a long and short orders, where green is uptrending and red is downtrending.
// This Renko version is based on ATR, you can Set ATR (in settings) to adjust it.

// == Notes ==
// Supports alerts.
// Supports backtesting time ranges.
// Shorts are disabled by default (can be enabled in settings).
// Link to previous Renko strategy V1: https://www.tradingview.com/script/KeWBWLGT-Renko-Strategy-T3-V1/
//
// Stay tuned for version V3 in the future as i have an in progress prototype, Follow to get updated: https://www.tradingview.com/u/dman103/#published-scripts

// === INPUT BACKTEST RANGE ===
useDate = input(true,     title='---------------- Trade Range ----------------', type=input.bool)
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2017, title = "From Year", minval = 2000)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 2099, title = "To Year", minval = 2010)
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false // create 

settings = input(true,     title='---------------- Settings ----------------', type=input.bool)

allow_short = input(false,title="Allow Short")
atr_len = input(10,"ATR Length")

atr = atr(atr_len)
// Thanks to renko snippet calculations from @RafaelZioni  https://www.tradingview.com/script/2vKhpfVH-Renko-XZ/
Renko1() =>
    p1 = 0.0
    p1 := close > nz(p1[1]) + atr ? nz(p1[1]) + atr : close < nz(p1[1]) - atr ? nz(p1[1]) - atr : nz(p1[1])
    p1
Renko2() =>
    p2 = 0.0
    Br_1 = Renko1()
    p2 := Renko1() != Renko1()[1] ? Br_1[1] : nz(p2[1])
    p2

Renko3() =>
    p3 = 0.0
    p3 := open > nz(p3[1]) + atr ? nz(p3[1]) + atr : open < nz(p3[1]) - atr ? nz(p3[1]) - atr : nz(p3[1])
    p3

Renko4() =>
    open_v = 0.0
    Br_2 = Renko3()
    open_v := Renko3() != Renko3()[1] ? Br_2[1] : nz(open_v[1])
    open_v

o2 = Renko4()
c2 = Renko1()
l2 =low
h2 = high

//=== Plotting ===

crossPlot= 0.0
if (o2 < c2)
    crossPlot :=o2
else 
    crossPlot := o2

// Used to make sure that even if o2 and c2 are equal, the result (short or long) will be based on previous trend.
bars_since_up=barssince(o2 < c2)
bars_since_down=barssince(o2 > c2)
go_long= (bars_since_up<bars_since_down) and  o2<c2
go_short = (bars_since_up>bars_since_down) and o2>c2
plotColor = go_long and  o2<c2 ? color.green : go_short and o2>c2?  color.red : color.white 
plot(crossPlot, color = plotColor, style = plot.style_circles, linewidth = 2,join=true)
changeCond = plotColor != plotColor[1]

//=== Buy/Sell ===
closeStatus =  strategy.openprofit > 0 ? "win" : "lose"
long_entry = plotColor == color.green and window()  and changeCond
long_exit_entry = plotColor == color.red //or (allow_alternative_sl and close < low_result  )
short_entry = plotColor == color.red  and window() and changeCond
short_exit_entry = plotColor == color.green   // or (allow_alternative_sl and close > high_result )

strategy.entry("long", true, when = long_entry)
strategy.close("long",when=long_exit_entry,comment=closeStatus)

if (allow_short)
    strategy.entry("short",false, when = short_entry)
strategy.close("short",when=short_exit_entry,comment=closeStatus)
//=== Alerts ===
alertcondition(go_long and changeCond , title='Renko Buy Signal', message='Renko Revered to Buy Signal')
alertcondition(go_short and changeCond , title='Renko Sell Signal', message='Renko Revered to Sell Signal')

Más.