Ichimoku Cloud Quant Strategi

Penulis:ChaoZhang, Tarikh: 2023-11-24 10:15:15
Tag:

img

Ringkasan

Ini adalah strategi kuantiti awan Ichimoku yang panjang sahaja. Strategi ini menilai arah trend melalui penunjuk Ichimoku, digabungkan dengan corak K-line, purata bergerak dan penunjuk RSI Stochastic untuk menapis isyarat dan pergi lama pada titik kemasukan yang lebih baik apabila trend naik.

Prinsip Strategi

Kriteria utama penilaian strategi adalah:

  1. Ichimoku lead line 1 melintasi di atas lead line 2, menunjukkan trend menaik
  2. Harga penutupan K-line melintasi di atas garis utama 1, memenuhi syarat untuk mengikuti trend
  3. K-line adalah lilin hijau, trend naik
  4. Apabila purata bergerak diaktifkan, MA cepat melintasi di atas MA perlahan
  5. Apabila Stochastic RSI diaktifkan, garis %K melintasi di atas garis %D

Apabila semua syarat di atas dipenuhi pada masa yang sama, strategi akan membuka kedudukan panjang. Apabila harga jatuh di bawah garis utama 1, strategi akan menutup kedudukan.

Strategi ini terutamanya menggunakan awan Ichimoku untuk menentukan arah trend utama, digabungkan dengan penunjuk tambahan untuk menapis isyarat dan pergi lama pada titik yang lebih baik apabila trend naik.

Kelebihan Strategi

  1. Gunakan awan Ichimoku untuk menentukan trend utama, backtest menunjukkan ketepatan yang tinggi
  2. Digabungkan dengan beberapa penunjuk tambahan untuk menapis titik masuk, boleh meningkatkan kadar keuntungan dengan ketara
  3. Strategi lama sahaja, sesuai untuk mata wang yang dipertikaikan berada dalam pasaran bull
  4. Ruang yang besar untuk pengoptimuman parameter, boleh menyesuaikan parameter penunjuk untuk pengoptimuman lanjut

Risiko Strategi

  1. Ada kemungkinan awan Ichimoku menilai trend yang salah
  2. Titik stop loss boleh dilanggar semasa perubahan pasaran tiba-tiba, yang membawa kepada kerugian yang diperbesar
  3. Direka untuk pasaran lembu, tidak sesuai untuk mata wang dengan tanda-tanda pembalikan trend tersembunyi
  4. Tetapan parameter yang tidak betul boleh membawa kepada entri yang terlalu agresif atau tindakan yang terlalu konservatif

Tindakan balas:

  1. Gabungkan lebih banyak penunjuk untuk menilai trend, meningkatkan ketepatan
  2. Tetapkan titik stop loss yang munasabah untuk mengawal kerugian tunggal dengan ketat
  3. Pilih strategi yang sesuai mengikut keadaan pasaran mata wang yang berbeza
  4. Uji dengan teliti dan mengoptimumkan parameter untuk menjadikan strategi lebih stabil

Arahan untuk Pengoptimuman Strategi

  1. Mengoptimumkan tetapan parameter penunjuk tambahan untuk meningkatkan kestabilan
  2. Tambahkan mekanisme stop loss seperti trailing stop loss, exponential moving average stop loss, dll.
  3. Tambah pengurusan kedudukan seperti saiz kedudukan tetap, purata kedudukan, dll.
  4. Membuat pelarasan parameter dan pengoptimuman untuk mata wang tertentu

Ringkasan

Strategi kuantiti awan Ichimoku ini mencapai kadar kemenangan yang tinggi namun hanya strategi jangka panjang yang dapat dikawal risiko dengan menilai arah trend. Kelebihan strategi ini jelas dan menunjukkan prestasi yang cemerlang di pasaran lembu. Langkah seterusnya adalah untuk meningkatkan aspek seperti pengoptimuman penunjuk, mekanisme hentian kerugian, pengurusan kedudukan untuk menjadikan strategi lebih komprehensif dan stabil.


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

//@version=4

