Strategi perdagangan kuantitatif corak candlestick corak pembalikan kerangka masa dwi

MA
Tarikh penciptaan: 2025-01-10 15:47:53 Akhirnya diubah suai: 2025-01-10 15:47:53
Salin: 1 Bilangan klik: 385
1
fokus pada
1617
Pengikut

Strategi perdagangan kuantitatif corak candlestick corak pembalikan kerangka masa dwi

Gambaran keseluruhan

Strategi ini ialah sistem perdagangan kuantitatif berdasarkan dua corak candlestick klasik: garis tukul dan lelaki tergantung. Strategi ini berfungsi dengan mengenal pasti corak pembalikan ini dalam pasaran untuk meramalkan potensi titik perubahan dalam tindakan harga. Sistem ini menggabungkan berbilang penunjuk teknikal untuk mengesahkan kesahihan isyarat, termasuk hubungan berkadar antara badan garis-K dan bayang-bayang, arah aliran dan faktor-faktor lain, untuk mencapai penangkapan tepat titik pembalikan pasaran.

Prinsip Strategi

Logik teras strategi ini adalah untuk mengenal pasti dua corak candlestick utama dalam cara program:

  1. Hammer: muncul dalam aliran menurun, mencadangkan kemungkinan pembalikan ke atas. Ia dicirikan oleh badan yang kecil, bayang bawah yang panjang (sekurang-kurangnya dua kali panjang badan) dan bayang atas yang sangat pendek atau tiada.
  2. Lelaki Gantung: Muncul dalam aliran menaik, mencadangkan kemungkinan pembalikan dan penurunan. Ciri-ciri morfologi adalah serupa dengan garis tukul, tetapi kedudukan rupa dan makna adalah bertentangan.

Strategi mengukur corak ini dengan menetapkan parameter yang ketat, termasuk:

  • Pengganda panjang badan batang lilin minimum
  • Nisbah bayang bawah kepada ketinggian batang lilin
  • Tempoh pegangan

Kelebihan Strategik

  1. Pengenalpastian sistematik: Mengenal pasti isyarat pembalikan pasaran dengan tepat melalui kaedah program, mengelakkan subjektiviti pertimbangan manusia.
  2. Risiko boleh dikawal: Tempoh pegangan yang jelas ditetapkan untuk mengelakkan risiko yang disebabkan oleh pegangan yang berlebihan.
  3. Visualisasi Isyarat: Paparkan isyarat dagangan secara intuitif pada carta untuk analisis dan pengoptimuman yang mudah.
  4. Parameter fleksibel: Parameter boleh dilaraskan mengikut keadaan pasaran yang berbeza untuk meningkatkan kebolehsuaian strategi.

Risiko Strategik

  1. Risiko pecahan palsu: Corak pembalikan mungkin menghasilkan isyarat palsu dan perlu disahkan dalam kombinasi dengan penunjuk teknikal lain.
  2. Risiko pemasaan: Tempoh pegangan tetap mungkin tidak menangkap sepenuhnya potensi penuh pergerakan harga.
  3. Pergantungan persekitaran pasaran: Terlalu banyak isyarat palsu mungkin dijana dalam pasaran yang tidak menentu.

Arah pengoptimuman strategi

  1. Memperkenalkan penapis aliran: Penunjuk seperti purata bergerak boleh ditambah untuk menapis aliran dan meningkatkan kualiti isyarat.
  2. Tempoh pegangan dinamik: laraskan masa pegangan secara dinamik mengikut turun naik pasaran.
  3. Pengesahan berbilang tempoh: Memperkenalkan mekanisme pengesahan arah aliran untuk rangka masa yang lebih tinggi.
  4. Pengoptimuman henti kerugian: Tambah mekanisme henti kerugian dinamik untuk meningkatkan keupayaan kawalan risiko.

ringkaskan

Strategi ini merealisasikan aplikasi sistematik teori analisis teknikal klasik melalui kaedah kuantitatif dan mempunyai nilai praktikal yang kukuh. Dengan mengoptimumkan parameter dan menambah baik mekanisme kawalan risiko, strategi boleh mengekalkan prestasi yang stabil dalam persekitaran pasaran yang berbeza. Reka bentuk modular strategi juga menyediakan asas yang baik untuk pengoptimuman seterusnya.

Kod sumber strategi
/*backtest
start: 2024-12-10 00:00:00
end: 2025-01-08 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/

//@version=6
strategy("Hammer and Hanging Man Strategy", overlay=true)

// Input parameters
length = input.int(5, title="Minimum Candle Body Length (Multiplier)", minval=1)
shadowRatio = input.float(1, title="Lower Shadow to Candle Height Ratio", minval=1.0)
holdPeriods = input.int(26, title="Hold Periods (Bars)", minval=1)  // Holding period in bars

// Function to calculate the absolute value
absValue(x) =>
    x >= 0 ? x : -x

// Function to check if it is a Hammer
isHammer() =>
    bodyLength = absValue(close - open)
    candleHeight = high - low
    lowerShadow = math.min(open, close) - low
    upperShadow = high - math.max(open, close)
    smallBody = bodyLength <= candleHeight / length
    longLowerShadow = lowerShadow >= bodyLength * shadowRatio
    shortUpperShadow = upperShadow <= bodyLength
    smallBody and longLowerShadow and shortUpperShadow and close > open

// Function to check if it is a Hanging Man
isHangingMan() =>
    bodyLength = absValue(close - open)
    candleHeight = high - low
    lowerShadow = math.min(open, close) - low
    upperShadow = high - math.max(open, close)
    smallBody = bodyLength <= candleHeight / length
    longLowerShadow = lowerShadow >= bodyLength * shadowRatio
    shortUpperShadow = upperShadow <= bodyLength
    smallBody and longLowerShadow and shortUpperShadow and close < open

// Detect the candles
hammer = isHammer()
hangingMan = isHangingMan()

// Trading logic: Long on Hammer, Short on Hanging Man
if hammer
    strategy.entry("Long", strategy.long)  // Long entry on Hammer

if hangingMan
    strategy.entry("Short", strategy.short)  // Short entry on Hanging Man

// Exit after X bars
if strategy.position_size > 0 and bar_index - strategy.opentrades.entry_bar_index(0) >= holdPeriods
    strategy.close("Long")

if strategy.position_size < 0 and bar_index - strategy.opentrades.entry_bar_index(0) >= holdPeriods
    strategy.close("Short")

// Visualization of signals
plotshape(hammer, title="Hammer", location=location.belowbar, color=color.green, style=shape.labelup, text="Hammer")
plotshape(hangingMan, title="Hanging Man", location=location.abovebar, color=color.red, style=shape.labeldown, text="Hanging Man")