Strategi Perdagangan Statistik Harga Momentum yang Dioptimalkan Berdasarkan Crossover Z-Score yang Dihaluskan

Z-SCORE SMA stdev PNL Momentum Filter
Tanggal Pembuatan: 2025-06-03 10:44:56 Akhirnya memodifikasi: 2025-06-03 10:44:56
menyalin: 0 Jumlah klik: 330
2
fokus pada
319
Pengikut

Strategi Perdagangan Statistik Harga Momentum yang Dioptimalkan Berdasarkan Crossover Z-Score yang Dihaluskan Strategi Perdagangan Statistik Harga Momentum yang Dioptimalkan Berdasarkan Crossover Z-Score yang Dihaluskan

Ringkasan

Strategi ini didasarkan pada konsep statistik Z-Score, yang digunakan untuk mengidentifikasi statistical deviasi harga terhadap rata-rata lokalnya. Strategi ini menghitung Z-Score untuk harga close out, dan kemudian menerapkan rata-rata bergerak jangka pendek dan jangka panjang untuk meluruskan skor Z-Score. Strategi ini menghasilkan sinyal masuk multihead ketika melewati skor Z-Score jangka panjang di atas skor Z-Score jangka pendek, dan menghasilkan sinyal leveling ketika melewati skor Z-Score jangka panjang di bawah skor Z-Score jangka pendek. Strategi ini juga menyertakan kontrol interval sinyal dan filter berdasarkan volume dinamis untuk mengurangi noise trading.

Prinsip Strategi

