
Chiến lược này kết hợp hai chỉ số kỹ thuật của William Bi-index Moving Average và biểu đồ cân bằng một để tận dụng lợi thế của mỗi người và tăng độ chính xác của quyết định giao dịch. Trong đó, William Bi-index Moving Average có thể phản ánh đầy đủ xu hướng thay đổi giá, trong khi biểu đồ cân bằng một có thể đoán trước xu hướng đảo ngược.
Đường trung bình di chuyển hai chỉ số William bao gồm đường nhanh và đường chậm. Công thức tính toán đường nhanh là: 2 (n/2 chu kỳ trung bình di chuyển có trọng lượng), công thức tính toán đường chậm là: n chu kỳ trung bình di chuyển có trọng lượng.
Biểu đồ cân bằng một mắt bao gồm bốn thành phần là đường giao dịch, đường chuẩn, đường dẫn đầu và biểu đồ đám mây. Trong đó, giao dịch và đường chuẩn với đường vàng là tín hiệu mua, giao dịch chết là tín hiệu bán. Giá vượt qua các biểu đồ đám mây là tín hiệu mua, giảm theo các biểu đồ đám mây là tín hiệu bán.
Chiến lược này kết hợp hai lợi thế của các chỉ số, đầu tiên là đánh giá William để phát tín hiệu, thứ hai là đánh giá một chỉ số cân bằng, có thể lọc hiệu quả các tín hiệu giả, cải thiện độ chính xác của quyết định.
Chiến lược này tận dụng tối đa các lợi thế của chỉ số William để xác định hướng xu hướng và xem ngược trước khi biểu đồ cân bằng đầu tiên, có thể nâng cao đáng kể độ chính xác của quyết định giao dịch. Bằng cách điều chỉnh tham số và kết hợp các chỉ số khác, chiến lược tối ưu hóa bền vững, làm cho nó phù hợp hơn với sự thay đổi của thị trường.
/*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")