
Esta estrategia determina la compresión y la liberación del mercado a través de múltiples indicadores, como la banda de Brin, el canal KC y el color del hilo, y la dirección de la línea de equilibrio para determinar la tendencia de establecimiento, operando cuando se produce un giro en la dirección de la tendencia.
Calcula el promedio móvil simple de la banda de Brin. La banda de Brin se ejecuta en el cierre de N días, la banda superior es el ancho de onda real de N días en el canal de la banda central + KC, y la banda inferior es el ancho de onda real de N días en el canal de la banda central-KC.
Calcula el canal KC. El canal KC es el promedio móvil simple del precio de cierre de N días en la órbita media, M veces el ancho de onda real de la órbita media + N días en la órbita superior y M veces el ancho de onda real de la órbita media-N días en la órbita inferior.
Para determinar la compresión y la liberación: compresión cuando la banda de Brin está por debajo de la banda de KC y la banda de Brin está por encima de la banda de KC.
Calcula la tendencia de establecimiento. Tomando el precio de cierre de N días - el precio medio de los precios más altos y más bajos de N días como entrada, calcula la regresión lineal de N días, cuyo valor mayor a 0 indica la tendencia de aumento de establecimiento y menor a 0 indica la tendencia de disminución de establecimiento.
Cuando el establecimiento sube, la línea corta de sol y la liberación son señales múltiples; cuando el establecimiento baja, la línea corta de sol y la compresión son señales de vacío.
La combinación de múltiples indicadores permite una mayor precisión de la señal. La combinación de la banda de Brin, el canal KC y el cable de aluminio permite una mayor precisión de la señal para evitar falsas señales.
Establishment tendencia de juicio, el comercio de acuerdo con la tendencia. Utilice el establecimiento de juicio de la tendencia principal, evitar la operación de contravalor.
Parar automáticamente y controlar el riesgo. Cuando el precio toca la línea de pararse, el paramiento automático de la posición de liquidación.
Los parámetros de la banda de Brin y el canal KC están mal configurados, lo que puede causar errores de compresión y liberación.
Es posible que el establishment se haya quedado atrás en el análisis de las tendencias y haya perdido el punto de inflexión.
Los eventos inesperados generan grandes pérdidas que no se pueden detener, y existe un mayor riesgo de pérdidas.
Método de optimización: ajustar los parámetros de la banda de Brin y el canal KC, con el uso de indicadores como el ADX para el juicio auxiliar; actualizar el ciclo de la línea promedio de establecimiento a tiempo para reducir el retraso; agregar una zona de amortiguamiento cuando se establece una línea de parada.
Combinado con más indicadores técnicos, mejora la precisión de la señal de construcción de la bodega. Por ejemplo, KDJ, MACD, etc.
Optimización de los parámetros periódicos de la línea media del establecimiento para que sea más capaz de capturar nuevas tendencias.
Incluye indicadores de volumen de transacciones para evitar falsas rupturas, como el indicador de marea de energía, la acumulación/distribución, etc.
Se debe distinguir entre señales largas y cortas. Evite ser atrapado.
Los parámetros de optimización de AI, la enumeración buscada y la combinación de parámetros óptimos buscados. Reducción de la sobreajuste.
La estrategia se basa en el uso de la banda de Brin para determinar la compresión y la liberación del mercado; el uso de la tendencia de establecimiento para determinar la dirección de la tendencia principal; el uso de la tendencia de establecimiento en el punto de inflexión de la liberación de la compresión para operar en la dirección de la contra-establecimiento. La ventaja de la estrategia es la precisión de la señal, el stop loss y la evitación de señales falsas. La estrategia se puede optimizar: combinación de múltiples indicadores, optimización de los parámetros de juicio de tendencia, adición de indicadores de energía cuantitativa, determinación de múltiples períodos de tiempo, búsqueda de ventajas de AI, etc.
/*backtest
start: 2024-01-17 00:00:00
end: 2024-01-24 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Noro
//2017
//@version=2
strategy(shorttitle = "Squeeze str 1.1", title="Noro's Squeeze Momentum Strategy v1.1", overlay = false, 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")
lev = input(1, defval = 1, minval = 1, maxval = 100, title = "leverage")
length = input(20, title="BB Length")
mult = input(2.0,title="BB MultFactor")
lengthKC=input(20, title="KC Length")
multKC = input(1.5, title="KC MultFactor")
useTrueRange = true
mode2 = input(true, defval = true, title = "Mode 2")
usecolor = input(true, defval = true, title = "Use color of candle")
usebody = input(true, defval = true, title = "Use EMA Body")
needbg = input(false, defval = false, title = "Show trend background")
fromyear = input(2018, defval = 2018, 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")
// Calculate BB
source = close
basis = sma(source, length)
dev = multKC * stdev(source, length)
upperBB = basis + dev
lowerBB = basis - dev
// Calculate KC
ma = sma(source, lengthKC)
range = useTrueRange ? tr : (high - low)
rangema = sma(range, lengthKC)
upperKC = ma + rangema * multKC
lowerKC = ma - rangema * multKC
sqzOn = (lowerBB > lowerKC) and (upperBB < upperKC)
sqzOff = (lowerBB < lowerKC) and (upperBB > upperKC)
noSqz = (sqzOn == false) and (sqzOff == false)
val = linreg(source - avg(avg(highest(high, lengthKC), lowest(low, lengthKC)),sma(close,lengthKC)), lengthKC,0)
bcolor = iff( val > 0, iff( val > nz(val[1]), lime, green), iff( val < nz(val[1]), red, maroon))
scolor = noSqz ? blue : sqzOn ? black : gray
trend = val > 0 ? 1 : val < 0 ? -1 : 0
//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 80)
//Body
body = abs(close - open)
abody = sma(body, 10) / 3
//Indicator
bcol = iff( val > 0, iff( val > nz(val[1]), lime, green), iff( val < nz(val[1]), red, maroon))
scol = noSqz ? blue : sqzOn ? black : gray
plot(val, color=bcol, style=histogram, linewidth=4)
plot(0, color=scol, style=cross, linewidth=2)
//Signals
bar = close > open ? 1 : close < open ? -1 : 0
up1 = trend == 1 and (bar == -1 or usecolor == false) and (body > abody or usebody == false) and mode2 == false
dn1 = trend == -1 and (bar == 1 or usecolor == false) and (body > abody or usebody == false) and mode2 == false
up2 = trend == 1 and val < val[1] and mode2
dn2 = trend == -1 and val > val[1] and mode2
exit = (strategy.position_size > 0 and close > strategy.position_avg_price) or (strategy.position_size < 0 and close < strategy.position_avg_price) and mode2
//Trading
lot = strategy.position_size == 0 ? strategy.equity / close * lev : lot[1]
if up1 or up2
strategy.entry("Long", strategy.long, needlong == false ? 0 : lot)
if dn1 or dn2
strategy.entry("Short", strategy.short, needshort == false ? 0 : lot)
if exit
strategy.close_all()