Estrategia de cuadrícula de seguimiento de media móvil dual con bandas de Bollinger


Fecha de creación: 2023-12-13 17:12:38 Última modificación: 2023-12-13 17:12:38
Copiar: 0 Número de Visitas: 733
1
Seguir
1621
Seguidores

Estrategia de cuadrícula de seguimiento de media móvil dual con bandas de Bollinger

Descripción general

Esta estrategia utiliza un indicador de canal de Brin para trazar bandas basadas en la regresión de ATR y Fibonacci como un canal de precios de la red. En combinación con la mediana de la doble EMA para determinar la dirección de la tendencia general, configure una red de seguimiento de stop loss selectivamente en el precio de la banda de Brin en la dirección de la tendencia y realice un arbitraje de seguimiento de tendencia.

Principio de estrategia

  1. El uso del eje central en el canal de Brin y el trazado de las líneas de regresión de ATR y 4 líneas de Fibonacci para la construcción de bandas de precios ascendentes y descendentes.

  2. La línea rápida EMA y la línea lenta SMA forman dos líneas medias para determinar la dirección de la tendencia general. La línea rápida rompe la línea lenta como mercado de más tiendas, por el contrario, como mercado de tiendas en blanco.

  3. En el mercado multicabeza, solo haga más, elija abrir posiciones debajo del canal de ruptura de precios cerca de la vía baja de Brin para hacer más; en el mercado de cabecera en blanco, solo haga vacío, elija abrir posiciones debajo del canal de ruptura de precios cerca de la vía alta de Brin para hacer vacío.

  4. Establezca las condiciones de stop loss: Si la línea K se invierte significativamente, abandone la posición en la dirección actual.

Análisis de las ventajas

  1. Utilice las líneas de doble equilibrio para evaluar las tendencias a gran escala y evitar el comercio en contra.

  2. La red de canales de Brin ATR establece varios precios de apertura de posición, lo que aumenta la tasa de éxito de la apertura de la posición.

  3. La regresión de Fibonacci establece la dispersión de los precios, con un número de posiciones diferente en diferentes bandas de onda, lo que permite la dispersión de los fondos.

  4. Las condiciones de parada de pérdidas en tiempo real facilitan la parada rápida y reducen la devolución de ganancias.

Análisis de riesgos

  1. Los errores en el juicio de la tendencia a gran escala pueden conducir a pérdidas en el reverso. Se puede ajustar adecuadamente el parámetro de la línea media o agregar otros indicadores para un juicio auxiliar.

  2. Cuando la fluctuación es demasiado grande, el precio puede romper directamente la zona de la red y no se puede abrir una posición. Se puede ajustar el parámetro de la franja de onda para aumentar la oportunidad de abrir una posición.

  3. Las condiciones de stop loss son subjetivas, y puede haber errores en los criterios de identificación de diferentes operadores. Se recomienda probar y optimizar las condiciones de stop loss.

Dirección de optimización

  1. Añadir el indicador apo para el análisis auxiliar de las tendencias de doble equilátero.

  2. Optimización de los parámetros de la banda de Brin con el uso de indicadores de volatilidad del mercado para adaptarlos mejor a los cambios dinámicos en el mercado.

  3. Reducir el margen de pérdida y agregar la configuración de las condiciones de pérdida de OTHER para reducir el error.

Resumir

Esta estrategia tiene una idea clara y global, utiliza el canal Brin ATR y la línea de doble equilibrio para lograr un juicio integral y completo de las señales de negociación de la estrategia, lo que reduce al máximo el riesgo de error. La ventaja de la estrategia es evidente y se puede aplicar en la práctica; pero los detalles, como la configuración de los parámetros y las condiciones de parada, aún tienen espacio para ser optimizados y deben perfeccionarse aún más.

