Một chiến lược giao dịch dựa trên sự giao nhau của đường trung bình động


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

Một chiến lược giao dịch dựa trên sự giao nhau của đường trung bình động

Tổng quan

Chiến lược giao dịch chéo trung bình di chuyển là một chiến lược giao dịch định lượng phổ biến hơn. Chiến lược này được tạo ra bằng cách tính toán các trung bình di chuyển của các chu kỳ khác nhau và tạo ra tín hiệu giao dịch dựa trên sự giao nhau của chúng. Cụ thể là tính toán các trung bình di chuyển chỉ số của 4 chu kỳ, 8 chu kỳ và 20 chu kỳ (EMA), làm nhiều hơn khi vượt qua EMA dài trên EMA ngắn hạn; làm trống khi EMA ngắn hạn phá vỡ EMA dài hạn.

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

Lập luận cốt lõi của chiến lược này là:

  1. Tính toán đường EMA 4 chu kỳ, 8 chu kỳ và 20 chu kỳ
  2. Xác định mối quan hệ giữa đường EMA 4 chu kỳ và đường EMA 8 chu kỳ:
    1. Khi đường EMA 4 chu kỳ đi qua đường EMA 8 chu kỳ, điều này cho thấy xu hướng giá tăng mạnh, thuộc tín hiệu đa đầu.
    2. Khi 4 chu kỳ EMA phá vỡ 8 chu kỳ EMA, cho thấy xu hướng giá yếu đi, thuộc tín hiệu đầu không.
  3. Trong khi đó, định hướng của đường EMA 20 chu kỳ:
    1. Nếu đường EMA 20 chu kỳ tăng lên, Enter Long.
    2. Nếu đường EMA 20 chu kỳ giảm, Enter Short.
  4. Khi mối quan hệ giữa đường EMA 4 chu kỳ và đường EMA 8 chu kỳ bị đảo ngược, Prepare Exit。
  5. Khi đường EMA 20 chu kỳ bị đảo chiều, Exit Now.

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

Lợi thế chiến lược

Chiến lược này có một số ưu điểm:

  1. Lập luận chiến lược đơn giản, rõ ràng, dễ hiểu và dễ thực hiện.
  2. Sử dụng bộ lọc điều kiện kép, bạn có thể giảm tín hiệu sai.
  3. Mức EMA 20 chu kỳ tăng, có thể nhận ra xu hướng lớn và tăng sự ổn định.
  4. Các tham số có thể được tùy chỉnh để điều chỉnh tần số giao dịch.
  5. Dễ dàng kết hợp với các chỉ số hoặc mô hình khác để xây dựng chiến lược tổng hợp.

Rủi ro chiến lược

Chiến lược này cũng có một số rủi ro:

  1. Chiến lược hai đường trung bình dễ tạo ra tín hiệu giả.
  2. Chu kỳ cố định không thể thích nghi với sự thay đổi của thị trường.
  3. Các nhà đầu tư cũng có xu hướng mất mát khi chứng khoán bị sụp đổ.

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

  1. Giảm thời gian nắm giữ một cách thích hợp và dừng lỗ kịp thời.
  2. Các tham số tối ưu hóa động, điều chỉnh chu kỳ đường trung bình.
  3. Xây dựng chiến lược tổng hợp kết hợp với các chỉ số hoặc mô hình khác.

Tối ưu hóa chiến lược

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

  1. Tối ưu hóa chu kỳ: Xác định kết hợp chu kỳ MA tốt nhất cho các giống khác nhau Tối ưu hóa dừng lỗ: thiết lập điểm dừng lỗ hợp lý, kiểm soát tổn thất đơn lẻ Tối ưu hóa tham số: sử dụng thuật toán di truyền, chuỗi Markov và các phương pháp tối ưu hóa tham số động

  2. Tích hợp mô hình: tích hợp với các mô hình học sâu như LSTM, RNN, để lấy thêm Alpha

Tối ưu hóa danh mục: xây dựng danh mục chiến lược với các danh mục chiến lược khác

Tóm tắt

Chiến lược giao dịch số hóa trung bình di chuyển là một chiến lược giao dịch định lượng cổ điển và phổ biến hơn. Lập luận của chiến lược này đơn giản, dễ hiểu và thực hiện, có 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 ứng với sự thay đổi của thị trường. Những vấn đề này có thể được cải thiện bằng các phương pháp như tối ưu hóa tham số, tối ưu hóa dừng lỗ và kết hợp mô hình.

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=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)