ボリンジャーバンド移動平均クロスオーバー戦略


作成日: 2024-01-30 16:37:47 最終変更日: 2024-01-30 16:37:47
コピー: 0 クリック数: 704
1
フォロー
1617
フォロワー

ボリンジャーバンド移動平均クロスオーバー戦略

概要

この戦略は,ブリン帯と移動平均線の交差を基に買い売りの操縦を行う戦略である. 主に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')