Strategi ini menggabungkan indikator Heiken Ashi dan Ichimoku Kinko Hyo untuk menentukan arah trend dan mengikuti trend. Heiken Ashi smoothing mengurangkan bunyi bising. Ichimoku menggunakan pelbagai isyarat seperti penukaran dan garis asas untuk menilai kekuatan trend. Kombinasi ini meningkatkan kestabilan strategi.
Mengira harga penutupan Heiken Ashi dan merangka indikator Ichimoku seperti garisan penukaran, garis asas dan lain-lain. Pergi panjang apabila penutupan lebih tinggi daripada dua hari sebelumnya dan di atas tepi atas Ichimoku dan garis kelewatan. Pergi pendek apabila penutupan lebih rendah daripada dua hari sebelumnya dan di bawah tepi bawah Ichimoku dan garis kelewatan. Penukaran dan penyeberangan garis asas juga memberikan isyarat sekunder.
Risiko boleh dikawal dengan menyesuaikan kelancaran, tempoh tahan, mengoptimumkan parameter Ichimoku dll.
Strategi ini secara komprehensif menggunakan beberapa penunjuk untuk menentukan arah trend dengan penarikan terkawal.
/*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")