Xu hướng dựa trên khối lượng sau chiến lược giao dịch

Tác giả:ChaoZhang, Ngày: 2024-01-29 15:04:18
Tags:

img

Tổng quan

Đây là một chiến lược giao dịch theo xu hướng dựa trên chỉ số dao động khối lượng sửa đổi. Nó sử dụng các đường trung bình động khối lượng để xác định tín hiệu khối lượng tăng và xác định các bước vào hoặc ra. Trong khi đó, nó kết hợp phán đoán xu hướng giá để tránh các tín hiệu sai trong các dao động giá.

Chiến lược logic

  1. Tính toán khối lượng động trung bình vol_sum với chiều dài của vol_length và làm mịn nó bằng trung bình động thời gian vol_smooth.
  2. Tạo tín hiệu dài khi vol_sum tăng trên ngưỡng và tín hiệu ngắn khi vol_sum giảm dưới ngưỡng.
  3. Để lọc tín hiệu sai, chỉ mất nhiều thời gian khi xu hướng giá được kiểm tra trong các thanh hướng trước là lên và ngược lại.
  4. Thiết lập hai giá trị ngưỡng ngưỡng và ngưỡng2. ngưỡng tạo ra tín hiệu giao dịch trong khi ngưỡng2 hoạt động như một mức dừng lỗ.
  5. Quản lý lệnh mở / đóng thông qua logic máy trạng thái.

Phân tích lợi thế

  1. Chỉ số khối lượng ghi lại sự thay đổi sức mua / bán trên thị trường cho các tín hiệu chính xác hơn.
  2. Kết hợp với xu hướng giá tránh tín hiệu sai trong biến động giá.
  3. Hai giá trị ngưỡng kiểm soát tốt hơn rủi ro.

Phân tích rủi ro

  1. Chỉ số khối lượng có sự chậm trễ và có thể bỏ lỡ các điểm chuyển đổi giá.
  2. Cài đặt tham số sai dẫn đến giao dịch quá mức hoặc sự chậm trễ tín hiệu.
  3. Stop loss có thể xảy ra trong khi khối lượng giao dịch tăng vọt.

Các rủi ro có thể được giảm thiểu bằng cách điều chỉnh các tham số, tối ưu hóa tính toán chỉ số và kết hợp các xác nhận khác.

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

  1. Tối ưu hóa thích nghi các thông số dựa trên điều kiện thị trường.
  2. Bao gồm các chỉ số khác như chỉ số biến động để xác minh thêm tín hiệu.
  3. Nghiên cứu áp dụng các mô hình học máy để cải thiện độ chính xác tín hiệu.

Kết luận

Chiến lược này sử dụng một bộ dao động khối lượng được cải thiện với xu hướng giá để xác định các bước vào và ra với hai giá ngưỡng dừng lỗ. Đây là một hệ thống theo xu hướng ổn định với không gian tối ưu hóa trong điều chỉnh tham số, lọc tín hiệu và chiến lược dừng lỗ. Nhìn chung nó có giá trị thực tế đáng nghiên cứu và tối ưu hóa thêm.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy('Volume Advanced', default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.075, currency='USD')
startP = timestamp(input(2017, "Start Year"), input(12, "Start Month"), input(17, "Start Day"), 0, 0)
end    = timestamp(input(9999, "End Year"),   input(1, "End Month"),   input(1, "End Day"),   0, 0)
_testPeriod() =>
    iff(time >= startP and time <= end, true, false)

source = close 
vol_length  = input(34, title = "Volume - Length")
vol_smooth  = input(200,title = "Volume - Smoothing")
volriselen  = input(21,  title = "Volume - Risinglength")
volfalllen  = input(13, title = "Volume - Fallinglength")
threshold   = input(1,"threshold")
threshold2  = input(1.2,step=0.1, title="Threshold 2")
direction = input(13,"amount of bars")


volsum  = sum(volume, vol_length) / (sum(volume, vol_smooth) / (vol_smooth / vol_length))


LongEntry  = (rising(volsum, volriselen) or crossover (volsum, threshold)) and close > close[direction]
ShortEntry = (rising(volsum, volriselen) or crossover (volsum, threshold)) and close < close[direction]
LongExit1  = falling (volsum,volfalllen)
ShortExit1 = falling (volsum,volfalllen)
LongExit2= (crossover(volsum, threshold2) and close < close[direction])


_state = 0
_prev = nz(_state[1])
_state := _prev

if _prev == 0
    if LongEntry
        _state := 1
        _state
    if ShortEntry
        _state := 2
        _state
if _prev == 1
    if ShortEntry or LongExit1
        _state := 0
        _state
if _prev == 2
    if LongEntry or ShortExit1
        _state := 0
        _state

_bLongEntry = _state == 1 
_bLongClose = _state == 0 

long_condition = _bLongEntry and close > close[direction]
strategy.entry('BUY', strategy.long, when=long_condition)  
 
short_condition =  _bLongClose or LongExit2
strategy.close('BUY', when=short_condition)

plot(volsum,      color = color.green,    title="Vol_Sum")
plot(threshold, color = color.fuchsia, transp=50, title="Threshold")
plot(threshold2, color=color.white, transp = 50, title="Threshold 2")

Thêm nữa