ハル移動平均トレンドフォロー戦略


作成日: 2023-11-02 14:57:37 最終変更日: 2023-12-01 15:02:29
コピー: 0 クリック数: 778
1
フォロー
1617
フォロワー

ハル移動平均トレンドフォロー戦略

概要

この戦略は,ハル移動平均指標に基づいてトレンド追跡取引システムを構築し,ハル曲線の方向に応じて多額の空調を決定し,典型的なトレンド追跡戦略に属します.

戦略原則

この戦略は,Hull移動平均を主要な技術指標として使用している.Hull移動平均は,アメリカのトレーダーアラン・ハルによって2005年に提唱され,移動平均の基礎で改良され,平方根関数を使用することで移動平均の滞り性が軽減されている.

具体的には,ハル移動平均は2つの平均を含み,一つは期間のnの移動平均MA(n),もう一つは期間のn/2の移動平均MA(n/2) である.この2つの平均の差はハル差値曲線を構成し,またハル差値曲線に自身の移動平均を計算すると,ハル曲線が得られる.

ハル曲線が上向きになると,短期移動平均線を代表して長期移動平均線を上向きに,多信号を触発する.ハル曲線が下向きになると,短期移動平均線を代表して長期移動平均線を下向きに,空信号を触発する.

この策略は,Hull 期間 n を 16 に設定し,それぞれ n/2 = 8 期移動平均,n = 16 期移動平均を計算し,両者の差のHull 曲線を計算し,さらに,Hull 曲線に n = 4 期移動平均を計算し,その n = 4 期移動平均を計算する.

戦略的優位分析

普通の移動平均と比較して,Hull移動平均は以下の利点がある.

  1. 遅延を減らす.平方根関数を使用し,Hull曲線は価格に近く,価格の転換をより早く捉えることができる.

  2. 偽の突破を減らす.従来の移動平均は,偽のクロスを多く生成する傾向があり,ハル曲線は,不必要な取引を避けるためにいくつかのノイズをフィルターすることができます.

  3. パラメータが少ない。ハル曲線は1つのnのパラメータしか必要としないので,最適化が容易であり,双均線システムは2つのパラメータを最適化する必要がある。

  4. カスタマイズできる。ハル曲線のn値は市場に応じて調整でき,周期をカスタマイズして,異なる品種に適応できる。

  5. 体系的 ≪Hull曲線は体系的であり,人工選択を回避し,機械取引システムの一致性を遵守する。

リスク分析

移動平均システムに比べて,Hullシステムには多くの利点がありますが,以下のリスクがあります.

  1. トレンドフォロー戦略そのものの限界.ハルシステムは,トレンドフォロー戦略として,トレンドが急激に変化したときに停止することが容易である.

  2. 頻繁に取引が起こりやすい。ハル曲線の迅速な反応特性は取引の頻度を増やし,過度に取引が容易になる。

  3. parameters は過度に最適化されやすい。ただ一つのパラメータ n が過度に最適化されやすい,カーブフィッティングのリスク。

  4. 効果は品種によって異なります.ハルシステムは,高波動率の品種には効果が悪く,品種に合わせてパラメータを調整する必要があります.

戦略最適化の方向性

上記のハル移動平均策の限界に基づいて,以下の点で最適化することができる.

  1. 付加指標のフィルタリング取引信号と組み合わせて,偽突破を回避する. MACD,KDなどの指標の判断トレンドに参加できる.

  2. 移動ストップや吊り下げストップなどの単一損失を制御するストップ戦略を増やす.

  3. 最適化パラメータnの選択,過最適化を避ける。 ウォークフォワード分析法でスクロール最適化を行う。

  4. 機械学習技術と組み合わせた動的最適化パラメータ.RNNなどのモデルを使用してパラメータnの最適値を予測する.

  5. 分種パラメータの最適化. 機械学習を使用して,異なる品種パラメータの最適化フィット.

  6. ポジション管理を最適化し,取引頻度を低減する.固定シェア法などの方法が適用できる.

要約する

ハル移動平均策略は典型的なトレンド追跡策略である。移動平均に比べて優位性があるが,過度に最適化,頻繁な取引などの問題もある。この策略をパラメータ最適化,ストップロズ戦略,ポジション管理などの方法によって改善することができる。ハルシステムはシンプルで実用的で,さらなる研究と最適化の価値があり,より多くの指標と技術を組み合わせて安定した取引システムを策定することができる。

ストラテジーソースコード
/*backtest
start: 2023-10-25 00:00:00
end: 2023-11-01 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=3
strategy(title = "Noro's HullMA Strategy", shorttitle = "HullMA str", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
n = input(title = "HullMA period", defval=16)
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//HullMA
n2ma=2*wma(close,round(n/2))
nma=wma(close,n)
diff=n2ma-nma
sqn=round(sqrt(n))
n2ma1=2*wma(close[1],round(n/2))
nma1=wma(close[1],n)
diff1=n2ma1-nma1
sqn1=round(sqrt(n))
n1=wma(diff,sqn)
n2=wma(diff1,sqn)
c=n1>n2?green:red
ma=plot(n1,color=c)
    
//Trading
lot = 0.0
lot := strategy.position_size != strategy.position_size[1] ? strategy.equity / close * capital / 100 : lot[1]
if n1 > n2
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot)
if n1 < n2
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot)
if true
    strategy.close_all()