Ichimoku Strategi Pendek-panjang dengan Pengurusan Wang

Penulis:ChaoZhang, Tarikh: 2023-12-28 12:12:51
Tag:

img

Ringkasan

Strategi ini adalah peningkatan berdasarkan sistem perdagangan Ichimoku. Idea utama adalah untuk menggabungkan petunjuk Ichimoku dan peraturan pengurusan wang untuk mengenal pasti peluang perdagangan pendek dan panjang.

Prinsip Strategi

Strategi ini menggunakan sistem Ichimoku klasik sebagai rujukan asas.

Tenkan-Sen: Garis penukaran.

Kijun-Sen: Garis asas. mencerminkan trend jangka panjang.

Senkou Span: Barisan Utama.

Chikou Span: Lagging Line. mencerminkan trend masa lalu.

Atas asas ini, strategi telah membuat penambahbaikan berikut:

  1. Parameter masa mengikuti teori persegi ganjil untuk lebih sesuai dengan corak pasaran.

  2. Peraturan pengurusan wang ditambah, termasuk stop loss, mengambil keuntungan, saiz kedudukan dan lain-lain, untuk mengawal risiko perdagangan.

  3. Tempoh ujian belakang boleh diselaraskan untuk ujian yang lebih komprehensif.

Khususnya, syarat kemasukan panjang termasuk tenkan cross kijun ke atas, chikou di atas harga, harga di atas kumo, masa depan kumo bullish dll. Masuk pendek memerlukan tenkan cross kijun ke bawah, chikou di bawah harga dll.

Peraturan pengurusan wang memerlukan 30% mengambil keuntungan dan 5% menghentikan kerugian untuk panjang; hentikan kerugian jika lebih daripada 3 ATR dari tenkan untuk pendek.

Analisis Kelebihan

Kelebihan utama menggabungkan Ichimoku dan pengurusan wang adalah:

  1. Ichimoku sendiri mencerminkan trend jangka pendek, sederhana dan panjang, masuk masuk / keluar yang munasabah.

  2. Teori kuadrat ganjil mengoptimumkan parameter untuk sepadan dengan statistik pasaran.

  3. Pengurusan wang secara berkesan mengawal satu perdagangan berhenti kerugian manakala keuntungan melebihi.

  4. Tempoh backtesting yang boleh diselaraskan membolehkan ujian yang lebih komprehensif.

Ringkasnya, strategi ini secara komprehensif mempertimbangkan trend, pemilihan parameter, kawalan risiko dan lain-lain, dan berkesan dalam mengenal pasti peluang jangka pendek dan mengawal risiko perdagangan, dengan kepraktisan yang kuat.

Analisis Risiko

Risiko utama strategi ini berasal dari:

  1. Ichimoku mudah tertipu oleh pelarian palsu yang menyebabkan entri yang tidak perlu.

  2. Mengambil keuntungan tetap dan menghentikan kerugian boleh menjadi rentan kepada perangkap. peraturan dinamik diperlukan.

  3. Data backtesting yang tidak komprehensif boleh terlalu menilai prestasi.

  4. Strategi ini lebih sesuai dengan pasaran trend. Mungkin kurang berprestasi di pasaran yang berbeza. Syarat kemasukan boleh dioptimumkan untuk pengenalan trend.

Arahan Peningkatan

Bidang utama penambahbaikan termasuk:

  1. Tambah penapis penunjuk untuk meningkatkan kualiti kemasukan.

  2. Mengambil keuntungan dinamik dan menghentikan kerugian. Sebagai contoh, mengambil keuntungan selepas N ATR breakouts, berhenti kerugian di bawah sokongan.

  3. Ujian pelbagai aset di data yang lebih panjang untuk pengesahan kestabilan.

  4. Membezakan pasaran trend dan julat.

Kesimpulan

Strategi ini secara komprehensif mempertimbangkan trend, pengurusan wang dan lain-lain, menggunakan Ichimoku untuk mengenal pasti peluang panjang, dan menggunakan peraturan kawalan risiko untuk mengehadkan kerugian perdagangan tunggal. Penambahbaikan yang ketara terhadap sistem Ichimoku asal. Pengoptimuman lanjut berpotensi menjadikannya strategi jangka pendek yang sangat praktikal.


