Tren ZigZag Mengikuti Strategi

Penulis:ChaoZhang, Tanggal: 2024-01-08 10:13:24
Tag:

img

Gambaran umum

Artikel ini memperkenalkan strategi perdagangan yang disebut ZigZag Trend Following Strategy. Strategi ini mengidentifikasi tren harga menggunakan indikator ZigZag dan membuka posisi ketika tren berbalik untuk mengikuti tren. Dalam skrip Strategi Pine, indikator ZigZag digunakan untuk mengkonfirmasi harga tertinggi dan terendah baru. Ketika harga menembus garis indikator ZigZag, itu berfungsi sebagai sinyal perdagangan. Sinyal beli adalah ketika harga penutupan di atas garis indikator ZigZag untuk pergi panjang; Sinyal jual adalah ketika harga penutupan di bawah garis indikator ZigZag untuk pergi pendek. Ini dapat secara efektif melacak tren harga jangka menengah hingga panjang.

Prinsip Strategi

Inti dari strategi ini adalah menggunakan indikator ZigZag untuk menemukan titik ekstrim harga dan menampilkan tren harga. Indikator ZigZag terdiri dari Exponential Moving Average (EMA) harga tinggi dan rendah. Secara khusus, indikator ini terdiri dari langkah-langkah berikut:

  1. Hitung EMA rata-rata bergerak eksponensial dari harga penutupan, termasuk tiga garis rata-rata bergerak: garis cepat, garis tengah, dan garis lambat.

  2. Hukum apakah harga berada dalam tren naik, yaitu apakah garis tengah saat ini lebih tinggi dari garis tengah garis K sebelumnya.

  3. Jika saat ini dalam tren naik, cari harga terendah yang dihitung dari awal gelombang titik rendah sebelumnya dalam siklus yang terdeteksi sebagai nilai ZigZag.

  4. Jika saat ini dalam tren menurun, cari harga tertinggi yang dihitung dari awal gelombang titik tinggi sebelumnya dalam siklus yang terdeteksi sebagai nilai ZigZag.

  5. Dengan demikian, indikator ZigZag yang mencerminkan titik ekstrem fluktuasi harga terbentuk.

Berdasarkan hal ini, kita menggunakan garis ZigZag sebagai referensi untuk menilai tren harga. yaitu, ketika harga naik dan menembus garis indikator ZigZag, kita pergi panjang; ketika harga turun dan menembus garis indikator ZigZag, kita pergi pendek.

Analisis Keuntungan

Keuntungan dari penggunaan indikator ZigZag untuk menentukan tren harga dan melacak harga ekstrim sebagai pendirian posisi adalah:

  1. Dapat secara efektif menyaring kebisingan pasar dan menangkap tren utama.

  2. Sinyal perdagangan yang dibuat pada titik tertinggi dan terendah baru dapat menghasilkan keuntungan secara efisien.

  3. Garis ZigZag relatif halus, yang dapat mengurangi sinyal palsu.

  4. Mudah untuk mengoptimalkan strategi dengan menyesuaikan parameter ZigZag.

Analisis Risiko

Risiko utama dari strategi ini adalah:

  1. Berjalan jangka panjang mungkin terjebak karena fluktuasi yang keras di pasar. Stop loss yang tepat waktu diperlukan pada saat ini.

  2. Indikator ZigZag sensitif terhadap parameter. Pengaturan yang tidak benar dapat kehilangan peluang perdagangan atau menghasilkan sinyal palsu. Parameter perlu diuji dan dioptimalkan dengan tepat.

  3. Strategi pelacakan tren lebih bergantung pada tren pasar.

Menanggapi risiko di atas, kita dapat mengatur mekanisme stop loss untuk mengendalikan kerugian tunggal; pada saat yang sama, menyesuaikan ukuran posisi daripada mencari posisi penuh; akhirnya, mencocokkan berbagai jenis portofolio strategi.

Arah Optimalisasi

Kami dapat lebih mengoptimalkan strategi ini dalam aspek berikut:

  1. Tambahkan mekanisme stop loss. Misalnya, atur stop loss bergerak atau stop loss untuk amplitudo retracement harga.

  2. Menggabungkan dengan indikator lain untuk penyaring posisi. Misalnya, meningkatkan indikator momentum untuk memastikan momentum yang cukup; atau indikator volume perdagangan untuk memastikan volume perdagangan yang tinggi.

  3. Mengadopsi konfigurasi parameter yang berbeda sesuai dengan lingkungan pasar yang berbeda (seperti pasar bull dan bear).

  4. Uji parameter garis EMA yang berbeda untuk menemukan kombinasi parameter terbaik.

Kesimpulan

Strategi ini menggunakan indikator ZigZag untuk menentukan tren harga dan menetapkan posisi pelacakan di dekat titik ekstrim. Keuntungannya adalah mengikuti tren secara efisien untuk mendapatkan keuntungan. Ini juga memiliki risiko terjebak. Kita dapat mengatur stop loss, mengoptimalkan parameter dan portofolio strategi perdagangan untuk mengendalikan risiko. Strategi ini lebih cocok untuk perdagangan tren jangka menengah hingga panjang. Jika dikontrol dan dikombinasikan dengan benar, itu dapat memperoleh pengembalian yang stabil.


/*backtest
start: 2023-12-31 00:00:00
end: 2024-01-07 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title = "Noro's ZigTrend Strategy v1.0", shorttitle = "ZigTrend 1.0", 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, %")
length = input(4)
ExtremeDetection = input(4)
src = input(close)
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")

//ZigZag
f_zz(_length, _detection)=>
    _hls = ema(ema(ema(src, _length), round(_length*0.66)), round(_length*0.33))
    _isRising = _hls >= _hls[1]
    _zigzag = _isRising and not _isRising[1] ? lowest(_detection) :  not _isRising and _isRising[1] ? highest(_detection) : na
zigzag = f_zz(length, ExtremeDetection)
plot(zigzag, color=black, linewidth=2)

//Signals
up = close > zigzag
dn = close < zigzag

//Trading
lot = 0.0
lot := strategy.position_size != strategy.position_size[1] ? strategy.equity / close * capital / 100 : lot[1]
if up
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot)

if dn
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot)


Lebih banyak