Chiến lược giao dịch định lượng dựa trên đường trung bình động và băng Bollinger

Tác giả:ChaoZhang, Ngày: 2024-04-26 11:45:05
Tags:SMAWMAEMA

img

Tổng quan

Chiến lược này chủ yếu sử dụng các đường trung bình động và Bollinger Bands để nắm bắt xu hướng và biến động của thị trường. Nó sử dụng ba loại đường trung bình động khác nhau: Đơn giản Đường trung bình động (SMA), Đường trung bình động cân (WMA), và Đường trung bình động nhân (EMA). Đồng thời, nó sử dụng Bollinger Bands để thiết lập các kênh giá, với các dải trên và dưới phục vụ như tín hiệu cho các vị trí mở và đóng. Khi giá vượt qua dải Bollinger trên, nó mở một vị trí ngắn; khi nó vượt qua dải dưới, nó mở một vị trí dài. Nó cũng thiết lập các dải Bollinger rộng hơn như mức dừng lỗ, đóng các vị trí khi giá vi phạm các dải này. Nhìn chung, chiến lược này cố gắng thiết lập các vị trí kịp thời khi xu hướng xuất hiện và cắt giảm rủi ro một cách quyết định khi giảm giá, nhằm mục đích tăng lợi nhuận ổn định.

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

  1. Tính toán ba đường trung bình động với các giai đoạn khác nhau: SMA chậm, EMA nhanh và WMA trung bình, phản ánh xu hướng thị trường dài hạn, ngắn hạn và trung hạn tương ứng.
  2. Tính toán hai bộ Bollinger Bands dựa trên độ lệch chuẩn giá: Bollinger Bands đầu vào (với khoảng cách hẹp hơn giữa các dải trên và dưới) và Bollinger Bands dừng lỗ (với khoảng cách rộng hơn).
  3. Khi EMA nhanh vượt qua trên Bollinger Band đầu vào, mở một vị trí ngắn; khi EMA nhanh vượt qua dưới Bollinger Band đầu vào dưới, mở một vị trí dài. Điều này ngụ ý rằng giá đã lệch đáng kể so với mức trung bình và xu hướng có thể xuất hiện.
  4. Một khi một vị trí đã mở, nếu giá vượt quá Bollinger Band stop-loss phía trên, hãy đóng tất cả các vị trí dài; nếu giá vượt dưới Bollinger Band stop-loss phía dưới, hãy đóng tất cả các vị trí ngắn.
  5. Quá trình trên được lặp lại liên tục, cho phép chiến lược điều chỉnh các vị trí linh hoạt theo xu hướng thị trường và ngăn chặn lỗ kịp thời, để đạt được lợi nhuận mạnh mẽ.

Ưu điểm chiến lược

  1. Nó xem xét ba đường trung bình động với tốc độ khác nhau, nắm bắt toàn diện xu hướng thị trường ở các cấp độ khác nhau.
  2. Nó giới thiệu Bollinger Bands như là điều kiện mở và đóng các vị trí, có thể được điều chỉnh năng động theo biến động thị trường, thích nghi linh hoạt với điều kiện thị trường.
  3. Nó thiết lập Bollinger Bands dừng lỗ để kiểm soát rút tiền và quyết định đóng các vị trí khi thị trường biến động mạnh mẽ, tránh tổn thất khuếch đại.
  4. Logic là rõ ràng và các quy tắc là đơn giản, dễ thực hiện và tối ưu hóa.
  5. Nó có một loạt các ứng dụng và có thể hiệu quả cho các thị trường và khoảng thời gian khác nhau.

Rủi ro chiến lược

  1. Trong một thị trường phụ, việc mở và đóng các vị trí thường xuyên có thể dẫn đến chi phí giao dịch đáng kể, làm xói mòn lợi nhuận.
  2. Trong giai đoạn ban đầu của sự đảo ngược xu hướng, chiến lược vẫn có thể giao dịch theo hướng xu hướng ban đầu, dẫn đến một số lỗ.
  3. Đối với các điều kiện thị trường cực đoan, chẳng hạn như chênh lệch giá nhanh chóng, Bollinger Bands dừng lỗ có thể không kiểm soát rủi ro hiệu quả.
  4. Chọn tham số không chính xác (như thời gian trung bình động, chiều rộng băng tần Bollinger, v.v.) có thể làm vô hiệu hóa chiến lược.
  5. Nếu thị trường tiếp tục biến động, chiến lược có thể không thể nắm bắt các cơ hội xu hướng đáng kể trong một thời gian dài.