/*backtest
start: 2023-11-27 00:00:00
end: 2023-12-27 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// Author Obarut
//@version=5
strategy("İchimoku Strategy With MM Short-Long",overlay=true,process_orders_on_close=true)

//Ichimoku Inputs
ts_period = input.int(8, minval=1, title="Tenkan-Sen Period")
ks_period = input.int(16, minval=1, title="Kijun-Sen Period")
ssb_period = input.int(24, minval=1, title="Senkou-Span B Period")
cs_offset = input.int(16, minval=1, title="Chikou-Span Offset")
ss_offset = input.int(8, minval=1, title="Senkou-Span Offset")
long_entry = input(true, title="Long Entry")
short_entry = input(true, title="Short Entry")

// Back Testing Period Inputs

fromday = input.int(defval=1,title="Start Date",minval=1,maxval=31) 
frommonth = input.int(defval=1,title="Start Month",minval=1,maxval=12)
fromyear = input.int(defval=1980,title="Start Year",minval=1800, maxval=2100)
today = input.int(defval=1,title="En Date",minval=1,maxval=31)
tomonth = input.int(defval=1,title="End Month",minval=1,maxval=12)
toyear =input.int(defval=2100,title="End Year",minval=1800,maxval=2200)
start=timestamp(fromyear,frommonth,fromday,00,00)
finish=timestamp(toyear,tomonth,today,00,00)
timewindow= time>=start and time<=finish

//Ichimoku Componenets Calculation Function
middle(len) => math.avg(ta.lowest(len), ta.highest(len))

// Ichimoku Components

tenkan = middle(ts_period)
kijun = middle(ks_period)
senkouA = math.avg(tenkan, kijun)
senkouB = middle(ssb_period)
//Senkou Span Lines slopes
slopetenkan=(tenkan-tenkan[2])/tenkan
slopekijun= (kijun-kijun[2])/kijun
//Avarage True Range 
atr = ta.atr(14)
//Senkou Span Lines
ss_above = math.max(senkouA[ss_offset-1], senkouB[ss_offset-1])
ss_below = math.min(senkouA[ss_offset-1], senkouB[ss_offset-1])

// Price Distance From Tenkan
distance = close - tenkan

// Price Distance from Kijun
distancek = close - kijun

// Entry/Exit Signals

tk_cross_kijun_bull = tenkan >= kijun//Tenkan Sen is greater than or equal to  Kijun Sen
tk_cross_kijun_bear = tenkan <= kijun//Tenkan Sen is smaller than or equal to Kijun Sen
cs_cross_bull = close > high[cs_offset-1]//Chikou is above the price
cs_cross_bear = close < close[cs_offset-1]//Chikou is below the price
price_above_kumo = close > ss_above//Price is above the Kumo cloud
pbsenkA = close < ss_above // Price is below the Senkou Span which is higher
pasenkB = close > ss_below// Price is above the Senkou span which is lower
price_below_kumo = close < ss_below // Price is below Kumo cloud
future_kumo_bull = senkouA > senkouB and (ta.roc(senkouA,3)>0) and (ta.roc(senkouB,3)>=0) // Future Kumo cloud is bullish
pbtenkan=close<tenkan
tkbelowkij=tenkan<kijun
future_kumo_bear = senkouA < senkouB//Future Kumo cloud is bearish
// Price Distance From Tenken
disbull = distance < 2*atr
//Price Distance From Kijun
disbullk = distancek < 3*atr
//Price Above Tenkan Condition
patk = close > tenkan
// Kijun Above Senkou Span Condition
kjasenkA = kijun > ss_above
// Price Below Kijun Condition
pbkijun = close < kijun
//Consolidation Tenkan and Kijun are inside Kumo cloud
kijuninsidekumo= kijun<ss_above and kijun>ss_below
tenkaninsidekumo= tenkan<ss_above and tenkan>ss_below
consolidation=kijuninsidekumo and tenkaninsidekumo

//Bullish Entry Condition

bullish= tk_cross_kijun_bull and cs_cross_bull and price_above_kumo and future_kumo_bull and disbull and patk 
     and not consolidation
//Bullish exit
bearish=tk_cross_kijun_bear and pbsenkA and cs_cross_bear  and future_kumo_bear
      or price_below_kumo     
// Bearish Entry Condition

bearish2=tk_cross_kijun_bear and pbtenkan and tkbelowkij and tkbelowkij and cs_cross_bear and future_kumo_bear

if(bullish and timewindow and long_entry )
    strategy.entry("Long Entry", strategy.long)


if(bearish2 and timewindow and short_entry)
    strategy.entry("Short Entry",strategy.short)
// Bearish Condition



lastentryprice = strategy.opentrades.entry_price(strategy.opentrades - 1)

// Take Profit or Stop Loss in Bearish

exit1= (close-tenkan)>3*atr and slopetenkan<=0
exit2= (close-lastentryprice)>5*atr and close<(tenkan-0.04*atr)

if(bearish and timewindow and not short_entry or exit1 or exit2  or (close>1.30*lastentryprice  ) or (close< 0.95*lastentryprice))
    strategy.close("Long Entry")
if(bullish and timewindow and not long_entry)
    strategy.close("Short Entry")
if(time>finish)
    strategy.close_all("time up")

plot(tenkan, color=#0496ff, title="Tenkan-Sen")
plot(kijun, color=#991515, title="Kijun-Sen")
plot(close, offset=-cs_offset+1, color=#2e640e, title="Chikou-Span")
sa=plot(senkouA, offset=ss_offset-1, color=color.rgb(17, 122, 21), title="Senkou-Span A")
sb=plot(senkouB, offset=ss_offset-1, color=color.rgb(88, 8, 8), title="Senkou-Span B")
fill(sa, sb, color = senkouA > senkouB ? color.rgb(198, 234, 198) : color.rgb(208, 153, 153), title="Cloud color")

Lebih lanjut