
Strategi perdagangan kuantitatif silang rata-rata Z-Score adalah sistem perdagangan komprehensif berdasarkan prinsip skor Z statistik dan isyarat silang purata bergerak. Strategi ini membentuk isyarat jual beli dengan mengira penyimpangan piawaian harga (Z-Score) dan menggabungkan persilangan purata bergerak long-kepanjangan dan jangka pendek. Kaedah ini tidak hanya mempertimbangkan perubahan mutlak harga, tetapi lebih mementingkan kedudukan harga dalam pengedaran statistik, dan dengan itu menyediakan mekanisme masuk dan keluar pasaran berdasarkan kebarangkalian dan prinsip statistik.
Inti strategi ini adalah membuat keputusan perdagangan berdasarkan statistik Z-Score. Z-Score adalah statistik yang mengukur berapa banyak standard deviasi dari nilai rata-rata pada satu titik data, dengan formula: Z = (X - μ) / σ, di mana X adalah harga semasa, μ adalah nilai purata, σ adalah standard deviasi.
Pelaksanaan strategi terdiri daripada langkah-langkah berikut:
Strategi ini juga menyediakan purata bergerak tradisional ((MA) sebagai rujukan tambahan, termasuk tiga garis rata-rata jangka pendek ((5 kitaran), pertengahan ((21 kitaran) dan jangka panjang ((60 kitaran). Garis rata ini dapat membantu peniaga melihat perubahan trend harga dengan lebih intuitif.
Statistik AsasIndikator Z-Score berdasarkan prinsip statistik, dapat menstandardkan turun naik harga, memudahkan untuk mengenal pasti perubahan harga yang tidak biasa. Apabila Z-Score sangat tinggi atau sangat rendah, menunjukkan bahawa harga menyimpang dari nilai purata yang besar, mungkin ada peluang untuk kembali ke nilai purata.
Mekanisme penapisan bergandaStrategi ini menggunakan kedua-dua penunjuk Z-Score dan purata bergerak, membentuk mekanisme pengesahan ganda. Persaingan Z-Score memberikan isyarat utama, sementara sistem purata bergerak berfungsi sebagai alat tambahan untuk pengesahan trend.
Tetapan parameter yang fleksibelPengguna boleh menyesuaikan kitaran pengiraan Z-Score, parameter kelancaran, dan selang isyarat mengikut ciri-ciri pasaran dan jenis perdagangan yang berbeza, mewujudkan konfigurasi strategi yang diperibadikan.
Maklum balas dalam masa nyataStrategi menunjukkan isyarat beli dan jual secara intuitif melalui antara muka grafik, dan memberikan maklum balas masa nyata mengenai kedudukan pegangan dan keuntungan dan kerugian, memudahkan peniaga untuk menilai prestasi strategi dengan cepat.
Fungsi amaran awalSistem amaran terintegrasi yang boleh memberi amaran dalam masa nyata apabila isyarat beli atau jual dicetuskan, membantu peniaga menangkap peluang perdagangan tepat pada masanya.
Kepekaan ParameterPengiraan Z-Score dan parameter kelancaran mempunyai kesan yang ketara terhadap prestasi strategi. Tetapan parameter yang tidak betul boleh menyebabkan perdagangan berlebihan atau kehilangan isyarat penting.
Kelemahan pasaran yang bergolakDalam pasaran yang bergolak, Z-Score mungkin sering melintasi nilai purata, menghasilkan terlalu banyak isyarat perdagangan, meningkatkan kos perdagangan dan mungkin menyebabkan kerugian berterusan. Anda boleh mempertimbangkan untuk menambah syarat penapis trend dalam strategi atau menghentikan perdagangan apabila anda mengenal pasti pasaran yang bergolak.
Risiko hipotesis statistikZ-Score mengandaikan pergerakan harga sesuai dengan sebaran normal, tetapi pergerakan harga dalam pasaran sebenar mungkin mempunyai risiko ekor dan turun naik yang tidak normal. Dalam keadaan pasaran yang melampau, strategi mungkin tidak berkesan.
Masalah ketinggalan zamanOleh kerana menggunakan pemprosesan rata-rata bergerak yang halus, isyarat akan mengalami kemunduran, yang boleh menyebabkan masa masuk dan keluar yang tidak sesuai dalam pasaran yang bergolak.
Kekurangan mekanisme kawalan kerugianVersi strategi semasa tidak mengandungi mekanisme hentian kerugian yang jelas, dan mungkin menghadapi kerugian yang lebih besar jika pasaran berbalik dengan turun naik yang besar. Disarankan untuk menambah syarat hentian kerugian dalam aplikasi sebenar untuk mengawal risiko.
Tambah penapis trend: Indikator trend tambahan boleh diperkenalkan (seperti ADX atau bandwidth Brin) untuk mengenal pasti keadaan pasaran, menggunakan parameter strategi atau logik perdagangan yang berbeza di pasaran trend kuat dan pasaran goyah.
Menambahkan parameter penyesuaian: Mengubah kitaran pengiraan Z-Score dan selang isyarat berdasarkan dinamik turun naik pasaran, supaya strategi dapat menyesuaikan diri dengan lebih baik dengan keadaan pasaran yang berbeza.
Pengurusan risiko yang lebih baik: Memperkenalkan mekanisme hentian berdasarkan ATR atau peratusan tetap, dan reka bentuk peraturan pengurusan kedudukan yang munasabah untuk mengawal risiko perdagangan tunggal.
Analisis pelbagai kitaran: Merangkumi sinyal Z-Score dari pelbagai tempoh masa secara menyeluruh, hanya menjalankan perdagangan apabila beberapa isyarat tempoh masa sama, meningkatkan kebolehpercayaan isyarat.
Bersama-sama dengan petunjuk lainAnda boleh mempertimbangkan untuk menggabungkan Z-Score dengan jumlah dagangan, RSI (Relative Strength Index) atau tanda teknikal lain seperti Brin Belt untuk membina keadaan dagangan yang lebih komprehensif.
Optimumkan kerangka pengesahanKriteria penilaian strategi yang diperluaskan, bukan hanya memberi perhatian kepada pendapatan keseluruhan, tetapi juga mempertimbangkan indikator komprehensif seperti penarikan maksimum, nisbah Sharpe, dan nisbah kerugian, untuk menilai keseluruhan prestasi strategi.
Strategi perdagangan kuantitatif z-Score dinamika rata-rata cross-sectional menggunakan kaedah statistik untuk memproses harga secara standard, digabungkan dengan isyarat rata-rata bergerak, menyediakan satu set kaedah sistematik untuk membuat keputusan perdagangan. Strategi ini sangat sesuai untuk mencari peluang perdagangan yang kembali ke nilai rata-rata selepas harga menyimpang, dengan asas teoritis yang kuat dan isyarat yang jelas.
Walau bagaimanapun, peniaga perlu berhati-hati dalam mengoptimumkan parameter dan mengawal risiko semasa menggunakan strategi ini, terutamanya kerana prestasi strategi mungkin berbeza dalam keadaan pasaran yang berbeza. Kestabilan dan kesesuaian strategi dapat ditingkatkan lagi dengan meningkatkan penapisan trend, pengendalian risiko yang lebih baik, dan penggabungan pelbagai indikator.
Akhirnya, strategi perdagangan apa pun perlu disahkan dengan ketat dan terus dioptimumkan dalam persekitaran pasaran sebenar. Strategi Z-Score, sebagai alat perdagangan kuantitatif, memberikan pedagang kerangka analisis dan keputusan pasaran berdasarkan prinsip statistik, yang patut dijelajahi dan dikaji secara mendalam oleh pedagang dalam amalan.
/*backtest
start: 2024-07-13 18:40:00
end: 2025-06-25 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT","balance":50000000}]
*/
//@version=6
strategy("Z Score 主图策略 — v1.02", overlay=true)
// 参数
enableZScore = input.bool(true, title="启用Z分数策略")
zBaseLength = input.int(3, minval=1, title="Z分数基础周期")
shortSmooth = input.int(3, title="短期平滑")
longSmooth = input.int(5, title="长期平滑")
gapBars = input.int(5, minval=1, title="相同信号间隔K线数")
// Z 分数
f_zscore(src, len) =>
mean = ta.sma(src, len)
std = ta.stdev(src, len)
(src - mean) / std
zRaw = f_zscore(close, zBaseLength)
zShort = ta.sma(zRaw, shortSmooth)
zLong = ta.sma(zRaw, longSmooth)
baseLongCond = zShort > zLong
baseExitCond = zShort < zLong
// 信号间隔
var int lastEntryBar = na
var int lastExitBar = na
// 策略逻辑
if enableZScore
if baseLongCond and (na(lastEntryBar) or bar_index - lastEntryBar > gapBars)
strategy.entry("Z Score", strategy.long)
lastEntryBar := bar_index
alert("Z分数策略触发买入信号,建议开多仓", alert.freq_once_per_bar)
if baseExitCond and (na(lastExitBar) or bar_index - lastExitBar > gapBars)
strategy.close("Z Score", comment="Z Score")
lastExitBar := bar_index
alert("Z分数策略触发卖出信号,建议平仓离场", alert.freq_once_per_bar)
// 买卖图标
plotshape(baseLongCond and (na(lastEntryBar) or bar_index - lastEntryBar > gapBars),
title="买入信号", location=location.belowbar, color=color.green, style=shape.labelup, text="买")
plotshape(baseExitCond and (na(lastExitBar) or bar_index - lastExitBar > gapBars),
title="卖出信号", location=location.abovebar, color=color.red, style=shape.labeldown, text="卖")
// 盈亏表格
var table positionTable = table.new(position.bottom_right, 2, 2, border_width=1)
table.cell(positionTable, 0, 0, "开仓价", text_color=color.white, bgcolor=color.gray)
table.cell(positionTable, 1, 0, "未实现盈亏 (%)", text_color=color.white, bgcolor=color.gray)
isLong = strategy.position_size > 0
entryPrice = strategy.position_avg_price
unrealizedPnL = isLong ? (close - entryPrice) / entryPrice * 100 : na
pnlColor = unrealizedPnL > 0 ? color.green : unrealizedPnL < 0 ? color.red : color.gray
if isLong
table.cell(positionTable, 0, 1, str.tostring(entryPrice, "#.####"), text_color=color.gray, bgcolor=color.new(color.gray, 90))
table.cell(positionTable, 1, 1, str.tostring(unrealizedPnL, "#.##") + " %", text_color=pnlColor, bgcolor=color.new(pnlColor, 90))
else
table.cell(positionTable, 0, 1, "—", text_color=color.gray, bgcolor=color.new(color.gray, 90))
table.cell(positionTable, 1, 1, "—", text_color=color.gray, bgcolor=color.new(color.gray, 90))
// === 显示 MA 均线 ===
showMA = input.bool(true, title="显示 MA 均线")
maShortPeriod = input.int(5, title="短期 MA 周期")
maMidPeriod = input.int(21, title="中期 MA 周期")
maLongPeriod = input.int(60, title="长期 MA 周期")
maShort = ta.sma(close, maShortPeriod)
maMid = ta.sma(close, maMidPeriod)
maLong = ta.sma(close, maLongPeriod)
plot(showMA ? maShort : na, title="MA 短期", color=color.rgb(0, 9, 11, 1), linewidth=1)
plot(showMA ? maMid : na, title="MA 中期", color=color.orange, linewidth=1)
plot(showMA ? maLong : na, title="MA 长期", color=color.blue, linewidth=1)