Sumber dimuat naik... memuat...

Trend Z-Score Mengikut Strategi

Penulis:ChaoZhang, Tarikh: 2024-04-29 17:03:15
Tag:EMA

img

Ringkasan

Z-Score Trend Following Strategy menggunakan Z-score, satu ukuran statistik yang mengukur penyimpangan harga dari purata bergerak, dinormalisasi terhadap penyimpangan standardnya. Strategi ini menonjol kerana kesederhanaan dan keberkesanannya, terutamanya di pasaran di mana pergerakan harga sering kembali ke purata. Tidak seperti sistem yang lebih kompleks yang mungkin bergantung pada banyak penunjuk, strategi Z-Trend memberi tumpuan kepada pergerakan harga yang jelas dan signifikan secara statistik, menjadikannya ideal untuk peniaga yang lebih suka pendekatan yang disederhanakan dan didorong oleh data.

Prinsip Strategi

Pusat kepada strategi ini adalah pengiraan Z-score. Ia diperolehi dengan mengambil perbezaan antara harga semasa dan Exponential Moving Average (EMA) harga pada panjang yang ditakrifkan oleh pengguna, kemudian membahagikan ini dengan penyimpangan standard harga pada panjang yang sama:

z = (x - μ) / σ

Di mana x adalah harga semasa, μ adalah purata EMA, dan σ adalah penyimpangan standard.

Isyarat dagangan dihasilkan berdasarkan Z-score yang melintasi ambang yang telah ditentukan:

  • Long Entry: Apabila skor Z melintasi ambang positif.
  • Keluar panjang: Apabila skor Z jatuh di bawah ambang negatif.
  • Entry Pendek: Apabila skor Z jatuh di bawah ambang negatif.
  • Keluar Pendek: Apabila skor Z meningkat di atas ambang positif.

Kelebihan Strategi

  1. Kesederhanaan dan keberkesanan: Strategi ini bergantung pada beberapa parameter, mudah difahami dan dilaksanakan, sementara sangat berkesan dalam menangkap peluang trend.
  2. Asas statistik: Z-score, sebagai alat statistik yang mapan, menyediakan asas teori yang kukuh untuk strategi.
  3. Kebolehsesuaian: Dengan menyesuaikan parameter seperti ambang, EMA, dan tempoh pengiraan penyimpangan standard, strategi dapat menyesuaikan diri dengan fleksibel dengan pelbagai gaya perdagangan dan persekitaran pasaran.
  4. Isyarat yang jelas: Isyarat dagangan berdasarkan silang Z-score adalah mudah, memudahkan pengambilan keputusan dan pelaksanaan yang cepat.

Risiko Strategi

  1. Sensitiviti parameter: Tetapan parameter yang tidak sesuai (contohnya, ambang yang terlalu tinggi atau rendah) boleh memutarbalikkan isyarat perdagangan, yang membawa kepada peluang yang hilang atau kerugian.
  2. Pengesanan trend: Dalam pasaran yang bergelora atau berkisar, strategi mungkin menghadapi isyarat palsu yang kerap dan kurang berprestasi.
  3. Kesan Lag: Sebagai strategi trend-mengikut, isyarat masuk dan keluarnya secara semula jadi lag, berpotensi kehilangan masa yang optimum.

Risiko-risiko ini boleh diurus dan dikurangkan melalui analisis pasaran yang berterusan, pengoptimuman parameter, dan pelaksanaan yang berhati-hati berdasarkan pengujian belakang.

Arahan Pengoptimuman Strategi

  1. Sempadan dinamik: Memperkenalkan ambang dinamik berasaskan turun naik dapat menyesuaikan diri dengan berkesan dengan keadaan pasaran yang berbeza dan meningkatkan kualiti isyarat.
  2. Gabungan penunjuk: Mengintegrasikan penunjuk teknikal lain seperti RSI, MACD, dan lain-lain, untuk pengesahan sekunder isyarat perdagangan boleh meningkatkan kebolehpercayaan.
  3. Ukuran kedudukan: Menggabungkan mekanisme kawalan kedudukan seperti ATR dapat membantu mengurangkan pendedahan tepat pada masanya di pasaran yang bergolak dan meningkatkannya dalam yang sedang berkembang, mengoptimumkan nisbah risiko-balasan.
  4. Pelbagai kerangka masa: Mengira skor Z dalam pelbagai kerangka masa dapat menangkap trend pada tahap yang berbeza, memperkaya dimensi strategi.

Ringkasan

Strategi Pengikut Trend Z-Score, dengan kesederhanaan, ketahanan, dan fleksibiliti, menawarkan perspektif yang unik untuk menangkap peluang trend. Melalui tetapan parameter yang betul, pengurusan risiko yang berhati-hati, dan pengoptimuman berterusan, strategi ini boleh menjadi alat yang kuat bagi peniaga kuantitatif untuk menavigasi pasaran yang sentiasa berubah dengan keyakinan.


/*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)


Berkaitan

Lebih lanjut