Sumber dimuat naik... memuat...

Trend ZigZag Mengikuti Strategi

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

img

Ringkasan

Artikel ini memperkenalkan strategi perdagangan yang dipanggil ZigZag Trend Following Strategy. Strategi ini mengenal pasti trend harga menggunakan penunjuk ZigZag dan membuka kedudukan apabila trend berbalik untuk mengikuti trend. Dalam skrip Strategy Pine, penunjuk ZigZag digunakan untuk mengesahkan harga tertinggi dan terendah baru. Apabila harga menembusi garis penunjuk ZigZag, ia berfungsi sebagai isyarat perdagangan. Isyarat beli adalah apabila harga penutupan di atas garis penunjuk ZigZag untuk pergi panjang; Isyarat jual adalah apabila harga penutupan di bawah garis penunjuk ZigZag untuk pergi pendek. Ini dapat dengan berkesan mengesan trend harga jangka menengah hingga panjang.

Prinsip Strategi

Inti strategi ini adalah menggunakan penunjuk ZigZag untuk mencari titik harga yang melampau dan memaparkan trend harga.

  1. Mengira EMA purata bergerak eksponensial harga penutupan, termasuk tiga garis purata bergerak: garisan pantas, garisan tengah, dan garisan perlahan.

  2. Menghakimi sama ada harga berada dalam trend menaik. iaitu, sama ada garis tengah semasa lebih tinggi daripada garis tengah K-line sebelumnya.

  3. Jika ia kini dalam trend menaik, cari harga terendah yang dikira dari permulaan gelombang titik rendah sebelumnya dalam kitaran yang dikesan sebagai nilai ZigZag.

  4. Jika ia kini dalam trend menurun, cari harga tertinggi yang dikira dari permulaan gelombang titik tinggi sebelumnya dalam kitaran yang dikesan sebagai nilai ZigZag.

  5. Oleh itu, penunjuk ZigZag yang mencerminkan titik melampau turun naik harga terbentuk.

Atas dasar ini, kita menggunakan garis ZigZag sebagai rujukan untuk menilai trend harga. iaitu, apabila harga naik dan memecahkan garis indikator ZigZag, kita pergi panjang; apabila harga jatuh dan memecahkan garis indikator ZigZag, kita pergi pendek.

Analisis Kelebihan

Kelebihan menggunakan penunjuk ZigZag untuk menentukan trend harga dan mengesan harga melampau sebagai penubuhan kedudukan adalah:

  1. Boleh menapis bunyi bising pasaran dengan berkesan dan menangkap trend utama.

  2. Isyarat dagangan yang ditubuhkan pada pecah tertinggi dan terendah baru boleh memperoleh keuntungan dengan cekap.

  3. ZigZag garis agak halus, yang boleh mengurangkan isyarat palsu.

  4. Mudah untuk mengoptimumkan strategi dengan menyesuaikan parameter ZigZag.

Analisis Risiko

Risiko utama strategi ini ialah:

  1. Perjalanan jangka panjang mungkin terperangkap kerana turun naik yang ganas di pasaran.

  2. Indikator ZigZag sensitif terhadap parameter. Tetapan yang tidak betul boleh kehilangan peluang perdagangan atau menghasilkan isyarat palsu. Parameter perlu diuji dan dioptimumkan dengan sewajarnya.

  3. Strategi pengesanan trend lebih bergantung pada pasaran yang sedang berkembang.

Sebagai tindak balas kepada risiko di atas, kita boleh menetapkan mekanisme stop loss untuk mengawal kerugian tunggal; pada masa yang sama, menyesuaikan saiz kedudukan dan bukannya mencari kedudukan penuh; akhirnya, memadankan pelbagai jenis portfolio strategi.

Arah pengoptimuman

Kita boleh mengoptimumkan lagi strategi ini dalam aspek berikut:

  1. Tambahkan mekanisme stop loss. Sebagai contoh, tetapkan stop loss bergerak atau stop loss untuk amplitud retracement harga.

  2. Gabungkan dengan penunjuk lain untuk penapis kedudukan. Sebagai contoh, meningkatkan penunjuk momentum untuk memastikan momentum yang mencukupi; atau penunjuk jumlah dagangan untuk memastikan jumlah dagangan yang tinggi.

  3. Mengambil konfigurasi parameter yang berbeza mengikut persekitaran pasaran yang berbeza (seperti pasaran lembu dan lembu).

  4. Uji parameter garis EMA yang berbeza untuk mencari kombinasi parameter yang terbaik.

Kesimpulan

Strategi ini menggunakan penunjuk ZigZag untuk menentukan trend harga dan menubuhkan kedudukan penjejakan berhampiran titik melampau. Kelebihannya adalah untuk mengikuti trend dengan cekap untuk keuntungan. Ia juga mempunyai risiko terperangkap. Kita boleh menetapkan stop loss, mengoptimumkan parameter dan portfolio strategi perdagangan untuk mengawal risiko. Strategi ini lebih sesuai untuk perdagangan trend jangka menengah hingga panjang. Jika dikawal dengan betul dan digabungkan, ia boleh memperoleh pulangan 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 lanjut