
Ini adalah strategi kuantitatif awan Ichimoku yang hanya melakukan lebih banyak. Strategi ini menilai arah trend melalui penunjuk Ichimoku, dengan penapis K-line, rata-rata bergerak dan Stochastic RSI untuk memilih titik masuk yang lebih baik apabila trend meningkat.
Kriteria utama yang digunakan dalam strategi ini ialah:
Apabila syarat di atas dipenuhi secara bersamaan, strategi akan membuka lebih banyak kedudukan; apabila harga jatuh di bawah garis utama 1, strategi akan melonggarkan kedudukan.
Strategi ini menggunakan grafik awan Ichimoku untuk menentukan arah trend utama, dan kemudian menggabungkan isyarat penapis indikator tambahan untuk memilih tempat masuk yang lebih baik apabila trend meningkat.
Kaedah pencegahan:
Strategi kuantitatif awan Ichimoku adalah strategi tunggal dengan menentukan arah trend, mencapai kemenangan yang tinggi dan risiko yang boleh dikawal. Kelebihan strategi jelas, kesannya menonjol dalam situasi pelbagai. Langkah seterusnya dapat diperbaiki dari segi pengoptimuman penunjuk, mekanisme stop-loss, pengurusan kedudukan, dan lain-lain, menjadikan strategi lebih baik 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)