Inti dari strategi ini adalah perhitungan dan penerapan Z-scoring. Z-scoring adalah sebuah statistik yang digunakan untuk mengukur seberapa jauh sebuah titik data dari rata-rata sampel, dalam satuan standar deviasi. Dalam strategi ini, rumus untuk menghitung Z-scoring adalah: Z = (harga close-out - SMA ((harga close-out, N)) / STDEV ((harga close-out, N)) N adalah siklus dasar yang didefinisikan pengguna.

Proses implementasi kebijakan adalah sebagai berikut:

  1. Perhitungan skor Z awal dari harga closeout
  2. Aplikasi jangka pendek ke peringkat Z asli (SMA)
  3. Long term smoothing (SMA) diterapkan pada Z-rating asli
  4. Ketika memakai skor Z long-term smooth over short-term smooth Z, jika memenuhi persyaratan tambahan, maka akan melakukan overtrading
  5. Ketika mengenakan Long-Term Smooth Z Rating di bawah Short-Term Smooth Z Rating, jika memenuhi kondisi tambahan, maka posisi akan dipadamkan

Kondisi tambahan meliputi:

  • Jarak sinyal: antara dua jenis sinyal yang sama (input atau output) harus ada jarak minimal antara K-line
  • Penyaringan momentum: Dilarang masuk jika ada tiga atau lebih garis K naik secara berurutan; Dilarang keluar jika ada tiga atau lebih garis K turun secara berurutan

Keunggulan Strategis

  1. Statistik DasarSkor Z adalah alat statistik yang telah terbukti efektif untuk mengidentifikasi seberapa jauh harga menyimpang dari nilai rata-rata, yang cocok untuk menangkap peluang harga untuk kembali ke nilai rata-rata.
  2. Pengolahan halus: Mengurangi kebisingan dan meningkatkan kualitas sinyal dengan menerapkan kelancaran jangka pendek dan jangka panjang pada skor Z asli.
  3. Kontrol jarak sinyalDengan pengaturan interval sinyal minimum, secara efektif mengurangi over-trading dan sinyal berulang.
  4. Penyaringan momentumHal ini dilakukan untuk menghindari kerugian yang tidak perlu dalam kondisi yang kuat dengan melarang perdagangan berlawanan arah dalam tren yang kuat.
  5. KesederhanaanStrategi: Strategi hanya menggunakan data harga close out, tidak bergantung pada kombinasi indikator yang rumit, mudah dipahami dan diterapkan.
  6. Pemantauan real-time: berisi tabel yang menunjukkan kerugian yang belum tercapai secara real-time, sehingga memudahkan pedagang memantau status kepemilikan posisinya.
  7. Fleksibilitas parameter: Pengguna dapat menyesuaikan siklus dasar Z-Rating dan parameter kelancaran sesuai dengan pasar dan kerangka waktu yang berbeda untuk meningkatkan fleksibilitas.

Risiko Strategis

  1. Risiko hipotesis statistikSkor Z mengasumsikan distribusi harga yang mendekati normal, yang mungkin berkinerja buruk dalam lingkungan pasar yang tidak normal.
  2. Parameter SensitivitasZ-score: Periode dasar dan pilihan parameter smoothing memiliki pengaruh yang signifikan terhadap kinerja strategi, pilihan parameter yang tidak tepat dapat menyebabkan overfitting atau lag sinyal.
  3. Pembatasan faktor tunggalStrategi ini hanya didasarkan pada sinyal cross-generasi skor Z, kurangnya indikator konfirmasi lainnya, yang dapat menyebabkan sinyal palsu.
  4. Ketergantungan lingkungan pasarDalam pasar tren yang kuat, strategi yang didasarkan pada regresi rata-rata dapat terus menghasilkan sinyal yang salah.
  5. Keterlambatan sinyal: Karena menggunakan rata-rata bergerak yang mulus, sinyal dapat terlambat, kehilangan titik masuk atau keluar terbaik.

Solusi:

  • Melakukan retrospeksi terhadap berbagai kondisi pasar untuk menemukan kombinasi optimal
  • Kombinasi dengan filter tren untuk mengurangi atau menonaktifkan perdagangan di pasar tren yang kuat
  • Menambahkan indikator konfirmasi tambahan seperti analisis volume transaksi atau indikator teknis lainnya
  • Pertimbangkan untuk menggunakan parameter adaptasi, menyesuaikan parameter Z-score secara otomatis sesuai dengan volatilitas pasar

Arah optimasi

  1. Mengidentifikasi dan mengintegrasikan tren: Menambahkan komponen identifikasi tren, untuk menyesuaikan tindakan strategi di pasar dengan arah tren yang jelas. Hal ini dapat dilakukan dengan rata-rata bergerak jangka panjang atau indikator ADX, untuk menghindari sinyal pengembalian rata-rata yang salah dalam tren yang kuat.
  2. Adaptasi volatilitas: Membuat penyesuaian adaptif dari parameter penilaian Z, mengoptimalkan siklus dasar dan parameter smoothing secara otomatis sesuai dengan volatilitas pasar. Ini akan meningkatkan kehandalan strategi dalam berbagai lingkungan pasar.
  3. Analisis multi-frame waktu: Mengintegrasikan sinyal skor Z dari frame waktu yang lebih tinggi sebagai konfirmasi, hanya berdagang ketika sinyal dari beberapa frame waktu sesuai, mengurangi sinyal palsu.
  4. Mekanisme Stop Loss: Membuat stop loss dinamis berdasarkan rentang fluktuasi Z-rating, meningkatkan kemampuan manajemen risiko. Misalnya, stop loss dapat diatur sebagai kelipatan deviasi tertentu dari Z-rating masuk.
  5. Bagian dari keuntunganImplementasi strategi profit split, penutupan sebagian posisi pada saat nilai Z mencapai nilai terendah tertentu, pengelolaan dana yang dioptimalkan
  6. Konfirmasi pengiriman: Menambahkan analisis volume transaksi sebagai konfirmasi transaksi, melakukan transaksi hanya jika sinyal Z-rating didukung oleh volume transaksi, meningkatkan kualitas sinyal.
  7. Komposisi Indeks: Menggabungkan skor Z dengan indikator statistik atau teknis lainnya, seperti RSI atau Bollinger Bands, untuk menciptakan model keputusan multi-faktor dan meningkatkan keandalan strategi.

Meringkaskan

Strategi perdagangan statistik harga yang dioptimalkan secara dinamis berdasarkan crossover skor Z yang halus adalah sistem perdagangan sederhana yang didasarkan pada prinsip-prinsip statistik yang berfokus pada menangkap deviasi dan regresi harga terhadap rata-rata lokalnya. Strategi ini secara efektif mengurangi perdagangan noise dan meningkatkan kualitas sinyal melalui pemrosesan yang halus, kontrol interval sinyal, dan penyaringan dinamis. Strategi ini sangat cocok untuk produk keuangan dengan pasar bergoyang dan perilaku regresi rata-rata yang jelas.

Namun, ada juga beberapa keterbatasan dari strategi, seperti ketergantungan pada asumsi statistik, sensitivitas parameter, dan pengambilan keputusan faktor tunggal. Dengan menambahkan identifikasi tren, penyesuaian volatilitas, analisis multi-frame time frame, mekanisme stop loss, pengakuan volume transaksi, dan kombinasi faktor-faktor, langkah-langkah optimasi dapat secara signifikan meningkatkan kecurangan dan kinerja strategi.

Secara keseluruhan, ini adalah dasar teoritis yang kuat, yang memungkinkan kerangka strategi yang ringkas, mudah dipahami dan dapat diperluas, cocok sebagai komponen dasar sistem perdagangan atau alat pendidikan untuk membantu pedagang memahami aplikasi statistik dalam perdagangan.

Kode 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))