アダプティブ・トレンド・トラッキング・ストップ・ロスの戦略

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

img

概要

この戦略は,ATR指標と異なる種類の移動平均値と組み合わせて,ワイルダー・ボラティリティ・トラッキング・ストップ・メソッドを利用し,適応型トレンド・トラッキング・ストップ・ロスの戦略を実装する.

戦略の論理

この戦略の核心は,ワイルダー・ボラティリティ・トライリング・ストップアルゴリズムである.最初にATRインジケーターを計算し,入力ATR長さとマルチプリキュアに従ってストップ・ロスの線を動的にプロットする.その後,閉,高,低価格の間で選択された価格オプションに基づいてストップ・ロスの線の最高高と最低低値を追跡する.価格がストップ・ロスの線を突破したとき,取引信号を送信する.

f_ma関数は,RMA,EMA,SMA,Hull MAを含む様々な移動平均値を実装する.ATRインジケーターは,変動性に基づくトレーリングストップラインを生成するために,ユーザー定義の倍数値で計算され,倍数化される.このラインの最高値と最低値は,最高値と最低値関数を使用して追跡される.価格はこのトレーリングストップラインに突入すると取引が行われる.

ATR指標,異なる移動平均値,および調整可能なパラメータを柔軟に使用することで,この戦略は高度に適応性の高いトレンド追跡ストップ損失システムを実現します.市場で大きな引き下げが発生した場合,トレンドを効果的に追跡し,損失を停止することができます.

利点分析

  • この戦略は,成熟した信頼性の高いトレンド追跡ストップ損失方法論である"ワイルダー・ボラティリティ・トラリング・ストップ"アルゴリズムを利用しています.

  • この戦略は,固定的なストップ・ロスのポイントを避け,ストップ・ロスの線を動的に計算するためにATR指標を使用します.ATRは市場の変動とリスクレベルを効果的に反映することができます.

  • RMA,EMA,SMA,Hull MAを含む様々な移動平均値の実施により,戦略の適応性が向上します.

  • ATRの長さ,倍数パラメータを調整することで,さまざまな市場のために最適化されたパラメータを見つけることができ,戦略のパフォーマンスを向上させることができます.

  • 高値,低値,近値などの異なる価格オプションの使用により,さまざまな製品で最適化が可能になります.

  • 簡単に言うと これは信頼性があり 適応性があり 簡単に最適化できる トレンド追跡ストップ・ロスの戦略です

リスク分析

  • この戦略はパラメータ最適化に大きく依存している.異なる市場や製品に対するテストを通じて適切なATRと倍数パラメータを見つける必要がある.そうでなければストップ損失効果が理想的ではない可能性があります.

  • 変動市場では,ATRストップ・ロスは頻繁に不当なストップ・アウトを引き起こす可能性があります.これを最適化するためにトレンドフィルタリングインジケーターを導入する必要があります.

  • ストップ・ロスの線が幅が広い場合,損失の機会が逃れる.狭すぎると,取引頻度とスライプコストが増加する.慎重なテストを通じてバランスの取れた点を探す必要があります.

  • 移動平均値の選択肢が多すぎるとパフォーマンス偏差が生じる.各商品に対して主要な移動平均値が1つ選択され,他の選択肢は参照のみとして使用されるべきである.

  • この戦略は傾向を追跡することに重点を置くが,直接利益を狙わない.他のエントリー/アウトグイト戦略または利益の取付技術と組み合わせなければならない.

  • 適切なパラメータがない場合,戦略は過剰な取引または過剰な保有期間を示す可能性があります.これは最適化によって対処する必要があります.

オプティマイゼーションの方向性

  • トレンド識別指標が導入されれば,市場が変動するときに 混乱を回避できる.

  • 逆転指標は,上昇傾向と下落傾向が交替するときに,より早く停止して逆転することを可能にするように試験することができる.

  • ATR 期間パラメータは製品特性と相関し,異なる製品が異なる ATR 期間を使用できるようにします.

  • ボリュームインジケーターは,ボリュームが著しく減少した場合,ストップ・ロスのラインをより速く締めくくるために使用できます.

  • ストップ・ロスの割合は増加してもよいが,通常のリトレースでストップアウトを避けるため,あまりにも狭くならない.

  • 他の指標はモメントを測定し,モメントが弱いときにストップを緩めるパラメータを最適化するために使用できます.

概要

ワイルダー・ボラティリティ・トレーリング・ストップのコンセプトに基づいたこの戦略は,高度に適応性の高いトレンドトラッキングストップ・ロスのシステムを設計するためにATR指標を利用する.パラメータ最適化を通じて,異なる取引製品に適応することができ,信頼性と実践的なストップ・ロスのアプローチである.しかし,トレンドフィルターやボリューム要素などのさらなる強化によってリスクを管理する必要がある.ストップ・ロスのテクニックの有用性を最大化するために,他の戦略と組み合わせることも必要です.


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

//@version=4
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/

// Wilder's Volatility Trailing Stop Strategy with various MA's
// by SparkyFlary

//For Educational Purposes
//Results can differ on different markets and can fail at any time. Profit is not guaranteed.
strategy(title="Wilder's Volatility Trailing Stop Strategy with various MA's", shorttitle="Trailing Stop Strategy", overlay=true)

AtrMult = input(3.0, title="ATR multiplier")
ATRlength = input(7, title="ATR length")
ATRavgType = input("RMA", title="ATR moving average type", options=["RMA", "EMA", "SMA", "HULL"])
sicType = input("close", title="significant close type for trail calculation", options=["close", "high-low"])

//function for choosing moving averages
f_ma(type, src, len) =>
    float result = 0
    if type == "RMA" // Wilder's moving averaege or Running moving average
        result := rma(src, len)
    if type == "EMA" // Exponential moving average
        result := ema(src, len)
    if type == "SMA" // Simple moving average
        result := sma(src, len)
    if type == "HULL" // Hull moving average
        result := wma(2 * wma(src, len / 2) - wma(src, len), round(sqrt(len)))
    result

ATR = f_ma(ATRavgType, tr, ATRlength)
upperTrail = lowest(sicType=="close"?close:low, ATRlength) + AtrMult * ATR
lowerTrail = highest(sicType=="close"?close:high, ATRlength) - AtrMult * ATR

float TS = 0
TS := close < TS[1] ? upperTrail[1] : close > TS[1] ? lowerTrail[1] : TS

//plot
plot(TS, title="trailing stop", color=close<TS?color.red:color.green)

//Strategy
buy = crossover(close, TS)
//sell = close < TS
short = crossunder(close, TS)
//cover = close > TS

strategy.entry(id="enter long", long=true, when=buy)
//strategy.close(id="enter long", comment="exit long", when=sell)
strategy.entry(id="enter short", long=false, when=short)
//strategy.close(id="enter short", comment="exit short", when=cover)

もっと