ダブルハル移動平均戦略


作成日: 2023-09-15 16:39:48 最終変更日: 2023-09-15 16:43:45
コピー: 0 クリック数: 1525
1
フォロー
1617
フォロワー

戦略原則:

双HULL移動平均策略は,アラン・HULLが作成したHULL移動平均指数に基づく取引策略である.この策略は,2つのHULL移動平均,一方の長期線と一方の短期線を使用して,買いと売却のタイミングを判断する.HULL移動平均は,価格に重み付けられた平均によって遅れを減らすための改良された移動平均である.長い線と短い線の交差点は,買いと売却の信号を生成する.

HULL移動平均の計算式は以下の通りである.

HmaL = wma(2*wma(close, round(PDL/2)) - wma(close, PDL), round(sqrt(PDL)))
HmaS = wma(2*wma(close, round(PDS/2)) - wma(close, PDS), round(sqrt(PDS)))

PDLは長期周期を代表し,PDSは短期周期を代表する.戦略は,短期線と長期線の数値を比較して,購入と販売の条件を判断する.

優位分析:

  1. 遅延の減少:HULL移動平均は,従来の移動平均に比べて遅延が少なく,価格傾向の変化により迅速に反応し,より正確な買入シグナルを提供します.
  2. シンプルで分かりやすい:この戦略は,移動平均の2つを交差判断に使用し,論理は比較的シンプルで,理解し,実行しやすい.
  3. 高度なカスタマイズ性:戦略内の周期パラメータは,特定の市場と取引品種に応じて調整され,戦略を異なる取引環境に適応させることができます.

リスク分析:

  1. 市場の揺れ:市場の揺れの段階で,移動平均は頻繁に交差し,頻繁に買入シグナルを引き起こし,誤ったシグナルを生じやすく,取引の頻度と損失を引き起こす.
  2. スライドポイントと遅延:戦略の実行は,特に高頻度取引において,スライドポイントと遅延の影響を受け,実行価格が予想価格と一致しない結果になり,取引結果に影響を与える可能性があります.
  3. 単一の指標依存:この戦略は,他の技術指標または市場情報と組み合わせられずに,HULL移動平均指標のみに依存し,市場の変化やトレンドを完全に捉えることができない可能性があります.

結論から言うと

双HULL移動平均戦略は,HULL移動平均に基づいて,短期線と長期線の交差点を比較して,買入と売却のタイミングを判断する取引戦略である.この戦略は,遅滞を軽減し,簡潔で分かりやすく,高度にカスタマイズ可能な利点がありますが,市場震動,滑り,遅延,単一の指標に依存するリスクもあります.実用的なアプリケーションでは,取引の成功率と収益性を高めるために,特定の状況に応じて戦略を調整して最適化することができ,他の技術指標とリスク管理方法と組み合わせることができます.

ストラテジーソースコード
/*backtest
start: 2023-09-07 00:00:00
end: 2023-09-14 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
// Credit Indicator from KIVANC
// author and idea: KIVANC @fr3762 on twitter
// creator: Alan HULL
// 
strategy("Double HULL Moving Average Strategy", overlay=true)
PDL=input(title="LongerPeriod", defval=21, minval=1,maxval=500)
PDS=input(title="ShorterPeriod",  defval=8, minval=1,maxval=500)

// === INPUT BACKTEST RANGE ===
FromYear  = input(defval = 2019, title = "From Year", minval = 2009)
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 2009)
ToMonth   = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 31, title = "To Day", minval = 1, maxval = 31)

// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => true // create function "within window of time"

HmaL=wma(2*wma(close,round(PDL/2))-wma(close,PDL),round(sqrt(PDL)))
HmaS=wma(2*wma(close,round(PDS/2))-wma(close,PDS),round(sqrt(PDS)))
plot(HmaL,color=red, linewidth=2)
plot(HmaS,color=blue, linewidth=2)

Buy = HmaS > HmaL
Sell = HmaS < HmaL

strategy.entry("Buy",true,when=window() and Buy)
strategy.close_all(when=window() and Sell)