Sumber dimuat naik... memuat...

Fibonacci Retracement dan Peluasan Multi-Indikator Strategi Dagangan Kuantitatif

Penulis:ChaoZhang, Tarikh: 2024-11-12 10:51:02
Tag:EMA

img

Ringkasan

Strategi ini adalah sistem perdagangan kuantitatif komposit berdasarkan retracement Fibonacci dan tahap lanjutan, digabungkan dengan penentuan trend EMA. Strategi ini mengenal pasti tahap sokongan dan rintangan penting di pasaran dan melaksanakan perdagangan berdasarkan isyarat trend. Sistem ini menggunakan EMA 20 tempoh dan 50 tempoh untuk menentukan trend pasaran dan menggunakan tahap retracement Fibonacci untuk mencari peluang perdagangan yang optimum.

Prinsip Strategi

Logik teras terdiri daripada tiga komponen utama: Pertama, ia mengira harga tertinggi dan terendah selama 10 tempoh yang lalu untuk menentukan julat harga; Kedua, ia mengira lima tahap retracement Fibonacci utama (0.236, 0.382, 0.5, 0.618, 0.786) berdasarkan julat ini; Akhirnya, ia menentukan arah trend melalui persilangan EMA 20 dan 50 tempoh. Isyarat beli dihasilkan apabila harga memecahkan di atas tahap retracement dalam trend menaik, sementara isyarat jual dicetuskan apabila harga memecahkan di bawah tahap retracement dalam trend menurun.

Kelebihan Strategi

  1. Menggabungkan konsep trend berikut dan harga retracement, meningkatkan ketepatan perdagangan
  2. Menggunakan urutan Fibonacci sebagai tahap harga utama yang memegang kepentingan psikologi yang kuat di pasaran
  3. Menggunakan silang EMA untuk pengenalan trend, mengelakkan perdagangan kerap di pasaran yang berbeza
  4. Mempunyai reka bentuk sistem yang bersih yang mudah difahami dan dikekalkan
  5. Sesuai dengan jangka masa yang berbeza, menunjukkan fleksibiliti yang kuat

Risiko Strategi

  1. Boleh menghasilkan isyarat palsu di pasaran yang sangat tidak menentu
  2. Bergantung pada kesinambungan trend, berpotensi kurang berprestasi di pelbagai pasaran
  3. Pengiraan tahap retracement berdasarkan paras tertinggi dan terendah dalam sejarah mungkin ketinggalan pasaran
  4. Pilihan titik masuk mungkin tidak cukup tepat, yang membawa kepada kerugian berhenti yang lebih luas
  5. Sistem tidak mempunyai mekanisme pengurusan kedudukan dinamik

Arahan Pengoptimuman Strategi

  1. Menggabungkan penunjuk jumlah untuk meningkatkan ketepatan penentuan trend
  2. Melaksanakan mekanisme stop-loss dinamik untuk kawalan risiko yang lebih baik
  3. Mengoptimumkan tempoh pengiraan tahap retracement untuk lebih sesuai dengan irama pasaran
  4. Tambah penapis turun naik untuk mengelakkan perdagangan semasa tempoh turun naik yang tinggi
  5. Merancang sistem pengurusan kedudukan yang lebih fleksibel yang menyesuaikan pegangan berdasarkan keadaan pasaran

Ringkasan

Strategi ini membina sistem dagangan yang agak lengkap dengan menggabungkan alat analisis teknikal klasik. Walaupun terdapat bidang untuk pengoptimuman, kerangka keseluruhan menunjukkan kemampuan penyesuaian pasaran yang baik. Melalui pengoptimuman dan penambahbaikan yang berterusan, strategi menunjukkan janji untuk prestasi yang lebih baik dalam perdagangan sebenar.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-11 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Fibonacci Retracement and Extension Strategy", overlay=true)

// Define the Fibonacci levels for retracement and extension
fibRetracementLevels = array.new_float(5)
array.set(fibRetracementLevels, 0, 0.236)
array.set(fibRetracementLevels, 1, 0.382)
array.set(fibRetracementLevels, 2, 0.5)
array.set(fibRetracementLevels, 3, 0.618)
array.set(fibRetracementLevels, 4, 0.786)

fibExtensionLevels = array.new_float(5)
array.set(fibExtensionLevels, 0, 1.618)
array.set(fibExtensionLevels, 1, 2.618)
array.set(fibExtensionLevels, 2, 3.618)
array.set(fibExtensionLevels, 3, 4.236)
array.set(fibExtensionLevels, 4, 5.618)

// Calculate the high and low prices for the last 10 bars
highPrice = ta.highest(high, 10)
lowPrice = ta.lowest(low, 10)

// Calculate the Fibonacci retracement levels
fibRetracement = array.new_float(5)
for i = 0 to 4
    array.set(fibRetracement, i, highPrice - (highPrice - lowPrice) * array.get(fibRetracementLevels, i))

// Calculate the trend using the Exponential Moving Average (EMA)
shortEMA = ta.ema(close, 20)
longEMA = ta.ema(close, 50)

// Define the trend conditions
isUptrend = shortEMA > longEMA
isDowntrend = shortEMA < longEMA

// Generate buy and sell signals
var float lastFibRetracementLevel = na
var float lastFibExtensionLevel = na

// Buy condition: price crosses above the highest retracement level
if (isUptrend)
    for i = 0 to 4
        if (close > array.get(fibRetracement, i))
            lastFibRetracementLevel := array.get(fibRetracement, i)
            strategy.entry("Buy", strategy.long)

// Sell condition: price crosses below the lowest retracement level
if (isDowntrend)
    for i = 0 to 4
        if (close < array.get(fibRetracement, i))
            lastFibRetracementLevel := array.get(fibRetracement, i)
            strategy.entry("Sell", strategy.short)

// Plotting the Fibonacci levels on the chart
// for i = 0 to 4
//     line.new(bar_index[10], array.get(fibRetracement, i), bar_index, array.get(fibRetracement, i), color=color.new(color.blue, 70), width=1)

// Plot the EMAs
plot(shortEMA, color=color.red, title="Short EMA")
plot(longEMA, color=color.blue, title="Long EMA")

Berkaitan

Lebih lanjut