Chiến lược VB dựa trên số dư khối lượng

Tác giả:ChaoZhang, Ngày: 2023-10-30 17:03:02
Tags:

img

Chiến lược này được thiết kế dựa trên chỉ số số dư khối lượng để xác định sức mua và bán trên thị trường.

Chiến lược logic

Chỉ số số dư khối lượng (VB) phản ánh động lực của thay đổi khối lượng trên giá.

  1. Tính toán tỷ lệ biến động trong ngày của giá điển hình như động lực giá.

  2. Đánh giá sức mua và bán gần với sản phẩm của khối lượng và động lực giá.

  3. Chỉ số dao động trên và dưới trục 0. Các tiêu chí để đo lường sức mua và bán là tính tích cực và tiêu cực của giá trị chỉ số.

Chiến lược này xây dựng chỉ số VB và thiết lập một đường tín hiệu. Một tín hiệu mua được tạo ra khi chỉ số VB vượt qua trên đường tín hiệu. Một tín hiệu bán được tạo ra khi chỉ số VB vượt qua dưới đường tín hiệu.

Các bước chính của bộ luật là:

  1. Tính toán tỷ lệ biến động trong ngày của giá thông thường như động lực giá.

  2. Đặt hệ số phạm vi cắt giảm cho động lực.

  3. Tính toán lượng động lực vcp sau khi cắt.

  4. Tổng vcp để có được chỉ số định lượng vfi.

  5. Đặt chiều dài của đường tín hiệu SignalLength và lấy nó vfima.

  6. So sánh chỉ số VB vfi với đường tín hiệu vfima để tạo ra tín hiệu giao dịch.

Ưu điểm

Những lợi thế của chiến lược này là:

  1. Sử dụng mối quan hệ khối lượng-giá để đánh giá sức mua và bán, không bị ảnh hưởng bởi chính giá.

  2. Phạm vi tính toán của động lượng định lượng có thể được điều khiển bằng các tham số để tránh tác động của biến động bất thường.

  3. Kết hợp so sánh giữa chỉ số VB và đường tín hiệu có thể thiết lập thời gian nhập hợp lý.

  4. Phương pháp tính toán chỉ số đơn giản và rõ ràng, dễ sử dụng trong giao dịch trực tiếp.

  5. Các thông số chỉ số và các thông số đường tín hiệu có thể tùy chỉnh để tối ưu hóa hiệu suất chiến lược.

Rủi ro

Có một số rủi ro trong chiến lược này:

  1. Chỉ số VB nhạy cảm với biến động giá bất thường.

  2. Khả năng chênh lệch giá so với tín hiệu chỉ số là rất cao.

  3. Các thông số chỉ số và các thông số đường tín hiệu cần tối ưu hóa thích hợp để ngăn chặn tín hiệu sai.

  4. Thích hợp hơn cho các sản phẩm có đặc điểm giá khối lượng rõ ràng. Không phù hợp với các sản phẩm thanh khoản thấp.

  5. Hãy chú ý đến sự khác biệt của chỉ số, có thể báo hiệu một sự đảo ngược thị trường.

Rủi ro có thể được kiểm soát bằng cách điều chỉnh phạm vi tham số, sử dụng các bộ lọc khác, cho phép dừng lỗ lỏng phù hợp, v.v.

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

Chiến lược có thể được tối ưu hóa trong các khía cạnh sau:

  1. Tối ưu hóa các tham số tính toán cho động lượng định lượng để cân bằng độ nhạy và ổn định.

  2. Tối ưu hóa các thông số đường tín hiệu để cân bằng sự chậm trễ và tiếng ồn.

  3. Thêm các chỉ số khác như Phân tích Phân bố khối lượng để xác minh.

  4. Thêm các chỉ số xu hướng và hỗ trợ / kháng cự để tránh các giao dịch không thuận lợi.

  5. Thiết lập stop loss động dựa trên biến động thị trường.

  6. Sử dụng máy học để tìm kết hợp thông số tối ưu.

  7. Kiểm tra ngược trên nhiều sản phẩm và khung thời gian để đánh giá độ bền.

  8. So sánh các thông số chỉ số ảnh hưởng đến đường cong lợi nhuận để tìm ra tối ưu.

Tóm lại

Chiến lược này đánh giá sức mua / bán dựa trên chỉ số Số dư khối lượng. Nó có những lợi thế như thiết kế chỉ số đơn giản và các tham số có thể điều chỉnh, cũng như rủi ro như tín hiệu sai. Tăng cường hơn nữa và xác minh từ nhiều khía cạnh có thể cải thiện hiệu suất trực tiếp.


/*backtest
start: 2023-09-29 00:00:00
end: 2023-10-29 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("VB Strategy", overlay=true)

length = input(130, title="거래량 길이")
coef = input(0.2, title="계수")
vcoef = input(2.5, title="최대 계수")
signalLength=input(5)
smoothVFI=input(false, type=bool, title="부드럽게")
//볼밴
length2 = input(20, minval=1, title="볼밴 길이")

ma(x,y) => smoothVFI ? sma(x,y) : x

typical=hlc3
inter = log( typical ) - log( typical[1] )
vinter = stdev(inter, 30 )
cutoff = coef * vinter * close
vave = sma( volume, length )[1]
vmax = vave * vcoef
vc = iff(volume < vmax, volume, vmax)
mf = typical - typical[1]
vcp = iff( mf > cutoff, vc, iff ( mf < -cutoff, -vc, 0 ) )

vfi = ma(sum( vcp , length )/vave, 3)
vfima=ema( vfi, signalLength )
d=vfi-vfima

upper = vfima + stdev(vfi, length2)
lower = vfima - stdev(vfi, length2)

buysignal = cross(vfi, lower) and crossunder(vfi, lower) == 1 ? vfima : na

sellsignal = cross(vfi, upper) and crossover(vfi, upper) == 1 ? vfima : na

//times = timestamp("GMT+6", 2017, 12, 6, 00, 00)

//if (buysignal and times <= time)
if (buysignal)
    if(strategy.position_size < 0)
        strategy.close("SHORT")
        
    if(strategy.position_size > 0)
        strategy.order("LONG", true, 1, when = (low+high)/2)
        
    if(strategy.position_size == 0)
        strategy.entry("LONG", strategy.long, when = (low+high)/2)

//if (sellsignal and times <= time)
if (sellsignal)
    if(strategy.position_size > 0)
        strategy.close("LONG")
        
    if(strategy.position_size < 0)
        strategy.order("SHORT", false, 1, when = (low+high)/2)
        
    if(strategy.position_size == 0)
        strategy.entry("SHORT", strategy.short, when = (low+high)/2)


Thêm nữa