Chiến lược giao dịch dao động động

Tác giả:ChaoZhang, Ngày: 2023-11-21 16:57:07
Tags:

img

Tổng quan

Chiến lược này dựa trên chỉ số Bollinger Bands, kết hợp với các chỉ số động lực để thực hiện một chiến lược giao dịch kết hợp đảo ngược Bollinger Bands và đột phá động lực. Nó đi dài khi giá vượt qua đường trung của Bollinger Bands từ dưới và đi ngắn khi giá vượt qua đường trung từ trên. Nó cũng theo dõi dừng lỗ và lấy lợi nhuận dựa trên giá nhập để đóng các vị trí khi tỷ lệ rủi ro-lợi nhuận mục tiêu được đáp ứng.

Chiến lược logic

Chiến lược này sử dụng đường giữa Bollinger Bands sma như chỉ số trung bình động, và điều chỉnh chiều rộng dải theo động thông qua param mult * stdev. Khi giá vượt qua đường giữa từ dưới, nó cho thấy động lực tăng lên và do đó đi dài. Khi giá vượt qua đường giữa từ trên, nó cho thấy động lực giảm và do đó đi ngắn. Sau khi nhập vào các vị trí dài / ngắn, các tham số dừng lỗ và lấy lợi nhuận được thiết lập để theo dõi lợi nhuận và kiểm soát rủi ro.

Cụ thể, Bollinger Bands được tính toán với hai thông số - chiều dài và mult. chiều dài xác định thời gian của đường giữa và mult quyết định chiều rộng dải. enterLong và enterShort đánh giá thời gian đột phá. exitLong và exitShort tính toán giá dừng lỗ và lấy lợi nhuận dựa trên giá nhập cảnh và tỷ lệ phần trăm mục tiêu.

Ưu điểm

Chiến lược này kết hợp sự đảo ngược đến mức trung bình và động lực, cho phép nó nắm bắt các xu hướng chính sớm. So với việc chỉ đơn giản theo dõi đường trung bình động, phán quyết động lực bổ sung dựa trên chiều rộng của Bollinger Bands có thể lọc ra một số đột phá sai.

Rủi ro

  • Lại chậm trong Bollinger Bands giá phù hợp, có thể bỏ lỡ một số di chuyển
  • Đặt stop loss quá rộng có thể làm tăng rủi ro mất mát
  • Các tín hiệu ngắn trong thị trường tăng có thể không kết thúc tốt

Các thông số như thời gian, chiều rộng băng tần và phạm vi dừng lỗ có thể được tối ưu hóa để làm cho chiến lược thích nghi với các điều kiện thị trường khác nhau.

Tăng cường

  • Thêm khối lượng giao dịch hoặc biến động để tránh các vụ phá vỡ sai số lượng thấp
  • Param lưới tìm kiếm để tối ưu hóa thời gian, hệ số chiều rộng và tỷ lệ stoploss
  • Chỉ đi dài hoặc ngắn dựa trên chế độ thị trường
  • Thêm mô hình Machine Learning để xác định hướng xu hướng

Kết luận

Chiến lược này kết hợp các điểm mạnh của Bollinger Bands đảo ngược và động lực, cho phép nó nắm bắt một số xu hướng sớm. Thông qua điều chỉnh tham số, nó có thể thích nghi với các giai đoạn thị trường khác nhau. Việc tính toán dừng lỗ / lấy lợi nhuận trực tiếp làm giảm can thiệp thủ công. Vẫn còn chỗ để cải thiện, ví dụ như kết hợp nhiều chỉ số phụ trợ hơn. Chúng sẽ được tăng cường dần trong nghiên cứu và tối ưu hóa hơn nữa.


/*backtest
start: 2023-11-13 00:00:00
end: 2023-11-20 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("BURATINO", overlay=true)

// Входные параметры
length = input(20, minval=1, title="Length")
mult = input(2.0, minval=0.1, maxval=5, title="Multiplier")
target_percent = input(0.5, minval=0.1, title="Target Percent")
stop_loss_percent = input(95, minval=0.1, title="Stop Loss Percent")

// Расчет полос Боллинджера
basis = sma(close, length)
dev = mult * stdev(close, length)
upper = basis + dev
lower = basis - dev

// Переворот снизу вверх через среднюю линию Боллинджера для открытия лонга
enterLong = cross(close, basis) and close[1] < basis[1]

// Переворот сверху вниз через среднюю линию Боллинджера для открытия шорта
enterShort = cross(basis, close) and close[1] > basis[1]

// Закрытие лонга после роста цены на указанный процент или падения на указанный процент
exitLong = close >= strategy.position_avg_price * (1 + (target_percent / 100)) or close <= strategy.position_avg_price * (1 - (stop_loss_percent / 100))

// Закрытие шорта после падения цены на указанный процент или роста на указанный процент
exitShort = close <= strategy.position_avg_price * (1 - (target_percent / 100)) or close >= strategy.position_avg_price * (1 + (stop_loss_percent / 100))

// Управление позициями и ограничениями на открытие противоположных позиций
strategy.entry("Long", strategy.long, when = enterLong and strategy.position_size == 0)
strategy.entry("Short", strategy.short, when = enterShort and strategy.position_size == 0)

strategy.close("Long", when = exitLong)
strategy.close("Short", when = exitShort)

// Визуализация полос Боллинджера
plot(basis, color=color.blue, title="Basis")
plot(upper, color=color.red, title="Upper")
plot(lower, color=color.green, title="Lower")

Thêm nữa