ボリンジャーバンドに基づく中長期定量取引戦略


作成日: 2023-09-14 20:09:13 最終変更日: 2023-09-14 20:09:13
コピー: 2 クリック数: 679
1
フォロー
1617
フォロワー

この記事では,ブリン帯の指数を用いて中長期にわたって量的な取引を行う戦略について詳しく説明する.この戦略は,ブリン帯を判断して価格突破によって取引信号を形成する.

戦略の原則

この戦略は,以下のブリン帯の指標を中心に実施しています.

  1. ある周期の価格の中位を基準線として計算する.

  2. 価格の標準差を計算し,その範囲を倍数で掛けます.

  3. 中位数±範囲はブリン帯の上下軌道を構成する.

  4. 価格がブリン帯を突破して下落すると,取引シグナルが形成されます.

取引の論理は以下の通りです.

価格がブリンを突破して下落すると,買入シグナルが形成され,多ポジションが作られる.

価格がブリン帯を突破して軌道に乗ったとき,空白のポジションを作るセールシグナルが形成されます.

利回りが固定されるため,一定パーセントのストップ・ストップポイントを設定します.

概して,この戦略は,価格がブリン帯を突破し,下落する判断によって,順調に中長線トレンドを捕捉する.

2 戦略的優位性

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

まず,ブリン帯は,価格の突破や反転の信号を判断し,中長期のトレンドを捉えます.

第二に,ストップ・ストップ・ロスの設定は直接的で制御可能で,積極的な資金管理に役立ちます.

最後に,戦略のルールはシンプルでわかりやすく,実行し,最適化することが容易です.

3 潜在的リスク

しかし,次のリスクにも注意する必要があります.

まず,ブリン帯域は,安定した信号を生み出すために,精密に最適化する必要があります.

2つ目は,止損が小さすぎると利益が少なくなり,止損が大きすぎるとリスクが大きすぎることです.

最後に,取引の頻度を避ける必要があります.

内容と要約

この記事では,ブリン帯指数を適用してトレンド追跡を行う中長期の量化取引戦略について詳しく説明します.この戦略は,順次価格の中長期のトレンドを捉えることができますが,パラメータの間隔と停止のレベルを最適化する必要があります.全体的に,それはよりシンプルで直感的なトレンド追跡戦略のアイデアです.

ストラテジーソースコード
/*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")