Chiến lược này kết hợp các chỉ số Heiken Ashi và Ichimoku Kinko Hyo để xác định hướng xu hướng và theo dõi xu hướng.
Tính toán giá đóng cửa Heiken Ashi và vẽ các chỉ số Ichimoku như đường chuyển đổi, đường cơ sở vv. Đi dài khi đóng cửa cao hơn hai ngày trước và trên cạnh trên cùng của Ichimoku và đường chậm. Đi ngắn khi đóng cửa thấp hơn hai ngày trước và dưới cạnh dưới cùng của Ichimoku và đường chậm. Chuyển đổi và đường cơ sở cũng cung cấp tín hiệu thứ cấp.
Các rủi ro có thể được kiểm soát bằng cách điều chỉnh độ mượt mà, thời gian giữ, tối ưu hóa các thông số Ichimoku v.v.
Chiến lược này sử dụng nhiều chỉ số để xác định hướng xu hướng với các đường rút được kiểm soát. Hiệu suất có thể được cải thiện hơn nữa thông qua các tham số điều chỉnh vv.
/*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")