Strategi Perdagangan Perangkaan Harga Dioptimumkan Momentum Berdasarkan Persilangan Skor Z-Smoothed

Z-SCORE SMA stdev PNL Momentum Filter
Tarikh penciptaan: 2025-06-03 10:44:56 Akhirnya diubah suai: 2025-06-03 10:44:56
Salin: 0 Bilangan klik: 330
2
fokus pada
319
Pengikut

Strategi Perdagangan Perangkaan Harga Dioptimumkan Momentum Berdasarkan Persilangan Skor Z-Smoothed Strategi Perdagangan Perangkaan Harga Dioptimumkan Momentum Berdasarkan Persilangan Skor Z-Smoothed

Gambaran keseluruhan

Strategi ini berdasarkan kepada konsep statistik Z-Score, yang digunakan untuk mengenal pasti perbezaan statistik harga berbanding dengan purata tempatan. Strategi ini mengira Z-Score untuk harga penutupan, dan kemudian menggunakan purata bergerak jangka pendek dan jangka panjang untuk meluruskan skor Z-Score.

Prinsip Strategi

Pusat strategi ini adalah pengiraan dan penggunaan skor Z. Skor Z adalah statistik yang digunakan untuk mengukur sejauh mana satu titik data menyimpang dari purata sampel, dalam satuan perbezaan piawai. Dalam strategi ini, formula untuk mengira skor Z adalah: Z = (harga penutupan - SMA ((harga penutupan, N)) / STDEV ((harga penutupan, N) N adalah kitaran asas yang ditakrifkan oleh pengguna.

Proses pelaksanaan strategi adalah seperti berikut:

  1. Mengira nilai Z asal untuk harga penutupan
  2. Glat jangka pendek (SMA) digunakan untuk penarafan Z asal
  3. Glat jangka panjang (SMA) digunakan untuk penarafan Z asal
  4. Apabila anda memakai skor Z jangka panjang pada skor Z jangka pendek, anda boleh membuat lebih banyak kedudukan jika anda memenuhi syarat tambahan.
  5. Apabila memakai skor Z jangka panjang dalam jangka pendek yang lancar, kedudukan kosong jika syarat tambahan dipenuhi

Syarat tambahan termasuk:

  • Jarak isyarat: antara dua isyarat jenis yang sama (masuk atau keluar) mestilah jarak minimum K
  • Penapisan tenaga: dilarang masuk apabila terdapat tiga atau lebih garis K naik secara berturut-turut; dilarang keluar apabila terdapat tiga atau lebih garis K turun secara berturut-turut

Kelebihan Strategik

  1. Statistik AsasSkor Z adalah satu alat statistik yang terbukti yang berkesan untuk mengenal pasti sejauh mana harga menyimpang dari nilai purata, yang sesuai untuk menangkap peluang harga untuk kembali ke nilai purata.
  2. Rawatan yang lancar: Mengurangkan kebisingan dan meningkatkan kualiti isyarat dengan menggunakan kelancaran jangka pendek dan jangka panjang kepada penarafan Z asal.
  3. Kawalan selang isyarat: Dengan menetapkan selang isyarat minimum, ia berkesan mengurangkan overtrading dan isyarat berulang.
  4. Penapis tenaga: Mengelakkan kerugian yang tidak perlu dalam keadaan yang kuat dengan melarang perdagangan berlawanan semasa trend yang kuat.
  5. KesederhanaanStrategi ini hanya menggunakan data harga penutupan, tidak bergantung pada kombinasi indikator yang rumit, mudah difahami dan dilaksanakan.
  6. Pemantauan dalam masa nyata: mengandungi jadual yang menunjukkan keuntungan yang tidak tercapai dalam masa nyata, memudahkan peniaga memantau status pegangan.
  7. Fleksibiliti parameter: Pengguna boleh menyesuaikan kitaran asas dan parameter kelancaran penilaian Z mengikut pasaran dan jangka masa yang berbeza untuk meningkatkan daya serap.

Risiko Strategik

  1. Risiko hipotesis statistikSkor Z: mengandaikan harga hampir normal, dan mungkin kurang baik dalam keadaan pasaran yang tidak normal.
  2. Kepekaan ParameterPeringkat Z: Periode asas dan pilihan parameter kelancaran mempunyai kesan yang ketara terhadap prestasi strategi, pilihan parameter yang tidak betul boleh menyebabkan overfitting atau kelewatan isyarat.
  3. Batasan faktor tunggalKaedah ini hanya menghasilkan isyarat silang berdasarkan penilaian Z, dan kekurangan petunjuk pengesahan lain boleh menyebabkan isyarat palsu.
  4. Pergantungan persekitaran pasaranDalam pasaran trend yang kuat, strategi yang berasaskan pengembalian nilai rata-rata mungkin terus memberi isyarat yang salah.
  5. Isyarat ketinggalanOleh kerana penggunaan rata-rata bergerak yang lancar, isyarat mungkin terlewat dan terlepas titik masuk atau keluar terbaik.

Penyelesaian:

  • Mengkaji semula keadaan pasaran yang berbeza untuk mencari kombinasi parameter terbaik
  • Menggabungkan penapis trend untuk mengurangkan atau menyekat perdagangan di pasaran yang sedang bertukar
  • Menambahkan penunjuk pengesahan tambahan seperti analisis kuantiti urus niaga atau penunjuk teknikal lain
  • Pertimbangkan untuk menggunakan parameter penyesuaian diri, menyesuaikan parameter penilaian Z secara automatik mengikut turun naik pasaran

Arah pengoptimuman

  1. Pengiktirafan dan integrasi trend: Tambah komponen pengiktirafan trend, menyesuaikan tindakan strategi di pasaran yang jelas arah trend. Ini boleh dicapai melalui purata bergerak jangka panjang atau indikator ADX, mengelakkan isyarat pulangan rata-rata yang salah dalam trend yang kuat.
  2. Penyesuaian Volatiliti: Mencapai penyesuaian penyesuaian sendiri parameter penilaian Z, mengoptimumkan kitaran asas secara automatik dan parameter kelancaran mengikut turun naik pasaran.
  3. Analisis pelbagai kerangka masaTanda penilaian Z yang mengintegrasikan jangka masa yang lebih tinggi sebagai pengesahan, hanya berdagang apabila beberapa isyarat jangka masa sama, mengurangkan isyarat palsu.
  4. Pencegahan kerosakan: Mampu mencapai hentian dinamik berdasarkan rentang turun naik penilaian Z, meningkatkan keupayaan pengurusan risiko. Sebagai contoh, hentian kerugian boleh ditetapkan sebagai kelipatan penyimpangan tertentu dari penilaian Z masuk.
  5. Sebahagian daripada keuntunganPelaksanaan strategi keuntungan berpecah-pecah, penyingkiran sebahagian kedudukan apabila penilaian Z mencapai penurunan nilai tertentu, pengendalian wang yang dioptimumkan.
  6. Pengesahan pesanan: Tambah analisis kuantiti transaksi sebagai pengesahan transaksi, hanya menjalankan transaksi apabila isyarat penilaian Z disokong oleh kuantiti transaksi, meningkatkan kualiti isyarat.
  7. Kumpulan Indeks: Menggabungkan skor Z dengan petunjuk statistik atau teknikal lain, seperti RSI atau Brinks, untuk mencipta model keputusan berbilang faktor dan meningkatkan kebolehpercayaan strategi.

ringkaskan

Strategi perdagangan statistik harga yang dioptimumkan secara dinamik berdasarkan crossover skor Z yang halus adalah sistem perdagangan ringkas berdasarkan prinsip statistik yang memberi tumpuan kepada menangkap penyimpangan dan regresi harga berbanding dengan nilai purata tempatan. Dengan pemprosesan yang halus, kawalan selang isyarat dan penapisan dinamik, strategi ini berkesan mengurangkan perdagangan bising dan meningkatkan kualiti isyarat. Strategi ini sangat sesuai untuk produk kewangan yang jelas dalam pasaran goyah dan tingkah laku regresi nilai purata.

Walau bagaimanapun, strategi juga mempunyai beberapa batasan, seperti bergantung pada hipotesis statistik, sensitiviti parameter dan keputusan faktor tunggal. Dengan menambah langkah-langkah pengoptimuman seperti pengenalan trend, penyesuaian turun naik, analisis jangka masa berbilang, mekanisme hentian kerugian, pengesahan kuantiti transaksi dan kombinasi faktor-faktor, strategi dapat meningkatkan ketangkasan dan prestasi dengan ketara.

Secara keseluruhannya, ia adalah satu asas teori yang kukuh, mewujudkan kerangka strategi yang ringkas, mudah difahami dan diperluaskan, sesuai sebagai komponen asas sistem perdagangan atau alat pendidikan untuk membantu peniaga memahami aplikasi statistik dalam perdagangan.

Kod sumber strategi
/*backtest
start: 2024-06-03 00:00:00
end: 2025-06-02 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=6
strategy("Price Statistical Strategy-Z Score V 1.01", overlay=true)

// === Enable / Disable Z-Score Strategy Block ===
enableZScore = input.bool(true, title="Enable Smoothed Z-Score Strategy", tooltip="When enabled, this block calculates a smoothed Z-Score of the closing price and generates entry/exit signals based on crossover behavior between short-term and long-term smoothed Z-Scores.\n\nRecommended for quick and classic detection of price deviation from mean.\nSensitive to outliers. Best suited for relatively normal-distributed market conditions.")

// === Z-Score Parameters ===
zBaseLength = input.int(3, minval=1, title="Z-Score Base Period")
shortSmooth = input.int(3, title="Short-Term Smoothing")
longSmooth = input.int(5, title="Long-Term Smoothing")

// === Z-Score Calculation Function ===
f_zscore(src, length) =>
    mean = ta.sma(src, length)
    std_dev = ta.stdev(src, length)
    z = (src - mean) / std_dev
    z

// === Z-Score Logic ===
zRaw = f_zscore(close, zBaseLength)
zShort = ta.sma(zRaw, shortSmooth)
zLong = ta.sma(zRaw, longSmooth)


// === Minimum gap between identical signals ===
gapBars = input.int(5, minval=1, title="Bars gap between identical signals", tooltip="Minimum number of bars required between two identical signals (entry or exit). Helps reduce signal noise.")


// === Candle-based momentum filters ===
bullish_3bars = close > close[1] and close[1] > close[2] and close[2] > close[3] and close[3] > close[4]
bearish_3bars = close < close[1] and close[1] < close[2] and close[2] < close[3] and close[3] < close[4]

// === Entry and Exit Logic with minimum signal gap and candle momentum filter ===
var int lastEntryBar = na
var int lastExitBar  = na

if enableZScore
    longCondition = (zShort > zLong)
    exitCondition = (zShort < zLong)

    if longCondition and (na(lastEntryBar) or bar_index - lastEntryBar > gapBars) and not bullish_3bars
        strategy.entry("Z Score", strategy.long)
        lastEntryBar := bar_index

    if exitCondition and (na(lastExitBar) or bar_index - lastExitBar > gapBars) and not bearish_3bars
        strategy.close("Z Score", comment="Z Score")
        lastExitBar := bar_index

// === Real-time PnL Table for Last Open Position ===
var table positionTable = table.new(position.bottom_right, 2, 2, border_width=1)

// Header Labels
table.cell(positionTable, 0, 0, "Entry Price", text_color=color.white, bgcolor=color.gray)
table.cell(positionTable, 1, 0, "Unrealized PnL (%)", text_color=color.white, bgcolor=color.gray)

// Values (only when position is open)
isLong        = strategy.position_size > 0
entryPrice    = strategy.position_avg_price
unrealizedPnL = isLong ? (close - entryPrice) / entryPrice * 100 : na

// Define dynamic text color for PnL
pnlColor = unrealizedPnL > 0 ? color.green : unrealizedPnL < 0 ? color.red : color.gray

// Update Table Content
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))