中長期量的な取引戦略 ボリンジャー帯に基づいて

作者: リン・ハーンチャオチャン, 日付: 2023-09-14 20:09:13
タグ:

この記事では,ボリンジャーバンドを用いた中長期的定量的な取引戦略を詳細に説明します.ボリンジャーバンドを通じて価格ブレイクを特定することによって取引信号を生成します.

I. 戦略の論理

戦略は主に以下のボリンジャーバンド指標を使用しています.

  1. 移動中位価格を一定期間のベースラインとして計算する.

  2. 値の標準偏差を計算し,それを範囲の因数で掛けます.

  3. 中間 ± 範囲は上部と下部帯を構成する.

  4. 価格がバンドを突破すると 取引信号が生成されます

具体的な取引論理は:

価格が下帯を突破すると 買い信号が生成され ロングポジションを取ります

価格が上位帯を突破すると ショートポジションを取るために セールシグナルが生成されます

利益と損失を固定した割合で設定します

戦略は全体的に,ボリンジャー帯の価格ブレイクを検出することによって中長期の傾向を特定します.

戦略の利点

この戦略の主な利点は以下の通りです.

まず,ボリンジャー帯は 中長期のトレンドを把握するために 価格のブレイクと逆転を特定することができます.

第二に 直接ストップ損失と 利益の設定は 慎重なマネーマネージメントに 役立つのです

シンプルで明確なルールにより この戦略の実施と最適化が容易になります

III.潜在的なリスク

ただし,次のリスクは注意すべきです.

まず 帯域は 安定した信号のために 正確に最適化する必要があります

2つ目に,ストップロスはリスクが小さすぎると 利益が不足し,リスクが大きくなるのです

最後に,過剰に頻繁な取引を防ぐ必要があります.

IV.要約

この記事では,トレンドフォローのためにボリンジャーバンドを使用した中長期的定量的な取引戦略を説明しました. 中長期にわたる価格動向を追跡できますが,バンド間隔とストップ損失レベルを細かく調整する必要があります. 全体として,比較的シンプルで直感的なトレンドフォローアプローチを提供します.


/*backtest
start: 2023-08-14 00:00:00
end: 2023-09-13 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//------------------------------------
//
// 『おすすめストラテジーSS1』
// 『BitMEX XBTUSD 30分足向け中長期用ストラテジー』
//  本番用ストラテジーファイル
//
//
//
//------------------------------------
//【説明】
// 『おすすめストラテジーSS1』のPineスクリプトです。
//------------------------------------
 
//@version=3
// strategy(title = "『おすすめストラテジーSS1』", shorttitle="Strategy1", initial_capital=1200000, pyramiding=0, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.05, overlay=true)
 
 
//------------------------------------
//
//ストラテジーロジック
//
//------------------------------------
 
 
source = close
 
length = input(51, minval = 1, title = "移動平均")
mult = input(3.01, minval = 0.001,step=0.01, maxval = 10, title = "マルチ")
 
Rikaku = input(14.2, minval = 0.1, step=0.1,maxval = 100, title = "利確(%)")
Songiri = input(99, minval = 0.1, maxval = 100, title = "損切(%)")
 
base = sma(source, length)
range = mult * stdev(source, length)
 
upper = base + range
lower = base - range
 
short_cond = crossover(source, lower)
long_cond = crossunder(source, upper)
 
 
cl = 0.0
cl := na(cl[1]) ? sma(source, length) : (cl[1] * (length - 1) + source) / length
 
plot(cl, color=black)
 
up_plot = plot(upper, color=blue)
low_plot = plot(lower, color=red)
 
fill(up_plot, low_plot,color=#009900)
 
//------------------------------------
//
//オーダー処理
//
//------------------------------------
 
 
if (long_cond)
 
	strategy.entry("Long_Entry", strategy.long, oca_name="BollingerBands", comment="Long")
 
	//BitFlyerのようなJPY建ての場合は以下のコードを使います。他の通貨ペアにする場合も1ティックが異なるため桁数の変更が必要です。
	//strategy.exit("LE Exit", "BBandLE", profit = close*(Rikaku/100)*100, loss = close*(Songiri/100)*100, comment="Close")
	strategy.exit("Long_Exit", "Long_Entry", profit = close*(Rikaku/100)*10, loss = close*(Songiri/100)*10, comment="LongClose")
 
if (short_cond)
 
	strategy.entry("Short_Entry", strategy.short, oca_name="BollingerBands",  comment="Short")
 
    //BitFlyerのようなJPY建ての場合は以下のコードを使います。他の通貨ペアにする場合も1ティックが異なるため桁数の変更が必要です。
    //strategy.exit("SE Exit", "BBandSE", profit = close*(Rikaku/100)*100, loss = close*(Songiri/100)*100, comment="Close")
    strategy.exit("Short_Exit", "Short_Entry", profit = close*(Rikaku/100)*10, loss = close*(Songiri/100)*10, comment="ShortClose")

もっと