Bollinger Band Moving Average クロスオーバー戦略について

作者: リン・ハーンチャオチャン開催日:2024年1月30日16時37分47秒
タグ:

img

概要

Bollinger Bands (ボリンジャーバンド) と移動平均値のクロスオーバーをベースとした取引戦略である.この戦略は,主に5分間のタイムフレームにおけるボリンジャーバンド指標を使用して価格変動範囲を決定し,トレンド方向を決定するために移動平均値と組み合わせ,ボリンジャーバンドの上帯,下帯,中帯のクロスオーバー状況に応じて取引戦略を形成する.この戦略はAUD/NZD通貨ペアに適している.

戦略原則

  1. 価格の上限と下限を決定するためにボリンジャーバンド指標を使用します.ボリンジャーバンドの中間帯は20期間の単純な移動平均線で,上帯は中間帯プラス2つの標準偏差,下帯は中間帯マイナス2つの標準偏差です.

  2. 価格が上昇し始めていることを示します. ここで長引入します.

  3. 閉じる価格がボリンジャー帯の中央帯を超えると 価格が中間帯を超えたことを意味します そこでこの取引を終了するために ポジションを終了します

  4. 価格が下がり始めていることを意味します. そこで,ここでは,ショートエントリーします.

  5. 閉じる価格がボリンジャー帯の中央帯を 破ると 価格が中間帯を下回ったことになりますので この取引を終了するために ポジションを終了します

利点分析

  1. 逆転シグナルを見逃すのを避ける.この戦略は,ボリンジャー帯の特徴を充分活用し,低帯からの価格跳びと上帯からの値下がりを適時に把握し,逆転機会を見逃した損失を回避する.

  2. 高い収益性. キーポイントで買い物・売り物・エントリを行い,合理的なストップ・ロスを設定することで,牛と熊の市場との間の変換中に方向を迅速に切り替えてより良い収益を得ることができます.

  3. 適切な取引頻度. 5分間の時間枠に基づく取引信号を形成し,取引コストを増加させるような頻繁に取引せずに短期的なトレンドを把握できます.

リスク分析

  1. ボリンジャーバンドの過速収束のリスク. 市場の価格が激しく変動すると,ボリンジャーバンドの上下帯は過速収束し,誤ったブレイクを形成し,間違った信号を与える可能性があります. この時点でパラメータを調整するか,取引を停止する必要があります.

  2. ストップ損失リスク. ストップ損失が小さすぎると簡単に破られるが,ストップ損失が大きすぎると大きな損失につながる.ストップ損失価格を適切に調整する必要があります.

  3. 取引コストリスクが高い.取引頻度があまりにも高い場合,取引コストも著しく増加します.取引頻度を減らすためにパラメータを適切に調整する必要があります.

最適化

  1. この特定の商品の波動性範囲に最も適合するパラメータのセットを見つけるために サイクルパラメータと標準偏差パラメータの異なる組み合わせをテストすることができます.

  2. 誤った信号をフィルタリングするために他の指標を追加します. KDJやMACDのような指標は,ボリンジャー帯のみに頼ることで引き起こされる問題を避けるために導入できます.

  3. ストップロスの戦略を最適化します. リアルタイムで価格変化を追跡することで,より正確なストップロスを設定できます. ストックラインなどの他の戦略も使用できます.

結論

この戦略は,全体的に比較的安定しており,一定の収益性があります.パラメータとストップロスの戦略を最適化することで,不安定な市場状況で良い収益を得るために取引リスクはさらに軽減できます.この戦略は,さらなるテストと最適化に価値があり,非常に良い実用的な応用見通しを持っています.


/*backtest
start: 2023-12-30 00:00:00
end: 2024-01-29 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © theTradeAI

strategy('TradeAI - 5min AUDNZD Strategy', overlay=true)

//////////////////////////////
//////// STOP ORDERS DETECTING
//////////////////////////////

length = input(1)

h = ta.highest(high, length)
l = ta.lowest(low, length)

//////////////////////////////
//////// EMAS
//////////////////////////////

emaLenght = input.int(200)

ema200 = ta.ema(close,emaLenght)

//////////////////////////////
//////// BOLLINGER BANDS
//////////////////////////////

length1 = input.int(20, minval=1)
maType = input.string("SMA", "Basis MA Type", options = ["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"])
src = input(close, title="Source")
mult = input.float(2.0, minval=0.001, maxval=50, title="StdDev")

ma(source, length1, _type) => 
    switch _type
        "SMA" => ta.sma(source, length1)
        "EMA" => ta.ema(source, length1)
        "SMMA (RMA)" => ta.rma(source, length1)
        "WMA" => ta.wma(source, length1)
        "VWMA" => ta.vwma(source, length1)

basis = ma(src, length1, maType)
dev = mult * ta.stdev(src, length1)
upperr = basis + dev
lowerr = basis - dev
offset = input.int(0, "Offset", minval = -500, maxval = 500)


//////////////////////////////
//////// ENTRY & EXIT
//////////////////////////////

// Buy entry
if ta.crossover(lowerr, close)
    strategy.entry('long', strategy.long, stop=h)

// Buy entry CANCEL
if close > lowerr
    strategy.cancel('long')

// Buy exit
if close > basis
    strategy.close('long')

// Sell entry
if ta.crossunder(upperr, close)
    strategy.entry('short', strategy.short, stop=l)

// Sell entry CANCEL
if close < upperr
    strategy.cancel('short')

// Sell exit
if close < basis
    strategy.close('short')



もっと