
Binomial Moving Average, viết tắt là BMA) là một loại chỉ số trung bình di chuyển mới. Nó sử dụng một nửa hệ số nhị phân để tính giá trung bình, có tính toán độc đáo, tính toán trơn tru và tính năng mạnh mẽ.
Chiến lược này kết hợp BMA nhanh và BMA chậm để tạo ra tín hiệu giao dịch tương tự như MACD, thuộc chiến lược theo dõi xu hướng. Nó có thể được sử dụng trong nhiều chu kỳ và phù hợp với hoạt động đường dài và trung bình.
Chiến lược xu hướng trung bình di chuyển nhị phân
Tính trung bình di chuyển binomial ((BMA)). Nó tính toán hệ số binomial dựa trên độ dài chu kỳ mà người dùng đặt, sau đó lấy một nửa giá trị của nó làm giá trung bình trọng lượng. Ví dụ: với độ dài chu kỳ là 5, tính toán hệ số binomial 9 lần, lấy một nửa để trung bình trọng lượng.
Thiết lập chu kỳ BMA nhanh và chu kỳ BMA chậm. BMA nhanh nhạy hơn với sự thay đổi giá, BMA chậm ổn định hơn. Sự giao thoa của chúng tạo ra tín hiệu giao dịch.
Khi BMA nhanh vượt qua BMA chậm, hãy làm nhiều hơn; khi BMA nhanh vượt qua BMA chậm, hãy làm trống. Sau khi vào sân, hãy giữ vị trí cho đến khi có tín hiệu đảo ngược.
Ưu điểm lớn nhất của chiến lược này là cách tính toán chỉ số BMA là mới, nó tăng cường lợi thế của trung bình di chuyển, cải thiện tính trơn tru và thiết thực. So với EMA và SMA, BMA có trọng lượng lớn hơn đối với các đường K gần đây nhất, đồng thời cũng giữ lại nhiều thông tin lịch sử hơn. Điều này cho phép nó nắm bắt xu hướng tốt hơn và tạo ra ít tín hiệu giả hơn.
Ngoài ra, các cặp BMA nhanh chậm tận dụng đầy đủ lợi thế của đường trung bình di chuyển, nó lọc ra rất nhiều tiếng ồn và chỉ tạo ra tín hiệu giao dịch tại các điểm biến xu hướng. Chính logic của chiến lược là đơn giản, dễ hiểu và thực hiện, phù hợp cho hoạt động đường dài và trung bình.
Những rủi ro chính của chiến lược này là:
Giống như tất cả các chiến lược theo dõi xu hướng, nó dễ bị tổn thất khi xu hướng đảo ngược. Giải pháp là thiết lập dừng lỗ hoặc tối ưu hóa các tham số để BMA nhạy cảm hơn.
Thiết lập tham số BMA không đúng cũng ảnh hưởng đến hiệu quả chiến lược. Nếu BMA nhanh quá nhạy, sẽ tăng tín hiệu giả; Nếu BMA chậm quá chậm, có thể bỏ lỡ cơ hội xu hướng.
Chiến lược này mặc định giao dịch toàn vị trí, có thể thiết lập quản lý vị trí theo sở thích rủi ro để giảm tổn thất đơn lẻ.
Các hướng tối ưu hóa chính của chiến lược này là BMA và kiểm tra các tham số kết hợp.
Cài đặt chu kỳ: Kiểm tra các chu kỳ BMA nhanh và chu kỳ BMA chậm khác nhau để tìm ra sự kết hợp tham số tối ưu. Thông thường chu kỳ nhanh nằm trong khoảng 10-30 và chu kỳ chậm nằm trong khoảng 20-60.
Trọng lượng BMA: Có thể thử nghiệm các cách phân bổ trọng lượng khác nhau, là một nửa của hệ số nhị phân toàn phần, hoặc ưu tiên một vài đường K gần nhất. Điều này có thể làm cho BMA trở nên mịn hơn.
Điều kiện lọc: Có thể thiết lập các điều kiện lọc như giá phá vỡ, khối lượng giao dịch tăng, tránh tín hiệu không hợp lý.
Các cơ chế dừng lỗ, quản lý vị trí cũng có thể được thử nghiệm để kiểm soát rủi ro.
Chiến lược này lần đầu tiên đưa ra chỉ số độc đáo của moving average hai mặt, nó tăng cường cách tính toán moving average, làm cho chiến lược được nâng cao cả tính thực tế và ổn định tổng thể. Sự giao thoa của BMA nhanh và BMA chậm tạo ra tín hiệu giao dịch đơn giản và hiệu quả.
/*backtest
start: 2022-12-07 00:00:00
end: 2023-12-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © HosseinDaftary
//@version=4
strategy("Binomial Moving Average","BMA", overlay=true, margin_long=100, margin_short=100 ,max_bars_back=96)
//Binomial Moving Average:This type of moving average that is made by myself and i did not see anywhere before uses the half of binomial cofficients for
//averaging the prices for example if the period be 5 then we use the 9 degree binomial cofficients(that yields 10 cofficients) and use half of them.
//we use 126/256 for last bar,84/256,36/256,9/256 and finally use 1/256 for 5th bar. Seemingly this MA works better than EMA.
fa_ma=input(title='Fast MA',defval=10)
sl_ma=input(title='Slow MA',defval=30)
fac(n)=>
fact=1
for i= 1 to n
fact:=fact*i
fact
cof= array.new_float(sl_ma)
hn_ma(price,length)=>
sum=1.0
sum1=0.0
array.set(cof,length-1,1)
for i=2 to length
array.set(cof,length-i,fac(2*length-1)/(fac(i-1)*fac(2*length-i)))
sum:=sum+array.get(cof,length-i)
for i=0 to length-1
array.set(cof,i,array.get(cof,i)/sum)
sum1:=sum1+array.get(cof,i)*price[i]
sum1
hn1=plot(hn_ma(close,sl_ma) , color=#00ff00)
hn2=plot(hn_ma(close,fa_ma) ,color=#ff0000)
fill(hn1,hn2,color=hn_ma(close,fa_ma)>hn_ma(close,sl_ma)?color.green:color.red)
longCondition = crossover(hn_ma(close, fa_ma), hn_ma(close, sl_ma))
if (longCondition)
strategy.entry("Long", strategy.long)
shortCondition = crossunder(hn_ma(close, fa_ma), hn_ma(close, sl_ma))
if (shortCondition)
strategy.entry("Short", strategy.short)