Hướng dẫn tối ưu hóa chiến lược

  1. Nâng cao các thông số của các giai đoạn trung bình động và chiều rộng băng tần Bollinger để giảm tần suất giao dịch và chi phí trong thị trường bên.
  2. Tạo thêm các chỉ số kỹ thuật hoặc các chỉ số tâm lý thị trường như bộ lọc để cải thiện độ chính xác của tín hiệu nhập cảnh và tránh mất giao dịch có thể xảy ra vào đầu xu hướng.
  3. Thiết lập các quy tắc đặc biệt cho các điều kiện thị trường cực đoan, chẳng hạn như đình chỉ các vị trí mới khi xảy ra khoảng trống, để kiểm soát rủi ro.
  4. Tối ưu hóa các tham số để tìm sự kết hợp phù hợp nhất cho thị trường hiện tại, tăng cường tính vững chắc của chiến lược.
  5. Thêm các quy tắc quản lý vị trí và quản lý vốn, chẳng hạn như điều chỉnh các vị trí dựa trên sức mạnh xu hướng hoặc lợi nhuận, thiết lập các đường dừng lỗ tổng thể, v.v., để kiểm soát rủi ro chiến lược hơn nữa.

Tóm lại

Marina Parfenova School Project Bot là một chiến lược giao dịch định lượng dựa trên đường trung bình động và Bollinger Bands. Nó cố gắng kiếm lợi nhuận bằng cách nắm bắt xu hướng thị trường trong khi kiểm soát giảm giá thông qua các đường stop-loss Bollinger Band. Logic chiến lược đơn giản và thẳng thắn, với một loạt các ứng dụng, và các tham số có thể được điều chỉnh linh hoạt theo đặc điểm của thị trường. Tuy nhiên, trong ứng dụng thực tế, vẫn cần phải chú ý đến các vấn đề như thị trường bên cạnh, điều kiện cực đoan, tối ưu hóa tham số, v.v., và việc tinh chỉnh thêm các quy tắc quản lý vốn và vị trí là cần thiết. Nhìn chung, chiến lược này có thể phục vụ như một khuôn khổ giao dịch định lượng cơ bản, có thể được tối ưu hóa và cải thiện liên tục để đạt được kết quả giao dịch mạnh mẽ hơn.


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

//@version=5
strategy ("Marina Parfenova School Project Bot", overlay = true)

sma(price, n) =>
    result = 0.0
    for i = 0 to n - 1
        result := result + price [i] / n    
    result

wma(price, n) =>
    result = 0.0
    sum_weight = 0.0
    weight = 0.0
    for i = 0 to n - 1
        weight := n - 1
        result := result + price [i]*weight
        sum_weight := sum_weight + weight
    result/sum_weight

ema(price, n) =>
    result = 0.0
    alpha = 2/(n + 1)
    prevResult = price 
    if (na(result[1]) == false)
        prevResult := result[1]
    result := alpha * price + (1 - alpha) * prevResult

/// Настройки
n_slow = input.int(50, "Период медленной скользящей средней", step=5)
n_fast = input.int(4, "Период быстрой скользящей средней")
n_deviation = input.int(30, "Период среднеквадратического отклонения", step=5)
k_deviation_open = input.float(1.2, "Коэффициент ширины коридора покупки", step=0.1)
k_deviation_close = input.float(1.6, "Коэффициент ширины коридора продажи", step=0.1)

// ----- Линии индикаторов -----

// Медленная скользящая 
sma = sma(close, n_slow)
plot(sma, color=#d3d3d3)

// Линии Боллинджера, обозначающие коридор цены
bollinger_open = k_deviation_open * ta.stdev(close, n_deviation)
open_short_line = sma + bollinger_open
plot(open_short_line, color=#ec8383)
open_long_line = sma - bollinger_open
plot(open_long_line, color=#6dd86d)

bollinger_close = k_deviation_close * ta.stdev(close, n_deviation)
close_short_line = sma + bollinger_close
plot(close_short_line, color=#e3e3e3)
close_long_line = sma - bollinger_close
plot(close_long_line, color=#e3e3e3)

// Быстрая скользящая
ema = ema(close, n_fast)
plot(ema, color = color.aqua, linewidth = 2)

// ----- Сигналы для запуска стратегии -----

// если ema пересекает линию open_short сверху вниз - сигнал на создание ордера в short
if(ema[1] >= open_short_line[1] and ema < open_short_line)
    strategy.entry("short", strategy.short)

// если ema пересекает линию open_long снизу вверх - сигнал на создание ордера в long
if(ema[1] <= open_long_line[1] and ema > open_long_line)
    strategy.entry("long", strategy.long)

// если свеча пересекает верхнюю линию коридора продажи - закрываем все long-ордера 
if (high >= close_short_line)
    strategy.close("long")

// если свеча пересекает нижнюю линию коридора продажи - закрываем все short-ордера
if (low <= close_long_line)
    strategy.close("short")

Có liên quan

Thêm nữa