Strategi mengikuti tren berdasarkan skor Z

EMA
Tanggal Pembuatan: 2024-04-29 17:03:15 Akhirnya memodifikasi: 2024-04-29 17:03:15
menyalin: 0 Jumlah klik: 1206
1
fokus pada
1617
Pengikut

Strategi mengikuti tren berdasarkan skor Z

Ringkasan

Strategi pelacakan tren berbasis Z-value memanfaatkan indikator statistik Z-value untuk menangkap peluang tren dengan mengukur seberapa jauh harga menyimpang dari rata-rata bergeraknya dan menggunakan standard deviation sebagai skala penggabungan. Strategi ini terkenal karena kesederhanaan dan efektivitasnya, terutama untuk pasar di mana pergerakan harga sering kembali ke nilai rata-rata.

Prinsip Strategi

Inti dari strategi ini adalah menghitung nilai Z. Nilai Z dapat dihitung dengan menghitung perbedaan antara harga saat ini dengan indeks harga bergerak rata-rata (EMA) dengan panjang yang ditentukan pengguna, kemudian dibagi dengan standar harga dengan panjang yang sama:

z = (x - μ) / σ

Di antaranya, x adalah harga saat ini, μ adalah rata-rata EMA, σ adalah standar deviasi.

Sinyal perdagangan dihasilkan berdasarkan nilai Z melintasi ambang batas yang ditentukan:

  • Multiple entry: ketika Z-value melintasi positive threshold.
  • Bermain dengan banyak kepala: ketika Z turun melewati batas negatif.
  • Masuk dengan kepala kosong: saat Z turun melewati nilai negatif.
  • Berjalan dengan kepala kosong: ketika Z naik melewati titik positif.

Keunggulan Strategis

  1. Sederhana dan efektif: Strategi ini hanya bergantung pada beberapa parameter, mudah dipahami dan diterapkan, dan sangat efektif dalam menangkap peluang tren.
  2. Dasar statistik: Nilai Z sebagai alat statistik yang matang, memberikan dasar teoritis yang kuat untuk strategi tersebut.
  3. Adaptabilitas: Strategi ini dapat beradaptasi secara fleksibel dengan gaya perdagangan dan lingkungan pasar yang berbeda dengan menyesuaikan parameter seperti threshold, EMA, dan siklus perhitungan deviasi standar.
  4. Sinyal yang jelas: Sinyal perdagangan yang didasarkan pada nilai Z yang melintasi ambang batas sederhana dan jelas, yang membantu pengambilan keputusan dan eksekusi yang cepat.

Risiko Strategis

  1. Parameter sensitif: pengaturan parameter yang tidak tepat (seperti nilai ambang yang terlalu tinggi atau terlalu rendah) dapat menyebabkan sinyal perdagangan yang salah, kehilangan peluang, atau menyebabkan kerugian.
  2. Identifikasi tren: Strategi ini dapat mengalami sinyal palsu yang sering terjadi dan berkinerja buruk pada saat bergejolak atau penyesuaian pasar.
  3. Efek lag: Sebagai strategi pelacakan tren, sinyal masuk dan keluarnya memiliki keterlambatan tertentu, mungkin kehilangan waktu terbaik.

Risiko di atas dapat dikendalikan dan diatasi dengan analisis pasar yang berkelanjutan, optimasi parameter, dan pengendalian yang dilakukan dengan hati-hati berdasarkan pengukuran.

Arah optimasi strategi

  1. Dynamic Threshold: memperkenalkan threshold dinamis yang terkait dengan volatilitas, dapat secara efektif beradaptasi dengan berbagai kondisi pasar, meningkatkan kualitas sinyal.
  2. Indikator gabungan: mengintegrasikan indikator teknis lainnya seperti RSI, MACD, dan lain-lain, untuk konfirmasi kedua pada sinyal perdagangan, meningkatkan keandalan.
  3. Manajemen posisi: Mengintegrasikan mekanisme kontrol posisi seperti ATR, menurunkan posisi tepat waktu di pasar yang bergolak, menambah posisi tepat waktu di pasar yang sedang tren, mengoptimalkan rasio risiko keuntungan.
  4. Multi-skala waktu: Menghitung nilai Z di berbagai skala waktu, menangkap tren di berbagai tingkatan, dan memperkaya dimensi strategi.