Código Fuente de la Estrategia
/*backtest
start: 2023-11-12 00:00:00
end: 2023-12-12 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Aayonga

//@version=5
strategy("fib trend grid@Aa", overlay=true,initial_capital=2000, default_qty_type=strategy.fixed, default_qty_value=1)

//回测时间
useDateFilter=input.bool(true,title = "启用回测时间范围限定(backtest)", group = "回测范围(backtest)")
backtesStarDate=input(timestamp("1 Jan 2015"),title = "开始时间(Start)", group = "回测范围(backtest)")
backtestEndDate=input(timestamp("1 Jan 2040"),title = "结束时间(finish)",group = "回测范围(backtest)")
inTradeWindow=true


//入场位 entry
bolllen=input.int(defval=20,minval=1,title="布林长度,(boll length)",group = "入场位(entry)")
sma=ta.sma(close,bolllen)
avg=ta.atr(bolllen)
fib1=input(defval=1.236,title="Fib 1",group = "入场位(entry)")
fib2=input(defval=2.382,title="Fib 2",group = "入场位(entry)")
fib3=input(defval=3.618,title="fib 3",group = "入场位(entry)")
fib4=input(defval=4.236,title="Fib 4",group = "入场位(entry)")
r1=avg*fib1
r2=avg*fib2
r3=avg*fib3
r4=avg*fib4
top4=sma+r4
top3=sma+r3
top2=sma+r2
top1=sma+r1
bott1=sma-r1
bott2=sma-r2
bott3=sma-r3
bott4=sma-r4



//趋势 trend

t4=plot(top4,title="卖 (sell)4",color=color.rgb(244, 9, 9))
t3=plot(top3,title = "卖(sell) 3",color=color.rgb(211, 8, 8))
t2=plot(top2,title="卖 (sell)2",color=color.rgb(146, 13, 13))
t1=plot(top1,title="卖(sell) 1",color=color.rgb(100, 3, 3))

b1=plot(bott1,title="买(buy)1",color=color.rgb(4, 81, 40))
b2=plot(bott2,title="买(buy)2",color=color.rgb(15, 117, 46))
b3=plot(bott3,title = "买(buy)3",color =color.rgb(8, 176, 42) )
b4=plot(bott4,title="买(buy)4",color=color.rgb(15, 226, 103))
plot(sma,style=plot.style_cross,title="SMA",color=color.rgb(47, 16, 225))

//趋势
LengthF=input(defval = 25,title = "快线长度(fastlength)")
LengthS=input(defval=200,title = "慢线长度(slowlength)")
emaF=ta.ema(close,LengthF)
smaS=ta.sma(close,LengthS)
longTrend=emaF>smaS
longb=ta.crossover(emaF,smaS)
bgcolor(longb ? color.new(color.green,40):na,title = "多头强势(bull trend)")
shortTrend=smaS>emaF
shortb=ta.crossunder(emaF,smaS)
bgcolor(shortb ? color.new(#951313, 40):na,title = "空头强势(bear trend)")

//pinbar
bullPinBar = ((close > open) and ((open - low) > 0.6* (high - low))) or ((close < open) and ((close - low) > 0.9 * (high - low)))
//plotshape(bullPinBar  , text ="pinbar", textcolor=color.rgb(9, 168, 144),location=location.belowbar, color=color.rgb(29, 103, 67), size=size.tiny)
bearPinBar = ((close > open) and ((high - close) > 0.7 * (high - low))) or ((close < open) and ((high - open) > 0.7 * (high - low)))
//plotshape(bearPinBar  , text ="pinbar", textcolor=color.rgb(219, 12, 12),location=location.abovebar, color=color.rgb(146, 7, 7), size=size.tiny)

buy1=ta.crossunder(close,bott1) and longTrend and close>ta.ema(close,100)
buy2=ta.crossunder(close,bott2) and longTrend and close>ta.ema(close,80)
buy3=ta.crossunder(close,bott3) and longTrend and close>ta.ema(close,80)
buy4=ta.crossunder(close,bott4) and longTrend and close>ta.ema(close,80)
buyclose=bearPinBar or ta.crossunder(close,smaS)




if buy2 or buy3 or buy4 or buy1 and inTradeWindow
    strategy.order("多(buy)",strategy.long)

if buyclose  and inTradeWindow
    strategy.close("多(buy)")

sell1=ta.crossover(close,top1) and shortTrend and close<ta.ema(close,200)
sell2=ta.crossover(close,top2) and shortTrend and close<ta.ema(close,200)
sell3=ta.crossover(close,top3) and shortTrend and close<ta.ema(close,200)
sell4=ta.crossover(close,top4) and shortTrend and close<ta.ema(close,200)
sellclose=bullPinBar or ta.crossover(close,ta.sma(close,220))

if  sell1 or sell2 or sell3 or sell4 and inTradeWindow
    strategy.order("空(sell)",strategy.short)

if sellclose  and inTradeWindow
    strategy.close("空(sell)")