ボリンジャーバンド指標に基づくシンプルな定量取引戦略


作成日: 2024-02-20 15:53:12 最終変更日: 2024-02-20 15:53:12
コピー: 0 クリック数: 715
1
フォロー
1617
フォロワー

ボリンジャーバンド指標に基づくシンプルな定量取引戦略

概要

ブリン帯突破戦略は,ブリン帯の指標に基づく簡単な量化取引戦略である.この戦略は,ブリン帯の上下軌道が提供する動的なサポート抵抗点を利用し,価格がブリン帯の上下軌道に突破する時の長ポジションのエントリーおよびポジションのアウトアウト条件を設定し,株価の突破的な行動を捕捉する.

戦略原則

ブリン帯指標は,1980年代,バンディ・ブリン (John Bollinger) によって提唱され,n日間移動平均とそのm倍標準差から構成されている.移動平均は価格の中軸として見ることができるが,標準差は価格の変動の幅として見ることができる.標準差の値が大きい場合は,価格の変動がより激烈であることを示す.標準差の値が小さい場合は,価格の変動の温和性を示す.

この戦略の入場条件は,閉盘価格がブリン帯下位軌道に転落したとき,多入場する.閉盘価格がブリン帯上位軌道に突破したとき,空き入場する.出場条件は,多取引があるとき,閉盘価格がブリン帯上位軌道に突破した後の平仓する.空き取引があるとき,閉盘価格がブリン帯下位軌道に突破した後の平仓する.

この戦略は,トレンド追跡戦略に属し,価格がブリンを突破して下位軌道に乗るトレンドの突破を捕捉し,トレンドの動きからポジションを拡大して利益を得る.

戦略的優位性

  1. ブリン帯指数を動的なサポート・レジスタンスとして使用し,固定価格レベルを使用することを避けて,市場の変化に適応する

  2. 戦略は傾向と変動率を参考にしており,意思決定は価格レベルだけでなく,市場の変動率にも基づいており,偽信号を減らすことができます.

  3. 突破口の枠組みはシンプルで直接的で,理解し,実行しやすい

  4. ブリン帯のパラメータを柔軟に調整し,異なる品種とパラメータ市場に適用

リスク分析

  1. ブリン帯指数パラメータの不適切な設定は,取引信号が頻繁に発生し,不必要な取引を過剰に発生させる可能性があります.

  2. ブレイクシグナルは短期的な価格変動であり,トレンドが継続できないため,誤った取引が起こり得る.

  3. ストップ・ロスを考慮しない戦略,ある程度の意思決定リスクと損失管理リスク

  4. 基本情報と結び付けられていない技術指標だけで,重要な基本的トレンドの転換点を逃している可能性があります.

  5. 特定の市場に影響される可能性のある収益と損失は,異なる市場品種の特性を考慮しない

戦略最適化の方向性

  1. ブリン帯のパラメータを最適化して,パラメータの頑丈性を向上させる

  2. 単一損失を抑えるための止損システムへの参加

  3. 異なる時間周期を組み合わせたブリン帯で,多周期的な取引決定を構成する

  4. 取引量に合わせて,一部の偽の突破信号を回避する.

  5. 基本的要素の判別,入場時期とポジションの規模を決定する

  6. 異なる市場品種のデータをテストし,戦略の品種間適応性を評価する

要約する

ブリン帯突破戦略は,シンプルで直感的なトレンド追跡戦略である. ブリン帯指数によって提供される動的支柱抵抗を利用して,価格のトレンド突破を決定し,長期ポジションの入場と平和的なポジションの出場条件を構築する. 戦略の優点は,フレームワークがシンプルで,容易に実行され,価格のトレンドの機会を捕捉することができる.

ストラテジーソースコード
/*backtest
start: 2024-01-20 00:00:00
end: 2024-02-19 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Bollinger Bands Strategy", overlay=true)

length = input.int(20, title="Bollinger Bands Length", minval=1)
maType = input.string("SMA", title="Basis MA Type", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"])
src = input(close, title="Source")
mult = input.float(2.0, title="StdDev Multiplier", minval=0.001, maxval=50)
offset = input.int(0, title="Offset", minval=-500, maxval=500)

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

basis = ma(src, length, maType)
dev = mult * ta.stdev(src, length)
upper = basis + dev + offset
lower = basis - dev - offset

// Define strategy entry and exit conditions
strategy.entry("Buy", strategy.long, when=close < lower)
strategy.close("Buy", when=close > upper)

strategy.entry("Sell", strategy.short, when=close > upper)
strategy.close("Sell", when=close < lower)

// Plotting the Bollinger Bands
plot(basis, color=color.blue, title="Basis")
plot(upper, color=color.red, title="Upper Band")
plot(lower, color=color.green, title="Lower Band")