Strategi perdagangan kuantitatif indikator Fibonacci retracement dan ekstensi berganda

EMA
Tanggal Pembuatan: 2024-11-12 10:51:02 Akhirnya memodifikasi: 2024-11-12 10:51:02
menyalin: 1 Jumlah klik: 514
1
fokus pada
1617
Pengikut

Strategi perdagangan kuantitatif indikator Fibonacci retracement dan ekstensi berganda

Ringkasan

Strategi ini adalah sistem perdagangan kuantitatif kompleks yang didasarkan pada level pengunduran diri dan perpanjangan Fibonacci, dikombinasikan dengan penilaian tren rata-rata EMA. Strategi ini melakukan perdagangan dengan mengidentifikasi resistensi pendukung penting di pasar, dikombinasikan dengan sinyal tren. Sistem ini menggunakan 20 siklus dan 50 siklus EMA untuk menilai tren pasar, dan menggunakan level pengunduran diri Fibonacci untuk mencari peluang perdagangan terbaik berdasarkan pada ini.

Prinsip Strategi

Logika inti dari strategi ini terdiri dari tiga bagian utama: pertama, menghitung harga tertinggi dan terendah selama hampir 10 siklus untuk menentukan kisaran pergerakan harga; kedua, menghitung lima tingkat pengembalian Fibonacci kunci berdasarkan kisaran ini: 0,236, 0,382, 0,5, 0,618, 0,786; dan terakhir, menentukan arah tren melalui persimpangan 20 dan 50 siklus EMA. Dalam tren naik, beberapa sinyal dikirim ketika harga menembus batas pengembalian; dalam tren turun, sinyal kosong dikirim ketika harga jatuh dari batas pengembalian.

Keunggulan Strategis

  1. Menggabungkan dua konsep perdagangan, yaitu trend tracking dan price retraction, untuk meningkatkan akurasi perdagangan.
  2. Menggunakan rangkaian Fibonacci sebagai tingkat harga kunci, yang memiliki makna psikologis yang kuat di pasar
  3. Mengukur tren melalui EMA rata-rata, menghindari sering berdagang di pasar horizontal
  4. Desain sistem yang sederhana, mudah dipahami dan dipertahankan
  5. Dapat diterapkan untuk berbagai periode waktu, memiliki adaptasi yang kuat

Risiko Strategis

  1. Di pasar yang sangat bergejolak, sinyal palsu bisa muncul.
  2. Bergantung pada keberlanjutan tren, mungkin tidak akan berjalan dengan baik di pasar yang bergoyang
  3. Perhitungan tingkat penarikan didasarkan pada titik tertinggi dan terendah dalam sejarah, yang mungkin tertinggal dari pasar.
  4. Pemilihan titik masuk mungkin tidak cukup akurat, menyebabkan posisi stop loss yang lebih jauh
  5. Sistem tidak memiliki mekanisme manajemen posisi yang dinamis

Arah optimasi strategi

  1. Menggunakan indikator volume transaksi untuk meningkatkan akurasi penilaian tren
  2. Meningkatkan mekanisme stop loss dinamis untuk mengendalikan risiko dengan lebih baik
  3. Optimalkan siklus perhitungan tingkat penarikan agar lebih sesuai dengan ritme pasar
  4. Menambahkan filter volatilitas untuk menghindari perdagangan di saat volatilitas tinggi
  5. Desain sistem manajemen posisi yang lebih fleksibel, menyesuaikan jumlah kepemilikan sesuai dengan kondisi pasar

Meringkaskan

Strategi ini membangun sistem perdagangan yang relatif lengkap dengan menggabungkan alat analisis teknis klasik. Meskipun ada beberapa tempat yang perlu dioptimalkan, kerangka kerja keseluruhan memiliki kemampuan pasar yang baik. Dengan terus-menerus dioptimalkan dan ditingkatkan, strategi ini diharapkan untuk mencapai kinerja yang lebih baik dalam perdagangan nyata.

Kode Sumber Strategi
/*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")