Ichimoku Cloud Trend Mengikuti Strategi

Penulis:ChaoZhang, Tanggal: 2024-02-01 11:34:23
Tag:

img

I. Nama Strategi: Ichimoku Cloud Trend Mengikuti Strategi

II. Ringkasan Strategi

Strategi ini memanfaatkan beberapa sinyal Ichimoku Cloud untuk merancang strategi trend berikut murni yang bertujuan untuk menangkap tren jangka menengah hingga panjang, menyaring konsolidasi, dan mengikuti arah tren yang kuat.

III. Prinsip Strategi

Strategi ini terutama menggunakan Tenkan-sen, Kijun-sen, Chikou Span dan indikator kunci lainnya dari Ichimoku Cloud. Untuk menilai tren jangka panjang, ia berfokus pada hubungan antara Span terkemuka dan tertinggal; untuk waktu masuk dan keluar tertentu, ia melihat silang Tenkan-sen dan Kijun-sen dan perubahan hubungan harga dengan Cloud.

Singkatnya, logika inti adalah: mengkonfirmasi tren jangka menengah -> menunggu sinyal resumption tren yang kuat -> masuk untuk mengikuti tren -> keluar dengan trailing stop loss.

Secara khusus, untuk menentukan tren jangka menengah dan panjang, menggunakan hubungan antara Span terkemuka dan tertinggal (di atas Span hijau terkemuka yang menandakan tren kenaikan dan sebaliknya). Setelah mengkonfirmasi tren yang lebih besar, silang antara Tenkan-sen dan Kijun-sen bersama dengan sinyal price breakout digunakan untuk mengidentifikasi resumption trend; setelah masuk, Kijun-sen digunakan sebagai stop loss trailing untuk exit.

Hal ini menyaring konsolidasi jangka pendek hingga menengah dan memungkinkan menangkap tren kuat untuk kinerja yang konsisten di pasar.

IV. Keuntungan

(1) Menggunakan Ichimoku Cloud untuk menentukan arah tren jangka menengah dan panjang bermanfaat untuk menemukan tepi arah utama.

(2) Penyambungan Tenkan-sen/Kijun-sen dan perubahan hubungan harga dengan Cloud memungkinkan untuk menyaring konsolidasi secara efektif dan menangkap tren yang kuat lebih awal.

(3) Mekanisme stop loss exit trailing memungkinkan naik tren besar sementara juga mengendalikan kerugian terisolasi secara efektif.

(4) Menggabungkan berbagai sinyal Ichimoku menciptakan sistem yang kuat mengikuti tren dengan lancar.

V. Risiko

(1) Risiko sistemik dari salah mengidentifikasi tren yang lebih besar. Jika tren yang lebih besar didiagnosis salah, semua tindakan berikutnya akan membawa risiko arah yang salah.

(2) Risiko dari waktu masuk yang dipilih dengan buruk.

(3) Risiko dari stop yang ditempatkan terlalu ketat. Gerakan harga yang ekstrim dapat mengambil stop yang terlalu ketat yang mengakibatkan kerugian yang tidak direncanakan.

(4) Frekuensi perdagangan yang tinggi menyebabkan biaya transaksi yang berlebihan.

VI. Daerah Peningkatan

(1) Uji kombinasi yang berbeda dari periode input Ichimoku untuk menemukan parameter yang optimal.

(2) Optimalkan filter entri untuk memastikan kualitas entri yang tinggi.

(3) Sesuaikan jarak berhenti untuk menyeimbangkan risiko-pahala.

(4) Tambahkan tingkat target keuntungan berdasarkan jarak indikator kunci harga untuk menciptakan mekanisme pengambilan keuntungan adaptif.

VII. Kesimpulan

Strategi Ichimoku Cloud trend following ini mensintesis beberapa sinyal Ichimoku untuk mendiagnosa tren, entri waktu, dan trail stop. Praktek menunjukkan dapat secara efektif menangkap tren jangka menengah dan panjang, menyaring konsolidasi dan mencapai kinerja yang lebih konsisten. Optimasi dan pengujian di masa depan dapat lebih meningkatkan kinerja untuk pengembalian yang unggul.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Ichimoku trendfollowing", overlay=true, initial_capital=1000, commission_type=strategy.commission.cash_per_order, commission_value=0.04, slippage=2)

//***************************
//  INPUT BACKTEST RANGE    *
//***************************
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2010, title = "From Year", minval = 2000) 
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 2000)

start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => true

//***************
//*  ICHIMOKU   *
//***************
//inizializzazione parametri,,
tenkanPeriods = input(9, minval=1, title="Tenkan-Sen")
kinjunPeriods = input(26, minval=1, title="Kinjun-Sen")
senkouSpanBPeriods = input(52, minval=1, title="Senkou Span B")
displacement = input(26, minval=1, title="-ChinkouSpan/+SenkouSpan A")

