Strategi Backtest Filter Horizontal Vertikal

Penulis:ChaoZhang, Tanggal: 2024-01-08 10:20:25
Tag:

img

Ringkasan: Strategi ini menilai apakah harga berada dalam keadaan tren dengan menghitung rasio antara perbedaan antara harga tertinggi dan terendah selama periode tertentu dan amplitudo harga penutupan, dan menggunakannya sebagai indikator sinyal perdagangan.

Prinsip Strategi: Indikator inti dari strategi ini adalah Vertical Horizontal Filter (VHF).

VHF = (Paling Tinggi ((Length) - Terendah ((Length)) / SUM ((ABS ((Close-Close[1]), Length)

Di mana Highest ((Length) dan Lowest ((Length) masing-masing adalah harga tertinggi dan terendah dalam siklus Length. Pembilang mencerminkan rentang amplitudo harga, dan penyebut mencerminkan fluktuasi harga yang sebenarnya. Rasio mereka dapat menilai tren pergerakan harga. Ketika VHF lebih tinggi dari ambang sinyal tertentu, dianggap bahwa harga berada dalam keadaan tren. Ketika lebih rendah dari ambang sinyal tertentu, dianggap bahwa harga berada dalam keadaan shock. Sinyal perdagangan dihasilkan sesuai.

Strategi ini sederhana dan intuitif. Dengan membandingkan rentang fluktuasi harga dengan fluktuasi aktual untuk menilai tren, hal ini menghindari masalah mengandalkan hanya pada SMA, EMA dan indikator lain sambil mengabaikan karakteristik harga itu sendiri.

Analisis Keuntungan:

  1. Indikator penilaian tren intuitif, sederhana dan efektif.
  2. Pertimbangkan karakteristik harga itu sendiri, tidak bergantung pada kurva yang cocok.
  3. Parameter yang dapat dikonfigurasi menyesuaikan sensitivitas penilaian.
  4. Dapat dengan mudah diintegrasikan ke dalam berbagai strategi perdagangan.

Analisis Risiko:

  1. Sensitif terhadap parameter, pengaturan yang salah dapat menyebabkan terlalu banyak perdagangan palsu.
  2. Tidak dapat membedakan tren palsu ketika harga berada di titik perubahan.
  3. Tidak sensitif terhadap kejutan harga jangka pendek dalam pengaturan siklus besar.
  4. Harus menggunakan stop loss untuk mengendalikan single loss.

Arahan Optimasi:

  1. Mengoptimalkan parameter Panjang untuk menyeimbangkan sensitivitas penilaian tren.
  2. Menggabungkan indikator lain untuk menyaring sinyal VHF. Misalnya, MACD dapat menentukan titik infleksi.
  3. Cobalah metode pembelajaran mesin agar sesuai dengan kurva VHF.
  4. Menetapkan strategi paralel dengan pengaturan siklus yang berbeda untuk menghasilkan sinyal strategi multi-level.

Ringkasan: Strategi ini secara intuitif menentukan tren berdasarkan karakteristik harga itu sendiri, sederhana dan valid, layak eksplorasi lebih lanjut, optimalisasi dan verifikasi.


/*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")

Lebih banyak