ボリンジャーバンドスパン取引戦略


作成日: 2023-12-19 14:08:45 最終変更日: 2023-12-19 14:08:45
コピー: 0 クリック数: 639
1
フォロー
1621
フォロワー

ボリンジャーバンドスパン取引戦略

概要

この策略はブリン帯の上下軌道に基づいて,価格がブリン帯を突破して上下軌道に突破する時に多めにすると判断し,下下軌道に突破する時に空きをする.これはトレンド追跡型の策略である.

戦略原則

この策略は,ブリン帯の中軌道,上軌道,下軌を極限価格範囲を判断するために使用する.中軌は,過去25周期の閉盘価格の単純な移動平均であり,上下軌は,中軌道線から次の標準差の距離である.価格が上線から上線の下を横切ったとき,または下線から下線線を横切ったとき,価格が突破したことを示し,異常価格行動に属し,取引決定を行うことができる.

価格が下線線より低ければ,買多し;価格が上線より高ければ,空売りする.多しでは,入場価格に止損因数,入場価格に止損因数,止線に止因数を設定する.

この戦略には,無意味な取引を避けるために,24時間以内に1つの信号のみを許可するなど,補助的なルールも追加されています.

戦略的優位性

  1. ブリン帯は,異常な価格の範囲を判定するために使用され,価格の傾向を捉えるためのトレンド追跡戦略です.
  2. ストップ・ストップ・ストップの原則に従って,単一損失を制御するためのパラメータを設定します.
  3. 信号の重複や無意味な取引を避けるための補助ルールが追加されました.

戦略リスク

  1. ブリン帯域は,価格のトレンドを完全に表しているわけではないので,誤ったシグナルが出る可能性があります.
  2. 突破信号のタイミングを間違えれば,損失を招く可能性があります.
  3. トレンド市場 傾向のない市場 長期の長さや変動は予測が困難で,不必要な買い物を引き起こす可能性があります

リスク管理措置:

  1. ブリン帯のパラメータを調整し,突破信号のタイミングを最適化
  2. 他の指標と組み合わせた大きなトレンド
  3. 各種と市場の状況に応じてストップ・ロストの幅を設定する

戦略最適化の方向性

  1. ブリン帯のパラメータを自律的に最適化することで,現在の市場状態に近付くことができる
  2. 他の指標と組み合わせて,トレンド信号の信頼性を判断し,誤った信号を避ける
  3. 機械学習モデルを組み合わせて,最適な買い時と販売時を自動で識別できます.

要約する

この策略は全体的に見ると,シンプルなトレンド追跡策略であり,ブリン帯を使用して価格異常を判断し,トレンドを追跡し,パラメータ最適化,リスク制御,信号フィルタリングの面で最適化の余地がありますが,コア構想はシンプルで明確で,戦略学習の入門に適しています.

ストラテジーソースコード
/*backtest
start: 2023-11-18 00:00:00
end: 2023-12-18 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("I11L OIL Bot",overlay=true, initial_capital=1000000,default_qty_value=1000000,default_qty_type=strategy.cash,commission_type=strategy.commission.percent,commission_value=0.00)

leverage = input.float(1,"Leverage (x)",step=1)
SL_Factor = 1 - input.float(1,"Risk Capital per Trade (%)", minval=0.1, maxval=100, step=0.05) / 100 / leverage
TP_Factor = input.float(2, step=0.1)
invertBuyLogic = input.bool(false)
 
lookbackDistance = input.int(25)
devMult = input.float(2,step=0.1)

var lastSellHour = 0
var disableAdditionalBuysThisDay = false


if(time > lastSellHour + 1000 * 60 * 60 * 6)
    disableAdditionalBuysThisDay := false
if(strategy.position_size != strategy.position_size[1])
    disableAdditionalBuysThisDay := true
    lastSellHour := time

source = close

//Trade Logic
basis = ta.sma(source, lookbackDistance)
dev = devMult * ta.stdev(source, lookbackDistance)
upper = basis + dev
lower = basis - dev
isBuy = ta.crossunder(source, upper)
isBuyInverted = ta.crossover(source, lower)

plot(upper, color=color.white)
plot(lower, color=color.white)

strategy.initial_capital = 50000

if((invertBuyLogic ? isBuyInverted : isBuy) and not(disableAdditionalBuysThisDay))
    strategy.entry("Long", strategy.long, (strategy.initial_capital / close) * leverage)

if(strategy.position_size > 0)
    strategy.exit("SL Long", "Long", stop=strategy.position_avg_price * SL_Factor)
    strategy.close("Long",  when=close > strategy.position_avg_price * (1 + (1 - SL_Factor) * TP_Factor), comment="TP Long")