Strategi Perdagangan Kuantitatif Berasaskan Fraktal dan Corak

Penulis:ChaoZhang, Tarikh: 2024-02-19 14:32:45
Tag:

img

Ringkasan

Artikel ini memperkenalkan strategi perdagangan kuantitatif yang menggabungkan analisis fraktal dan corak lilin. Dengan mengesan titik pembalikan utama dan corak lilin pembalikan bullish / bearish, strategi ini membolehkan perdagangan automatik berisiko rendah dengan pulangan tinggi.

Prinsip Strategi

Strategi ini berdasarkan analisis tindakan harga terperinci, menggunakan gabungan analisis fraktal dan pengenalan corak candlestick untuk menentukan logik kemasukan dan hentian kerugian yang jelas untuk menangkap trend.

Secara khusus, syarat kemasukan adalah: harga pecah di atas paras tertinggi 2 bar sebelumnya, dan pecah fraktal atau menelan bullish atau corak tukul berlaku. Gabungan ini dengan kukuh mengesahkan isyarat panjang. Logik stop loss yang menentukan keluar pada harga pecah di bawah paras rendah 2 bar sebelumnya memastikan berhenti yang cepat dan berkesan.

Untuk pengesanan corak, strategi ini menggunakan teori fraktal yang biasa digunakan untuk mengenal pasti titik pembalikan utama, serta algoritma untuk mengesan 3 corak pembalikan lilin klasik.

Pengekodan dilakukan dalam skrip Pine. Fraktal tinggi / rendah dikenal pasti apabila harga membuat 3 bar tinggi / rendah baru, dan peraturan ketat mengenai harga terbuka / dekat digunakan untuk corak menelan.

Kelebihan

Kelebihan utama strategi ini:

  1. Isyarat yang tepat menggabungkan fraktal dan corak
  2. Logik kemasukan dan stop loss yang jelas
  3. Teori yang matang mencegah terlalu sesuai
  4. Skrip Pine membolehkan backtesting

Risiko

Masih ada risiko yang perlu diperhatikan:

  1. Subjektiviti dalam pengesanan fraktal dan corak
  2. Whipsaws yang berpotensi menghasilkan perdagangan yang kehilangan berturut-turut
  3. Ukuran stop loss memerlukan penyesuaian untuk perdagangan frekuensi tinggi

Kaedah seperti berhenti yang dioptimumkan, penapisan trend dan analisis berjalan maju dapat membantu mengawal risiko di atas.

Peningkatan

Kawasan untuk penambahbaikan lanjut:

  1. Parameter corak candlestick tune halus untuk ketahanan
  2. Tambah penapis bias trend untuk mengelakkan whipsaws
  3. Memperkenalkan pembelajaran mesin untuk pengoptimuman parameter automatik

Peningkatan ini akan meningkatkan lagi kestabilan dan keuntungan strategi ini.

Kesimpulan

Artikel ini merangkumi secara menyeluruh strategi perdagangan tindakan harga yang menggabungkan fraktal dan corak lilin. Dengan isyarat yang tepat, pelaksanaan yang mudah dan trend yang berkesan, strategi ini dapat sangat memberi manfaat kepada peniaga sistematik dan peniaga pertimbangan. Penambahbaikan dan pengesahan berterusan akan meningkatkan prestasi untuk perdagangan praktikal.


/*backtest
start: 2023-02-12 00:00:00
end: 2024-02-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Fractal & Pattern Entry/Exit Strategy", overlay=true)

// Fractal calculation
fractalHigh = high == highest(3)
fractalLow = low == lowest(3)

// Pattern detection
bullishEngulfing = open < close[1] and close > open[1] and close > open + (open[1] - close[1]) * 2 and low < min(open, close) and high > max(open, close) and open[1] > close[1]
bearishEngulfing = open > close[1] and close < open[1] and open > close + (close[1] - open[1]) * 2 and high > max(open, close) and low < min(open, close) and open[1] < close[1]
hammer = open < close and close > (high + low + open * 2) / 4 and close - open > (high - low) * 0.6 and high - close < (high - low) * 0.1 and open - low < (high - low) * 0.1
hangingMan = open > close and open < (high + low + close * 2) / 4 and open - close > (high - low) * 0.6 and high - open < (high - low) * 0.1 and close - low < (high - low) * 0.1

// Entry condition
longCondition = crossover(close, highest(2)[1]) and (fractalHigh or bullishEngulfing or hammer)
shortCondition = crossunder(close, lowest(2)[1]) and (fractalLow or bearishEngulfing or hangingMan)

// Exit condition
exitLongCondition = crossunder(close, lowest(2)[1])
exitShortCondition = crossover(close, highest(2)[1])

// Entry and exit orders
if (longCondition)
    strategy.entry("Long", strategy.long)
if (shortCondition)
    strategy.entry("Short", strategy.short)
if (exitLongCondition)
    strategy.close("Long")
if (exitShortCondition)
    strategy.close("Short")

// Plot fractals
plotshape(fractalHigh, title="Fractal High", style=shape.triangledown, location=location.abovebar, color=color.green, size=size.small)
plotshape(fractalLow, title="Fractal Low", style=shape.triangleup, location=location.belowbar, color=color.red, size=size.small)

// Plot patterns
plotshape(bullishEngulfing, title="Bullish Engulfing", style=shape.arrowup, location=location.belowbar, color=color.green, size=size.small)
plotshape(bearishEngulfing, title="Bearish Engulfing", style=shape.arrowdown, location=location.abovebar, color=color.red, size=size.small)
plotshape(hammer, title="Hammer", style=shape.arrowup, location=location.belowbar, color=color.green, size=size.small)
plotshape(hangingMan, title="Hanging Man", style=shape.arrowdown, location=location.abovebar, color=color.red, size=size.small)


Lebih lanjut