
La estrategia de inversión de precios orientada espacialmente determina la dirección de la tendencia de la fluctuación de precios calculando la línea central del canal de precios. Cuando el precio se acerca a la línea central del canal, se emite una señal de venta o ventaja. La estrategia combina varias condiciones de filtrado para buscar oportunidades de negociación de alta probabilidad.
El indicador central de la estrategia es la línea central del canal de precios. La forma de calcular es tomar el promedio de los precios más altos y más bajos de las 30 líneas K más recientes. Se considera una tendencia alcista cuando el punto bajo está por encima de la línea central y una tendencia bajista cuando el punto alto está por debajo de la línea central.
La estrategia solo emite una señal de negociación cuando el contexto de la tendencia cambia. Es decir, en un contexto ascendente, solo se pone en blanco cuando la línea K se vuelve roja; en un contexto descendente, solo se hace más cuando la línea K se vuelve verde.
Además, la estrategia también establece condiciones de doble filtración: filtración de entes de la barra y filtración de barras de canal de precio. La señal se activa solo cuando el volumen de la barra es mayor al 20% del promedio; para abrir una posición, debe haber una señal de tendencia continua durante el ciclo de filtración.
La combinación de tendencias, zonas de valor y formas de la línea K es una estrategia de inversión muy eficiente. Las principales ventajas son:
El principal riesgo de esta estrategia proviene de haber perdido el punto de inflexión de los precios y no haber esperado la señal. Se puede optimizar mediante los siguientes métodos:
La estrategia puede ser optimizada en los siguientes aspectos:
La estrategia de reversión de precios orientada al espacio determina el momento de reversión a través del canal de precios y genera una señal de alta calidad con el establecimiento de condiciones de doble filtración. Basada en la optimización de parámetros y el control de ventilación, es una estrategia de cuantificación confiable.
/*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()