//definizione Tenkan-Sen (9 Period), Kinjun-Sen (26 Period), Chinkou Span (Lagging Line)
averageHighLow(period) => avg(lowest(period), highest(period))
tenkan= averageHighLow(tenkanPeriods)
kinjun = averageHighLow(kinjunPeriods)
senkouSpanA = avg(tenkan, kinjun)
senkouSpanB = averageHighLow(senkouSpanBPeriods)

//definisco il colore della kumo in base al trend.
senkouSpan1Above = senkouSpanA >= senkouSpanB ? 1 : na
senkouSpan2Below = senkouSpanA <= senkouSpanB ? 1 : na

span1plotU = senkouSpan1Above ? senkouSpanA : na
span2plotU = senkouSpan1Above ? senkouSpanB : na
span1plotD = senkouSpan2Below ? senkouSpanA : na
span2plotD = senkouSpan2Below ? senkouSpanB : na

col = senkouSpanA >= senkouSpanB ? lime : red

//plots Ichimoku
plot(tenkan, title = 'Tenkan-Sen', linewidth=1, color=blue)
plot(kinjun, title = 'Kinjun-Sen', linewidth=1, color=red)
plot(close, title = 'Chinkou Span', linewidth=1, offset = -displacement, color=aqua)
plot( senkouSpanA, title = 'Senkou Span A', style=line, linewidth=1, offset = displacement, color=lime)
plot(senkouSpanB, title = 'Senkou Span B', style=line, linewidth=1, offset = displacement, color=red)

//Cloud Lines Plot 
p1 = plot(span1plotU ? span1plotU  : na, title = 'Senkou Span A Above Senkou Span B', style=linebr, linewidth=1, offset = displacement, color=col)
p2 = plot(span2plotU ? span2plotU  : na, title = 'Senkou Span B (52 Period) Below Span A Cloud', style=linebr, linewidth=1, offset = displacement, color=col)
p3 = plot(span1plotD ? span1plotD  : na, title = 'Senkou Span A (26 Period) Below Span B Cloud', style=linebr, linewidth=1, offset = displacement, color=col)
p4 = plot(span2plotD ? span2plotD  : na, title = 'Senkou Span B (52 Period) Above Span A Cloud', style=linebr, linewidth=1, offset = displacement, color=col)
//Fills that color cloud based on Trend.
fill(p1, p2, color=lime, transp=70, title='Kumo (Cloud)')
fill(p3, p4, color=red, transp=70, title='Kumo (Cloud)')

//***********************************************
//*     condizioni ingresso ed uscita mercato   *
//***********************************************
isKumoRialzista = senkouSpanA >= senkouSpanB ? true : false
isSopraKumo = (close > max(senkouSpanA[displacement], senkouSpanB[displacement]))
isSottoKumo = (close < min(senkouSpanA[displacement], senkouSpanB[displacement]))
isChinkouSpanSopra = high[displacement]<close
isChinkouSpanSotto = low[displacement]>close

filtroLong=isSopraKumo and isChinkouSpanSopra
filtroShort=isSottoKumo and isChinkouSpanSotto

//rimbalzato su kijun quando i prezzi stavano ritracciando e il trend era giĆ  in atto(tenkan >kijun x entrare long
isPullBackLijunEntryLong = kinjun<tenkan and low<kinjun and (close>kinjun) 
isPullBackLijunEntryShort =kinjun>tenkan and high>kinjun and  (close<kinjun) 

//Breackout Kumo
isBreackoutKumoEntryLong =  crossover(close, max(senkouSpanA[displacement], senkouSpanB[displacement])) and (close>tenkan) and (close>kinjun) 
isBreackoutKumoEntryShort =  crossunder(close, min(senkouSpanA[displacement], senkouSpanB[displacement])) and (close<tenkan) and (close<kinjun)

ConditionEntryLong = (isPullBackLijunEntryLong or isBreackoutKumoEntryLong ) and filtroLong
ConditionEntryShort = (isPullBackLijunEntryShort or isBreackoutKumoEntryLong ) and filtroShort

isExitLong = close<kinjun
isExitShort = close>kinjun

//ingressi ed uscite Mercato
strategy.entry ("Long",long=true, when = window() and ConditionEntryLong)
strategy.entry ("Short",long=false, when = window() and ConditionEntryShort)

strategy.close(id="Long", when=isExitLong)
strategy.close(id="Short", when=isExitShort)
strategy.close_all(when=not window())


Lebih banyak