Anjakan Fibonacci dan strategi perdagangan kuantitatif penunjuk berbilang lanjutan

EMA
Tarikh penciptaan: 2024-11-12 10:51:02 Akhirnya diubah suai: 2024-11-12 10:51:02
Salin: 1 Bilangan klik: 514
1
fokus pada
1617
Pengikut

Anjakan Fibonacci dan strategi perdagangan kuantitatif penunjuk berbilang lanjutan

Gambaran keseluruhan

Strategi ini adalah sistem perdagangan kuantitatif kompleks berdasarkan tahap penarikan balik dan lanjutan Fibonacci, digabungkan dengan penilaian trend EMA rata-rata. Strategi ini melakukan perdagangan dengan mengenal pasti tahap rintangan sokongan penting di pasaran, digabungkan dengan isyarat trend. Sistem ini menggunakan 20 kitaran dan 50 kitaran EMA rata-rata untuk menilai trend pasaran, dan menggunakan tahap penarikan balik Fibonacci untuk mencari peluang perdagangan terbaik.

Prinsip Strategi

Logik teras strategi ini terdiri daripada tiga bahagian utama: pertama, mengira harga tertinggi dan terendah selama hampir 10 kitaran untuk menentukan julat pergerakan harga; kedua, mengira lima tahap pengunduran Fibonacci yang penting berdasarkan julat ini: 0.236, 0.382, 0.5, 0.618, 0.786); dan terakhir, menentukan arah trend melalui persilangan 20 dan 50 EMA kitaran. Dalam tren naik, banyak isyarat dikeluarkan apabila harga menembusi tahap pengunduran; dalam tren turun, isyarat kosong dikeluarkan apabila harga jatuh dari tahap pengunduran.

Kelebihan Strategik

  1. Menggabungkan konsep perdagangan trend dan harga pulangan, meningkatkan ketepatan perdagangan
  2. Menggunakan nombor Fibonacci sebagai tahap harga kritikal yang mempunyai makna psikologi yang kuat di pasaran
  3. Mengambil keputusan mengenai trend melalui EMA untuk mengelakkan dagangan yang kerap berlaku di pasaran setapak
  4. Reka bentuk sistem ringkas, mudah difahami dan dikekalkan
  5. Ia boleh digunakan untuk tempoh masa yang berbeza, dengan kebolehlakuan yang kuat

Risiko Strategik

  1. Ia mungkin memberi isyarat palsu dalam pasaran yang bergolak
  2. Bergantung kepada kesinambungan trend, mungkin kurang baik dalam pasaran yang bergolak
  3. Pengiraan tahap penarikan balik berdasarkan paras tertinggi dan terendah yang pernah berlaku dan mungkin ketinggalan pasaran
  4. Pilihan titik masuk mungkin tidak cukup tepat, menyebabkan kedudukan hentian yang jauh
  5. Sistem kekurangan mekanisme pengurusan kedudukan yang dinamik

Arah pengoptimuman strategi

  1. Memperkenalkan penunjuk kuantiti untuk meningkatkan ketepatan penilaian trend
  2. Menambah mekanisme Hentikan Kerosakan Dinamik untuk mengawal risiko dengan lebih baik
  3. Mengoptimumkan kitaran pengiraan tahap penarikan balik agar lebih sesuai dengan kadar pasaran
  4. Menambah penapis kadar turun naik untuk mengelakkan dagangan semasa turun naik yang tinggi
  5. Merancang sistem pengurusan kedudukan yang lebih fleksibel, menyesuaikan jumlah pegangan mengikut keadaan pasaran

ringkaskan

Strategi ini membina sistem perdagangan yang agak lengkap dengan menggabungkan alat analisis teknikal klasik. Walaupun terdapat beberapa tempat yang perlu dioptimumkan, kerangka keseluruhan mempunyai kesesuaian pasaran yang baik. Dengan pengoptimuman dan penambahbaikan berterusan, strategi ini dijangka dapat mencapai prestasi yang lebih baik dalam perdagangan sebenar.

Kod 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")