ダブルバンドブレイクアウト戦略


作成日: 2023-12-25 13:20:31 最終変更日: 2023-12-25 13:20:31
コピー: 0 クリック数: 445
1
フォロー
1166
フォロワー

ダブルバンドブレイクアウト戦略

概要

双波動帯突破戦略は,トレンド追跡戦略である.それは,波動帯の上下線を利用して価格の傾向を判断し,価格が内部波動帯を破るときに多頭ポジションを確立し,価格が外部波動帯を破るときに平仓する.

戦略原則

この戦略は,まず指定された周期内の平均線と標準差を計算し,標準差の値を調整することによって二重波動帯を構築する.内波動帯は平均線正負の1標準差から構成され,外波動帯は平均線正負1.5標準差から構成される.

価格が内部上線を突破すると,市場が牛市を開始したと考え,それにより多額;価格が内部下線を突破すると,市場が熊市を開始したと考え,それにより空調.

オーバーした後のストップ退出条件は,価格が外部下軌道に突破したものである.空白した後のストップ退出条件は,価格が外部上軌道に突破したものである.

この戦略は,ストップ・ストップ・ストップ・ストップ・ストップ・ストップなどの退出メカニズムを設定しています.

優位分析

双波帯突破戦略には以下の利点があります.

  1. 価格の動きを判断する2つの波動帯を利用して,トレンドを効果的に追跡できます.
  2. 内部波動を突破して,不必要な逆転取引を回避し,ポジションを構築する.
  3. リスクを効果的に制御するための ストップ・ストップ・ストップとストップ・ストップ・ストップの設定
  4. パラメータは調整可能で,異なる品種に最適化できます.

リスク分析

双波帯突破策には,いくつかのリスクがあります.

  1. 市場が揺れ動いている時,頻繁にポジションとストップダウンは起こりうる.
  2. パラメータを正しく設定しない場合,倉庫が簡単に作られるか,停止が困難になる可能性があります.
  3. 突破は時に偽信号の特徴を持ち,偽突破の危険性がある.

上記のリスクに対応して,パラメータを適切に調整したり,他の指標と組み合わせてフィルタリングしたり,人工的に監視した突破の効果によってリスクを低減することができる.

最適化の方向

双波帯突破戦略は以下の点で最適化できます.

  1. 平均と標準差のパラメータを最適化して,波動帯を異なる品種の特性に合わせる.
  2. 偽突破を防ぐために,VolumeやMACDなどの指標のフィルターを追加します.
  3. 機械学習による動的最適化パラメータ
  4. 高周波帯域内で戦略の複製を行い,利益の余地を増やす.

要約する

双波帯突破戦略overallは,価格の相対的な波帯の位置の変化を判断し,選択時に取引シグナルを構築することによって,より典型的なトレンド追跡戦略である. この戦略は,双波帯を活用して利益領域を設定し,科学的退出機構を設定し,リスクを制御し,パラメータの最適化とリスク管理が置かれた場合,より良い効果を得ることができる.

ストラテジーソースコード
/*backtest
start: 2023-12-17 00:00:00
end: 2023-12-24 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("BB Strat",default_qty_type = strategy.percent_of_equity, default_qty_value = 100,currency="USD",initial_capital=100, overlay=true)
l=input(title="length",defval=100)
pbin=input(type=float,step=.1,defval=.25)
pbout=input(type=float,step=.1,defval=1.5)
ma=sma(close,l)
sin=stdev(ma,l)*pbin
sout=stdev(ma,l)*pbout
inu=sin+ma
inb=-sin+ma
outu=sout+ma
outb=-sout+ma
plot(inu,color=lime)
plot(inb,color=lime)
plot(outu,color=red)
plot(outb,color=yellow)

inpTakeProfit = input(defval = 0, title = "Take Profit", minval = 0)
inpStopLoss = input(defval = 0, title = "Stop Loss", minval = 0)
inpTrailStop = input(defval = 0, title = "Trailing Stop Loss", minval = 0)
inpTrailOffset = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0)
useTakeProfit = inpTakeProfit >= 1 ? inpTakeProfit : na
useStopLoss = inpStopLoss >= 1 ? inpStopLoss : na
useTrailStop = inpTrailStop >= 1 ? inpTrailStop : na
useTrailOffset = inpTrailOffset >= 1 ? inpTrailOffset : na


longCondition = close>inu and rising(outu,1) 
exitlong = (open[1]>outu and close<outu) or crossunder(close,ma)

shortCondition = close<inb and falling(outb,1)
exitshort = (open[1]<outb and close>outb) or crossover(close,ma)

strategy.entry(id = "Long", long=true, when = longCondition)
strategy.close(id = "Long", when = exitlong)
strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=exitlong)

strategy.entry(id = "Short", long=false, when = shortCondition)
strategy.close(id = "Short", when = exitshort)
strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=exitshort)