FiboBuLL Wave戦略は,私のスクリプトページの下で見つけることができるボリンジャー帯の研究のフィルターバージョンから改変されています. 価格は上部帯以上を閉ざしたとき,戦略は長くなって,価格が下部帯を下回ると短くなります.
ボリンジャーバンドは,20期間の単純な移動平均値と,中間帯から2標準偏差離れた上下帯のプロットを使用する古典的な指標である.これらのバンドは,価格が帯との関係性のある場所に基づいて価格変動と傾向を視覚化するのに役立ちます.
この戦略は,ボリューム/RSI/ファンドメンタルなど他のパラメータを考慮しないため,ユーザーは他の指標またはファンドメンタルからの確認に基づいて裁量権を使用する必要があります. 戦略の結果は,純粋にロングとショートトレードに基づいています.
価格が上/下/上部のバンドを閉じる後にバーが継続しているときに最もうまく機能します.この戦略またはボリンジャーバンドフィルターを他の指標と一緒に使用することは,BB圧縮または波動性に基づいてキャンドル閉じる際にバンドの破損/失敗を早期に把握するために確実に有益です.
この戦略は,トレンドを検出するためにハイキン・アシ・キャンドルで使用できますが,ハ・キャンドルは資産の実際の価格を反映していないため,取引エントリでは推奨されません.
FiboBuLL Wave戦略のコアロジックは,ボリンジャーバンドのブレイクアウトに基づいて取引することです.ボリンジャーバンドは中帯,上帯,下帯から構成されています.中帯は閉値の21期間の単純な移動平均値です.上帯は,中帯の上方幅を反映する1標準偏差を加算して計算されます.下帯は,中帯下方幅を反映する1標準偏差を引いて導きます.
ロング・シグナルは,閉じる価格が上位帯を超えると生成される.ショート・シグナルは,閉じる価格が下位帯を超えるとトリガーされる.ロング・ショート・ポジションを取った後,価格が再び反対帯を超えると既存の取引が終了する.
この戦略は,上帯と下帯との関係で価格のブレイクを追跡するために,barssince関数を使用する.上帯ブレイク以降のバーの数が下帯ブレイク数よりも小さいとき,ロング信号が生成される.下帯ブレイク以降のバーの数が上帯ブレイク数よりも少ないとき,ショート信号がトリガーされる.
中間帯の期間と標準偏差倍数パラメータを調整することで,ボリンジャー帯のブレイクアウト感度が変更され,入力のタイミングを調整できます.
FiboBuLL Wave 戦略にはいくつかの利点があります.
また,FiboBuLL Wave戦略にはいくつかのリスクがあります.
この最適化は次の側面で行うことができます.
FiboBuLL Wave 戦略の主な最適化方向:
上記の改善により,FiboBuLL Wave戦略の安定性と収益性が大幅に向上できます.
FiboBuLL Wave戦略は,価格変動を追跡するために,ブレイクアウトと中間帯へのリバースを特定するボリンジャー帯の基本原理を利用する.そのシンプルなコンセプトと広範な適用性により,市場の変動を測定する効果的なアプローチとして機能する.
しかし,ブレイクアウトだけに頼ることは,誤った信号やウイプソーを生む傾向があります.したがって,ブレイクアウトの信頼性を決定するために,ボリューム,トレンド,指標などを使用する確認を組み込む必要があります.
FiboBuLL Wave戦略は,価格アクションに基づいた取引の設計のための基本的な枠組みを提供します. 継続的な最適化と追加の要因の統合により,取引決定の策定において強力なツールになる可能性があります.
/*backtest start: 2022-11-24 00:00:00 end: 2023-11-30 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 //@FiboBuLL strategy(shorttitle='FB Wave', title='FiboBuLL Wave (A version of Bollinger Bands Breakout Strategy By Trade Chartist)', overlay=true, pyramiding=1, currency=currency.NONE, initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=100) src = input(close, title='Source') length = input.int(21, minval=1, title='SMA length') // 20 for classis Bollinger Bands SMA line (basis) mult = input.float(1., minval=0.236, maxval=2, title='Standard Deviation') //2 for Classic Bollinger Bands //Maxval = 2 as higher the deviation, higher the risk basis = ta.sma(src, length) dev = mult * ta.stdev(src, length) Show = input.string('Both', options=['Longs Only', 'Shorts Only', 'Both'], title='Trade Type') CC = input(true, 'Color Bars') upper = basis + dev lower = basis - dev //Conditions for Long and Short - Extra filter condition can be used such as RSI or CCI etc. short = src < lower // and rsi(close,14)<40 long = src > upper // and rsi(close,14)>60 L1 = ta.barssince(long) S1 = ta.barssince(short) longSignal = L1 < S1 and not (L1 < S1)[1] shortSignal = S1 < L1 and not (S1 < L1)[1] //Plots and Fills ////Long/Short shapes with text // plotshape(S1<L1 and not (S1<L1)[1]?close:na, text = "sᴇʟʟ", textcolor=#ff0100, color=#ff0100, style=shape.triangledown, size=size.small, location=location.abovebar, transp=0, title = "SELL", editable = true) // plotshape(L1<S1 and not (L1<S1)[1]?close:na, text = "ʙᴜʏ", textcolor = #008000, color=#008000, style=shape.triangleup, size=size.small, location=location.belowbar, transp=0, title = "BUY", editable = true) // plotshape(shortSignal?close:na, color=#ff0100, style=shape.triangledown, size=size.small, location=location.abovebar, transp=0, title = "Short Signal", editable = true) // plotshape(longSignal?close:na, color=#008000, style=shape.triangleup, size=size.small, location=location.belowbar, transp=0, title = "Long Signal", editable = true) p1 = plot(upper, color=color.new(#ff0000, 75), display=display.all, title='Upper Band') p2 = plot(lower, color=color.new(#008000, 75), display=display.all, title='Lower Band') p = plot(basis, color=L1 < S1 ? #008000 : S1 < L1 ? #ff0000 : na, linewidth=2, editable=false, title='Basis') fill(p, p1, color=color.new(color.teal, 85), title='Top Fill') //fill for basis-upper fill(p, p2, color=color.rgb(217, 161, 161), title='Bottom Fill', transp=85) //fill for basis-lower //Barcolor bcol = src > upper ? color.new(#8ceb07, 0) : src < lower ? color.new(#ff0000, 0) : src > basis ? color.green : src < basis ? color.red : na barcolor(CC ? bcol : na, editable=false, title='Color Bars') // === INPUT BACKTEST RANGE === FromMonth = input.int(defval=1, title='From Month', minval=1, maxval=12) FromDay = input.int(defval=1, title='From Day', minval=1, maxval=31) FromYear = input.int(defval=2018, title='From Year', minval=2015) ToMonth = input.int(defval=1, title='To Month', minval=1, maxval=12) ToDay = input.int(defval=1, title='To Day', minval=1, maxval=31) ToYear = input.int(defval=9999, title='To Year', minval=2010) // === FUNCTION EXAMPLE === start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window window() => time >= start and time <= finish ? true : false if window() and (Show == 'Longs Only' or Show == 'Both') strategy.entry('AL', direction=strategy.long, when=longSignal) strategy.close('LongAL', when=shortSignal, comment='AL KAPA') if window() and (Show == 'Shorts Only' or Show == 'Both') strategy.entry('SAT', direction=strategy.short, when=shortSignal) strategy.close('SAT', when=longSignal, comment='SAT KAPA')