Artikel ini memperkenalkan strategi perdagangan yang dipanggil
Inti strategi ini adalah menggunakan penunjuk ZigZag untuk mencari titik harga yang melampau dan memaparkan trend harga.
Mengira EMA purata bergerak eksponensial harga penutupan, termasuk tiga garis purata bergerak: garisan pantas, garisan tengah, dan garisan perlahan.
Menghakimi sama ada harga berada dalam trend menaik. iaitu, sama ada garis tengah semasa lebih tinggi daripada garis tengah K-line sebelumnya.
Jika ia kini dalam trend menaik, cari harga terendah yang dikira dari permulaan gelombang titik rendah sebelumnya dalam kitaran yang dikesan sebagai nilai ZigZag.
Jika ia kini dalam trend menurun, cari harga tertinggi yang dikira dari permulaan gelombang titik tinggi sebelumnya dalam kitaran yang dikesan sebagai nilai ZigZag.
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.
Kelebihan menggunakan penunjuk ZigZag untuk menentukan trend harga dan mengesan harga melampau sebagai penubuhan kedudukan adalah:
Boleh menapis bunyi bising pasaran dengan berkesan dan menangkap trend utama.
Isyarat dagangan yang ditubuhkan pada pecah tertinggi dan terendah baru boleh memperoleh keuntungan dengan cekap.
ZigZag garis agak halus, yang boleh mengurangkan isyarat palsu.
Mudah untuk mengoptimumkan strategi dengan menyesuaikan parameter ZigZag.
Risiko utama strategi ini ialah:
Perjalanan jangka panjang mungkin terperangkap kerana turun naik yang ganas di pasaran.
Indikator ZigZag sensitif terhadap parameter. Tetapan yang tidak betul boleh kehilangan peluang perdagangan atau menghasilkan isyarat palsu. Parameter perlu diuji dan dioptimumkan dengan sewajarnya.
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.
Kita boleh mengoptimumkan lagi strategi ini dalam aspek berikut:
Tambahkan mekanisme stop loss. Sebagai contoh, tetapkan stop loss bergerak atau stop loss untuk amplitud retracement harga.
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.
Mengambil konfigurasi parameter yang berbeza mengikut persekitaran pasaran yang berbeza (seperti pasaran lembu dan lembu).
Uji parameter garis EMA yang berbeza untuk mencari kombinasi parameter yang terbaik.
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)