La estrategia se llama
La idea principal de esta estrategia es la siguiente:
Utilice las bandas de Bollinger para juzgar el rango de volatilidad actual del mercado.
Las cuatro líneas fuera de las bandas de Bollinger son múltiples anormales de las líneas de amplitud de volatilidad verdadera promedio.
Los promedios móviles rápidos y lentos determinan la dirección de la tendencia del gran ciclo.
Seguir y construir posiciones en la dirección de la tendencia, cerrar posiciones para obtener ganancias cuando se ven barras de pin.
En concreto, las principales partes de esta estrategia son:
Determine los parámetros de las bandas de Bollinger. El carril medio de las bandas de Bollinger es la media móvil SMA de n días, y el ancho de las bandas de Bollinger es el ATR de n días. La longitud de Bollinger n en la estrategia es 20.
Establezca cuatro líneas ampliadas fuera de las bandas de Bollinger. La distancia entre las líneas y el carril medio es 1.236 veces, 2.382 veces, 3.618 veces y 4.236 veces la amplitud de volatilidad verdadera promedio.
Establezca las medias móviles de la EMA rápida y lenta para determinar la tendencia del ciclo grande.
Establezca posiciones largas gradualmente al romper las cuatro líneas de abajo en una tendencia alcista de ciclo grande.
Cuando aparece una barra de pin o el precio cruza la media móvil del ciclo grande de nuevo, se considera como una barra de pin que termina la señal para cerrar posiciones con beneficio.
El principio técnico principal de esta estrategia es el siguiente: mediante la evaluación del rango de volatilidad actual a través de bandas de Bollinger y el establecimiento de posiciones bajo la tendencia del gran ciclo, se puede lograr el efecto final de posiciones de alta probabilidad.
Las principales ventajas de esta estrategia son las siguientes:
Hacer pleno uso de las características de la tendencia, determinar la dirección de la tendencia en los grandes ciclos, construir posiciones en la dirección de la tendencia para reducir las operaciones inversas innecesarias.
El uso de múltiples líneas de Bollinger permite juzgar con mayor claridad el rango de volatilidad actual, lo que permite captar la mayoría de las tendencias.
El método de la posición en red puede distribuir los riesgos de manera uniforme entre cada unidad de fondos para obtener rendimientos estables.
El uso de señales de alta eficiencia para el cierre de posiciones puede bloquear rápidamente las ganancias.
La estrategia general integra la determinación de tendencias, las posiciones de la red y el cierre de posiciones de señal específicas.
Esta estrategia también presenta algunos riesgos:
Probabilidad de determinar incorrectamente la tendencia del ciclo grande. Existe cierta probabilidad de error en los promedios móviles rápidos y lentos, lo que puede conducir a operaciones inversas innecesarias.
Probabilidad de que las líneas de Bollinger no se rompan.
Las señales de la barra de pin pueden salir tarde y no pueden bloquear las ganancias a tiempo.
Es fácil formar demasiadas posiciones superpuestas durante los ajustes de choque de ciclos grandes.
Las soluciones correspondientes son:
Ajustar los parámetros de la media móvil rápida y lenta para reducir la probabilidad de errores.
Ajustar los parámetros de la línea de Bollinger para hacer que las líneas de Bollinger se adhieran a la mayoría de las fluctuaciones tanto como sea posible.
Prueba patrones específicos más sensibles para señales de ganancia.
Aumentar la distancia de intervalo para controlar el tamaño de la posición.
La estrategia se puede optimizar en las siguientes direcciones:
Prueba diferentes parámetros de promedio móvil para optimizar las determinaciones de tendencias de grandes ciclos. Por ejemplo, prueba otros indicadores como EMA, RSI, etc.
Prueba diferentes parámetros ATR múltiplos para optimizar la configuración de anchura del canal de Bollinger.
Prueba otras señales eficientes para obtener ganancias, por ejemplo, SAR, Líneas de Kalman, etc.
Optimizar el intervalo de la cuadrícula para hacer que los intervalos de volatilidad se dividan de manera más uniforme para reducir las posiciones superpuestas.
Aumentar los mecanismos de stop loss, evitar pérdidas enormes en condiciones extremas de mercado.
La estrategia integra el uso del canal de Bollinger, indicadores de promedio móvil, patrones específicos de K-line y otros medios técnicos. Bajo la premisa de determinar la tendencia del gran ciclo, construye una estrategia de red de seguimiento de tendencias basada en promedios móviles y bandas de Bollinger. En comparación con las rupturas tradicionales de bandas de Bollinger, esta estrategia agrega un juicio característico de tendencia, lo que puede reducir posiciones inversas innecesarias. Al mismo tiempo, el método de posición de red diversifica los riesgos para cada unidad de fondos para obtener rendimientos estables. La estrategia se puede optimizar desde múltiples ángulos como determinación de tendencias, ancho de Bollinger, señales de toma de ganancias, métodos de stop loss, etc. para obtener efectos estratégicos más estables.
/*backtest start: 2023-10-24 00:00:00 end: 2023-11-23 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) //回测时间 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 //趋势 plot 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="买(buy1)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 buy3=ta.crossunder(close,bott3) and longTrend buy4=ta.crossunder(close,bott4) and longTrend 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)")