Strategi perdagangan kuantitatif jurang nilai saksama pengesahan aliran dinamik pembalikan

FVG IFVG SMA ATR 趋势确认 跟踪止损 动态风险管理
Tarikh penciptaan: 2025-02-21 11:55:42 Akhirnya diubah suai: 2025-07-03 15:00:53
Salin: 3 Bilangan klik: 606
2
fokus pada
319
Pengikut

Strategi perdagangan kuantitatif jurang nilai saksama pengesahan aliran dinamik pembalikan Strategi perdagangan kuantitatif jurang nilai saksama pengesahan aliran dinamik pembalikan

Gambaran keseluruhan

Strategi ini adalah sistem perdagangan kuantitatif berdasarkan Inverted Fair Value Gap (IFVG), yang digabungkan dengan pengesahan trend moving average dan mekanisme berhenti yang mengesan secara dinamik. Strategi ini dilakukan dengan mengenal pasti jurang nilai adil dalam tingkah laku harga (FVG) dan bentuknya yang berbalik, dan berdagang dengan sokongan trend.

Prinsip Strategi

Logik teras strategi merangkumi langkah utama berikut:

  1. Pengesanan FVG: Mengenali jurang nilai adil dengan menganalisis tumpang tindih antara barisan harga semasa dengan barisan harga sebelumnya.
  2. IFVG mengesahkan: Isyarat pembalikan terbentuk apabila harga menembusi titik tertinggi atau terendah FVG.
  3. Pengesahan trend: Menggunakan hubungan silang purata bergerak sederhana (SMA) 50 dan 200 untuk menentukan trend pasaran.
  4. Syarat kemasukan: Dalam trend menaik, buat lebih apabila harga berada di bawah titik rendah IFVG; dalam trend menurun, buat kosong apabila harga berada di atas titik tinggi IFVG.
  5. Pengurusan risiko: Menggunakan penghentian tetap dan penghentian pelacakan dinamik berasaskan ATR.

Kelebihan Strategik

  1. Pengesahan pelbagai dimensi: analisis pelbagai lapisan struktur harga ((IFVG) dan indikator trend ((SMA) untuk meningkatkan kebolehpercayaan perdagangan.
  2. Pengurusan Risiko Dinamis: Mengesan Hentian Kerosakan dengan penyesuaian Indeks ATR, untuk melindungi keuntungan yang telah diperoleh dan memberi ruang yang cukup untuk turun naik harga.
  3. Pengoptimuman Risiko-Pengembalian: Menggunakan 3Rs untuk menetapkan sasaran keuntungan, mengejar pulangan yang lebih tinggi berdasarkan kawalan risiko yang munasabah.
  4. Penapisan Trend: Mengekalkan trend yang disahkan oleh purata bergerak untuk mengelakkan perdagangan berlebihan di pasaran horizontal.

Risiko Strategik

  1. Risiko tergelincir: Dalam keadaan pasaran yang tidak menentu, harga sebenar mungkin berbeza dengan harga yang diingini.
  2. Penundaan trend: Purata bergerak sebagai penunjuk ketinggalan, yang mungkin menyebabkan sedikit kelewatan masa masuk.
  3. Risiko penembusan palsu: harga mungkin akan berpatah balik dengan cepat selepas penembusan dan mencetuskan stop loss.
  4. Sensitiviti parameter: Prestasi strategi lebih sensitif kepada tetapan parameter seperti kitaran SMA dan kelipatan ATR.

Arah pengoptimuman strategi

  1. Optimumkan penunjuk: boleh dipertimbangkan untuk menambah isyarat pengesahan kuantiti, meningkatkan kebolehpercayaan penembusan.
  2. Parameter menyesuaikan diri: memperkenalkan indikator kadar turun naik pasaran, menyesuaikan secara dinamik kitaran SMA dan kelipatan ATR.
  3. Optimumkan masa masuk: Tambah mekanisme pengesahan panggilan balik harga untuk mengelakkan kenaikan atau penurunan harga.
  4. Pengurusan kedudukan: saiz kedudukan disesuaikan secara dinamik mengikut turun naik pasaran dan kekuatan trend.
  5. Mekanisme hentian yang dioptimumkan: Parameter hentian yang lebih longgar boleh digunakan dalam trend yang kuat.

ringkaskan

Strategi ini membina sistem perdagangan yang lengkap dengan menggabungkan struktur harga IFVG, pengesahan trend dan pengurusan risiko dinamik. Strategi ini mempertimbangkan sepenuhnya elemen penting seperti trend pasaran, kawalan risiko dan pengurusan keuntungan sambil mengekalkan kebersihan. Dengan arah pengoptimuman yang disyorkan, strategi ini dapat meningkatkan lagi kebolehpasaran dan kestabilan. Dalam perdagangan dalam talian, disarankan untuk melakukan pengesanan dan pengoptimuman parameter yang mencukupi dan membuat penyesuaian yang sesuai mengikut ciri-ciri pasaran tertentu.

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