La stratégie s'appelle
L'idée principale de cette stratégie est la suivante:
Utilisez les bandes de Bollinger pour juger de la fourchette de volatilité actuelle du marché.
Les quatre lignes en dehors des bandes de Bollinger sont des multiples anormaux des lignes d'amplitude de volatilité moyenne réelle.
Les moyennes mobiles rapides et lentes déterminent la direction de la tendance du grand cycle.
Suivez et construisez des positions dans la direction de la tendance, fermez des positions pour un profit lorsque vous voyez des barres d'épingles.
Plus précisément, les principaux éléments de cette stratégie sont les suivants:
Déterminez les paramètres des bandes de Bollinger. Le rail du milieu des bandes de Bollinger est la moyenne mobile SMA de n jours, et la largeur des bandes de Bollinger est l'ATR de n jours.
La distance entre les lignes et le rail du milieu est 1,236 fois, 2,382 fois, 3,618 fois et 4,236 fois l'amplitude moyenne de la volatilité réelle.
La longueur de la ligne rapide est de 25 jours et celle de la ligne lente est de 200 jours.
Établissez des positions longues progressivement lorsque vous franchissez les quatre lignes ci-dessous dans une tendance haussière de grand cycle.
Lorsqu'une barre épinglante apparaît ou que le prix franchit à nouveau la moyenne mobile du grand cycle, il est considéré comme un signal de fin de barre épinglante pour fermer les positions pour réaliser un profit.
En jugeant la fourchette de volatilité actuelle à travers les bandes de Bollinger et en établissant des positions sous la tendance du grand cycle, l'effet final des positions à forte probabilité peut être atteint.
Les principaux avantages de cette stratégie sont les suivants:
Utiliser pleinement les caractéristiques de la tendance, déterminer la direction de la tendance dans les grands cycles, construire des positions dans la direction de la tendance pour réduire les opérations inverses inutiles.
L'utilisation de plusieurs lignes de Bollinger permet de juger plus clairement de la fourchette de volatilité actuelle, ce qui permet de saisir la plupart des tendances.
La méthode de la position en grille permet de répartir uniformément les risques sur chaque unité de fonds afin d'obtenir des rendements stables.
L'utilisation de signaux de haute efficacité pour la fermeture de position peut rapidement bloquer les bénéfices.
La stratégie globale intègre la détermination de tendance, les positions de la grille et la clôture de position de signal spécifique.
Cette stratégie comporte également certains risques:
Il existe une certaine probabilité d'erreur dans les moyennes mobiles rapides et lentes, ce qui peut entraîner des opérations inverses inutiles.
La probabilité d'échec de la rupture de la ligne de Bollinger Les lignes de Bollinger ne peuvent pas prédire les trajectoires des prix avec une précision de 100%.
Les signaux de la barre de broches peuvent être diffusés en retard et ne peuvent pas générer de bénéfices à temps.
Il est facile de former trop de positions qui se chevauchent lors des ajustements de choc de grands cycles.
Les solutions correspondantes sont:
Ajustez les paramètres de la moyenne mobile rapide et lente pour réduire la probabilité d'erreurs.
Ajustez les paramètres de la ligne de Bollinger pour que les lignes de Bollinger s'accrochent à la plupart des fluctuations autant que possible.
Testez des modèles spécifiques plus sensibles pour les signaux de prise de profit.
Augmenter la distance d'intervalle pour contrôler la taille de la position.
La stratégie peut être optimisée dans les directions suivantes:
Testez différents paramètres de moyenne mobile pour optimiser la détermination des tendances des grands cycles.
Testez différents multiples de paramètres ATR pour optimiser les paramètres de largeur de canal de Bollinger.
Testez d'autres signaux de prise de profit efficaces, par exemple SAR, Kalman Lines, etc.
Optimiser l'intervalle de grille pour que les intervalles de volatilité soient divisés plus uniformément afin de réduire les positions qui se chevauchent.
Augmenter les mécanismes de stop loss, éviter des pertes énormes dans des conditions de marché extrêmes.
La stratégie intègre l'utilisation du canal de Bollinger, des indicateurs de moyenne mobile, des modèles spécifiques de ligne K et d'autres moyens techniques. Sous le préambule de la détermination de la tendance du grand cycle, elle construit une stratégie de grille de suivi de tendance basée sur des moyennes mobiles et des bandes de Bollinger. Par rapport aux ruptures de bandes de Bollinger traditionnelles, cette stratégie ajoute un jugement caractéristique de la tendance, ce qui peut réduire les positions inversées inutiles. En même temps, la méthode de position de grille diversifie les risques pour chaque unité de fonds afin d'obtenir des rendements stables.
/*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)")