Ichimoku Breakout Strategi

Penulis:ChaoZhang, Tanggal: 2023-10-13 16:48:22
Tag:

Gambaran umum

Strategi Ichimoku Breakout menggunakan konsep moving average dan menggunakan hubungan antara garis Ichimoku dan harga untuk menentukan arah tren. Ini termasuk dalam strategi trend following.

Analisis Prinsip

Inti dari strategi ini didasarkan pada teori garis Ichimoku.donchian()fungsi untuk menghitung rata-rata tertinggi tertinggi dan terendah terendah selama periode tertentu sebagai garis keseimbangan.

Secara khusus, strategi pertama menghitung garis Tenkan (TS) menggunakanTenPeriode, sebagai garis referensi. Ketika harga melanggar di atas garis, itu dianggap sebagai pergerakan tren dan menghasilkan sinyal panjang. Ketika harga melanggar di bawah garis, itu dianggap sebagai pembalikan tren dan menghasilkan sinyal pendek.

Selain itu, strategi ini memperhitungkan Jalur Kijun (KS) menggunakanKijbersama denganTShanya ketika sinyal yang salah.TSSalib di atasKSApakah sinyal panjang akan dipicu.

Kode ini juga memetakan Awan Ichimoku untuk membantu penilaian arah tren.

Analisis Keuntungan

  • Menggunakan rata-rata bergerak untuk menentukan tren, sederhana dan mudah dipahami
  • Ichimoku Cloud memberikan referensi tambahan untuk meningkatkan akurasi
  • Chikou Line lebih lanjut menyaring sinyal sebagai kondisi tambahan
  • Pengaturan fleksibel tersedia dengan kombinasi parameter yang berbeda

Analisis Risiko

  • Strategi rata-rata bergerak sensitif terhadap parameter, periode yang berbeda dapat menghasilkan hasil yang bervariasi
  • Tren murni mengikuti tidak dapat menilai tren vs rentang, risiko kerugian ada
  • Penanganan periode konsolidasi yang buruk, rentan terhadap sinyal yang salah
  • Penghakiman awan tidak stabil, mungkin menyesatkan

Pertimbangkan untuk menggabungkan dengan indikator momentum seperti MACD untuk kekuatan tren mengadopsi sistem rata-rata bergerak ganda untuk meningkatkan stabilitas atau menggabungkan stop loss untuk mengendalikan risiko.

Arahan Optimasi

  • Tambahkan indikator momentum untuk menentukan kekuatan tren
  • Pertimbangkan sistem rata-rata bergerak ganda, misalnya salib emas
  • Tambahkan indikator saluran dan volatilitas untuk mendeteksi rentang
  • Mengoptimalkan parameter untuk menemukan kombinasi periode terbaik
  • Menggabungkan strategi stop loss untuk membatasi kerugian per perdagangan

Kesimpulan

Ichimoku Breakout Strategy relatif sederhana dan langsung, cocok untuk pemula untuk memahami tren menggunakan moving average. Ini juga dapat diperluas dengan beberapa indikator untuk sistem yang diperkaya. Namun, kinerja praktisnya membutuhkan verifikasi dan optimalisasi lebih lanjut sebelum diterapkan dalam perdagangan langsung, terutama dalam pengendalian risiko. Kuncinya adalah menerapkannya dengan bijak berdasarkan kondisi pasar, dan tidak mengikuti garis secara membabi buta.


