ビットコインとゴールドのダブルギャップ戦略

作者: リン・ハーンチャオチャン,日付: 2024-01-23 15:28:56
タグ:

img

概要

ダブルギャップ戦略 (Double Gap strategy) は,ビットコインと金の短期取引に使用される定量戦略である.ブレイクアウト信号を特定しリスクを管理するために移動平均値,ボリンジャーバンド,ATRストップを組み合わせる.

戦略の論理

ダブルギャップ戦略は,トレンド方向を決定するために,高速EMAと遅いEMAのクロスオーバーを使用する.高速EMAが遅いEMAを超えると購入信号が生成され,高速EMAが遅いEMAを下回ると販売信号が生成される.偽のブレイクアウトを避けるために,戦略はクロスオーバーが上部または中部ボリンジャー帯の近くで起こる必要がある.このことから"ダブルギャップ"という名前が出てくる.

購入シグナルを決定するには,以下の2つの条件が満たされる必要があります: 1) 速いEMAがスローEMAの上を横切る; 2) 閉じる価格は上または中ボリンジャーバンドの近くまたは下にあります. 販売シグナルを判断することは類似しています. 速いEMAがスローEMAの下を横切り,下または中ボリンジャーバンドの近くである必要があります.

さらに,ダブルギャップ戦略は,それぞれの取引のリスクを制御するために動的ストップ損失を計算するためにATR指標を使用します. 特定のストップレベルは,最も最近の2バーマイナスN倍ATRの最低値です.

利点

  • 二重フィルターを使用して高い確率のブレイクを識別します
  • 速やかなEMAクロスオーバーが 主なトレンドを判断し,ボリンジャーバンドは偽のブレイクをフィルターします
  • ダイナミックATRストップは,単一の取引リスクを効果的に制御します
  • BTCのような高波動性のある商品の短期取引に適しています

リスク

  • 誤った高速および遅いEMAパラメータは,過剰な誤った信号を生む可能性があります.
  • 不適切なボリンジャー帯のパラメータもフィルタリングの有効性を大幅に低下させる
  • ストップロスの設定が狭すぎると ストップロスの発生の確率が上がります
  • 高い取引頻度が必要で,小規模な口座には適さない.

最適化

ダブルギャップ戦略は,次の側面から最適化できます.

  1. 最適な高速と遅いEMA組み合わせを見つけるために移動平均パラメータを最適化
  2. 誤ったブレイクレートの割合を減らすためにボリンジャー・バンドのパラメータを最適化
  3. ATR停止倍数を異なる製品と市場制度に応じて調整する
  4. 停止後に再入力の信号を追加
  5. RSI,KDなどの他の指標と組み合わせて確認します.

結論

ダブルギャップ戦略は,トレンドフォローとブレイクアウトフィルタリングの両方を有効に利用して短期間の機会を特定する.ダイナミックストップ損失管理により,高変動性デジタル通貨および貴金属の短期取引に適しています.パラメータと論理最適化によって安定性と収益性のさらなる改善を達成することができます.


/*backtest
start: 2023-01-16 00:00:00
end: 2024-01-22 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © singhak8757

//@version=5
strategy("Bitcoin and Gold 5min Scalping Strategy2.0", overlay=true)


// Input parameters
fastLength = input(5, title="Fast EMA Length")
slowLength = input(13, title="Slow EMA Length")
bollingerLength = input(20, title="Bollinger Band Length")
bollingerMultiplier = input(2, title="Bollinger Band Multiplier")
stopLossMultiplier = input(1, title="Stop Loss Multiplier")

// Calculate EMAs
fastEMA = ta.ema(close, fastLength)
slowEMA = ta.ema(close, slowLength)

// Calculate Bollinger Bands
basis = ta.sma(close, bollingerLength)
upperBand = basis + bollingerMultiplier * ta.stdev(close, bollingerLength)
lowerBand = basis - bollingerMultiplier * ta.stdev(close, bollingerLength)

// Buy condition
buyCondition = ta.crossover(fastEMA, slowEMA) and (close <= upperBand or close <= basis)

// Sell condition
sellCondition = ta.crossunder(fastEMA, slowEMA) and (close >= lowerBand or close >= basis)

// Calculate stop loss level
stopLossLevel = ta.lowest(low, 2)[1] - stopLossMultiplier * ta.atr(14)

// Plot EMAs
plot(fastEMA, color=color.rgb(0, 156, 21), title="Fast EMA")
plot(slowEMA, color=color.rgb(255, 0, 0), title="Slow EMA")

// Plot Bollinger Bands
plot(upperBand, color=color.new(#000000, 0), title="Upper Bollinger Band")
plot(lowerBand, color=color.new(#1b007e, 0), title="Lower Bollinger Band")

// Plot Buy and Sell signals
plotshape(series=buyCondition, title="Buy Signal", color=color.green, style=shape.labelup, location=location.belowbar)
plotshape(series=sellCondition, title="Sell Signal", color=color.red, style=shape.labeldown, location=location.abovebar)

// Plot Stop Loss level
plot(stopLossLevel, color=color.orange, title="Stop Loss Level")

// Strategy logic
strategy.entry("Buy", strategy.long, when = buyCondition)
strategy.exit("Stop Loss/Close", from_entry="Buy", loss=stopLossLevel)
strategy.close("Sell", when = sellCondition)


もっと