La estrategia de inversión de precios guiada por el canal de precios calcula la línea central del canal de precios para determinar la dirección de tendencia de las fluctuaciones de precios. Genera señales largas y cortas cuando el precio se acerca a la línea central del canal.
El indicador principal de esta estrategia es la línea central del canal de precios. Se calcula como el promedio del precio más alto y el precio más bajo de los 30 candeleros más recientes. Cuando el mínimo es más alto que la línea central, se considera una tendencia alcista. Cuando el máximo es más bajo que la línea central, se considera una tendencia bajista.
La estrategia solo genera señales comerciales cuando el fondo de la tendencia cambia. Es decir, en un fondo de tendencia alcista, se corta solo cuando el candelabro se vuelve rojo. En un fondo de tendencia bajista, se hace largo solo cuando el candelabro se vuelve verde.
Además, la estrategia también establece condiciones de doble filtro: filtro del cuerpo del candelabro y filtro de barras del canal de precios. Las señales se activan solo cuando el volumen del cuerpo del candelabro es mayor al 20% del valor promedio, y debe haber señales de tendencia consecutivas dentro del ciclo del filtro para abrir posiciones.
Esta estrategia combina tendencia, área de valor y patrones de candlestick, que es una estrategia de inversión eficiente.
Los principales riesgos de esta estrategia provienen de la falta de puntos de inversión de precios y la espera innecesaria de señales.
Esta estrategia puede optimizarse en los siguientes aspectos:
La estrategia de inversión de precios guiada por el canal de precios determina los puntos de inversión a través de los canales de precios y establece condiciones de doble filtro para generar señales de alta calidad.
/*backtest start: 2023-11-19 00:00:00 end: 2023-11-26 00:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2018 //@version=2 strategy(title = "Noro's PriceChannel for D1 v1.0", shorttitle = "PriceChannel D1", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 0) //Settings needlong = input(true, "long") needshort = input(true, "short") slowlen = input(30, defval = 30, minval = 2, maxval = 200, title = "PriceChannel Period") pcbars = input(1, defval = 1, minval = 1, maxval = 20, title = "PriceChannel Bars") usecol = input(true, "Use color-filter") usebod = input(true, "Use body-filter") needbg = input(false, defval = false, title = "Need trend Background?") 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 //PriceChannel lasthigh = highest(src, slowlen) lastlow = lowest(src, slowlen) center = (lasthigh + lastlow) / 2 //Trend ub = low > center ? 1 : 0 db = high < center ? 1 : 0 trend = sma(ub, pcbars) == 1 ? 1 : sma(db, pcbars) == 1 ? -1 : trend[1] //Body body = abs(close - open) abody = sma(body, 10) //Signals up = trend == 1 and (close < open or usecol == false) and (body > abody / 5 or usebod == false) dn = trend == -1 and (close > open or usecol == false) and (body > abody / 5 or usebod == false) //Lines plot(center, color = blue, linewidth = 3, transp = 0, title = "PriceChannel Center") //Background col = needbg == false ? na : trend == 1 ? lime : red bgcolor(col, transp = 80) //Trading if up strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if dn strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if time > timestamp(toyear, tomonth, today, 23, 59) strategy.close_all()