Chiến lược giao cắt đường trung bình động phổ biến


Ngày tạo: 2023-11-03 17:23:54 sửa đổi lần cuối: 2023-11-03 17:23:54
sao chép: 0 Số nhấp chuột: 707
1
tập trung vào
1617
Người theo dõi

Chiến lược giao cắt đường trung bình động phổ biến

Tổng quan

Chiến lược đường chéo trung bình di chuyển là một chiến lược phân tích kỹ thuật rất cổ điển và thường được sử dụng. Ý tưởng cốt lõi của chiến lược này là sử dụng đường chéo giữa các đường trung bình di chuyển trong các khoảng thời gian khác nhau làm tín hiệu mua bán.

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

Chiến lược này được thiết lập bằng cách đưa vào loại trung bình di chuyển (SMA, EMA, WMA, RMA) và độ dài chu kỳ, và phạm vi thời gian đo lại.

Tính toán các loại trung bình di chuyển khác nhau trong hàm biến. Các trung bình di chuyển được tính được lưu giữ bởi biến ma.

Khi giá đóng cửa vượt qua ma, nó tạo ra tín hiệu mua; khi giá đóng cửa vượt qua ma, nó tạo ra tín hiệu bán.

Để thiết lập dừng lỗ, tính toán độ dao động trung bình thực tế trong 14 chu kỳ thông quaatr. Với điểm đi qua làm tham chiếu, tăng lên hoặc giảm xuống 2 lầnatr như phạm vi dừng lỗ.

Logic nhập cảnh và xuất cảnh cụ thể như sau:

Nhiều đầu vào: đóng trên ma và trong thời gian phản hồi, điểm dừng là điểm vào Nhiều đầu ra: đóng cửa dưới ma trừ đi 2 lầnatr khi dừng chân ra, hoặc giá cao nhất vượt quá điểm vào cửa đóng cửa cộng 2 lầnatr khi dừng chân ra Đi đầu không vào: close dưới ma và trong thời gian phản hồi, điểm dừng là điểm vào close Bỏ đầu trống: đóng cửa khi mang ma cộng 2 lầnatr khi dừng lỗ, hoặc giá thấp nhất thấp hơn điểm vào cửa khi đóng cửa trừ 2 lầnatr khi dừng

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

  1. Chiến lược này đơn giản, rõ ràng, dễ hiểu và dễ thực hiện.
  2. Sử dụng rộng rãi, phù hợp với các thị trường và giống khác nhau
  3. Cài đặt tham số linh hoạt, loại và chu kỳ trung bình di chuyển có thể điều chỉnh
  4. Sử dụng ATR để kiểm soát rủi ro

Rủi ro chiến lược

  1. Chiến lược trung bình di chuyển dễ gây ra giao dịch thường xuyên và dừng lỗ, giảm cơ hội kiếm lợi nhuận
  2. Trong trường hợp biến động lớn, đường trung bình di chuyển có khả năng tạo ra tín hiệu sai lệch
  3. Phạm vi ATR có thể quá lớn hoặc quá nhỏ để có hiệu quả ngăn chặn tổn thất lớn

Đối với các rủi ro, bạn có thể tối ưu hóa từ:

  1. Điều chỉnh chu kỳ trung bình di chuyển, sử dụng trung bình chu kỳ dài hơn
  2. Tăng các điều kiện lọc để tránh giao dịch thường xuyên trong thời gian chấn động
  3. Tối ưu hóa các tham số của ATR hoặc sử dụng các phương thức dừng khác
  4. Kết hợp các chỉ số xu hướng để đánh giá xu hướng lớn, tránh hoạt động ngược

Hướng 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. Thêm các điều kiện lọc như khối lượng giao dịch, tỷ lệ biến động, v.v. để tránh đột phá không hợp lý
  2. Sử dụng phương pháp dừng ATR thích ứng để phạm vi dừng thay đổi theo biến động của thị trường
  3. Kết hợp với Stoch, RSI và các chỉ số khác để xác minh đa yếu tố để cải thiện chất lượng tín hiệu
  4. Tăng khả năng đánh giá xu hướng, tránh hành động ngược
  5. Sử dụng thời gian EXIT để tránh thua lỗ trong thời gian dài
  6. Tối ưu hóa các tham số chu kỳ trung bình di chuyển để tìm các tham số kết hợp tốt nhất

Tóm tắt

Chiến lược chéo trung bình di chuyển là một chiến lược phân tích kỹ thuật rất điển hình và phổ biến. Ý tưởng cốt lõi của chiến lược này đơn giản, dễ thực hiện, phù hợp với mọi thị trường và là một trong những chiến lược nhập cảnh cho giao dịch định lượng. Tuy nhiên, chiến lược này cũng có một số vấn đề, chẳng hạn như tạo ra tín hiệu thường xuyên, dễ bị dừng lại, v.v..

Mã nguồn chiến lược
/*backtest
start: 2023-10-03 00:00:00
end: 2023-11-02 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("MA Cross Strategy", overlay=true,commission_value = 0.1)

type = input(defval = "WMA", title = "MA Type: ", options=["RMA", "SMA", "EMA", "WMA"])

length = input(28)
source = close



// === INPUT BACKTEST RANGE ===
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromYear  = input(defval = 2000, title = "From Year", minval = 2000)

// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(9999, 1, 1, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false // create function "within window of time"



variant(type, src, len) =>
    v1 = sma(src, len)                                                  // Simple
    v2 = ema(src, len)                                                  // Exponential
    v5 = wma(src, len)                                                  // Weighted
    v7 = rma(src, len)                                                  // Smoothed
    type=="EMA"?v2 : type=="WMA"?v5 : type=="RMA"?v7 : v1
ma = variant(type,source, length)


atr = security(syminfo.tickerid, "D", atr(14))

range = valuewhen(cross(close,ma), (atr*2), na)

ep = valuewhen(cross(close,ma), close, na)

plot(ma,color=ma>ma[1]?color.blue:color.red,transp=0,linewidth=1)
plot(ep,color=#2196f3,transp=100,trackprice=true, offset=-9999)
plot(ep+range,color=#2196f3,transp=100,trackprice=true, offset=-9999)
plot(ep-range,color=#2196f3,transp=100,trackprice=true, offset=-9999)

strategy.entry("Long Entry", true, when = crossover(close,ma)  and window() , stop  = ep ) 
strategy.exit("Long Exit", "Long Entry", stop  = ep-range) 
strategy.exit("Long Exit", "Long Entry", when = high > ep+range ,stop = ep[1] ) 

strategy.entry("Short Entry", false, when = crossunder(close,ma)  and window() , stop  = ep ) 
strategy.exit("Short Exit", "Short Entry", stop  = ep+range) 
strategy.exit("Short Exit", "Short Entry", when = low < ep-range ,stop = ep[1] )