Strategi perdagangan kuantitatif pembalikan konfirmasi tren dinamis kesenjangan nilai wajar

FVG IFVG SMA ATR 趋势确认 跟踪止损 动态风险管理
Tanggal Pembuatan: 2025-02-21 11:55:42 Akhirnya memodifikasi: 2025-07-03 15:00:53
menyalin: 3 Jumlah klik: 606
2
fokus pada
319
Pengikut

Strategi perdagangan kuantitatif pembalikan konfirmasi tren dinamis kesenjangan nilai wajar Strategi perdagangan kuantitatif pembalikan konfirmasi tren dinamis kesenjangan nilai wajar

Ringkasan

Strategi ini adalah sistem perdagangan kuantitatif yang didasarkan pada Inverted Fair Value Gap (IFVG) yang digabungkan dengan pengakuan tren rata-rata bergerak dan mekanisme stop loss pelacakan yang dinamis. Strategi ini melakukan perdagangan dengan mengidentifikasi FVG dalam perilaku harga dan bentuknya yang berbalik, dan melakukan perdagangan dengan dukungan tren. Metode ini memastikan bahwa arah perdagangan konsisten dengan tren pasar secara keseluruhan dan mampu menangkap titik balik penting di pasar.

Prinsip Strategi

Logika inti dari strategi ini mencakup langkah-langkah kunci berikut:

  1. Deteksi FVG: Mengidentifikasi kesenjangan nilai wajar dengan menganalisis tumpang tindih antara garis harga saat ini dengan garis harga sebelumnya.
  2. IFVG mengkonfirmasi: Sebuah sinyal reversal terbentuk ketika harga melewati titik tinggi atau rendah FVG.
  3. Pengakuan tren: Menggunakan hubungan silang antara rata-rata bergerak sederhana (SMA) 50 dan 200 periode untuk menentukan tren pasar.
  4. Kondisi masuk: dalam tren naik, melakukan over ketika harga di bawah titik rendah IFVG; dalam tren turun, melakukan short ketika harga di atas titik tinggi IFVG.
  5. Pengelolaan risiko: Menggunakan stop loss tetap dan stop loss tracking dinamis berbasis ATR.

Keunggulan Strategis

  1. Multi-dimensi konfirmasi: Menggabungkan analisis multi-dimensi dari struktur harga (IFVG) dan indikator tren (SMA) untuk meningkatkan keandalan perdagangan.
  2. Manajemen Risiko Dinamis: Melalui indikator ATR, penyesuaian pelacakan stop loss, melindungi keuntungan yang sudah ada, dan memberikan ruang yang cukup bagi harga untuk berfluktuasi.
  3. Optimalisasi Rasio Risiko-Rugi: Mengadopsi 3Rs dalam pengaturan target laba, untuk mengejar keuntungan yang lebih tinggi berdasarkan pengendalian risiko yang wajar.
  4. Filter tren: mengkonfirmasi tren dengan crossover rata-rata bergerak untuk menghindari overtrading di pasar horizontal.

Risiko Strategis

  1. Risiko slippage: Saat pasar bergejolak, harga transaksi yang sebenarnya dapat menyimpang dari harga yang diinginkan.
  2. Penundaan tren: Moving Average sebagai indikator yang tertinggal, mungkin menyebabkan sedikit penundaan waktu masuk.
  3. Risiko false breakout: harga mungkin akan mundur dengan cepat setelah terobosan, memicu stop loss.
  4. Sensitivitas parameter: Kinerja strategi lebih sensitif terhadap pengaturan parameter seperti siklus SMA dan ATR.

Arah optimasi strategi

  1. Optimasi indikator: Dapat dipertimbangkan untuk menambahkan sinyal konfirmasi volume transaksi untuk meningkatkan keandalan terobosan.
  2. Parameter beradaptasi sendiri: memperkenalkan indikator volatilitas pasar, mengadaptasi siklus SMA dan ATR secara dinamis.
  3. Optimalkan waktu masuk: Tambahkan mekanisme konfirmasi penarikan kembali harga untuk menghindari kenaikan atau penurunan harga.
  4. Manajemen posisi: Mengatur ukuran posisi secara dinamis sesuai dengan volatilitas pasar dan intensitas tren.
  5. Optimasi mekanisme stop loss: parameter stop loss yang lebih longgar dapat digunakan dalam tren yang kuat.

Meringkaskan

Strategi ini membangun sistem perdagangan yang lengkap dengan menggabungkan struktur harga IFVG, pengakuan tren, dan manajemen risiko dinamis. Strategi ini mempertimbangkan sepenuhnya elemen-elemen kunci seperti tren pasar, kontrol risiko, dan manajemen keuntungan, sambil tetap ringkas. Strategi ini dapat meningkatkan adaptasi dan stabilitasnya lebih lanjut melalui arah optimasi yang disarankan.

