Sumber daya yang dimuat... Pemuatan...

Fibonacci Retracement dan Ekstensi Multi-Indikator Strategi Perdagangan Kuantitatif

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

img

Gambaran umum

Strategi ini adalah sistem perdagangan kuantitatif komposit berdasarkan retracement Fibonacci dan tingkat ekstensi, dikombinasikan dengan penentuan tren EMA. Strategi ini mengidentifikasi tingkat dukungan dan resistensi penting di pasar dan mengeksekusi perdagangan berdasarkan sinyal tren. Sistem ini menggunakan EMA 20-periode dan 50-periode untuk menentukan tren pasar dan memanfaatkan tingkat retracement Fibonacci untuk menemukan peluang perdagangan yang optimal.

Prinsip Strategi

Logika inti terdiri dari tiga komponen utama: Pertama, menghitung harga tertinggi dan terendah selama 10 periode terakhir untuk menentukan kisaran harga; Kedua, menghitung lima tingkat retracement Fibonacci utama (0.236, 0.382, 0.5, 0.618, 0.786) berdasarkan kisaran ini; Akhirnya, menentukan arah tren melalui persilangan EMA 20 dan 50 periode. Sinyal beli dihasilkan ketika harga melanggar di atas tingkat retracement dalam tren naik, sementara sinyal jual dipicu ketika harga melanggar di bawah tingkat retracement dalam tren turun.

Keuntungan Strategi

  1. Menggabungkan konsep trend berikut dan harga retracement, meningkatkan akurasi perdagangan
  2. Menggunakan urutan Fibonacci sebagai tingkat harga kunci yang memiliki signifikansi psikologis yang kuat di pasar
  3. Menggunakan EMA crossovers untuk identifikasi tren, menghindari perdagangan sering di berbagai pasar
  4. Menampilkan desain sistem yang bersih yang mudah dipahami dan dipelihara
  5. Beradaptasi dengan kerangka waktu yang berbeda, menunjukkan fleksibilitas yang kuat

Risiko Strategi

  1. Dapat menghasilkan sinyal palsu di pasar yang sangat volatile
  2. Bergantung pada kelanjutan tren, berpotensi berkinerja buruk di berbagai pasar
  3. Perhitungan tingkat retracement berdasarkan rekor tertinggi dan terendah dalam sejarah mungkin tertinggal dari pasar
  4. Pemilihan titik masuk mungkin tidak cukup tepat, menyebabkan kerugian berhenti yang lebih luas
  5. Sistem tidak memiliki mekanisme manajemen posisi dinamis

Arah Optimasi Strategi

  1. Menggabungkan indikator volume untuk meningkatkan akurasi penentuan tren
  2. Mengimplementasikan mekanisme stop loss yang dinamis untuk pengendalian risiko yang lebih baik
  3. Mengoptimalkan periode perhitungan tingkat retracement agar lebih sesuai dengan ritme pasar
  4. Tambahkan filter volatilitas untuk menghindari perdagangan selama periode volatilitas tinggi
  5. Merancang sistem manajemen posisi yang lebih fleksibel yang menyesuaikan kepemilikan berdasarkan kondisi pasar

Ringkasan

Strategi ini membangun sistem perdagangan yang relatif lengkap dengan menggabungkan alat analisis teknis klasik. Meskipun ada area untuk optimasi, kerangka kerja keseluruhan menunjukkan kemampuan beradaptasi pasar yang baik. Melalui optimasi dan perbaikan terus-menerus, strategi menunjukkan janji untuk kinerja yang lebih baik dalam perdagangan aktual.


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