La estrategia utiliza un indicador de banda oscilante reforzada para determinar el punto de reversión del precio, hacer más cuando el precio está cerca del límite inferior de la banda oscilante, y cerrar la posición cuando aparece la línea K verde, con el objetivo de capturar oportunidades de rebote por debajo de la banda oscilante.
Calcular los parámetros base y dev de las bandas de oscilación regulares, y los límites upperBB y lowerBB.
Calcular la línea media SMA y el percentual de desviación de la SMA en las vías ascendente y descendente upex2 y dnex2。
Calcula el promedio de upex2, dnex2 y upperBB, lowerBB, para generar las curvas upex3 y dnex3.
Tomeupex3 con el valor mayor en el upperBB como nuevo uptrackupex, dnex3 con el valor menor en el lowerBB como nuevo downtrackdnex.
Cuando el precio esté por debajo de dnex, haga una entrada adicional; cuando la línea K esté verde (el precio de cierre es mayor que el precio de apertura), cierre la posición.
Las bandas de oscilación reforzadas aumentan la sensibilidad del indicador de bandas de oscilación original, lo que permite capturar oportunidades de reversión de precios antes.
Combinado con el filtro de la señal de la línea K, evita el deterioro frecuente en la composición.
La retroalimentación muestra que la estrategia fue rentable de manera estable entre 2008 y 2018, con una curva de ganancias plana y una reversión máxima de menos del 20%.
Se puede configurar la utilización de los fondos, el tiempo de negociación, etc. El riesgo es controlado.
La configuración incorrecta de los parámetros de la banda de oscilación puede causar una frecuencia de negociación excesiva o oportunidades perdidas.
No se puede ganar dinero con un cambio de tendencia.
La señal de filtración de la línea K puede estar retrasada y no puede detener la salida a tiempo.
Los datos de retrospectiva son de sólo 10 años, por lo que es necesario ampliar el rango de muestreo para comprobar la estabilidad.
No puede adaptarse a saltos o espacios grandes.
Prueba diferentes combinaciones de parámetros para optimizar los parámetros de la banda de oscilación.
Filtración combinada con otras señales de indicadores para aumentar la proporción de operaciones rentables.
Unirse a una estrategia de cortocircuito para considerar el cortocircuito cuando el precio supera la línea de salida.
Establezca condiciones de stop loss para controlar las pérdidas individuales.
Desarrollar un programa de ajuste automático para optimizar los parámetros de acuerdo con los cambios en el mercado.
Optimización de las reglas de ingreso para el salto aéreo y el salto en escalas.
Ampliar el rango de tiempo de resonancia para comprobar la estabilidad de los parámetros.
La estrategia utiliza el aumento de la banda de oscilación para determinar el punto de inflexión del precio, hacer más en la posición cerca de la banda de oscilación debajo de la trayectoria, y se combina con la señal de filtración de la línea K para detenerse rápidamente y retroceder. La estrategia funciona bien. El rango de muestra es limitado, los parámetros clave necesitan ser optimizados aún más y el riesgo de caída de los ingresos puede ser mayor si el entorno del mercado cambia. El siguiente paso es introducir múltiples señales de filtración para aumentar la proporción de operaciones rentables, aumentar las oportunidades de hacer descubiertos y usar ciclos de retroalimentación más largos para probar la estabilidad de la combinación de parámetros para mejorar la adaptabilidad y la estabilidad de las estrategias.
/*backtest
start: 2022-09-14 00:00:00
end: 2023-09-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Noro
//2018
//@version=2
strategy(title = "Noro's Advanced Bollinger Bands Strategy v1.0", shorttitle = "ABB str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 5)
//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(false, defval = false, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
p = input(20, "bars")
d = input(25, "percent")
showlines = input(true, defval = true, title = "Show Lines?")
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")
mult = input(2.0, minval=0.001, maxval=50)
basis = sma(close, p)
dev = mult * stdev(close, p)
source = close
upperBB = basis + dev
lowerBB = basis - dev
b1 = plot(basis, color=gray, linewidth=1)
p1 = plot(upperBB, color=aqua, linewidth=1)
p2 = plot(lowerBB, color=aqua, linewidth=1)
//SMAs
sma = sma(close, p)
upex2 = sma * ((100 + d) / 100)
dnex2 = sma * ((100 - d) / 100)
upex3 = (upex2 + upperBB) / 2
dnex3 = (dnex2 + lowerBB) / 2
upex = max(upperBB, upex3)
dnex = min(lowerBB, dnex3)
//exit = (high > sma and low < sma)
exit = close > open
//Lines
col = showlines ? blue : na
plot(upex, linewidth = 3, color = col, transp = 0)
plot(sma, linewidth = 3, color = col, transp = 0)
plot(dnex, linewidth = 3, color = col, transp = 0)
//Trading
lot = strategy.position_size != strategy.position_size[1] ? strategy.equity / close * capital / 100 : lot[1]
if (not na(close[p]))
strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, limit = dnex)
strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, limit = upex)
if exit
strategy.close_all()