Strategi ini menggabungkan indikator Heiken Ashi dan Ichimoku Kinko Hyo untuk menentukan arah tren dan mengikuti tren. Heiken Ashi smoothing mengurangi kebisingan. Ichimoku menggunakan beberapa sinyal seperti konversi dan garis dasar untuk menilai kekuatan tren. Kombinasi ini meningkatkan stabilitas strategi.
Menghitung harga penutupan Heiken Ashi dan memetakan indikator Ichimoku seperti garis konversi, garis dasar dll. Pergi panjang ketika penutupan lebih tinggi dari dua hari sebelumnya dan di atas tepi atas Ichimoku dan garis tertinggal. Pergi pendek ketika penutupan lebih rendah dari dua hari sebelumnya dan di bawah tepi bawah Ichimoku dan garis tertinggal. Konversi dan penyeberangan garis dasar juga memberikan sinyal sekunder.
Risiko dapat dikendalikan dengan menyesuaikan kelancaran, periode tahan, mengoptimalkan parameter Ichimoku dll.
Strategi ini secara komprehensif menggunakan beberapa indikator untuk menentukan arah tren dengan penarikan yang terkontrol.
/*backtest start: 2023-08-18 00:00:00 end: 2023-09-17 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("Heiken Ashi + Ichimoku Kinko Hyo Strategy", shorttitle="HaI", overlay=true, default_qty_type=strategy.percent_of_equity, max_bars_back=1000, default_qty_value=100, calc_on_order_fills= true, calc_on_every_tick=true, pyramiding=0) hahigh = security(heikinashi(syminfo.tickerid), timeframe.period, high) halow = security(heikinashi(syminfo.tickerid), timeframe.period, low) TenkanSenPeriods = input(9, minval=1, title="Tenkan Sen Periods") KijunSenPeriods = input(24, minval=1, title="Kijun Sen Periods") SenkouSpanBPeriods = input(51, minval=1, title="Senkou Span B Periods") displacement = input(24, minval=1, title="Displacement") donchian(len) => avg(lowest(len), highest(len)) TenkanSen = donchian(TenkanSenPeriods) KijunSen = donchian(KijunSenPeriods) SenkouSpanA = avg(TenkanSen, KijunSen) SenkouSpanB = donchian(SenkouSpanBPeriods) SenkouSpanH = max(SenkouSpanA[displacement - 1], SenkouSpanB[displacement - 1]) SenkouSpanL = min(SenkouSpanA[displacement - 1], SenkouSpanB[displacement - 1]) ChikouSpan = close[displacement-1] plot(TenkanSen, color=blue, title="Tenkan Sen", linewidth = 2) plot(KijunSen, color=maroon, title="Kijun Sen", linewidth = 3) plot(close, offset = -displacement, color=orange, title="Chikou Span", linewidth = 2) sa=plot (SenkouSpanA, offset = displacement, color=green, title="Senkou Span A", linewidth = 2) sb=plot (SenkouSpanB, offset = displacement, color=red, title="Senkou Span B", linewidth = 3) fill(sa, sb, color = SenkouSpanA > SenkouSpanB ? green : red) longCondition = hahigh > max(hahigh[1],hahigh[2]) and close>ChikouSpan and close>SenkouSpanH and (TenkanSen>=KijunSen or close>KijunSen) if (longCondition) strategy.entry("Long",strategy.long) shortCondition = halow < min(halow[1],halow[2]) and close<ChikouSpan and close<SenkouSpanL and (TenkanSen<=KijunSen or close<KijunSen) if (shortCondition) strategy.entry("Short",strategy.short) closelong = halow < min(halow[1],halow[2]) and (TenkanSen<KijunSen or close<TenkanSen or close<KijunSen or close<SenkouSpanH or close<ChikouSpan) if (closelong) strategy.close("Long") closeshort = hahigh > max(hahigh[1],hahigh[2]) and (TenkanSen>KijunSen or close>TenkanSen or close>KijunSen or close>SenkouSpanL or close>ChikouSpan) if (closeshort) strategy.close("Short")