トレンドのブレイクアウト - モメンタムストップロス戦略


作成日: 2023-11-13 17:20:51 最終変更日: 2023-11-13 17:20:51
コピー: 0 クリック数: 847
1
フォロー
1617
フォロワー

トレンドのブレイクアウト - モメンタムストップロス戦略

概要

この戦略は,突破と動的ストップダウンの指標に基づいて設計された中長線トレンド追跡戦略である. この戦略は,価格がダイナミックストップダウンを突破してトレンドの方向性を判断し,価格がストップダウンを突破したときにフィールドに入り,その後ストップダウンを使用してトレンドを追跡し,利益をロックします. この戦略は,中長線トレンドを捉え,同時にダイナミックストップダウンを使用してリスクを制御することを目的としています.

戦略原則

この戦略は,動的ストップ指標であるVolatility Stopを使用してトレンドの方向を判断し,ストップを追跡する.Volatility Stopは,価格の変動範囲に応じて動的ストップラインを計算する.具体的には,次の計算方法があります.

  1. 価格のATRを計算する
  2. ATR 値で止損係数を掛けると止損線が得られます.
  3. 価格が上昇すると,最高値が記録され,ストップラインは最高値のATRを減算し,係数で掛けます.
  4. 価格が下がったとき,最低値が記録され,ストップラインは最低値とATRの係数で掛けられます.

ストップラインは,価格の変動に合わせて上下を振動し,ダイナミックな通路を形成します.

ストップ・ローンを突破すると,トレンドが逆転し,ストラテジーはポジションを開きます.

  • ストップラインを上から下へ突破すると,ストラテジーはオーバーポジションになります.
  • ストップラインを上から下へと突破すると,ストラテジーは空白します.

ストップラインは,ポジションの開始後,ストップを追跡するために使用されます.

  • 複数のポジションのストップラインは最高値のATRを引いた係数で掛けます.
  • 空のポジションのストップラインは最低価格とATRの係数

ストップラインに再び触れたら,ストップオフが実行されます.

戦略は順調に進められ,トレンドの逆転を把握し,リスクの管理に ストップ・ロスを利用できます.

優位分析

この戦略の利点は以下の通りです.

  1. 市場が変化するにつれて,市場が変化するにつれて,市場が変化するにつれて,市場が変化するにつれて,市場が変化するにつれて,
  2. ダイナミックなストップを利用して,市場の変動に応じてストップポジションを調整し,ストップを合理的にすることができます.
  3. ストップ・ロズ・ポジションは,トレンドに沿って更新され,最大限の利益をロックできます.
  4. トレンドで追いつくことで,より大きなトレンドの利益を得ることができます.
  5. リスクを効果的に管理し,過度の損失を避ける

リスク分析

この戦略にはいくつかのリスクがあります.

  1. ストップダメージが頻繁に発生する状況が,震動の状況で発生する可能性があります.
  2. 合理的な止損係数を設定する必要があります. 小さすぎると過度に敏感になり,大きすぎると止損が意味を失います.
  3. 取引手数料の影響に注目し,取引が収益を占める頻度
  4. トレンドの初期利益の一部が失われる可能性
  5. ストップラインが価格から遠ざかっている場合のリスクに注意してください.

対策として

  1. ストップレスを最適化して最適のパラメータを見つけることができます.
  2. 取引時間を適切に延長し,取引頻度を減らす
  3. Filterter を加えることも検討できます.
  4. ストップラインの距離は適度に緩められますが,あまり大きくはなりません.

最適化の方向

この戦略は,以下の点でさらに最適化できます.

  1. ストップダメージ係数を最適化して,最適なパラメータの組み合わせを見つける
  2. フィルターを追加し,震災の際に閉じ込められないようにする.
  3. 複数のタイムサイクルを組み合わせて検証し,信号の質を向上させる
  4. ポジション管理を最適化し,ポジションを徐々に増やす
  5. ダイナミックな取引の周期を考慮する
  6. 株の基本と株の選択を組み合わせて,主流のトレンドを把握する

要約する

この順勢突破 - 動的ストップ戦略は,全体的に非常に実用的なトレンド追跡戦略である.それは,トレンド反転の機会を掴み,順位を左右し,同時に動的ストップを利用して効率的にリスクを制御することができる.パラメータを最適化すれば,トレンドの状況でよりよい利益を得ることができる.しかし,この戦略は,ストップが過度に敏感である,取引頻度が過度に高いなどのいくつかの問題にも注意する必要がある.さらに最適化すれば,この戦略は,高効率の安定した定量化取引システムになることができる.

ストラテジーソースコード
/*backtest
start: 2023-11-11 00:00:00
end: 2023-11-12 00:00:00
period: 3m
basePeriod: 1m
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/
//@version=4
strategy(shorttitle='Volatility Stop Strategy',title='Volatility Stop Strategy (by Coinrule)', overlay=true, initial_capital = 100, process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type=strategy.commission.percent, commission_value=0.1)

// Works better on 3h, 1h, 2h, 4h
// Best time frame 2H

//Backtest dates
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 1,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2021, title = "From Year",       type = input.integer, minval = 1970)
thruMonth = input(defval = 1,    title = "Thru Month",      type = input.integer, minval = 1, maxval = 12)
thruDay   = input(defval = 1,    title = "Thru Day",        type = input.integer, minval = 1, maxval = 31)
thruYear  = input(defval = 2112, title = "Thru Year",       type = input.integer, minval = 1970)

showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false       // create function "within window of time"

length = input(20, "Length", minval = 2)
src = input(close, "Source")
factor = input(3.0, "vStop Multiplier", minval = 0.25, step = 0.25)
volStop(src, atrlen, atrfactor) =>
    var max     = src
    var min     = src
    var uptrend = true
    var stop    = 0.0
    atrM        = nz(atr(atrlen) * atrfactor, tr)
    max         := max(max, src)
    min         := min(min, src)
    stop        := nz(uptrend ? max(stop, max - atrM) : min(stop, min + atrM), src)
    uptrend     := src - stop >= 0.0
    if uptrend != nz(uptrend[1], true)
        max    := src
        min    := src
        stop   := uptrend ? max - atrM : min + atrM
    [stop, uptrend]

[vStop, uptrend] = volStop(src, length, factor)


//Entry 


strategy.entry(id="long", long = true, when = crossover(close, vStop) and window())

//Exit
strategy.close("long", when = crossunder(close, vStop))

plot(vStop,"Vstop", color.black, linewidth=2)