Chiến lược chéo trung bình di chuyển

Tác giả:ChaoZhang, Ngày: 2023-09-21 10:28:27
Tags:

Tổng quan

Đây là một chiến lược giao dịch chéo trung bình di chuyển điển hình. Nó sử dụng các điểm chéo của trung bình di chuyển nhanh và chậm làm tín hiệu giao dịch. Khi trung bình di chuyển nhanh vượt qua trên trung bình di chuyển chậm từ dưới, nó được coi là tín hiệu mua. Khi trung bình di chuyển nhanh vượt qua dưới trung bình di chuyển chậm từ trên, nó được coi là tín hiệu bán. Chiến lược này kết hợp hai trung bình di chuyển và có thể lọc hiệu quả tiếng ồn thị trường và xác định xu hướng.

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

Các bước chính của chiến lược này là:

  1. Thiết lập thời gian trung bình chuyển động nhanh fastMA và thời gian trung bình chuyển động chậm slowMA.

  2. Tính toán trung bình di chuyển nhanh và trung bình di chuyển chậm dựa trên kiểu đầu vào Type. Type=1 là trung bình di chuyển đơn giản, Type=2 là trung bình di chuyển theo cấp số nhân.

  3. Đặt backtest thời gian bắt đầu và kết thúc.

  4. Định nghĩa chức năng chéo: khi nhanh vượt qua chậm, tạo tín hiệu mua; khi nhanh vượt qua chậm, tạo tín hiệu bán.

  5. Khi chức năng chéo được kích hoạt, nếu trong phạm vi thời gian backtest, đưa ra lệnh mở dài hoặc đóng ngắn.

  6. Khi cửa sổ backtest kết thúc hoặc chức năng chéo vượt qua bên dưới, đưa ra lệnh đóng dài.

  7. Xác định đường đồ họa trung bình di chuyển nhanh và trung bình di chuyển chậm

Chiến lược này sử dụng sự chéo chéo giữa các đường trung bình di chuyển nhanh và chậm để xác định xu hướng trong thời gian nắm giữ và tạo ra các tín hiệu giao dịch phù hợp.

Phân tích lợi thế

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

  1. Mức trung bình động có hiệu quả trong việc xác định xu hướng và lọc biến động ngẫu nhiên.

  2. Sự kết hợp giữa các đường trung bình di chuyển nhanh và chậm có thể xác định sự thay đổi xu hướng.

  3. Các thông số của đường trung bình động có thể được điều chỉnh để thích nghi với xu hướng thời gian khác nhau.

  4. Sự lựa chọn linh hoạt giữa các đường trung bình di chuyển đơn giản và biểu thức.

  5. Chức năng backtest cho phép kiểm tra và tối ưu hóa các thông số chiến lược.

  6. Logic đơn giản và rõ ràng, dễ hiểu và thực hiện.

  7. Khai họa biểu đồ trung bình động cho phép xác định trực quan xu hướng và hiệu ứng.

Phân tích rủi ro

Một số rủi ro của chiến lược này:

  1. Có thể tạo ra tín hiệu sai trong thời gian giới hạn phạm vi.

  2. Trung bình động có hiệu ứng chậm trễ, có thể bỏ lỡ các điểm chuyển đổi.

  3. Chỉ dựa trên đường chéo trung bình động, không có chỉ số hoặc bộ lọc nào khác.

  4. Không tính chi phí giao dịch.

  5. Không có chiến lược dừng lỗ.

  6. Cài đặt tham số không hợp lý có thể ảnh hưởng đến hiệu suất chiến lược.

  7. Chọn không đúng khoảng thời gian backtest có thể gây ra quá tải.

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. Thêm các chỉ số khác như MACD, RSI để xác nhận tín hiệu và cải thiện độ chính xác.

  2. Thêm chiến lược dừng lỗ để kiểm soát lỗ đơn.

  3. Tối ưu hóa các thông số trung bình động cho các khoảng thời gian khác nhau.

  4. Thêm kích thước vị trí dựa trên điều kiện thị trường.

  5. Xem xét chi phí giao dịch, điều chỉnh các điểm nhập và xuất.

  6. Kiểm tra khung thời gian dài hơn để tránh quá phù hợp.

  7. Tiếp tục tối ưu hóa các thông số bằng cách sử dụng phân tích bước đi về phía trước.

Tóm lại

Chiến lược chéo trung bình động là một chiến lược đơn giản và thực tế theo xu hướng. Nó có thể lọc các biến động ngẫu nhiên và xác định hướng xu hướng. Nhưng nó cũng có một số vấn đề như hiệu ứng tụt hậu, và nên được kết hợp với các chỉ số khác. Tối ưu hóa và thử nghiệm liên tục có thể cải thiện hiệu suất chiến lược và làm cho nó đáng tin cậy hơn cho giao dịch trực tiếp. Nhìn chung, chiến lược này phù hợp với các nhà đầu tư có yêu cầu tương đối thấp về xác định xu hướng.


/*backtest
start: 2023-09-13 00:00:00
end: 2023-09-20 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
// strategy("MavCrossover v2", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

// Revision:        1
// Author:          @ToS_MavericK

// === INPUT SMA ===
fastMA  = input(defval = 13,  title = "FastMA", minval = 1, step = 1)
slowMA  = input(defval = 144,  title = "SlowMA", minval = 1, step = 1)
Type    = input(defval = 1,  title = "Type (1 = SMA, 2 = EMA)", minval = 1, maxval = 2, step = 1)
SlowMAIsFactor = input(false)

slowMA := SlowMAIsFactor == true ? round(fastMA * slowMA) : slowMA

// === 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 = 2018, title = "From Year", minval = 2012)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToYear    = input(defval = 2020, title = "To Year", minval = 2012)

// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => true // create function "within window of time"

// === MA SETUP ===
fast = Type == 1 ? sma(close, fastMA) : ema(close, fastMA)
slow = Type == 1 ? sma(close, slowMA) : ema(close, slowMA)

// === EXECUTION ===
strategy.entry("L", strategy.long, when = crossover(fast, slow) and window())   // buy long when "within window of time" AND crossover
strategy.close("L", when = crossunder(fast, slow) or time > finish)             // sell long when window ends OR crossunder         

plot(fast, title = 'FastMA', color = yellow, linewidth = 2, style = line)  // plot FastMA
plot(slow, title = 'SlowMA', color = aqua, linewidth = 2, style = line)    // plot SlowMA

Thêm nữa