Strategi perdagangan kuantitatif berbasis fraktal dan pola

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

img

Gambaran umum

Artikel ini memperkenalkan strategi perdagangan kuantitatif yang menggabungkan analisis fraktal dan pola candlestick. Dengan mendeteksi titik pembalikan kunci dan pola candlestick pembalikan bullish / bearish, strategi ini memungkinkan perdagangan otomatis berisiko rendah dengan pengembalian tinggi.

Prinsip Strategi

Strategi ini didasarkan pada analisis aksi harga yang terperinci, menggunakan kombinasi analisis fraktal dan pengenalan pola candlestick untuk mendefinisikan masuk yang jelas dan logika stop loss untuk menangkap tren.

Secara khusus, kondisi masuknya adalah: harga pecah di atas level tertinggi dari 2 bar sebelumnya, dan terjadi breakout fraktal atau bullish engulfing atau pola palu. Kombinasi ini dengan kuat mengkonfirmasi sinyal panjang. Logika stop loss yang mendefinisikan exit pada harga pecah di bawah level terendah dari 2 bar sebelumnya memastikan stop cepat dan efektif.

Untuk mendeteksi pola, strategi ini menggunakan teori fraktal yang umum digunakan untuk mengidentifikasi titik pembalikan kunci, serta algoritma untuk mendeteksi 3 pola pembalikan lilin klasik.

Fraktal high/low diidentifikasi ketika harga membuat 3-bar baru tinggi/rendah, dan aturan ketat pada harga terbuka/tutup digunakan untuk pola engulfing.

Keuntungan

Keuntungan utama dari strategi ini:

  1. Sinyal yang akurat menggabungkan fraktal dan pola
  2. Logika masuk dan stop loss yang jelas
  3. Teori matang mencegah overfit
  4. Skrip Pine memungkinkan backtesting

Risiko

Masih ada risiko yang perlu dicatat:

  1. Subjektivitas dalam deteksi fraktal dan pola
  2. Whipsaws yang berpotensi menghasilkan perdagangan yang kalah berturut-turut
  3. Ukuran stop loss membutuhkan penyesuaian untuk perdagangan frekuensi tinggi

Metode seperti berhenti yang dioptimalkan, penyaringan tren dan analisis berjalan maju dapat membantu mengendalikan risiko di atas.

Peningkatan

Daerah untuk peningkatan lebih lanjut:

  1. Parameter pola candlestick yang disetel dengan baik untuk ketahanan
  2. Tambahkan trend bias filter untuk menghindari whipsaws
  3. Memperkenalkan pembelajaran mesin untuk optimasi parameter otomatis

Peningkatan ini akan lebih memperkuat stabilitas dan profitabilitas strategi.

Kesimpulan

Artikel ini secara menyeluruh mencakup strategi perdagangan aksi harga yang menggabungkan fraktal dan pola lilin. Dengan sinyal yang akurat, penerapan yang mudah dan mengikuti tren yang efektif, strategi ini dapat sangat menguntungkan pedagang sistematis dan pedagang discretionary.


/*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 banyak