/*backtest
start: 2023-01-01 00:00:00
end: 2023-10-12 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

strategy(title="Ichimoku Crypto Breakout", shorttitle="Ichimoku Breakout", overlay=true)

Ten = input(18, minval=1, title="Tenkan")
Kij = input(52, minval=1, title="Kijun")
LeadSpan = input(104, minval=1, title="Senkou B")
Displace = input(52, minval=1, title="Senkou A")
SpanOffset = input(52, minval=1, title="Span Offset")

sts = input(true, title="Show Tenkan")
sks = input(true, title="Show Kijun")
ssa = input(true, title="Show Span A")
ssb = input(true, title="Show Span B")

source = close

//Script for Ichimoku Indicator
donchian(len) => avg(lowest(len), highest(len))
TS = donchian(Ten)
KS = donchian(Kij)
SpanA = avg(TS, KS)
SpanB = donchian(LeadSpan)

CloudTop = max(TS, KS)

Chikou = source[Displace]
SpanAA = avg(TS, KS)[SpanOffset]
SpanBB = donchian(LeadSpan)[SpanOffset]

//Kumo Breakout (Long)
SpanA_Top = SpanAA >= SpanBB ? 1 : 0
SpanB_Top = SpanBB >= SpanAA ? 1 : 0

SpanA_Top2 = SpanA >= SpanB ? 1 : 0
SpanB_Top2 = SpanB >= SpanA ? 1 : 0

SpanA1 = SpanA_Top2 ? SpanA : na
SpanA2 = SpanA_Top2 ? SpanB : na

SpanB1 = SpanB_Top2 ? SpanA : na
SpanB2 = SpanB_Top2 ? SpanB : na

//plot for Tenkan and Kijun (Current Timeframe)
p1= plot(sts and TS ? TS : na, title="Tenkan", linewidth = 2, color = gray)
p2 = plot(sks and KS ? KS : na, title="Kijun", linewidth = 2, color = black)
p5 = plot(close, title="Chikou", linewidth = 2, offset=-Displace, color = orange)

//Plot for Kumo Cloud (Dynamic Color)
p3 = plot(ssa and SpanA ? SpanA : na, title="SpanA", linewidth=2, offset=Displace, color=green)
p4 = plot(ssb and SpanB ? SpanB : na, title="SpanB", linewidth=2, offset=Displace, color=red)

p8 = plot(ssa and SpanA1 ? SpanA1 : na, title="Span A1 above", style=linebr, linewidth=1, offset=Displace, color=green)
p9 = plot(ssa and SpanA2 ? SpanA2 : na, title="Span A2 above", style=linebr, linewidth=1, offset=Displace, color=green)
p10 = plot(ssb and SpanB1 ? SpanB1 : na, title="Span B1 above", style=linebr, linewidth=1, offset=Displace, color=red)
p11 = plot(ssb and SpanB2 ? SpanB2 : na, title="Span B2 above", style=linebr, linewidth=1, offset=Displace, color=red)

fill(p8, p9, color = lime, transp=70, title="Kumo Cloud Up")
fill (p10, p11, color=red, transp=70, title="Kumo Cloud Down")

LongSpan = (SpanA_Top and source[1] < SpanAA[1] and source > SpanAA) or (SpanB_Top and source[1] < SpanBB[1] and source > SpanBB) ? 1 : 0
cupSpan = LongSpan  == 1 ? LongSpan : 0

//Kumo Breakout (Long)
//plotarrow(cupSpan, title="Kumo Breakout Long", colorup=green, maxheight=50)

//Kumo Breakout (Long) Alerts
Long_Breakout = (SpanA_Top ==1 and crossover(source, SpanAA)) or (SpanB_Top ==1 and crossover(source, SpanBB))
//Long_Breakout = ((SpanA_Top ==1 and crossover(KS, SpanAA)) or (SpanB_Top ==1 and crossover(KS, SpanBB))) and TS >= KS
//alertcondition(Long_Breakout, title="Kumo Breakout Long", message="Kumo Long")

//Kumo Breakout (Short)
ShortSpan = (SpanB_Top and source[1] > SpanAA[1] and source < SpanAA) or (SpanA_Top and source[1] > SpanBB[1] and source < SpanBB) ? 1 : 0
cdnSpan = ShortSpan == 1 ? ShortSpan : 0

//Kumo Breakout (Short)
//plotarrow(cdnSpan*-1, title="Kumo Breakout Short", colordown=red, maxheight=50)

//Kumo Breakout (Short) Alerts
Short_Breakout = (SpanA_Top ==1 and crossunder(source, SpanBB)) or (SpanB_Top ==1 and crossunder(source, SpanAA))
//alertcondition(Short_Breakout, title="Kumo Breakout Short", message="Kumo Short")

//Kumo Twist
Kumo_Twist_Long = SpanA[1] < SpanB[1] and SpanA > SpanB ? 1 : 0
Kumo_Twist_Short = SpanA[1] > SpanB[1] and SpanA < SpanB ? 1 : 0

cupD = Kumo_Twist_Long == 1 ? Kumo_Twist_Long : 0
cdnD = Kumo_Twist_Short == 1 ? Kumo_Twist_Short : 0

//Kumo Twist (Long/Short)
//plotarrow(cupD, title="Kumo Twist Long", colorup=green, maxheight=50)
//plotarrow(cdnD*-1, title="Kumo Twist Short", colordown=red, maxheight=50)

//Kumo Twist (Long/Short) Alerts
KumoTwistLong_Cross = crossover(SpanA, SpanB)
//alertcondition(KumoTwistLong_Cross, title="Kumo Twist Long", message="Kumo Twist Long")
KumoTwistShort_Cross = crossunder(SpanA, SpanB)
//alertcondition(KumoTwistShort_Cross, title="Kumo Twist Short", message="Kumo Twist Short")

//Kumo Twist (Long/Short) - Bar Color
BarColor = Kumo_Twist_Long ? green : Kumo_Twist_Short ? red : na
barcolor(BarColor)

//Chikou above/below Price
Chikou_Above = close > Chikou
Chikou_Below = close < Chikou

//Kumo Twist (Long/Short) - Plot Character on location of Chikou to Price & Price to Kumo
//plotchar(Kumo_Twist_Long and Chikou_Above, title="Kumo Twist Long and Chikou above Price", char="A", location=location.abovebar, color=green)
//plotchar(Kumo_Twist_Long and Chikou_Below, title="Kumo Twist Long and Chikou below Price", char="B", location=location.abovebar, color=red)
//plotchar(Kumo_Twist_Short and Chikou_Above, title="Kumo Twist Short and Chikou above Price", char="A", location=location.belowbar, color=green)
//plotchar(Kumo_Twist_Short and Chikou_Below, title="Kumo Twist Short and Chikou below Price", char="B", location=location.belowbar, color=red)

//Base and Conversion Line Cross
//long = cross(TS, KS) and TS>KS

long = (cross(TS, SpanA) or cross(TS, SpanB)) and TS>SpanA and TS>SpanB and TS>=KS
short = cross(TS, KS) and KS >= TS

strategy.entry("long", strategy.long, when=Long_Breakout)
strategy.entry("short", strategy.short, when=Short_Breakout)
//strategy.exit("bracket", when=short)

Lebih banyak