Strategi perdagangan kuantitatif pelacakan tren bersyarat berganda berdasarkan level Fibonacci retracement

SL MA TP ATR
Tanggal Pembuatan: 2024-12-20 15:55:57 Akhirnya memodifikasi: 2024-12-20 15:55:57
menyalin: 1 Jumlah klik: 420
1
fokus pada
1617
Pengikut

Strategi perdagangan kuantitatif pelacakan tren bersyarat berganda berdasarkan level Fibonacci retracement

Ringkasan

Strategi ini adalah strategi pelacakan tren yang didasarkan pada level Fibonacci retracement. Strategi ini terutama menggunakan tingkat Fibonacci retracement yang penting untuk menghitung harga tertinggi dan terendah pada hari perdagangan sebelumnya, menggabungkan posisi harga buka dan jendela waktu untuk mengatur beberapa kondisi masuk, dan mengatur posisi stop loss yang sesuai untuk kondisi yang berbeda, sehingga memungkinkan pengendalian tren dan kontrol risiko.

Prinsip Strategi

Strategi pertama menghitung enam tingkat pengembalian Fibonacci kunci: 0, 23,6%, 38,2%, 50%, 61,8% dan 100%. Berdasarkan posisi harga bukaan terhadap tingkat ini, syarat masuk dibagi menjadi tiga situasi: 1) harga bukaan antara 23,6%-50%; 2) harga bukaan adalah 61,8% dan pada jendela waktu yang ditentukan; 3) harga bukaan lebih rendah dari 23,6% dan lebih rendah dari titik rendah hari sebelumnya.

Keunggulan Strategis

  1. Menggunakan level Fibonacci retracement sebagai resistance level pendukung yang sangat kuat di pasar.
  2. Pengertian yang lebih akurat dari strategi ini, dikombinasikan dengan jendela waktu dan posisi harga.
  3. Penetapan posisi stop loss yang sesuai untuk situasi yang berbeda, mencerminkan fleksibilitas manajemen risiko.
  4. Logika strategi yang jelas, parameter yang dapat disesuaikan, mudah untuk dioptimalkan sesuai dengan situasi pasar yang berbeda.

Risiko Strategis

  1. Efektivitas tingkat penarikan Fibonacci dapat dikurangi oleh kondisi pasar.
  2. Pengaturan jendela waktu tetap dapat melewatkan kesempatan yang baik untuk periode waktu lainnya.
  3. Pengaturan posisi stop loss mungkin mudah tersentuh saat berfluktuasi tajam.
  4. Strategi ini tidak mempertimbangkan tren pasar secara keseluruhan dan mungkin sering diperdagangkan di pasar yang bergeser atau bergoyang.

Arah optimasi strategi

  1. Memperkenalkan indikator penilaian tren (seperti sistem garis rata-rata), melakukan perdagangan hanya ketika tren jelas.
  2. Meningkatkan indikator volatilitas (seperti ATR), dan secara dinamis menyesuaikan posisi stop loss.
  3. Ini juga akan membantu untuk meningkatkan kredibilitas dari harga terobosan.
  4. Pengaturan jendela waktu yang dioptimalkan, pertimbangkan periode waktu perdagangan terbaik berdasarkan analisis data historis.
  5. Peningkatan target laba dan mekanisme penggabungan laba yang lebih baik.

Meringkaskan

Strategi ini dengan menggabungkan tingkat Fibonacci retracement, jendela waktu dan penilaian kondisi ganda, membangun sistem perdagangan yang lebih lengkap. Strategi ini memiliki keunggulan dalam kejelasan logika, risiko yang dapat dikendalikan, tetapi masih perlu dioptimalkan dan diperbaiki sesuai dengan kondisi pasar. Dengan menambahkan pengoptimalan dalam hal penilaian tren, stop loss dinamis dan analisis volume perdagangan, stabilitas dan kemampuan keuntungan dari strategi dapat ditingkatkan lebih lanjut.

