グラディエント・トライリング・ストップ・ロスの戦略

作者: リン・ハーンチャオチャン開催日:2023年10月25日 14:56:28
タグ:

img

概要

グラディエント・トレーリング・ストップ・ロスの戦略は,リスク制御と利益採取のバランスをとるためにストップ・ロスのラインを動的に調整する.ストップ・ロスのラインを計算するために平均真要範囲 (ATR) を使用し,価格動向を効果的に追跡し,不必要なストップアウトを削減しながら利益を保護する.この戦略は強いトレンドを持つ株式にうまく機能し,安定した収益を生むことができます.

原則

この戦略は,動的なストップロスの基礎として平均真数範囲 (ATR) を使用する.ATRは,株の変動を効果的に反映する.戦略はまず,ATR期間を入力として,通常は10日とする.その後,ATR値が計算される.価格が上昇するにつれて,ストップロスの線も価格を追いかけるために上昇する.価格が下がると,ストップロスの線は利益をロックするために変化しないまま残ります.また,戦略は因子パラメータを使用して価格からストップロスの距離を微調整することができます.

ストップ・ロスの距離を計算し,それを因数で掛け算する.価格がストップ・ロスの価格以上であれば,ロングポジションが開かれる.価格が以下であれば,ショートポジションが開かれる.したがって,ストップ・ロスの線は価格を緊密にフォローし,グラデント・トレリング効果を達成する.

利点

  • ダイナミック・トレイル・ストップ・ロスは,市場の状況に基づいてストップ距離を調整する.
  • ATRは市場変動に基づいて停止距離を計算します
  • シンプルで簡単に自動化できる取引
  • ATR 期間とストップ・ロースファクタが異なる資産に対して調整可能
  • 停止損失と利益取得の間の残高
  • 不必要な停止を減らす

リスク

  • 適切なATRパラメータを選択することは極めて重要です
  • ストップ・ロスはあまりにも近ければ不必要なストップ・アウトを増やす可能性があります
  • ストップ・ロスは危険をコントロールできない
  • 戦略だけでは 市場の動向を決定することはできない
  • ATR 期間と要素設定を評価する必要性

改良

  • 偽信号を減らすために移動平均値のようなフィルターを追加します
  • 機械学習によるATR期間とストップ損失因子の自動最適化
  • 収益を固定する 収益戦略を組み込む
  • 他の指標と組み合わせて購入/販売シグナルを検証する
  • より良いATR計算や動的ATR期間を研究する
  • 他のダイナミック・トレリング・ストップ・アルゴリズムを探索する
  • ストップ損失効果をさらに最適化

結論

Gradient Trailing Stop Loss 戦略は,ストップ損失距離を動的に調整することによってリスクと利益を効果的にバランスする.単純な論理と高い構成性により,アルゴリズム取引に適している.適切なパラメータチューニングと指標組み合わせは依然として人間の専門知識に依存している.さらなる最適化は,この戦略をより利益をもたらすことができる.


/*backtest
start: 2023-10-17 00:00:00
end: 2023-10-24 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Supertrend Strategy, by Ho.J.", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=15)

// 백테스팅 시작일과 종료일 입력
startYear = input(2020, title="Start Year")
startMonth = input(1, title="Start Month")
startDay = input(1, title="Start Day")

endYear = input(9999, title="End Year")
endMonth = input(12, title="End Month")
endDay = input(31, title="End Day")

// 백테스팅 시간 범위 확인
backtestingTimeBool = (year >= startYear and month >= startMonth and dayofmonth >= startDay) and (year <= endYear and month <= endMonth and dayofmonth <= endDay)

atrPeriod = input(10, "ATR Length")
factor = input.float(3.0, "Factor", step = 0.01)

[_, direction] = ta.supertrend(factor, atrPeriod)

var bool longCondition = false
var bool shortCondition = false

if backtestingTimeBool
    prevDirection = direction[1]
    if direction < 0
        longCondition := false
        shortCondition := true
    else if direction > 0
        longCondition := true
        shortCondition := false

if longCondition
    strategy.entry("My Long Entry Id", strategy.long)

if shortCondition
    strategy.entry("My Short Entry Id", strategy.short)

plot(strategy.equity, title="equity", color=color.rgb(255, 255, 255), linewidth=2, style=plot.style_area)

もっと