トレンド フォロー 戦略 ハルスの移動平均値と真の範囲をベースに

作者: リン・ハーンチャオチャン,日付: 2024-01-15 15:26:08
タグ:

img

概要

この戦略の主な考え方は,ハル移動平均値と平均真の範囲 (ATR) を組み合わせて市場のトレンド方向を特定し,トレンド方向が確認された後にポジションを入力することです.具体的には,特定の期間のハル移動平均値と前期間の差を計算します.差が上昇すると上昇傾向を示します.差が減少すると下落傾向を示します.同時に,ATRインデックスは振幅を決定するために使用されます.トレンド方向が確認され,振幅が拡大し続けるとポジションを入力します.

戦略の論理

この戦略は主に2種類の指標をベースにしています.Hull移動平均値とATRです.

ハル移動平均は,アメリカの先物トレーダーアラン・ハルによって開発されたトレンドフォローする指標である.ハル移動平均は,移動平均と同様に,より高い感度を持ち,価格の変化とトレンドをより早く把握することができる.この戦略は,ハル移動平均の期間を制御するために調整可能なパラメータ hullLength を設定する.現在の期間のハルMAと前の期間の違いを計算することによって,現在の価格傾向方向を決定する.

ATRは,平均の真の範囲を表します. 日々の価格変動の幅を反映しています. 不安定性が増加すると,ATRは上昇します. 不安定性が減少すると,ATRは下がります. 戦略はATR計算を制御するためにatrLengthとatrSmoothingのようなパラメータを設定します. そしてATRはエントリのための1つの参照としてチャートにプロットされています.

具体的には 戦略の論理は

  1. 現在の期間のHull MA (HullLength) と前の期間のHull MAを計算する.
  2. 差を計算する: hullDiff = currentHullMA - previousHullMA
  3. hullDiff > 0 は上昇傾向を示し, hullDiff < 0 は下落傾向を示します.
  4. 周期のATR (atrLength) を振幅基準として計算する.
  5. 上昇傾向が確認され ATR > 価格 > atrLength 期間の価格が確認された場合,ロングに行く.
  6. HullDiffの正・負の値を使って 接近信号を判定します

利点分析

この戦略の利点は

  1. トレンド判断と波動指数を組み合わせると,価格傾向が明確で波動性が上昇するときにポジションに入れる.
  2. Hull MAは価格変動に迅速に対応し,新しいトレンド方向性を迅速に特定することができます.
  3. ATRは市場変動と熱を反映し,市場への参入のタイミングを導き出す.
  4. 最適なパラメータ組み合わせのために複数の調整可能なパラメータを最適化できます.

リスク分析

この戦略のリスクは

  1. Hull MAとATRは,偽脱出を完全に回避できないので,罠にかかる危険性がある.
  2. 不適切なパラメータ設定は,過剰な取引または不十分な敏感性につながり,戦略の有効性を損なう可能性があります.
  3. 急激な急上昇や暴落のような価格動向を 効果的に処理できません

解決策:

  1. 誤ったブレイクに捕まるのを避けるために 適切なストップ損失を設定します
  2. パラメータをテストして最適化して 異なる市場環境に合わせる
  3. 戦略を一時停止する 暴力的な変動に直面する時

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

改善の余地があります

  1. 現在の市場に最適な設定を見つけるために,異なるHullLengthパラメータをテストします.
  2. 市場熱を把握するために ATR 期間の組み合わせをテストする.
  3. どちらが最も効果的かを試す
  4. ATRと組み合わせた反応などの他の変動指標でエントリー条件を最適化します.
  5. ストップ・ロスを最適化して 罠にはまらないようにする

結論

この戦略は,ハルMAのトレンドフォロー能力とATRの熱判断能力を統合する.トレンドが確認され,不安定性が上昇すると,いくつかの無効な信号をフィルタリングするためにポジションに入ります.パラメータ最適化とより良いリスク管理によりさらなる強化を達成できます.要約すると,この戦略はトレンド追跡と熱判断の複数の要因を組み合わせます.パラメータが精密に調整されると,良い結果が得られます.


/*backtest
start: 2024-01-07 00:00:00
end: 2024-01-14 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//                                                Hull cross and ATR
strategy("Hull cross and ATR", shorttitle="H&ATR", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_order_fills=true, calc_on_every_tick=true, pyramiding=0)
keh=input(title="Hull Length",defval=50)
length = input(title="ATR Length", defval=50, minval=1)
smoothing = input(title="ATR Smoothing", defval="RMA", options=["RMA", "SMA", "EMA", "WMA"])
p=input(ohlc4,title="Price data")
n2ma=2*wma(p,round(keh/2))
nma=wma(p,keh)
diff=n2ma-nma
sqn=round(sqrt(keh))
n2ma1=2*wma(p[1],round(keh/2))
nma1=wma(p[1],keh)
diff1=n2ma1-nma1
sqn1=round(sqrt(keh))
n1=wma(diff,sqn)
n2=wma(diff1,sqn)
ma_function(source, length) => 
    if smoothing == "RMA"
        rma(p, length)
    else
        if smoothing == "SMA"
            sma(p, length)
        else
            if smoothing == "EMA"
                ema(p, length)
            else
                wma(p, length)
plot(ma_function(tr(true), length), title = "ATR", color=black, transp=50)
closelong = n1<n2
if (closelong)
    strategy.close("buy")
closeshort = n1>n2
if (closeshort)
    strategy.close("sell")
if (ma_function(tr(true), length)<p and p>p[length] and n1>n2)
    strategy.entry("buy", strategy.long, comment="BUY")
if (ma_function(tr(true), length)>p and p<p[length] and n1<n2)
    strategy.entry("sell", strategy.short, comment="SELL")

もっと