Kode Sumber Strategi
/*backtest
start: 2025-05-31 00:00:00
end: 2025-06-30 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BNB_USDT"}]
args: [["RunMode",1,358374]]
*/

//@version=6
strategy("Inverted FVG Strategy with Trend Check and Trailing Stops", default_qty_value = 10, overlay=true)

// Function to detect FVG
fvgDetected(src, high, low) =>
    float prevHigh = na
    float prevLow = na
    float prevClose = na
    float fvgHigh = na
    float fvgLow = na
    bool fvg = false
    if (not na(src[3]))
        prevHigh := high[3]
        prevLow := low[3]
        prevClose := src[3]
        if (src[2] > prevClose and low[2] > prevHigh) or (src[2] < prevClose and high[2] < prevLow)
            fvg := true
            fvgHigh := low[2] > prevHigh ? high[2] : na
            fvgLow := high[2] < prevLow ? low[2] : na
    [fvg, fvgHigh, fvgLow]

// Detect FVG on the chart
[fvg, fvgHigh, fvgLow] = fvgDetected(close, high, low)

// Detect IFVG - Inversion of FVG
bool ifvg = false
float ifvgHigh = na
float ifvgLow = na

if (fvg)    
    if (high[1] > fvgHigh and close[1] > open[1]) or (high[1] < fvgLow and close[1] < open[1])
        ifvg := true
        ifvgHigh := close[1] > open[1] ? high[1] : na
        ifvgLow := close[1] <  open[1] ? low[1] : na

// Plot FVG and IFVG zones for visualization
plot(ifvgHigh, title="IFVG High", color=color.red, linewidth=2, style=plot.style_cross)
plot(ifvgLow, title="IFVG Low", color=color.red, linewidth=2, style=plot.style_cross)

// Trend Check using Simple Moving Averages
smaShort = ta.sma(close, 50)  // Short term SMA
smaLong = ta.sma(close, 200)  // Long term SMA
bool uptrend = false
bool downtrend = false

uptrend := smaShort > smaLong  // Up trend if short SMA is above long SMA
downtrend := smaShort < smaLong  // Down trend if short SMA is below long SMA

// Plot SMAs for visualization
plot(smaShort, title="SMA Short", color=color.blue, linewidth=1)
plot(smaLong, title="SMA Long", color=color.orange, linewidth=1)

// Trading logic with trend confirmation
longCondition = ifvg and close < ifvgLow and uptrend
shortCondition = ifvg and close > ifvgHigh and downtrend

// Risk Definition - 使用百分比
stopLoss = 0.005   // 0.5% 止损
takeProfit = 0.015  // 1.5% 止盈

if (longCondition and strategy.position_size == 0)
    strategy.entry("Long", strategy.long)
    stopPrice = close * (1 - stopLoss)
    limitPrice = close * (1 + takeProfit)
    strategy.exit("Initial Long Exit", "Long", stop=stopPrice, limit=limitPrice)

if (shortCondition and strategy.position_size == 0)
    strategy.entry("Short", strategy.short)
    stopPrice = close * (1 + stopLoss)
    limitPrice = close * (1 - takeProfit)
    strategy.exit("Initial Short Exit", "Short", stop=stopPrice, limit=limitPrice)

// ATR for dynamic trailing stop
atr = ta.atr(14)

// Trailing Stop for Long Position if the trade has moved > 0.5% (half of takeProfit)
if (strategy.position_size > 0)
    profitThreshold = takeProfit * 0.5  // 1.5% profit threshold
    if (close - strategy.position_avg_price >= strategy.position_avg_price * profitThreshold)
        // 将止损移动到盈亏平衡点加上一点利润
        trailingStopLong = math.max(strategy.position_avg_price * (1 + profitThreshold), close - (atr * 2))
        strategy.exit("Trailing Stop Long", "Long", stop=trailingStopLong)

// Trailing Stop for Short Position if the trade has moved > 0.5% (half of takeProfit)
if (strategy.position_size < 0)
    profitThreshold = takeProfit * 0.5  // 1.5% profit threshold
    if (strategy.position_avg_price - close >= strategy.position_avg_price * profitThreshold)
        // 将止损移动到盈亏平衡点加上一点利润
        trailingStopShort = math.min(strategy.position_avg_price * (1 - profitThreshold), close + (atr * 2))
        strategy.exit("Trailing Stop Short", "Short", stop=trailingStopShort)