Chiến lược xu hướng trung bình động nhị phân

Tác giả:ChaoZhang, Ngày: 2023-12-08 14:55:19
Tags:

img

Tổng quan

Binomial Moving Average (BMA) là một loại chỉ số trung bình chuyển động mới. Nó sử dụng một nửa các hệ số nhị phân để tính giá trung bình, có các phương pháp tính toán độc đáo, mượt mà tốt và thực tế mạnh mẽ.

Chiến lược này kết hợp BMA nhanh và BMA chậm để tạo ra các tín hiệu giao dịch như MACD, thuộc về chiến lược theo xu hướng.

Chi tiết chiến lược

Tên chiến lược

Chiến lược xu hướng trung bình động nhị phân

Chiến lược logic

  1. Tính toán trung bình động nhị phân (BMA). Theo thời gian được thiết lập bởi người dùng, nó tính toán các hệ số nhị phân và lấy một nửa trong số đó làm trọng lượng cho giá trung bình. Ví dụ, với giai đoạn 5, nó tính toán 9 hệ số nhị phân và lấy một nửa của chúng làm trung bình trọng số. Điều này mang lại trọng lượng nhiều hơn cho nến gần đây và mượt mà hơn.

  2. Thiết lập thời gian BMA nhanh và thời gian BMA chậm. BMA nhanh nhạy cảm hơn với sự thay đổi giá trong khi BMA chậm ổn định hơn.

  3. Khi BMA nhanh vượt qua BMA chậm, vị trí dài được mở. Khi BMA nhanh giảm xuống dưới BMA chậm, vị trí ngắn được mở. Giữ vị trí cho đến khi tín hiệu ngược lại xuất hiện.

Phân tích lợi thế

Lợi thế lớn nhất của chiến lược này nằm trong tính toán sáng tạo của BMA. Nó tăng cường điểm mạnh của các đường trung bình động với sự mượt mà và thực tế được cải thiện. So với EMA và SMA, BMA cho trọng lượng nhiều hơn cho các nến gần đây trong khi 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 tốt hơn xu hướng và tạo ra ít tín hiệu sai hơn.

Ngoài ra, sự kết hợp nhanh và chậm của BMA tận dụng đầy đủ các lợi thế của đường trung bình động. Nó lọc ra rất nhiều tiếng ồn và chỉ tạo ra tín hiệu tại các điểm chuyển hướng xu hướng. Chính chiến lược này rất đơn giản để hiểu và thực hiện, phù hợp với giao dịch trung hạn đến dài hạn.

Phân tích rủi ro

Những rủi ro chính của chiến lược này bao gồm:

  1. Giống như tất cả các chiến lược theo xu hướng, nó có thể dẫn đến tổn thất khi xu hướng đảo ngược.

  2. Thiết lập tham số BMA không chính xác cũng ảnh hưởng đến hiệu suất chiến lược. BMA nhanh quá nhạy có thể tạo ra tín hiệu sai trong khi BMA chậm chậm lại có thể bỏ lỡ cơ hội xu hướng.

  3. Chiến lược theo mặc định sử dụng toàn bộ vị trí.

Hướng dẫn tối ưu hóa

Các hướng tối ưu hóa chính là thử nghiệm của chính BMA và sự kết hợp các tham số.

  1. Cài đặt thời gian: Kiểm tra các thời gian BMA nhanh và chậm khác nhau để tìm sự kết hợp tối ưu.

  2. Trọng lượng BMA: Kiểm tra các chương trình trọng lượng khác nhau, chẳng hạn như phân phối một nửa hệ số nhị phân hoặc đặt trọng lượng nhiều hơn vào nến gần đây.

  3. Các điều kiện lọc như đột phá và tăng âm lượng có thể được thêm vào để tránh các tín hiệu không hợp lý.

  4. Cơ chế dừng lỗ và kích thước vị trí cũng có thể được thử nghiệm để kiểm soát tốt hơn rủi ro.

Kết luận

Chiến lược này đầu tiên đề xuất chỉ số trung bình chuyển động nhị phân độc đáo. Nó tăng cường tính toán trung bình chuyển động và cải thiện tính hữu ích và ổn định tổng thể của chiến lược. Sự chéo chéo giữa BMA nhanh và chậm tạo ra các tín hiệu giao dịch đơn giản nhưng 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)

Thêm nữa