strategy(title="Ichimoku only Long Strategy", shorttitle="Ichimoku only Long", overlay = true, pyramiding = 0, calc_on_order_fills = false, commission_type =  strategy.commission.percent, commission_value = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital=10000, currency=currency.USD)

// Time Range
FromMonth=input(defval=1,title="FromMonth",minval=1,maxval=12)
FromDay=input(defval=1,title="FromDay",minval=1,maxval=31)
FromYear=input(defval=2017,title="FromYear",minval=2017)
ToMonth=input(defval=1,title="ToMonth",minval=1,maxval=12)
ToDay=input(defval=1,title="ToDay",minval=1,maxval=31)
ToYear=input(defval=9999,title="ToYear",minval=2017)
start=timestamp(FromYear,FromMonth,FromDay,00,00)
finish=timestamp(ToYear,ToMonth,ToDay,23,59)
window()=>true
// See if this bar's time happened on/after start date
afterStartDate = time >= start and time<=finish?true:false

//Enable RSI
enableema = input(true, title="Enable EMA?")
enablestochrsi = input(false, title="Enable Stochastik RSI?")

//EMA
emasrc = close, 
len1 = input(24, minval=1, title="EMA 1")
len2 = input(90, minval=1, title="EMA 2")

ema1 = ema(emasrc, len1)
ema2 = ema(emasrc, len2)

col1 = color.lime
col2 = color.red

//EMA Plots
plot(ema1, title="EMA 1", linewidth=1, color=col1)
plot(ema2, title="EMA 2", linewidth=1, color=col2)

//STOCH RSI
smoothK = input(3, minval=1, title="RSI K Line")
smoothD = input(3, minval=1, title="RSI D Line")
lengthRSI = input(14, minval=1, title="RSI Length")
lengthStoch = input(14, minval=1, title="Stochastik Length")
src = input(close, title="RSI Source")

rsi1 = rsi(src, lengthRSI)
k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = sma(k, smoothD)

//Ichimoku
conversionPeriods = input(9, minval=1, title="Ichi Conversion Line Length")
basePeriods = input(26, minval=1, title="Ichi Base Line Length")
laggingSpan2Periods = input(52, minval=1, title="Ichi Lagging Span 2 Length")
displacement = input(1, minval=0, title="Ichi Displacement")
donchian(len) => avg(lowest(len), highest(len))
conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
leadLine1 = avg(conversionLine, baseLine)
leadLine2 = donchian(laggingSpan2Periods)
p1 = plot(leadLine1, offset = displacement - 1, color=color.green,
	 title="Lead 1")
p2 = plot(leadLine2, offset = displacement - 1, color=color.red,
	 title="Lead 2")
fill(p1, p2, color = leadLine1 > leadLine2 ? color.green : color.red)


//Long Condition
crossup = k[0] > d[0] and k[1] <= d[1]
ichigreenabovered = leadLine1 > leadLine2
ichimokulong = close > leadLine1
greencandle =  close > open
redcandle = close < open
emacond = ema1 > ema2
longcondition = ichigreenabovered and ichimokulong and greencandle

//Exit Condition
ichimokuexit = close < leadLine1

exitcondition = ichimokuexit and redcandle

//Entrys

if (enablestochrsi == false) and (enableema == false) and (longcondition) and (afterStartDate) and (strategy.opentrades < 1)
    strategy.entry("Long", strategy.long)
    
if (enablestochrsi == true) and (enableema == false) and (longcondition) and (crossup) and (afterStartDate) and (strategy.opentrades < 1)
    strategy.entry("Long", strategy.long)

if (enableema == true) and (enablestochrsi == false) and (longcondition) and (emacond) and (afterStartDate) and (strategy.opentrades < 1)
    strategy.entry("Long", strategy.long)

if (enableema == true) and (enablestochrsi == true) and (longcondition) and (emacond) and (crossup) and (afterStartDate) and (strategy.opentrades < 1)
    strategy.entry("Long", strategy.long)


//Exits
if (afterStartDate)
    strategy.close(id = "Long", when = exitcondition)









Lebih lanjut