垂直水平フィルター バックテスト戦略

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

img

概要: この戦略は,特定の期間の最高値と最低値の差と閉値の幅の比率を計算して,価格がトレンド状態にあるかどうかを判断し,これを取引シグナル指標として使用します.

戦略原則: この戦略の基本指標は垂直水平フィルター (VHF) で,次の式で計算されます.

VHF = (最高(長さ) - 最低 ((長さ)) /SUM(ABS(近近[1]),長さ)

最長 (Highest) と最短 (Lowest) は,それぞれ長周期内の最高値と最低値である.数値は価格の幅範囲を反映し,分母は価格の実際の変動を反映する.それらの比率は価格の動向を判断することができる.VHFが特定の信号の値を超えると,価格は傾向状態であるとみなされる.与えられた信号の値を下回ると,価格はショック状態であるとみなされる.それに応じて取引信号が生成される.

この戦略はシンプルで直感的です.トレンドを判断するために,価格変動範囲と実際の変動を比較することで,SMA,EMAおよび他の指標のみを頼る問題を回避し,価格そのものの特徴を無視します.しかし,この戦略はパラメータ最適化に敏感であり,長さおよび信号パラメータは,異なるサイクルと市場状況に適応するために調整する必要があります.

利点分析

  1. 直感的な傾向判断指標 シンプルで効果的な
  2. 価格の特徴を考慮して 曲線の調整に頼らない
  3. 設定可能なパラメータで判断の感度を調整する.
  4. 簡単に様々な取引戦略に組み込める.

リスク分析:

  1. パラメータに敏感で 不適切な設定は 誤った取引を 増やす可能性があります
  2. 価格が転換点にある時 偽の傾向を区別できない
  3. 短期的な価格ショックに敏感でない
  4. 単一の損失を制御するためにストップ損失を使用する必要があります.

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

  1. トレンド判断の感度をバランスするために長さパラメータを最適化します.
  2. VHF信号をフィルタリングするために他の指標を組み合わせます.例えば,MACDは屈折点を決定することができます.
  3. VHF曲線に合うように 機械学習方法を試してください
  4. 異なるサイクル設定で並行戦略を設定し,複数のレベルの戦略信号を生成する.

概要: この戦略は,価格そのものの特徴に基づいて,傾向を直感的に決定し,単純で有効であり,さらなる調査,最適化,検証に値する. 基本的トレンド判断ツールとなり,定量的な取引戦略で広く使用することができます.


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

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 27/04/2018
// Vertical Horizontal Filter was initiated by Adam White. It was first published 
// in a magazine called “Issues of Futures” in August, 1991. The Vertical Horizontal 
// Filter (VHF) is a very common Indicator used by traders to find out the Phase of 
// a Price Trend. Normally, a price trend can be in a Trending Phase or a Congestion 
// Phase/Choppy Movement Phase. Adam White created this particular Technical Indicator 
// to determine whether prices are trending in a particular direction or are they going 
// through a transitional period. He used it to measure the range of Futures available
// in the market.
//
// You can change long to short in the Input Settings
// WARNING:
//  - For purpose educate only
//  - This script to change bars colors.
////////////////////////////////////////////////////////////
strategy(title="Vertical Horizontal Filter Backtest")
Length = input(28, minval=1)
Signal = input(0.4, step=0.01)
reverse = input(false, title="Trade reverse")
hline(Signal, color=blue, linestyle=line)
xHH = highest(high, Length)
xLL = lowest(low, Length)
xNumerator = abs(xHH - xLL)
xDenominator = sum(abs(close - close[1]), Length)
xVHF = xNumerator / xDenominator 
pos = iff(xVHF > Signal, 1,
       iff(xVHF < Signal, -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue ) 
plot(xVHF, color=blue, title="VHF")

もっと