複数のタイムフレームボリンジャーバンド暗号戦略

作者: リン・ハーンチャオチャン,日付: 2024-02-27 14:13:39
タグ:

img

概要

この戦略は,仮想通貨の価格動向を分析するために,1分,3分,5分,15分間のタイムフレームにボリンジャーバンド指標を適用し,売買機会を特定する.Bitcoinの5分間の価格を仮想通貨市場の全体的なセンチメントの基準として使用する.Bitcoinの価格が上部帯を超えると,市場は上昇傾向とみなされる.価格が下部帯を下回ると,市場は下落傾向とみなされる.この戦略は,異なる暗号やタイムフレームにわたって上部または下部帯のブレイクを探している.これらのブレイクアウトパターンは通常,市場のセンチメントとトレンドの変化を意味し,それによってエントリーと出口信号を提供します.

戦略の論理

この戦略は,1分,3分,5分,15分タイムフレームでボリンジャーバンドを同時に計算する.ボリンジャーバンドは,n日 (デフォルト20日) の移動平均値と,その上下にあるいくつかの標準偏差値 (デフォルト1.5x) を構成する.移動平均値は,一定期間における暗号通貨の平均価格を表し,標準偏差値は変動を測定する.価格が上部帯に接近または突破すると,市場は過剰に拡張され,変動が拡大していることを示し,潜在的逆転を下向きに示する.価格が下部帯に近づいたとき,または下部帯に突破すると,市場は変動が拡大し,潜在的上向き逆転を誇示する.

ボリンジャーバンドのこの機能を利用して,戦略は1分,3分,5分,15分という異なる時間軸における最新の市場動向を判断する. 3分または5分間のタイムフレームで上または下帯のブレイクが発生し,1分および15分間のタイムフレームでシグナルを確認すると,戦略は最新の購入または販売信号が起動することを決定する. さらに,戦略はビットコインの5分間の価格にも言及し,暗号市場全体における全体的な市場動向と感情 (強気/下気バイアス) を測定する.これらの要因に基づいて,戦略は,ロングまたはショートに行くかどうかを決定する.

トレーディングに入ると,戦略は利益引き出しとストップ損失条件も設定する.入場価格が25%上昇または低下した場合,利益引き上げが起動する.価格が入場方向に逆らって25%以上移動した場合,ストップ損失が起動する.

利点

  1. 戦略には短期的・中期的市場見通しも含まれます. 最新の更新には1分,5分,中期トレンドには15分,一時的な市場変動に惑わされないようにします.

  2. 戦略は中帯,上帯,下帯の脱出を監視し 逃した機会を最小限に抑えます

  3. ビットコインは市場全体的な状況や感情の基準であり バロメーターとして機能し 意思決定の正確性を向上させます

  4. 利益とストップ・ロスのメカニズムは リスクを効果的に制御します

リスク

  1. ボリンジャー・バンドのブレイクアウトには 遅い特徴があり 最適なエントリータイミングを 見逃す可能性があります

  2. この戦略は パスワードやブラック・スワン事件などの 市場全体のシステムリスクに脆弱です

  3. 利回りやストップロスは 実施されているにもかかわらず,極端な状況下では損失はストップロスの利益率を上回る可能性があります.

  4. 時間帯や標準偏差倍数などの不適切なパラメータ設定は 信号の質が低下する可能性があります

対応する解法:

  1. 最適なエントリータイミングを決定するためにより多くの指標を組み込む.

  2. 市場レベルのシステムリスクの評価を強化する.

  3. ポジションのサイズとストップロスのマージンを各取引で減らします

  4. パラメータ設定をバックテストで最適化します

増進 の 機会

  1. 30分または60分ボリンジャー帯のような時間枠を追加します.

  2. 各暗号の特徴に適したボリンジャー帯のパラメータを選択します.

  3. 取引量は価格動向の信頼性を検証するので,結果の検証のために取引量を含める.

  4. 決定の正確性を向上させるため,ストックRSI,MACDなどの他の指標を組み合わせます.これらの指標は実際の市場動きを判断することを大幅に改善することができます.

  5. 暗号通貨の価格動向と相関を比較して 操作余地のあるものを選びます

  6. 最適な設定を決定するために,過去の業績の統計分析によって,利益とストップ損失のメカニズムを最適化します.

結論

これはマルチタイムフレームボリンガーバンドの仮想通貨取引戦略である.短期および中期間の価格動向に焦点を当て,ボリンガーバンドを活用して市場のMULTIブイッシュ/ベアッシュ状態を測定する.一方,ビットコインの価格レベルを基準基準および参照として使用し,より広範な仮想通貨市場の全体的な傾向を決定するのに役立ちます.複数のタイムフレームを組み込むための汎用性,さらに堅牢な利益採取およびストップ損失メカニズムにより,この戦略は機会を効果的に資本化しリスクを制御することができます.今後,より多くの指標を統合し,バックテストを通じてパラメータを微調整するなどの最適化によってパフォーマンスをさらに向上させることができます.


