Strategi Pelacakan Awan Oktagon

Penulis:ChaoZhang, Tanggal: 2023-12-20 15:08:22
Tag:

img

Gambaran umum

Ini adalah strategi kuantitatif mengikuti tren berdasarkan indikator Ichimoku. Ini terutama membangun posisi panjang dan pendek di bawah kondisi tertentu untuk melacak tren pasar, dikombinasikan dengan mekanisme stop loss tertentu untuk mengendalikan risiko.

Prinsip Strategi

Inti dari strategi ini adalah membangun sinyal perdagangan berdasarkan indikator Ichimoku dengan pengaturan parameter tertentu. Indikator Ichimoku terdiri dari empat garis: garis konversi, garis dasar, rentang utama A dan rentang tertinggal B. Garis konversi umumnya dikenal sebagai Tenkan-sen dan garis dasar disebut Kijun-sen. Strategi ini menetapkan parameter yang berbeda untuk Tenkan-sen dan Kijun-sen untuk menghasilkan sinyal perdagangan salib emas dan salib mati. Selain itu, juga menggabungkan cloud breakout sebagai kondisi tambahan untuk memicu entri.

Secara khusus, strategi ini terutama mengikuti aturan perdagangan berikut:

  1. Pergi panjang ketika harga melanggar di atas Tenkan-sen dan meninggalkan awan;

  2. Tutup posisi panjang ketika harga turun di bawah Tenkan-sen;

  3. Pergi short saat harga turun di bawah Kijun-sen dan masuk ke awan;

  4. Tutup posisi short saat harga naik kembali di atas Tenkan-sen.

Melalui prinsip perdagangan panjang dan pendek seperti itu, strategi dapat secara efektif menangkap pergerakan tren di pasar. Sementara itu, menggabungkan cloud breakout menyaring sinyal palsu sampai batas tertentu.

Analisis Keuntungan

Dibandingkan dengan strategi perdagangan rata-rata bergerak umum lainnya, strategi ini memiliki keuntungan berikut:

  1. Penghakiman tren yang lebih akurat berdasarkan Ichimoku. Ichimoku terdiri dari beberapa moving average, membuatnya lebih dapat diandalkan untuk mengenali tren dan menyaring kebisingan dari MAs tunggal.

  2. Efek filter yang lebih baik dengan beberapa garis. Filter tambahan dari cloud breakout menghindari sinyal palsu.

  3. Mengatur risiko. Menetapkan garis stop loss memungkinkan stop loss tepat waktu dan pengendalian risiko.

  4. Penarikan yang lebih kecil. Perdagangan yang kurang menguntungkan dibandingkan dengan strategi tren lainnya mengurangi kerugian penarikan.

  5. Fleksibel pengaturan parameter. parameter dapat disesuaikan untuk menyesuaikan diri dengan kondisi pasar yang berbeda.

Risiko dan Optimalisasi

Masih ada beberapa risiko yang harus diperhatikan untuk strategi ini:

  1. Kinerja yang buruk di pasar yang terikat rentang. Whipsaws dapat terjadi yang menyebabkan kerugian float.

  2. Pengakuan pembalikan yang tidak memadai. lemah dalam mengidentifikasi pembalikan tren jangka pendek, mungkin kehilangan peluang atau mengalami pembalikan mendadak.

  3. Bergantung pada penyesuaian parameter empiris. parameter yang berbeda dapat secara signifikan mempengaruhi kinerja yang membutuhkan pengalaman sejarah yang banyak.

Aspek berikut dapat dioptimalkan untuk mengatasi risiko di atas:

  1. Tambahkan indikator volatilitas untuk mendeteksi pasar non-trending dan strategi pause.

  2. Sertakan sinyal pembalikan tambahan seperti crossover rata-rata bergerak.

  3. Menggunakan pembelajaran mesin untuk optimasi parameter otomatis alih-alih penyesuaian manual.

  4. Atur garis stop loss dinamis berdasarkan volatilitas pasar.

Kesimpulan

Secara umum, strategi ini memanfaatkan kekuatan Ichimoku dalam menangkap pergerakan tren. Dengan penyesuaian parameter dan optimasi yang tepat, ia dapat mencapai ketahanan yang lebih baik dan berfungsi sebagai strategi yang efisien yang layak dipertimbangkan untuk perdagangan langsung.


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

//@version=3
strategy(title="RENKO ICHIMOKU STRATEGY", shorttitle="RENKO ICHIMOKU STRATEGY", overlay=true)
ro = open
rc = close

tenkanSenPeriods = input(10, minval=1, title="Tenkan-sen"),
kijunSenPeriods = input(30, minval=1, title="Kijun-sen")
SenkouSpanBPeriods = input(60, minval=1, title="Senkou Span B"),
displacement = input(30, minval=1, title="Chikou Span (Displacement)")

donchian(len) => avg(lowest(len), highest(len))

tenkanSen = donchian(tenkanSenPeriods)
kijunSen = donchian(kijunSenPeriods)
SenkouSpanA = avg(tenkanSen, kijunSen)
SenkouSpanB = donchian(SenkouSpanBPeriods)

plot(tenkanSen, color=#0496ff, linewidth=2, title="Tenkan-sen")
// plot(kijunSen, color=#991515, title="Kijun-sen")
// plot(close, offset = -displacement, color=#459915, title="Chikou Span")

p1 = plot(SenkouSpanA, offset = displacement, color=green, title="Senkou Span A")
p2 = plot(SenkouSpanB, offset = displacement, color=red, title="Senkou Span B")
fill(p1, p2, color = SenkouSpanA > SenkouSpanB ? green : red)

// Entry/Exit Signals
tk_cross_bull = tenkanSen > kijunSen
tk_cross_bear = tenkanSen < kijunSen

price_below_tenkan = open < tenkanSen and close < tenkanSen
price_above_tenkan = open > tenkanSen and close > tenkanSen

price_below_kinjun = close < kijunSen
price_above_kinjun = close > kijunSen

tekan_above_kinjun = tenkanSen > kijunSen
tekan_below_kinjun = tenkanSen < kijunSen

ss_high = max(SenkouSpanA[displacement-1], SenkouSpanB[displacement-1])
ss_low = min(SenkouSpanA[displacement-1], SenkouSpanB[displacement-1])
price_inside_kumo = close > ss_high and close < ss_low

price_below_kumo = rc[1] < ro[1] and rc[0] < ro[0] and rc[1] < ss_low 
price_above_kumo = rc[1] > ro[1] and rc[0] > ro[0] and rc[1] > ss_high 

cs_cross_bull = mom(close, displacement-1) > 0
cs_cross_bear = mom(close, displacement-1) < 0

bullish = cs_cross_bull and not price_inside_kumo
bearish = cs_cross_bear and not price_inside_kumo



strategy.entry("Long", strategy.long, when=price_above_kumo and price_above_tenkan )
strategy.close("Long", when=price_below_tenkan )

strategy.entry("Short", strategy.short, when=price_below_kumo and price_below_tenkan )
strategy.close("Short", when=price_above_tenkan )

// longCondition = crossover(sma(close, 14), sma(close, 28))
// if (longCondition)
//     strategy.entry("My Long Entry Id", strategy.long)

// shortCondition = crossunder(sma(close, 14), sma(close, 28))
// if (shortCondition)
//     strategy.entry("My Short Entry Id", strategy.short)

Lebih banyak