Meringkaskan

Strategi pelacakan tren berbasis nilai Z, dengan karakteristiknya yang sederhana, stabil, dan fleksibel, memberikan perspektif yang unik untuk menangkap peluang tren. Dengan pengaturan parameter yang masuk akal, manajemen risiko yang bijaksana, dan pengoptimalan berkelanjutan, strategi ini diharapkan dapat menjadi pembantu kuat bagi pedagang kuantitatif untuk bergerak maju di pasar yang berubah-ubah.

Kode Sumber Strategi
/*backtest
start: 2023-04-23 00:00:00
end: 2024-04-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © PresentTrading

// This strategy employs a statistical approach by using a Z-score, which measures the deviation of the price from its moving average normalized by the standard deviation.
// Very simple and effective approach

//@version=5
strategy('Price Based Z-Trend - strategy [presentTrading]',shorttitle = 'Price Based Z-Trend - strategy [presentTrading]', overlay=false, precision=3, 
         commission_value=0.1, commission_type=strategy.commission.percent, slippage=1, 
         currency=currency.USD, default_qty_type=strategy.percent_of_equity, default_qty_value=10, initial_capital=10000)

// User-definable parameters for the Z-score calculation and bar coloring
tradeDirection = input.string("Both", "Trading Direction", options=["Long", "Short", "Both"]) // User selects trading direction

priceDeviationLength = input.int(100, "Standard Deviation Length", step=1) // Length for standard deviation calculation
priceAverageLength = input.int(100, "Average Length", step=1) // Length for moving average calculation
Threshold = input.float(1, "Threshold", step=0.1) // Number of standard deviations for Z-score threshold
priceBar = input(title='Bar Color', defval=true) // Toggle for coloring price bars based on Z-score


// Z-score calculation based on user input for the price source (typically the closing price)
priceSource = input(close, title="Source")
priceZScore = (priceSource - ta.ema(priceSource, priceAverageLength)) / ta.stdev(priceSource, priceDeviationLength) // Z-score calculation

// Conditions for entering and exiting trades based on Z-score crossovers
priceLongCondition = ta.crossover(priceZScore, Threshold) // Condition to enter long positions
priceExitLongCondition = ta.crossunder(priceZScore, -Threshold) // Condition to exit long positions

longEntryCondition = ta.crossover(priceZScore, Threshold)
longExitCondition = ta.crossunder(priceZScore, -Threshold)
shortEntryCondition = ta.crossunder(priceZScore, -Threshold)
shortExitCondition = ta.crossover(priceZScore, Threshold)


// Strategy conditions and execution based on Z-score crossovers and trading direction
if (tradeDirection == "Long" or tradeDirection == "Both") and longEntryCondition
    strategy.entry("Long", strategy.long) // Enter a long position

if (tradeDirection == "Long" or tradeDirection == "Both") and longExitCondition
    strategy.close("Long") // Close the long position

if (tradeDirection == "Short" or tradeDirection == "Both") and shortEntryCondition
    strategy.entry("Short", strategy.short) // Enter a short position

if (tradeDirection == "Short" or tradeDirection == "Both") and shortExitCondition
    strategy.close("Short") // Close the short position


// Dynamic Thresholds Visualization using 'plot'
plot(Threshold, "Dynamic Entry Threshold", color=color.new(color.green, 50))
plot(-Threshold, "Dynamic Short Entry Threshold", color=color.new(color.red, 50))


// Color-coding Z-Score
priceZScoreColor = priceZScore > Threshold ? color.green : 
              priceZScore < -Threshold ? color.red : color.blue
plot(priceZScore, "Z-Score", color=priceZScoreColor)

// Lines
hline(0, color=color.rgb(255, 255, 255, 50), linestyle=hline.style_dotted)

// Bar Color
priceBarColor = priceZScore > Threshold ? color.green :
           priceZScore > 0 ? color.lime :
           priceZScore < Threshold ? color.maroon :
           priceZScore < 0 ? color.red : color.black
barcolor(priceBar ? priceBarColor : na)