Diese Strategie verwendet den Bollinger Bands-Indikator, um Preiskanäle zu zeichnen, die auf ATR- und Fibonacci-Retracements als Gitter basieren.
Verwenden Sie die mittlere Linie der Bollinger-Bänder und die oberen und unteren Schienen, die aus den ATR- und 4 Fibonacci-Retracement-Linien hergestellt wurden, um die Preiswellenbänder zu erstellen.
Die schnelle EMA-Linie und die langsame SMA-Linie bilden einen doppelten gleitenden Durchschnitt, um die allgemeine Trendrichtung zu bestimmen. Die schnelle Linie, die die langsame Linie durchbricht, ist ein Bullenmarkt und umgekehrt ein Bärenmarkt.
In einem Bullenmarkt wählen Sie nur lange, wählen Sie Preise in der Nähe der unteren Schiene der Bollinger-Bänder, um durch den Boden des Kanals zu brechen, um lange Positionen zu eröffnen; in einem Bärenmarkt, wählen Sie nur kurze, wählen Sie Preise in der Nähe der oberen Schiene der Bollinger-Bänder, um durch die Oberseite des Kanals zu brechen, um kurze Positionen zu eröffnen.
Einstellung der Stop-Loss-Bedingungen: Ausstieg aus den aktuellen Richtpositionen, wenn eine große Umkehrleiste angezeigt wird.
Verwenden Sie doppelte gleitende Durchschnitte, um Trends auf Mega-Level-Ebene zu bestimmen, um gegentrendigen Handel zu vermeiden.
Das Bollinger-ATR-Kanal-Gitter setzt mehrere Eröffnungspreise, um die Wahrscheinlichkeit erfolgreicher Eröffnung von Positionen zu erhöhen.
Die Fibonacci-Retrace-Wellenbänder setzen die Preisvolatilität mit unterschiedlicher Anzahl von Positionen in verschiedenen Bands fest, wodurch eine Kapitaldispersion erreicht wird.
Echtzeit-Stop-Loss-Bedingungen erleichtern schnelle Stop-Loss und reduzieren Gewinnrückgängen.
Fehler bei der Beurteilung von Trends auf Mega-Ebene können zu entgegengesetzten Verlusten führen.
Wenn die Volatilität zu hoch ist, können die Preise direkt durch das Netzbereich durchbrechen und keine Positionen eröffnen können.
Stop-Loss-Bedingungen sind subjektiver und die Anerkennungskriterien können von Händler zu Händler unterschiedlich sein.
Hinzufügen des APO-Indikators für die Hilfsanalyse von doppelten gleitenden Durchschnittstrendurteilen.
Verwenden von Marktvolatilitätsindikatoren zur Optimierung der Bollinger-Wellenbandparameter, um sich besser an dynamische Marktveränderungen anzupassen.
Verringern Sie die Stop-Loss-Amplitude und fügen Sie eine ANDERE Möglichkeit hinzu, um die Stop-Loss-Bedingungen einzustellen, um Fehler zu reduzieren.
Die allgemeine Idee dieser Strategie ist klar, die Bollinger ATR-Kanal und doppelte gleitende Durchschnitte kombiniert, um ein umfassendes Urteil über Strategie-Handelssignale zu erzielen, wodurch das Risiko einer Fehleinschätzung maximiert wird. Die Vorteile der Strategie sind offensichtlich und können im tatsächlichen Handel angewendet werden; aber es gibt noch Raum für Optimierungen in Details wie Parameter-Einstellungen und Stop-Loss-Bedingungen, die weiter verbessert werden müssen. Es wird angenommen, dass mit kontinuierlicher Optimierung die Rentabilität und Stabilität dieser Strategie weiter steigen wird.
/*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)")