
Chiến lược này dựa trên các chỉ số đo giá và chiều dài để thiết kế tín hiệu giao dịch, có thể đánh giá sức mạnh mua và bán của thị trường.
Chỉ số VB phản ánh động lực của sự thay đổi khối lượng giao dịch đối với giá cả. Nó được xây dựng như sau:
Tỷ lệ biến động hàng ngày của giá điển hình được tính để đại diện cho sức mạnh của sự thay đổi giá.
Lượng giao dịch và giá cả được tính theo lực lượng mua và bán tại thời điểm đóng cửa.
Giá trị chỉ số dao động trên trục 0 và xuống, đo lường lực đa không gian dựa trên giá trị chỉ số dương tính và âm tính.
Chiến lược này xây dựng chỉ số VB và thiết lập đường tín hiệu. Một tín hiệu mua được tạo ra khi chỉ số VB đi qua đường tín hiệu trên và một tín hiệu bán được tạo ra khi chỉ số VB đi qua đường tín hiệu dưới.
Các bước chính của mã là:
Tính toán tỷ lệ biến động hàng ngày của giá điển hình bằng cách sử dụng inter là lực biến động giá.
Cài đặt coef của phạm vi cắt ngang của lực dao động, và lực dao động vượt quá phạm vi này được coi là coef.
Tính toán lực lượng lượng sau khi cắt vcp.
Hỏi và vcp nhận chỉ số định lượng vfi ≠
Cài đặt chiều dài đường tín hiệu signalLength, để có được đường tín hiệu vfima。
So sánh chỉ số VB vfi và đường tín hiệu vfima, tạo ra tín hiệu giao dịch.
Chiến lược này có những ưu điểm sau:
Sử dụng quan hệ giá trị số lượng để đánh giá sức mạnh mua và bán trên thị trường, không bị ảnh hưởng bởi giá cả.
Các tham số có thể được thiết lập để kiểm soát phạm vi tính toán của lực lượng định lượng, tránh ảnh hưởng của dao động bất thường.
Kết hợp chỉ số VB với đường tín hiệu, bạn có thể thiết lập thời gian nhập cảnh hợp lý.
Phương pháp tính toán chỉ số đơn giản, rõ ràng và dễ dàng sử dụng trên ổ cứng.
Các tham số chỉ số và tham số đường tín hiệu có thể được tùy chỉnh để tối ưu hóa hiệu quả chiến lược.
Chiến lược này cũng có một số rủi ro:
Chỉ số VB nhạy cảm với biến động giá bất thường, cần thiết phải đặt các tham số cắt ngang thích hợp.
Giá cổ phiếu có nhiều khả năng lệch khỏi tín hiệu chỉ số, nên tránh theo dõi mù quáng.
Cần tối ưu hóa các tham số chỉ số và tham số đường tín hiệu để ngăn chặn tín hiệu giả.
Phù hợp cho các giống có đặc điểm giá trị rõ ràng, không nên sử dụng cho các giống có tính lưu động kém.
Cần chú ý đến sự phân tán của các chỉ số, có thể là dấu hiệu của sự đảo ngược thị trường.
Có thể kiểm soát rủi ro bằng cách điều chỉnh phạm vi tham số, kết hợp với các chỉ số khác để lọc và giảm lỗ hổng thích hợp.
Chiến lược này có thể được tối ưu hóa bằng cách:
Tối ưu hóa các tham số tính toán của lực lượng định lượng, cân bằng độ nhạy và độ ổn định.
Tối ưu hóa tham số đường tín hiệu, cân bằng độ trễ và tiếng ồn.
Thêm các chỉ số như Phân tích Phân tán Khối lượng để xác minh hiệu quả.
Tăng xu hướng và hỗ trợ các chỉ số kháng cự, tránh giao dịch theo hướng bất lợi.
Thiết lập cơ chế dừng lỗ động, điều chỉnh điểm dừng lỗ theo mức độ biến động của thị trường.
Sử dụng phương pháp học máy để đào tạo các tham số tốt nhất.
Đánh giá sự ổn định của chiến lược bằng cách kiểm tra lại trên nhiều giống và các chu kỳ khác nhau
So sánh ảnh hưởng của các tham số chỉ số khác nhau đối với đường cong lợi nhuận, tìm tham số tối ưu.
Chiến lược này dựa trên chỉ số đo đạc giá trị, đánh giá sức mạnh mua và bán. Nó có những ưu điểm như thiết kế chỉ số đơn giản, tham số có thể điều chỉnh, cũng có một số rủi ro tín hiệu sai. Bằng cách tối ưu hóa tham số, tránh các thị trường bất lợi, các biện pháp có thể làm tăng sự ổn định của chiến lược.
/*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)