Chiến lược giao dịch theo xu hướng dựa trên bộ dao động khối lượng


Ngày tạo: 2024-01-29 15:04:18 sửa đổi lần cuối: 2024-01-29 15:04:18
sao chép: 0 Số nhấp chuột: 760
1
tập trung vào
1617
Người theo dõi

Chiến lược giao dịch theo xu hướng dựa trên bộ dao động khối lượng

Tổng quan

Chiến lược này là một chiến lược theo dõi xu hướng giao dịch dựa trên chỉ số biến động khối lượng giao dịch được sửa đổi. Nó sử dụng đường trung bình của khối lượng giao dịch, nhận ra các tín hiệu có khối lượng giao dịch tăng lên, do đó phán đoán vào hoặc ra khỏi vị trí.

Nguyên tắc chiến lược

  1. Tính trung bình của khối lượng giao dịch là vol_sum, chiều dài là vol_length, làm cho chiều dài vol_smooth trơn tru.
  2. Khi vol_sum tăng vượt ngưỡng giá sẽ tạo ra tín hiệu mua, và khi giảm vượt ngưỡng giá sẽ tạo ra tín hiệu bán.
  3. Để lọc các hoạt động sai, chỉ khi so sánh với giá đóng cửa của đường K gốc hướng trước, khi xu hướng giá tăng, thì thực hiện mua. Khi xu hướng giá giảm, thì thực hiện bán.
  4. Thiết lập hai ngưỡng threshold và threshold2. Threshold được sử dụng để tạo tín hiệu giao dịch và threshold2 được sử dụng để dừng lỗ.
  5. Logic mở kho của các lệnh được quản lý thông qua máy trạng thái.

Phân tích lợi thế

  1. Sử dụng chỉ số khối lượng giao dịch, bạn có thể nắm bắt được sự thay đổi của lực lượng mua và bán trên thị trường, từ đó cải thiện độ chính xác của tín hiệu.
  2. Kết hợp với xu hướng giá, bạn có thể tránh các tín hiệu sai khi giá dao động.
  3. Sử dụng hai ngưỡng để mở và dừng vị trí, bạn có thể kiểm soát rủi ro tốt hơn.

Phân tích rủi ro

  1. Chỉ số giao dịch tự nó sẽ bị chậm trễ và có thể sẽ bỏ lỡ điểm biến giá.
  2. Thiết lập tham số sai có thể dẫn đến tần số giao dịch quá cao hoặc tín hiệu bị trì hoãn.
  3. Trong trường hợp giao dịch tăng mạnh, điểm dừng có thể bị phá vỡ.

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

Hướng tối ưu hóa

  1. Có thể xem xét việc tự điều chỉnh các tham số chỉ số để thích ứng với điều kiện thị trường.
  2. Có thể kết hợp với các chỉ số khác, chẳng hạn như chỉ số biến động giá, để xác minh thêm các tín hiệu để cải thiện độ chính xác.
  3. Các nghiên cứu có thể áp dụng mô hình học máy vào nhận định tín hiệu, sử dụng nhận định mô hình để tăng độ chính xác.

Tóm tắt

Chiến lược này là một chiến lược theo dõi xu hướng ổn định hơn thông qua bộ dao động khối lượng giao dịch được cải tiến, hỗ trợ đánh giá xu hướng giá, thiết lập hai ngưỡng để mở và dừng vị trí. Không gian tối ưu hóa chủ yếu là về điều chỉnh tham số, lọc tín hiệu và chiến lược dừng lỗ. Nói chung, chiến lược này có một số giá trị thực tế và đáng để nghiên cứu tối ưu hóa thêm.

Mã nguồn chiến lược
/*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")