Strategi perdagangan kuantitatif pengesanan aliran bersyarat berbilang berdasarkan tahap anjakan Fibonacci

SL MA TP ATR
Tarikh penciptaan: 2024-12-20 15:55:57 Akhirnya diubah suai: 2024-12-20 15:55:57
Salin: 1 Bilangan klik: 420
1
fokus pada
1617
Pengikut

Strategi perdagangan kuantitatif pengesanan aliran bersyarat berbilang berdasarkan tahap anjakan Fibonacci

Gambaran keseluruhan

Strategi ini adalah strategi pengesanan trend berdasarkan tahap pengunduran Fibonacci. Strategi ini menggunakan tahap pengunduran Fibonacci yang kritikal untuk mengira harga tertinggi dan terendah pada hari perdagangan sebelumnya, menggabungkan kedudukan harga buka dan tetingkap masa untuk menetapkan beberapa syarat masuk, dan menetapkan kedudukan henti yang sesuai untuk keadaan yang berbeza, untuk menguasai trend dan mengawal risiko.

Prinsip Strategi

Strategi pertama mengira enam tahap penarikan balik Fibonacci yang penting ((0, 23.6%, 38.2%, 50%, 61.8% dan 100%)). Berdasarkan kedudukan harga bukaan berbanding dengan tahap ini, syarat masuk terbahagi kepada tiga keadaan: 1) harga bukaan antara 23.6%-50%; 2) harga bukaan adalah 61.8% dan dalam tetingkap masa yang ditetapkan ((9:15-9:30)); 3) harga bukaan adalah lebih rendah daripada 23.6% dan lebih rendah daripada titik rendah hari sebelumnya.

Kelebihan Strategik

  1. Menggunakan tahap pengunduran Fibonacci sebagai tahap rintangan sokongan utama, yang mempunyai petunjuk yang kuat di pasaran.
  2. Penghakiman berbilang syarat, digabungkan dengan tetingkap masa dan kedudukan harga, meningkatkan ketepatan strategi.
  3. Penetapan kedudukan kerugian yang sesuai untuk keadaan yang berbeza, mencerminkan fleksibiliti dalam pengurusan risiko.
  4. Logik strategi jelas, parameter boleh disesuaikan, mudah untuk dioptimumkan mengikut keadaan pasaran yang berbeza.

Risiko Strategik

  1. Tahap penarikan balik Fibonacci mungkin kurang berkesan kerana keadaan pasaran.
  2. Tetapan tetingkap masa tetap mungkin terlepas peluang yang baik untuk tempoh masa lain.
  3. Tetapan kedudukan hentian mungkin mudah disentuh semasa turun naik yang teruk.
  4. Strategi tidak mengambil kira trend keseluruhan pasaran, mungkin sering berdagang di pasaran yang berlainan arah atau bergolak.

Arah pengoptimuman strategi

  1. Memperkenalkan indikator penilaian trend (seperti sistem garis rata-rata), dan melakukan perdagangan apabila trend jelas.
  2. Meningkatkan indikator kadar turun naik ((seperti ATR), secara dinamik menyesuaikan kedudukan hentian.
  3. Menambah kebolehpercayaan untuk penembusan harga melalui analisis kuantiti transaksi.
  4. Tetapan tetingkap masa yang dioptimumkan boleh dipertimbangkan untuk tempoh masa dagangan terbaik berdasarkan analisis data sejarah.
  5. Meningkatkan sasaran keuntungan dan meningkatkan mekanisme pengumpulan keuntungan.

ringkaskan

Strategi ini membina sistem perdagangan yang lebih lengkap dengan menggabungkan tahap pengunduran Fibonacci, tetingkap masa dan penilaian pelbagai syarat. Strategi ini mempunyai kelebihan dalam kejelasan logik, risiko yang terkawal, tetapi masih perlu dioptimumkan dan diperbaiki mengikut keadaan pasaran. Dengan menambah pengoptimuman dalam bidang penghakiman trend, stop loss dinamik dan analisis jumlah perdagangan, anda dapat meningkatkan lagi kestabilan dan keuntungan strategi.

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