/*backtest
start: 2024-01-27 00:00:00
end: 2024-02-26 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(shorttitle="Crypto BB", title="Multi-Interval Bollinger Band Crypto Strategy", overlay=true)
length = input.int(20, minval=1)
maType = input.string("SMA", "Basis MA Type", options = ["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"])
src = input(close, title="Source")
mult = input.float(1.5, minval=0.001, maxval=50, title="StdDev")

interval1m = request.security(syminfo.tickerid, '1', src)
interval3m = request.security(syminfo.tickerid, '3', src)
interval5m = request.security(syminfo.tickerid, '5', src)
interval15m = request.security(syminfo.tickerid, '5', src)
btcinterval5m = request.security("BTC_USDT:swap", "5", src)
bitcoinSignal = 'flat'

var entryPrice = 0.000

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)

bitcoinBasis = ma(btcinterval5m, length, maType)
bitcoinDev = ta.stdev(btcinterval5m, length)
bitcoinUpper = bitcoinBasis + bitcoinDev
bitcoinLower = bitcoinBasis - bitcoinDev

basis1m = ma(interval1m, length, maType)
basis3m = ma(interval3m, length, maType)
basis5m = ma(interval5m, length, maType)
basis15m = ma(interval5m, length, maType)
dev1m = mult * ta.stdev(interval1m, length)
dev3m = mult * ta.stdev(interval3m, length)
dev5m = mult * ta.stdev(interval5m, length)
upper1m = basis1m + dev1m
lower1m = basis1m - dev1m
upper3m = basis3m + dev3m
lower3m = basis3m - dev3m
upper5m = basis5m + dev5m
lower5m = basis5m - dev5m
offset = input.int(0, "Offset", minval = -500, maxval = 500)
plot(basis3m, "Basis 3 minute", color=#2962FF, offset = offset)
p3upper = plot(upper3m, "Upper", color=#2962FF, offset = offset)
p3lower = plot(lower3m, "Lower", color=#2962FF, offset = offset)

//Exit protocols
if strategy.opentrades != 0 and strategy.opentrades.entry_id(0) == 'Buy'
    entryPrice := strategy.opentrades.entry_price(0)
    if ((interval1m - entryPrice)/entryPrice) * 30 > .25
        strategy.close('Buy', comment='Take Profit on Buy')
    if ((interval1m - entryPrice)/entryPrice) * 30 < -.25
        strategy.close('Buy', comment='Stop Loss on Buy')

if strategy.opentrades != 0 and strategy.opentrades.entry_id(0) == 'Sell'
    entryPrice := strategy.opentrades.entry_price(0)
    if ((entryPrice - interval1m)/entryPrice) * 30 > .25
        strategy.close('Sell', comment='Take Profit on Sell')
    if ((entryPrice - interval1m)/entryPrice) * 30 < -.25
        strategy.close('Sell', comment='Stop Loss on Sell')

//Bitcoin Analysis
if (btcinterval5m < bitcoinUpper and btcinterval5m[1] > bitcoinUpper[1] and btcinterval5m[2] < bitcoinUpper[2] and btcinterval5m[3] < bitcoinUpper[3])
    bitcoinSignal := 'Bear'
if (btcinterval5m > bitcoinUpper and btcinterval5m[1] < bitcoinUpper[1] and btcinterval5m[2] > bitcoinUpper[2] and btcinterval5m[3] > bitcoinUpper[3])
    bitcoinSignal := 'Bull'

//Short protocols
if (interval3m < basis3m and interval3m[1] > basis3m[1] and interval3m[2] < basis3m[2] and interval3m[3] < basis3m[3]) or 
 (interval5m < basis5m and interval5m[1] > basis5m[1] and interval5m[2] < basis5m[2] and interval5m[3] < basis5m[3]) 
  and strategy.opentrades.entry_id(0) != 'Sell'
   and src < basis1m and src < basis15m
    if strategy.opentrades.entry_id(0) == 'Buy'
        strategy.close('Buy', 'Basis Band Bearish Reversal')
    //strategy.order('Sell', strategy.short, comment = 'Basis band fractal rejection', stop = (upper1m + basis1m)/2)

if (interval3m < upper3m and interval3m[1] > upper3m[1] and interval3m[2] < upper3m[2] and interval3m[3] < upper3m[3]) or 
 (interval5m < upper5m and interval5m[1] > upper5m[1] and interval5m[2] < upper5m[2] and interval5m[3] < upper5m[3]) 
  and strategy.opentrades.entry_id(0) != 'Sell' and bitcoinSignal == 'Bear' and src < upper1m  and src < basis15m
    if strategy.opentrades.entry_id(0) == 'Buy'
        strategy.close('Buy', 'Bearish Trend Reversal')
    strategy.order('Sell', strategy.short, comment = 'Upper band fractal rejection', stop = (upper1m + basis1m)/2)

if (interval3m > basis3m and interval3m[1] < basis3m[1] and interval3m[2] > basis3m[2] and interval3m[3] > basis3m[3]) or 
 (interval5m > basis5m and interval5m[1] < basis5m[1] and interval5m[2] > basis5m[2] and interval5m[3] > basis5m[3]) and strategy.opentrades.entry_id(0) != 'Buy' 
  and src > basis1m  and src > basis15m
    if strategy.opentrades.entry_id(0) == 'Sell'
        strategy.close('Sell', 'Basis Band Bullish Reversal')
    //strategy.order('Buy', strategy.long, comment = 'Basis band fractal rejection', stop = (lower1m + basis1m)/2)

if (interval3m > lower3m and interval3m[1] < lower3m[1] and interval3m[2] > lower3m[2] and interval3m[3] > lower3m[3]) or 
 (interval5m > lower5m and interval5m[1] < lower5m[1] and interval5m[2] > lower5m[2] and interval5m[3] > basis5m[3]) and strategy.opentrades.entry_id(0) != 'Buy' 
  and src > lower1m  and src > basis15m and bitcoinSignal == 'Bull' 
    if strategy.opentrades.entry_id(0) == 'Sell'
        strategy.close('Sell', 'Bullish Trend Reversal')
    strategy.order('Buy', strategy.long, comment = 'Lower band fractal rejection', stop = (lower1m + basis1m)/2)

もっと