Chiến lược trung bình di chuyển kép

Tác giả:ChaoZhang, Ngày: 2023-11-02 15:10:04
Tags:

img

Tổng quan

Chiến lược trung bình di chuyển kép là một chiến lược giao dịch ngắn hạn được sử dụng phổ biến. Nó đánh giá hướng xu hướng thị trường bằng cách tính toán trung bình di chuyển của các giai đoạn khác nhau và sử dụng điều đó để tham gia giao dịch. Khi trung bình di chuyển ngắn hạn vượt quá trung bình di chuyển dài hạn, đi dài. Khi trung bình di chuyển ngắn hạn vượt dưới trung bình di chuyển 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 hai trung bình động của các giai đoạn khác nhau, một là thời gian dài MA, khác là thời gian ngắn MA.

  2. Đánh giá liệu MA ngắn có vượt qua MA dài không. Khi MA ngắn vượt qua trên MA dài, nó cho thấy xu hướng tăng trên thị trường và chúng ta có thể mua dài. Khi MA ngắn vượt qua dưới MA dài, nó cho thấy xu hướng giảm và chúng ta có thể mua ngắn.

  3. Nhập giao dịch theo hướng xu hướng. Cụ thể, khi MA ngắn vượt quá MA dài, đi dài. Khi MA ngắn vượt dưới MA dài, đi ngắn.

  4. Thiết lập dừng lỗ và lấy lợi nhuận dựa trên điều kiện thị trường thực tế.

Chiến lược sử dụng khả năng đánh giá xu hướng của MA để xác định mối quan hệ giữa xu hướng ngắn hạn và dài hạn, để nắm bắt các động thái ngắn hạn.

Ưu điểm

Chiến lược MA kép có những lợi thế sau:

  1. Lý thuyết đơn giản và dễ hiểu và thực hiện.

  2. Nó có các tiêu chí nhập và xuất rõ ràng.

  3. Thời gian MA có thể được điều chỉnh để thích nghi với môi trường thị trường khác nhau.

  4. Nó nắm bắt cả xu hướng và sự đảo ngược trung bình, cho phép nó kiếm lợi nhuận từ các động thái trung hạn.

  5. Có một logic dừng lỗ để kiểm soát rủi ro.

Rủi ro

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

  1. Stop loss có thể được kích hoạt thường xuyên trong các thị trường giới hạn phạm vi.

  2. Các tín hiệu MA có thể quá thường xuyên trong thời gian thị trường biến động, khiến việc giữ các vị trí trở nên khó khăn.

  3. Bản thân MAs có sự chậm trễ và có thể bỏ lỡ các cơ hội đảo ngược ngắn hạn.

  4. Thời gian MA cần được tối ưu hóa để chiến lược hoạt động.

  5. Các đường chéo MA có một chút chậm trễ, gây ra sự chậm trễ của các mục nhập.

Hướng dẫn cải thiện

Một số cách để cải thiện chiến lược này:

  1. Tối ưu hóa thời gian MA cho các điều kiện thị trường khác nhau thông qua backtesting.

  2. Thêm các chỉ số khác làm bộ lọc để tránh sự biến động trong các thị trường dao động.

  3. Thêm các chỉ số sức mạnh xu hướng để tránh giao dịch khi không có xu hướng rõ ràng.

  4. Xem xét các chỉ số âm lượng để đánh giá hướng khoảng cách.

  5. Tối ưu hóa stop loss gần các mức hỗ trợ / kháng cự chính.

Tóm lại

Chiến lược MA kép là một chiến lược ngắn hạn đơn giản dựa trên MA chéo để xác định xu hướng. Ưu điểm là sự đơn giản và dễ sử dụng của nó. Nhược điểm là nó có thể được chọc theo các thị trường khác nhau và có độ trễ. Chúng ta có thể tối ưu hóa nó bằng cách điều chỉnh tham số, thêm bộ lọc vv để làm cho nó mạnh mẽ hơn cho môi trường thị trường phức tạp.


/*backtest
start: 2022-10-26 00:00:00
end: 2023-11-01 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("GetTrendStrategy timing", overlay=true)
tim=input('370')
 
//////////////////////////////////////////////////////////////////////
// Component Code Start
testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(10, "Backtest Start Month")
testStartDay = input(25, "Backtest Start Day")
testStartHour = input(7, "Backtest Start Hour")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,testStartHour,0)
testStopYear = input(2017, "Backtest Stop Year")
testStopMonth = input(10, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testStopHour = input(13, "Backtest stop Hour")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,testStartHour,0)
 
testPeriod() => true
// Component Code Stop
//////////////////////////////////////////////////////////////////////
 
 
out1 = request.security(syminfo.tickerid, tim, open)
out2 = request.security(syminfo.tickerid, tim, close)
plot(out1,color=red)
plot(out2,color=green)
longCondition = crossover(request.security(syminfo.tickerid, tim, close),request.security(syminfo.tickerid, tim, open))
 
if testPeriod()
    if (longCondition)
        strategy.entry("long", strategy.long)
shortCondition = crossunder(request.security(syminfo.tickerid, tim, close),request.security(syminfo.tickerid, tim, open))
 
if testPeriod()
    if (shortCondition)
        strategy.entry("short", strategy.short)

Thêm nữa