Chiến lược giao dịch chéo trung bình động

Tác giả:ChaoZhang, Ngày: 2024-01-24 14:59:44
Tags:

img

Tổng quan

Chiến lược giao dịch chuyển động trung bình là một chiến lược giao dịch định lượng tương đối phổ biến. Chiến lược này tạo ra tín hiệu giao dịch bằng cách tính toán trung bình chuyển động của các giai đoạn khác nhau và theo tình huống giao dịch của họ. Cụ thể, nó tính toán các trung bình chuyển động theo cấp số nhân (EMA) của 4 giai đoạn, 8 giai đoạn và 20 giai đoạn. Khi EMA ngắn hạn vượt qua EMA dài hạn, đi dài; khi EMA ngắn hạn vượt dưới EMA dài hạn, đi ngắn.

Chiến lược logic

Logic cốt lõi của chiến lược này là:

  1. Tính toán đường EMA của 4 giai đoạn, 8 giai đoạn và 20 giai đoạn.
  2. Đánh giá mối quan hệ giữa đường EMA 4 giai đoạn và đường EMA 8 giai đoạn:
    1. Khi đường EMA 4 giai đoạn vượt qua đường EMA 8 giai đoạn, điều đó có nghĩa là xu hướng giá đang tăng mạnh, đó là tín hiệu tăng.
    2. Khi EMA 4 giai đoạn vượt qua dưới EMA 8 giai đoạn, điều đó có nghĩa là xu hướng giá đang suy yếu, đó là một tín hiệu giảm.
  3. Đồng thời, đánh giá hướng của đường EMA 20 giai đoạn:
    1. Nếu đường EMA 20 giai đoạn tăng lên, sau đó nhập Long.
    2. Nếu đường EMA 20 giai đoạn đi xuống, sau đó nhập ngắn.
  4. Khi mối quan hệ giữa đường EMA 4 giai đoạn và đường EMA 8 giai đoạn đảo ngược, chuẩn bị thoát.
  5. Khi hướng đường EMA 20 giai đoạn đảo ngược, Exit Now.

Thông qua phương pháp này, chúng tôi tận dụng sự chéo chéo giữa các đường trung bình động giai đoạn khác nhau để đánh giá tín hiệu thị trường, và sử dụng hướng của đường trung bình động giai đoạn dài nhất để lọc các tín hiệu sai, xây dựng một chiến lược giao dịch ổn định.

Ưu điểm của Chiến lược

Những lợi thế chính của chiến lược này là:

  1. Logic chiến lược đơn giản và rõ ràng, dễ hiểu và thực hiện.
  2. Việc lọc hai điều kiện có thể làm giảm tín hiệu sai.
  3. Sự thúc đẩy từ EMA 20 giai đoạn có thể xác định các xu hướng chính và tăng cường sự ổn định.
  4. Các tham số có thể tùy chỉnh để điều chỉnh tần suất giao dịch.
  5. Dễ kết hợp với các chỉ số hoặc mô hình khác để xây dựng các chiến lược phức tạp.

Rủi ro của chiến lược

Ngoài ra còn có một số rủi ro với chiến lược này:

  1. Chiến lược trung bình động đôi có xu hướng tạo ra tín hiệu sai.
  2. Thời gian cố định không thể thích nghi với sự thay đổi của thị trường.
  3. Nó dễ dàng gây ra tổn thất trong thời gian biến động thị trường.

Các giải pháp chính là:

  1. Giảm thời gian giữ hợp lý và dừng lỗ kịp thời.
  2. Tối ưu hóa các tham số và điều chỉnh các khoảng thời gian trung bình động.
  3. Kết hợp với các chỉ số hoặc mô hình khác để tạo ra các chiến lược phức tạp.

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

Chiến lược có thể được tối ưu hóa trong các khía cạnh sau:

  1. Tối ưu hóa thời gian: Xác định sự kết hợp thời gian MA tối ưu theo các giống khác nhau.

  2. Tối ưu hóa dừng lỗ: Đặt các điểm dừng lỗ hợp lý để kiểm soát lỗ đơn.

  3. Tối ưu hóa tham số: Tối ưu hóa các tham số một cách năng động bằng cách sử dụng các thuật toán di truyền, chuỗi Markov, v.v.

  4. Phối hợp mô hình: Kết hợp với LSTM, RNN và các mô hình học sâu khác để chiết xuất thêm Alpha.

  5. Tối ưu hóa danh mục đầu tư: Kết hợp với các chiến lược chỉ số kỹ thuật khác để xây dựng danh mục đầu tư chiến lược.

Tóm lại

Nói chung, chiến lược chéo trung bình động là một chiến lược giao dịch định lượng tương đối cổ điển và thường được sử dụng. Chiến lược này có logic đơn giản và dễ hiểu và thực hiện, với sự ổn định nhất định. Nhưng cũng có một số vấn đề, chẳng hạn như tạo ra tín hiệu sai, không thể thích nghi với những thay đổi của thị trường, v.v. Những vấn đề này có thể được cải thiện thông qua tối ưu hóa tham số, tối ưu hóa dừng lỗ, hợp nhất mô hình và các phương pháp khá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=3
//future strategy
//strategy(title = "stub", default_qty_type = strategy.fixed, default_qty_value = 1,  overlay = true, commission_type=strategy.commission.cash_per_contract,commission_value=2.05)
//stock strategy
strategy(title = "stub",   overlay = true)
//forex strategy
//strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 100,  overlay = true)
//crypto strategy
//strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 100,  overlay = true, commission_type=strategy.commission.percent,commission_value=.0,default_qty_value=10000)


testStartYear = input(1900, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testEndYear = input(2018, "Backtest Start Year")
testEndMonth = input(12, "Backtest Start Month")
testEndDay = input(1, "Backtest Start Day")
testPeriodEnd = timestamp(testStartYear,testStartMonth,testStartDay,0,0)


testPeriod() => true

ema1 = ema(close,4)
ema2 = ema(close,8)
ema3 = ema(close,20)

go_long = ema1[0] > ema2[0] and ema3[0] > ema3[1]
exit_long = ema1[0] < ema2[0] or ema3[0] < ema3[1]

go_short = ema1[0] < ema2[0] and ema3[0] < ema3[1]
exit_short = ema1[0] > ema2[0] or ema3[0] > ema3[1]

 
if testPeriod()
    strategy.entry("simpleBuy", strategy.long, when=go_long)
    strategy.exit("simpleBuy", "simpleSell",when=exit_long)
    
    strategy.entry("simpleSell", strategy.short,when=go_short)
    strategy.exit("simpleSell", "simpleSell",when=exit_short)
        
    


Thêm nữa