Estrategia de canal de precios de Noro v1.1

El autor:¿ Qué pasa?, Fecha: 2023-10-24 10:59:38
Las etiquetas:

img

Resumen general

Noro's Price Channel Strategy v1.1 es una estrategia de trading de tendencia basada en los canales de precios y los cambios de dirección de precios. Esta estrategia combina el indicador de canal de precios y el indicador RSI rápido para identificar señales de ruptura de precios desde el canal, junto con señales consecutivas de reversión de color de vela roja/verde para establecer posiciones largas/cortas. El objetivo de esta estrategia es capturar la dirección de las tendencias a medio y largo plazo, evitando el ruido de las fluctuaciones del mercado a corto plazo.

Estrategia lógica

La estrategia primero calcula el promedio de los precios más altos y más bajos durante un cierto período para construir un canal de precios medio. Cuando el precio se rompe por encima del canal desde abajo, se considera una señal larga. Cuando el precio se rompe por debajo del canal desde arriba, se considera una señal corta.

Al mismo tiempo, la estrategia incorpora dos reglas auxiliares: RSI rápido y color de la vela. Cuando el RSI rápido está por debajo del 25%, indica un estado de sobreventa y los precios pueden rebotar. Junto con una ruptura por encima del canal, esto produce una señal larga más fuerte. En contraste, cuando el RSI rápido está por encima del 75%, indica un estado de sobrecompra y los precios pueden caer. Junto con una ruptura por debajo del canal, esto produce una señal corta más fuerte. Además, la estrategia realiza un seguimiento de los cambios de color de la vela en las dos velas más recientes. Dos velas rojas consecutivas mejoran la señal corta, mientras que dos velas verdes consecutivas mejoran la señal larga.

Al combinar estos tres indicadores de señal, la estrategia puede identificar efectivamente las tendencias a medio y largo plazo y establecer posiciones en consecuencia.

Ventajas

La mayor ventaja de esta estrategia es la incorporación de múltiples indicadores para determinar la dirección de la tendencia y evitar el ruido de las fluctuaciones del mercado a corto plazo.

  1. El canal de precios identifica claramente la dirección y la fuerza de la tendencia. Las rupturas de las bandas de canal representan una nueva etapa de la tendencia con fuertes señales.

  2. El RSI rápido evalúa las condiciones de sobrecompra/sobreventa para evitar perseguir tendencias en los puntos de inflexión.

  3. La validación del color de la vela verifica además la persistencia de la tendencia.

  4. La estrategia solo entra en dos velas consecutivas del mismo color rompiendo el canal, evitando señales falsas de oscilaciones a corto plazo.

  5. El stop loss promedio simple cierra las posiciones una vez que el color de la vela cambia, minimizando las pérdidas de manera efectiva.

Los riesgos

También hay algunos riesgos a tener en cuenta para esta estrategia:

  1. La configuración incorrecta de los parámetros del canal de precios puede dar lugar a que los canales sean demasiado anchos o demasiado estrechos, pierdan los puntos de cambio de tendencia o generen señales falsas excesivas.

  2. El valor de las inversiones en el valor de las inversiones en el valor de las inversiones en el valor de las inversiones en el valor de las inversiones en el valor de las inversiones.

  3. El simple mecanismo de stop loss puede ser demasiado sensible en tendencias agitadas, causando una apertura y cierre excesivos de la posición.

  4. No puede predecir la continuación de la tendencia real después de romper el canal de precios, lo que conduce a pérdidas amplificadas.

  5. No puede adaptarse a eventos de cisne negro con impactos repentinos en el mercado, lo que resulta en enormes pérdidas.

Oportunidades de mejora

Algunas oportunidades importantes para mejorar la estrategia incluyen:

  1. Ajustar dinámicamente los parámetros del canal de precios para adaptarse mejor a la volatilidad en diferentes períodos y mercados.

  2. Incorporar medidas de volatilidad para ajustar los parámetros del RSI, reduciendo la sensibilidad durante la alta volatilidad y aumentando la sensibilidad durante la baja volatilidad.

  3. Se añadirán mecanismos de detención posterior con niveles de detención basados en la volatilidad de la tendencia para evitar detenciones demasiado sensibles.

  4. Mejorar la identificación de la fuerza de la ruptura y las divergencias bajista/bullista para evitar falsas rupturas.

  5. Incorporar modelos de entrenamiento de datos históricos para ayudar a estimar los puntos de inflexión de tendencias de alta probabilidad y mejorar la precisión de la entrada.

  6. Optimizar los modelos de posicionamiento para ajustar dinámicamente las asignaciones en función de las condiciones de riesgo.

Conclusión

En general, Noro's Price Channel Strategy v1.1 es una estrategia de seguimiento de tendencias simple y práctica. Incorpora múltiples indicadores para identificar las direcciones de tendencia a medio y largo plazo y establece reglas de entrada relativamente prudentes. Hay espacio para una mayor mejora en áreas como mecanismos de stop loss y ajuste dinámico de parámetros. Pero la lógica general es simple y clara, lo que facilita la implementación para el comercio cuantitativo, especialmente para principiantes. Con el ajuste de parámetros y la optimización del mecanismo, puede convertirse en un sistema comercial estable y confiable.


/*backtest
start: 2023-09-23 00:00:00
end: 2023-10-23 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy(title = "Noro's Price Channel Strategy v1.1", shorttitle = "Price Channel str 1.1", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
usecol = input(true, defval = true, title = "Use color strategy")
usersi = input(true, defval = true, title = "Use RSI strategy")
lev = input(1, defval = 1, minval = 1, maxval = 100, title = "leverage")
pch = input(30, defval = 30, minval = 2, maxval = 200, title = "Price Channel")
showcl = input(true, defval = true, title = "Show center-line")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")
src = close

//Price channel
lasthigh = highest(src, pch)
lastlow = lowest(src, pch)
center = (lasthigh + lastlow) / 2
trend = low > center ? 1 : high < center ? -1 : trend[1]
col = showcl ? blue : na
plot(center, color = col, linewidth = 2)

//Bars
bar = close > open ? 1 : close < open ? -1 : 0
rbars = sma(bar, 2) == -1
gbars = sma(bar, 2) == 1

//Fast RSI
fastup = rma(max(change(src), 0), 2)
fastdown = rma(-min(change(src), 0), 2)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))

//Signals
body = abs(close - open)
abody = sma(body, 10)
up1 = rbars and close > center and usecol
dn1 = gbars and close < center and usecol
up2 = fastrsi < 25 and close > center and usersi
dn2 = fastrsi > 75 and close < center and usersi
exit = (((strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open)) and body > abody / 2)
lot = strategy.equity / close * lev

//Trading
if up1 or up2
    if strategy.position_size < 0
        strategy.close_all()
        
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))

if dn1 or dn2
    if strategy.position_size > 0
        strategy.close_all()
        
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if time > timestamp(toyear, tomonth, today, 23, 59) or exit
    strategy.close_all()

Más.