
この戦略は,Bitmestraプラットフォームのトラッキングストップ機能を活用して,ストップ価格を動的に調整し,より正確で柔軟なストップを実現することを目的としています. この戦略は,入場と出場に使用されませんが,異なる市場条件下で合理的なストップ範囲を与えます.
この戦略は,主に3つの指標を使用します. 最高価格,最低価格,および閉店価格. 戦略は,まず,長ポジションと短いポジションのストップの範囲を定義します.longoffset空飛ぶ追跡停止距離shortoffset┃ ┃ ┃ ┃ ┃
ストップ価格を追跡する 論理的な調整を実行します.trailstop:
この方法により,市場の最高価格と最低価格の変動に応じて,リアルタイムでストップ・ロスの追跡を調整し,ダイナミックなストップ・ロスを実現できます.
この戦略の最大の利点は,本当にダイナミックで柔軟なストップ・ロスを実現することです. 固定ストップ・価格と比較して,ダイナミック・トラッキングは,市場の変動に応じてストップ・範囲を調整することができ,ストップ・距離があまりにも大きいことが不要な損失を招くことを避け,ストップ・距離があまりにも小さいことが価格の通常の波動に打たれることを避けることができます. これは,不要な損失を減らすだけでなく,早期のストップ・損失の確率を減らすこともできます.
もう1つの優点は,ストップ・ロースの距離がカスタマイズされ,最適化されるということです. ユーザーは,異なる品種の特徴と取引スタイルに応じて,自分のストップ・ロースの範囲を選択できます. これは,戦略をより広範なシナリオに適用できるようにします.
最後に,このストップダスト戦略の論理は,単純で明快で,容易に理解でき,また,二次開発や他の戦略への統合が容易であることも,この戦略の優点の一つである.
この戦略の主なリスクは以下の通りです.
ダイナミック・ストップは,通常の状況下での損失のみを軽減し,大きな突然の出来事や極端な状況による損失を防ぐことができません.これはダイナミック・ストップ自体の限界です.
追跡止損距離が大きすぎると,損失が拡大する可能性があります.距離が小さすぎると,早すぎる止損が発生する可能性があります.距離の設定は,品種特性に応じて慎重にテストされ,最適化する必要があります.
ポジション開設後数Kラインで,ストップダメージの追跡メカニズムのためにストップダメージの距離が大きすぎる可能性があるため,この期間には一定の追加のリスクが存在する.
この戦略は以下の方向から最適化できます.
品種別パラメータの最適化: 品種別の波動度,日中の波動範囲などの指標に応じて,合理的な多頭と空頭を追跡止損距離を選択する. これは最も重要な最適化方向である.
ポジション開設後数Kラインの追加リスクを減らす:ポジション開設後数Kラインでストップダストの調整幅を制限して,ストップダストの距離を過大にしないようにする.
取引量指数と組み合わせる:例えば,取引量が増大する段階でストップロスの距離を下げ,ブレイクされたストップロスを避ける.
他の入場・出場戦略と組み合わせる:この戦略の主な役割は,ストップ・ロスを追跡することであり,他の戦略に統合され,入場・出場規則と併用して使用することができる.
この戦略は,市場価格の最高値と最低値の変化に応じて動的にストップ・ローズを追跡する機能を実現している.これは,通常の市場状況下では不要な損失を効果的に減らすことができる.また,固定ストップ・ローズ距離が大きすぎすぎすぎすぎという問題をよりうまく解決する.重要な最適化の方向は,異なる品種に適したパラメータをテストし,ポジション開設後のいくつかのK線のリスク制御である.この戦略のストップ・ロージックは,単純でわかりやすく,二次開発され,他の戦略に統合され,またはストップ・ローズツールとして単独で使用することができる.
/*backtest
start: 2023-02-20 00:00:00
end: 2024-02-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
//By River
strategy("BitMex Trailing Stop Strategy", overlay=true)
longoffset = input(defval=228.5, title="Long Trailing Stop Size", type=float, minval=0.5, maxval=1000, step=0.5)
shortoffset = input(defval=243.5, title="Short Trailing Stop Size ", type=float, minval=0.5, maxval=1000, step=0.5)
hiprice = request.security(syminfo.tickerid, "1", high)
loprice = request.security(syminfo.tickerid, "1", low)
price = request.security(syminfo.tickerid, "1", close)
trailstop = price
trailstop := (loprice <= trailstop[1] and loprice[1] >= trailstop[2]) ? price + shortoffset : ((hiprice >= trailstop[1] and hiprice[1] <= trailstop[2]) ? price - longoffset : (hiprice > trailstop[1] ? max(hiprice - longoffset, trailstop[1]) : (loprice < trailstop[1] ? min(loprice + shortoffset, trailstop[1]) : price)))
trailcol = trailstop > price ? red : green
plot(trailstop, color=trailcol)
longCondition = trailcol == green
alertcondition(longCondition, "Long Stop alert", "BUY")
if (longCondition)
strategy.entry("Long", strategy.long)
shortCondition = trailcol == red
alertcondition(shortCondition, "Short alert", "SELL")
if (shortCondition)
strategy.entry("Short", strategy.short)