ビットコインモメンタムトレーリングストップ戦略


作成日: 2024-03-08 16:20:16 最終変更日: 2024-03-08 16:20:16
コピー: 0 クリック数: 747
1
フォロー
1617
フォロワー

ビットコインモメンタムトレーリングストップ戦略

戦略概要

ビットコインの動態追跡ストップは,動態に基づいた長期ポジション戦略で,ビットコインの上昇傾向を捉え,動的にストップを調整することで下落のリスクを回避することを目的としています.この戦略は,シンプルで巧妙な動態追跡ストップ技術を使用して,高い下落の波動期にストップを締め,利点を保護し,看板の動きが続く間,ストップを緩め,利潤を走らせます.

戦略原則

  1. ビットコインの現在の価格は,上位レベルのタイムフレームのEMA ((20週間のEMA) よりも高くなければなりません.
  2. ビットコインは”,警戒”状態にはなりません,つまり,ビットコインの最近の波高を,現在のK線の最低値の1.5倍以上のATRで減算し,または当日の閉盘価格が当日の20EMA以下です.
  3. ストップダストは,最近の波峰からATRを1引いたものとして設定され,警戒状態にある場合はATRの20%を引いた (すなわち0.2ATR)
  4. 価格がストップ価格を下回ったときに,次のKラインで平仓を開きます.

この戦略は,周線図と20週間のEMAをトレンドフィルターとして使用し,価格が20週間のEMAより高い場合にのみ介入する。5周期ATRは,ストップの距離を追跡する動的調整に使用され,警戒状態ではストップを緊縮する。警戒状態は,近年の波のピークから現在の最低値までの距離が1.5倍ATR以上のもの,または当日の閉盘価格が当日の20EMAより低いものという2つの条件によって定義される。この動的ストップの調整方法は,トレンドが強くなるときに,より大きな撤退スペースを与え,トレンドが弱くなるときに,利益を素早くロックすることができる。

戦略的優位性

  1. シンプルで効果的:この戦略の論理はシンプルで明快で,容易に理解し,実行し,同時にビットコインの主要な上昇傾向を効果的に捉えることができる.

  2. ダイナミックストップ:市場の変動状況に応じてダイナミックにストップポジションを調整し,引き下げをコントロールしながら,利益を走らせることができる,よりバランスのとれた,安定したストップ方法である.

  3. トレンドフィルター: 高級平均線 ((20週EMA) フィルターにより,明確な上昇傾向の中でのみ入場し,戦略の勝率と損益比率を大幅に向上させた.

  4. ポジション管理:デフォルトの全ポジション取引により,資金を最大限に活用し,資金利用の効率性を高めます.同時に,ポジションのサイズを柔軟に調整することもできます.

  5. 広く適用可能:この戦略の論理は,他の基準と市場に容易に移植され,普遍性が良好である.

戦略リスク

  1. パラメータの適用性:この戦略のパラメータは,ビットコイン市場の特性に基づいて設定されており,他の市場への適用性は検証される予定で,異なる標識に対してパラメータの最適化が必要になる可能性があります.

  2. トレンド識別:この戦略は,主に高水準のEMAやATRなどの技術指標によるトレンド判断に依存し,市場情勢の把握は,基本的分析よりも包括的で,市場の転換点で誤りやすい.

  3. 止損リスク:ダイナミックな止損は,ある程度リスクをコントロールできますが,極端な状況下では (暴落や急速な深波のような) 依然として大きな引き下がりが起こり得る.止損位は比較的近いため,震動的な状況では頻繁に止損することがあります.

  4. 利得の余地:戦略は一方的な上昇傾向で優れているが,振動的な市場では頻繁に損失を伴う困境に陥りやすいため,全体的な利得の余地が限られている可能性があります.

  5. 实体表现:この戦略は反省で良好なパフォーマンスを示したが,实体表は滑り点,手数料などの要因の影響を受け,理論的利益と一定の差がある可能性があるため,慎重に評価する必要がある.

最適化の方向

  1. トレンド判断:より高度な平均線,波動率指標,あるいは基本的なデータを導入して,トレンドの認識の正確性と信頼性を向上させることができます.

  2. ダイナミックパラメータ: ストップ・ローズとATRパラメータは,価格または変動率に関連するダイナミックな調整メカニズムを導入して,異なる市場状態に対応するためにさらに最適化することができます.

  3. ポジション管理:トレンドの強さ,波動率などの指標に基づいて,ポジションのサイズを動的に調整し,トレンドが強いときにポジションを大きくし,波動率が高いときにポジションを小さくし,収益リスク比率を上げることができます.

  4. 多空機構:熊市で空調機構を導入し,戦略の適用範囲と潜在的利益のスペースを拡大する。しかし,入場,止損などのルールを再設計する必要がある。

  5. 組み合わせ戦略:この戦略を他の戦略 (反転,平均回帰など) と組み合わせて,互いを補完し,戦略の安定性と収益性を向上させる.

戦略の概要

ビットコインのダイナミック・トラッキング・ストップ・ストラテジーは,高度な平均線とATR指標を利用して,ビットコインの強い上昇傾向を捕捉し,ダイナミック・ストップを調整することによって下行リスクを制御するシンプルで効果的なダイナミック・ストラテジです.この戦略は論理的に明確で,実行しやすく,最適化され,安定した収益を追求する中線投資家に適しています.しかし,振動的な市場では,一般的に,全体的な利益の余地が限られています. この戦略は,基本的なテンプレートとして使用され,投資家は,自分のニーズと経験に応じて,トレンド判断,パラメータ最適化,ポジション管理,多空メカニズムなどの点でさらに完善したり,より高い収益リスク比率を得るために他の戦略と組み合わせたりすることができます.しかし,この戦略の実地でのパフォーマンスは,リターン結果と異なる可能性があり,慎重に評価し,リスクを制御する必要があります.いかなる戦略も使用する前に,十分な歴史的データリターンと模擬取引が行われ,市場の変化に応じて動的に調整する必要があります.

ストラテジーソースコード
/*backtest
start: 2023-03-08 00:00:00
end: 2024-03-07 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/
// © ZenAndTheArtOfTrading
// ------------------------------------------------------------------------------------------------------
// System Concept: Capture as much Bitcoin upside volatility as possible while side-stepping downside volatility.
//  Entry Rule #1: Bitcoin must be trading above higher-timeframe EMA (Weekly 20 EMA)
//  Entry Rule #2: Bitcoin must not be in 'caution' condition
//      -> Caution: True if BTC's recent swing high minus its current low is > 1.5x ATR OR close < Daily EMA
//  Trailing Stop: Stop is trailed 1 ATR from recent swing high, OR 20% of ATR if in caution condition
// ------------------------------------------------------------------------------------------------------
// @version=5
strategy("Bitcoin Momentum Strategy", 
     overlay=true)

// Get user input
var const string    G_STRATEGY  = "Strategy Entry Settings"
var const string    G_EXIT      = "Strategy Exit Settings"
var const string    G_FILTER    = "Strategy Filters"
i_HigherTimeframe   = input.timeframe("W", "Higher Timeframe", group=G_STRATEGY, tooltip="Higher timeframe MA reference")
i_EmaLength         = input.int(20, "EMA Length", group=G_STRATEGY, tooltip="Moving average period length")
i_AtrLength         = input.int(5, "ATR Length", group=G_STRATEGY, tooltip="ATR period length")
i_TrailStopSource   = input.source(low, "Trail Stop Source", group=G_EXIT, tooltip="Lowest price source for trailing stop")
i_TrailStopLookback = input.int(7, "Trail Stop Lookback", group=G_EXIT, tooltip="How many bars to look back for trailing price source")
i_TrailStopMulti    = input.float(0.2, "Trailing Stop Ratchet Multiplier", group=G_EXIT, tooltip="When momentum is yellow (caution), shrink ATR distance for TS by this much")
i_StartTime         = input(timestamp("01 Jan 2000 13:30 +0000"), "Start Filter", group=G_FILTER, tooltip="Start date & time to begin searching for setups")
i_EndTime           = input(timestamp("1 Jan 2099 19:30 +0000"), "End Filter", group=G_FILTER, tooltip="End date & time to stop searching for setups")

// Define custom security function which does not repaint
RequestSecurity_NonRP(_market, _res, _exp) => request.security(_market, _res, _exp[barstate.isrealtime ? 1 : 0])[barstate.isrealtime ? 0 : 1]

// Define date filter check
DateFilter(int start, int end) => time >= start and time <= end

// Get indicator values
float   atrValue    = ta.atr(i_AtrLength)
float   emaValue    = ta.ema(close, i_EmaLength)
float   htfEmaValue = RequestSecurity_NonRP(syminfo.tickerid, i_HigherTimeframe, emaValue)
float   marketPrice = close

// Check for bullishness / bearish volatility caution
bool    isBullish   = marketPrice > htfEmaValue
bool    isCaution   = isBullish and (ta.highest(high, 7) - low > (atrValue * 1.5) or marketPrice < emaValue) 

// Set momentum color
color bgCol = color.red
if isBullish[1]
    bgCol := color.green
if isCaution[1]
    bgCol := color.orange

// Handle strategy entry, and reset trailing stop
var float trailStop = na
if isBullish and strategy.position_size == 0 and not isCaution
    strategy.entry(id="Buy", direction=strategy.long)
    trailStop := na

// Update trailing stop
float temp_trailStop = ta.highest(i_TrailStopSource, i_TrailStopLookback) - (isCaution[1] ? atrValue * i_TrailStopMulti : atrValue)
if strategy.position_size > 0
    if temp_trailStop > trailStop or na(trailStop)
        trailStop := temp_trailStop

// Handle strategy exit
if (close < trailStop or close < htfEmaValue) and barstate.isconfirmed
    strategy.close("Buy", comment="Sell")

// Draw trailing stop, HTF EMA and color-coded momentum indicator
plotshape(true, color=bgCol, style=shape.square, location=location.bottom, size=size.auto, title="Momentum Strength")
plot(htfEmaValue, color=close > htfEmaValue ? color.green : color.red, linewidth=2, title="HTF EMA")
plot(emaValue, color=close > emaValue ? color.green : color.red, linewidth=1, title="CTF EMA")
plot(strategy.position_size[1] > 0 ? trailStop : na, style=plot.style_linebr, color=color.red, title="Stop Loss")