Strategi Perdagangan Quant Berdasarkan Ichimoku Cloud

Penulis:ChaoZhang, Tanggal: 2024-01-12 14:20:43
Tag:

img

Gambaran umum

Strategi ini merancang sistem perdagangan kuantitatif berdasarkan indikator Ichimoku Cloud, terutama untuk aset dengan tren yang baik.

Prinsip Strategi

Ichimoku Cloud terdiri dari garis konversi, garis dasar, lead span 1, lead span 2 dan grafik awan. Sinyal perdagangan strategi ini berasal dari hubungan antara harga dan grafik awan. Secara khusus, sinyal beli dihasilkan ketika harga melintasi di atas lead span 1; Sinyal jual dihasilkan ketika harga melintasi di bawah lead span 1. Selain itu, lead span 2 juga berfungsi sebagai indikator penilaian tambahan.

Strategi ini juga menetapkan stop loss dan take profit berdasarkan indikator ATR. Indikator ATR dapat secara efektif menangkap tingkat fluktuasi pasar. Stop loss ditetapkan menjadi 2 kali ATR, dan take profit ditetapkan menjadi 4 kali ATR. Ini dapat secara efektif mengendalikan kerugian tunggal dan mengunci beberapa keuntungan.

Akhirnya, strategi mengadopsi mekanisme stop loss trailing. Secara khusus, untuk posisi panjang, ia akan menggunakan 2 kali ATR sebagai amplitudo callback untuk menyesuaikan garis stop loss secara real time untuk mengunci keuntungan; untuk posisi pendek, ia akan menggunakan 2 kali ATR sebagai amplitudo callback untuk menyesuaikan garis stop loss secara real time untuk mengunci keuntungan.

Analisis Keuntungan

  1. Berdasarkan indikator grafik awan Ichimoku, dapat secara efektif menangkap tren
  2. Dengan stop loss berbasis ATR dan mengambil keuntungan, dapat mengendalikan risiko
  3. Mengadopsi mekanisme stop loss untuk mengunci keuntungan dengan baik
  4. Logika strategi sederhana dan jelas, mudah dipahami dan diverifikasi
  5. parameterisasi tersedia, parameter dapat disesuaikan sesuai dengan pasar yang berbeda

Analisis Risiko

  1. Peta awan Ichimoku sangat sensitif terhadap pengaturan parameter, pengaturan yang tidak benar dapat kehilangan peluang perdagangan atau menghasilkan sinyal yang salah
  2. Jika amplitudo stop loss trailing diatur terlalu besar, stop loss dapat terjadi terlalu dini
  3. Saham yang kuat dapat menembus garis stop loss atau garis stop loss yang diturunkan oleh indikator ATR
  4. Biaya transaksi juga akan berdampak pada profitabilitas

Solusi untuk risiko yang sesuai:

  1. Mengoptimalkan parameter peta awan Ichimoku untuk menemukan pengaturan yang paling tepat
  2. Evaluasi amplitudo stop loss trailing yang wajar, tidak terlalu besar atau terlalu kecil
  3. Untuk saham yang kuat, meringankan rentang stop loss dengan tepat
  4. Pilih broker dengan komisi rendah

Arahan Optimasi

  1. Menggabungkan indikator teknis lainnya untuk penyaringan sinyal untuk mengurangi perdagangan yang salah
  2. Mengoptimalkan parameter berdasarkan data historis/backtesting
  3. Parameter untuk varietas yang berbeda dapat dioptimalkan secara terpisah
  4. Pertimbangkan untuk menyesuaikan amplitudo stop loss secara dinamis
  5. Menggabungkan algoritma untuk melakukan rekayasa fitur untuk membangun sinyal perdagangan yang lebih andal

Ringkasan

Secara umum, strategi ini adalah strategi pelacakan tren yang stabil. Hukum arah tren berdasarkan indikator awan Ichimoku; atur stop loss dan ambil keuntungan menggunakan indikator ATR; gunakan trailing stop loss untuk mengunci keuntungan. Keuntungannya adalah logika yang sederhana, mudah dimengerti; kerugian tunggal dapat dikendalikan; tren dapat dilacak secara efektif. Tetapi ada juga beberapa risiko sensitivitas parameter dan stop loss yang terganggu. Dengan terus mengoptimalkan parameter dan strategi itu sendiri, kinerja yang lebih baik dapat diperoleh.


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

//@version=5
strategy("Ichimoku Cloud Strategy with SL, TP, and Trailing Stop", overlay=true)

conversionPeriods = input(9, "Conversion Line Length")
basePeriods = input(26, "Base Line Length")
laggingSpan2Periods = input(52, "Leading Span B Length")
displacement = input(26, "Lagging Span")
atrLength = input(14, title="ATR Length")

donchian(len) => math.avg(ta.lowest(len), ta.highest(len))
conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
leadLine1 = math.avg(conversionLine, baseLine)
leadLine2 = donchian(laggingSpan2Periods)

// Plot the Ichimoku Cloud components
plot(conversionLine, color=color.blue, title="Conversion Line")
plot(baseLine, color=color.red, title="Base Line")
plot(leadLine1, color=color.green, title="Leading Span A")
plot(leadLine2, color=color.orange, title="Leading Span B")
plot(leadLine1 > leadLine2 ? leadLine1 : leadLine2, color=color.green, title="Kumo Cloud Upper Line")
plot(leadLine1 < leadLine2 ? leadLine1 : leadLine2, color=color.red, title="Kumo Cloud Lower Line")

// ATR for stop loss and take profit
atrValue = ta.atr(atrLength)
stopLoss = atrValue * 2
takeProfit = atrValue * 4

// Strategy entry and exit conditions
longCondition = ta.crossover(close, leadLine1) and close > leadLine2
shortCondition = ta.crossunder(close, leadLine1) and close < leadLine2

// Plot buy and sell signals
plotshape(series=longCondition ? leadLine1 : na, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(series=shortCondition ? leadLine1 : na, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)

// Execute strategy orders with stop loss and take profit
strategy.entry("Buy", strategy.long, when=longCondition)
strategy.close("Buy", when=shortCondition) // Close buy position when sell condition is met
strategy.entry("Sell", strategy.short, when=shortCondition)
strategy.close("Sell", when=longCondition) // Close sell position when buy condition is met

// Trailing stop
strategy.cancel("Trailing Stop")
var float trailingStopPrice = na
if (longCondition)
    trailingStopPrice := math.max(trailingStopPrice, close - atrValue * 2)
    strategy.exit("Trailing Stop", from_entry="Buy", trail_offset=atrValue * 2, trail_price=trailingStopPrice)
else if (shortCondition)
    trailingStopPrice := math.min(trailingStopPrice, close + atrValue * 2)
    strategy.exit("Trailing Stop", from_entry="Sell", trail_offset=atrValue * 2, trail_price=trailingStopPrice)


Lebih banyak