Chiến lược này kết hợp Trung bình di chuyển hàm số hai Williams và Ichimoku Kinkou Hyo, hai chỉ số kỹ thuật, để sử dụng những lợi thế tương ứng của chúng và cải thiện độ chính xác của các quyết định giao dịch.
Williams Double Exponential Moving Average bao gồm một đường nhanh và một đường chậm. Đường nhanh được tính bằng công thức: 2 * ((n/2 thời gian Đường trung bình chuyển động cân nhắc), và đường chậm được tính bằng: n thời gian Đường trung bình chuyển động cân nhắc. Khi đường nhanh vượt qua trên đường chậm từ dưới, đó là tín hiệu mua; khi nó vượt qua dưới từ trên, đó là tín hiệu bán.
Ichimoku Kinkou Hyo bao gồm bốn thành phần: tenkan sen, kijun sen, đường dẫn và lớp mây. Một đường chéo vàng giữa tenkan sen và kijun sen là tín hiệu mua, trong khi đường chéo chết là tín hiệu bán. Khi giá vượt qua hoặc xuống dưới các cạnh trên hoặc dưới của lớp mây, nó báo hiệu mua hoặc bán, tương ứng.
Chiến lược này kết hợp các điểm mạnh của cả hai chỉ số. Định nghĩa đầu tiên là tín hiệu từ Chỉ số Williams, và thứ hai là xác nhận từ Ichimoku Kinkou Hyo, lọc hiệu quả các tín hiệu sai và cải thiện độ chính xác quyết định.
Chiến lược này sử dụng đầy đủ khả năng của Chỉ số Williams để đánh giá hướng xu hướng và Ichimoku Kinkou Hyo để cung cấp cảnh báo sớm về sự đảo ngược, cải thiện đáng kể độ chính xác của các quyết định giao dịch.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("Hull MA-X + Ichimoku Kinko Hyo", shorttitle="Hi", 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) keh=input(title="Double HullMA",defval=12, minval=1) n2ma=2*wma(close,round(keh/2)) nma=wma(close,keh) diff=n2ma-nma sqn=round(sqrt(keh)) n2ma1=2*wma(close[1],round(keh/2)) nma1=wma(close[1],keh) diff1=n2ma1-nma1 sqn1=round(sqrt(keh)) n1=wma(diff,sqn) n2=wma(diff1,sqn) b=n1>n2?lime:red c=n1>n2?green:red d=n1>n2?red:green 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] Hullfast=plot(n1,color=c) Hullslow=plot(n2,color=c) plot(cross(n1, n2) ? n1:na, style = circles, color=b, linewidth = 4) plot(cross(n1, n2) ? n1:na, style = line, color=d, linewidth = 3) 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 = n1>n2 and close>n2 and close>ChikouSpan and close>SenkouSpanH and (TenkanSen>KijunSen or close>KijunSen) if (longCondition) strategy.entry("Long",strategy.long) shortCondition = n1<n2 and close<n2 and close<ChikouSpan and close<SenkouSpanL and (TenkanSen<KijunSen or close<KijunSen) if (shortCondition) strategy.entry("Short",strategy.short) closelong = n1<n2 and close<n2 and (TenkanSen<KijunSen or close<TenkanSen or close<KijunSen or close<SenkouSpanL) if (closelong) strategy.close("Long") closeshort = n1>n2 and close>n2 and (TenkanSen>KijunSen or close>TenkanSen or close>KijunSen or close>SenkouSpanH) if (closeshort) strategy.close("Short")