Strategi Pengesanan Awan Oktagon

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

img

Ringkasan

Ini adalah strategi mengikut trend kuantitatif berdasarkan penunjuk Ichimoku. Ia terutamanya membina kedudukan panjang dan pendek di bawah keadaan tertentu untuk mengesan trend pasaran, digabungkan dengan mekanisme berhenti rugi tertentu untuk mengawal risiko.

Prinsip Strategi

Inti strategi ini adalah untuk membina isyarat dagangan berdasarkan penunjuk Ichimoku dengan tetapan parameter tertentu. Indikator Ichimoku terdiri daripada empat garis: garis penukaran, garis asas, rentang utama A dan rentang tertinggal B. Garis penukaran biasanya dikenali sebagai Tenkan-sen dan garis asas dipanggil Kijun-sen. Strategi ini menetapkan parameter yang berbeza untuk Tenkan-sen dan Kijun-sen untuk menjana isyarat dagangan salib emas dan salib mati. Di samping itu, ia juga menggabungkan pecah awan sebagai keadaan tambahan untuk mencetuskan kemasukan.

Secara khusus, strategi ini terutamanya mengikuti peraturan perdagangan berikut:

  1. Pergi panjang apabila harga pecah di atas Tenkan-sen dan meninggalkan awan;

  2. Tutup kedudukan panjang apabila harga jatuh di bawah Tenkan-sen;

  3. Pergi pendek apabila harga pecah di bawah Kijun-sen dan memasuki awan;

  4. Tutup kedudukan pendek apabila harga naik semula di atas Tenkan-sen.

Melalui prinsip perdagangan panjang dan pendek seperti itu, strategi dapat menangkap pergerakan trend di pasaran dengan berkesan. Sementara itu, menggabungkan penembusan awan menapis isyarat palsu hingga tahap tertentu.

Analisis Kelebihan

Berbanding dengan strategi perdagangan purata bergerak yang lain, strategi ini mempunyai kelebihan berikut:

  1. Penghakiman trend yang lebih tepat berdasarkan Ichimoku. Ichimoku terdiri daripada pelbagai purata bergerak, menjadikannya lebih dipercayai untuk pengenalan trend dan menapis bunyi bising dari MA tunggal.

  2. Efek penapis yang lebih baik dengan pelbagai garis. penapis tambahan dari awan pecah mengelakkan isyarat palsu.

  3. Risiko yang boleh dikawal. Tetapan garis stop loss membolehkan stop loss tepat pada masanya dan kawalan risiko.

  4. Pengeluaran yang lebih kecil. Perdagangan yang kurang buruk berbanding dengan strategi trend lain mengurangkan kerugian pengeluaran.

  5. Penyesuaian parameter yang fleksibel. Parameter boleh diselaraskan untuk menyesuaikan diri dengan keadaan pasaran yang berbeza.

Risiko dan Pengoptimuman

Masih ada beberapa risiko yang perlu diperhatikan untuk strategi ini:

  1. Prestasi yang lemah di pasaran yang terikat julat. Whipsaws boleh berlaku yang membawa kepada kerugian terapung.

  2. Pengiktirafan pembalikan yang tidak mencukupi. Lemah dalam mengenal pasti pembalikan trend jangka pendek, mungkin terlepas peluang atau menghadapi pembalikan mendadak.

  3. Bergantung pada penyesuaian parameter empirikal. Parameter yang berbeza boleh memberi kesan yang signifikan terhadap prestasi yang memerlukan pengalaman sejarah yang banyak.

Aspek berikut boleh dioptimumkan untuk menangani risiko di atas:

  1. Tambah penunjuk turun naik untuk mengesan pasaran bukan trend dan strategi jeda.

  2. Sertakan isyarat pembalikan tambahan seperti persilangan purata bergerak.

  3. Menggunakan pembelajaran mesin untuk pengoptimuman parameter automatik dan bukannya penyesuaian manual.

  4. Buat garis stop loss dinamik berdasarkan turun naik pasaran.

Kesimpulan

Secara umum, strategi ini memanfaatkan kekuatan Ichimoku dalam menangkap pergerakan trend. Dengan penyesuaian parameter dan pengoptimuman yang betul, ia dapat mencapai ketahanan yang lebih baik dan berfungsi sebagai strategi yang cekap yang patut 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 lanjut