Kode Sumber Strategi
/*backtest
start: 2024-11-19 00:00:00
end: 2024-12-18 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("Fibonacci Retracement Strategy", overlay=true)

// Get the high and low of the previous day
previousHigh = request.security(syminfo.tickerid, "D", high[1])
previousLow = request.security(syminfo.tickerid, "D", low[1])

// Fibonacci levels for the previous day (from high to low)
fib0 = previousHigh
fib236 = previousHigh - (previousHigh - previousLow) * 0.236
fib382 = previousHigh - (previousHigh - previousLow) * 0.382
fib50 = previousHigh - (previousHigh - previousLow) * 0.5
fib618 = previousHigh - (previousHigh - previousLow) * 0.618
fib1 = previousHigh - (previousHigh - previousLow) * 1

// Current open price (for the current day)
openPrice = open

// Time for 9:15 AM check
timeStart = timestamp(year, month, dayofmonth, 9, 15)
timeClose = timestamp(year, month, dayofmonth, 9, 30) // Time window to allow for opening range

// Entry Conditions
buyCondition1 = openPrice >= fib236 and openPrice <= fib50
buyCondition2 = openPrice == fib618 and time >= timeStart and time <= timeClose
buyCondition3 = openPrice < fib236 and openPrice < previousLow

// Stop Loss based on conditions
stopLoss1 = fib618
stopLoss2 = fib618 - (fib618 - fib1) / 2
stopLoss3 = fib382

// Plot Fibonacci levels with calculated values
plot(fib0, color=color.green, linewidth=1, title="Fib 0")
plot(fib236, color=color.red, linewidth=1, title="Fib 0.236")
plot(fib382, color=color.blue, linewidth=1, title="Fib 0.382")
plot(fib50, color=color.yellow, linewidth=1, title="Fib 0.5")
plot(fib618, color=color.purple, linewidth=1, title="Fib 0.618")
plot(fib1, color=color.orange, linewidth=1, title="Fib 1")

// Plot labels for Fibonacci levels with actual values
label.new(x=bar_index, y=fib0, text="Fib 0: " + str.tostring(fib0), style=label.style_label_right, color=color.green, textcolor=color.white, size=size.small, yloc=yloc.abovebar)
label.new(x=bar_index, y=fib236, text="Fib 0.236: " + str.tostring(fib236), style=label.style_label_right, color=color.red, textcolor=color.white, size=size.small, yloc=yloc.abovebar)
label.new(x=bar_index, y=fib382, text="Fib 0.382: " + str.tostring(fib382), style=label.style_label_right, color=color.blue, textcolor=color.white, size=size.small, yloc=yloc.abovebar)
label.new(x=bar_index, y=fib50, text="Fib 0.5: " + str.tostring(fib50), style=label.style_label_right, color=color.yellow, textcolor=color.white, size=size.small, yloc=yloc.abovebar)
label.new(x=bar_index, y=fib618, text="Fib 0.618: " + str.tostring(fib618), style=label.style_label_right, color=color.purple, textcolor=color.white, size=size.small, yloc=yloc.abovebar)
label.new(x=bar_index, y=fib1, text="Fib 1: " + str.tostring(fib1), style=label.style_label_right, color=color.orange, textcolor=color.white, size=size.small, yloc=yloc.abovebar)

// Entry conditions and strategy execution
if (buyCondition1)
    strategy.entry("Buy", strategy.long, stop=stopLoss1)
    label.new(bar_index, low, "BUY", color=color.green, textcolor=color.white, style=label.style_label_up, size=size.small)

if (buyCondition2)
    strategy.entry("Buy", strategy.long, stop=stopLoss2)
    label.new(bar_index, low, "BUY", color=color.green, textcolor=color.white, style=label.style_label_up, size=size.small)

if (buyCondition3)
    strategy.entry("Buy", strategy.long, stop=stopLoss3)
    label.new(bar_index, low, "BUY", color=color.green, textcolor=color.white, style=label.style_label_up, size=size.small)

// Show exit signals and labels
if (buyCondition1)
    strategy.exit("Exit", from_entry="Buy", stop=stopLoss1)
    label.new(bar_index, high, "EXIT", color=color.red, textcolor=color.white, style=label.style_label_down, size=size.small)

if (buyCondition2)
    strategy.exit("Exit", from_entry="Buy", stop=stopLoss2)
    label.new(bar_index, high, "EXIT", color=color.red, textcolor=color.white, style=label.style_label_down, size=size.small)

if (buyCondition3)
    strategy.exit("Exit", from_entry="Buy", stop=stopLoss3)
    label.new(bar_index, high, "EXIT", color=color.red, textcolor=color.white, style=label.style_label_down, size=size.small)