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


Ngày tạo: 2023-09-21 10:28:27 sửa đổi lần cuối: 2023-09-21 10:28:27
sao chép: 0 Số nhấp chuột: 667
1
tập trung vào
1617
Người theo dõi

Tổng quan

Chiến lược nà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 điểm giao nhau của trung bình di chuyển nhanh và trung bình di chuyển chậm làm tín hiệu mua và bán.

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

Chiến lược này được thực hiện thông qua các bước sau:

  1. Cài đặt chu kỳ trung bình di chuyển nhanh (fastMA) và chu kỳ trung bình di chuyển chậm (slowMA).

  2. Tính theo loại đầu vào Type, tính toán trung bình di chuyển nhanh fast và trung bình di chuyển chậm slow. Type = 1 là trung bình di chuyển đơn giản, Type = 2 là trung bình di chuyển chỉ số.

  3. Thiết lập phạm vi thời gian bắt đầu và kết thúc

  4. Định nghĩa hàm chéo: khi fast đi qua slow từ trên xuống, tạo ra tín hiệu mua; khi fast đi qua slow từ trên xuống, tạo ra tín hiệu bán.

  5. Khi hàm chéo được kích hoạt, chỉ thị mua và mở hoặc bán được đưa ra nếu nó nằm trong phạm vi thời gian đo đạc.

  6. Khi kết thúc cửa sổ đo lường hoặc khi đi qua hàm chéo, lệnh đóng cửa được phát ra.

  7. Hình đồ thị xu hướng của trung bình di chuyển nhanh (fast) và trung bình di chuyển chậm (slow).

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

Phân tích lợi thế

Chiến lược này có những ưu điểm sau:

  1. Sử dụng trung bình di chuyển để đánh giá xu hướng có hiệu quả, có thể lọc hiệu quả các biến động ngẫu nhiên.

  2. Kết hợp các đường trung bình di chuyển nhanh và chậm để nhận ra sự thay đổi trong xu hướng.

  3. Có thể điều chỉnh các tham số trung bình di chuyển để thích ứng với xu hướng của các chu kỳ khác nhau.

  4. Bạn có thể chọn trung bình di chuyển đơn giản hoặc trung bình di chuyển chỉ số.

  5. Các tham số chiến lược có thể được kiểm tra và tối ưu hóa thông qua chức năng phản hồi.

  6. Lập luận của chiến lược đơn giản, rõ ràng và dễ hiểu.

  7. Tạo đồ họa trung bình di chuyển để đánh giá trực quan xu hướng và hiệu quả.

Phân tích rủi ro

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

  1. Trong phạm vi tổng hợp, có thể tạo ra tín hiệu sai.

  2. Đường trung bình di chuyển có tính chậm trễ, có thể bỏ lỡ điểm biến.

  3. Chỉ phụ thuộc vào đường chéo đồng nhất, không có bộ lọc kết hợp với các chỉ số hoặc điều kiện khác.

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

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

  6. Thiết lập tham số không hợp lý có thể ảnh hưởng đến hiệu quả của chiến lược.

  7. Không chọn đúng phạm vi thời gian phản hồi, có thể tạo ra quá phù hợp.

Hướng tối ưu hóa

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

  1. Kết hợp với các chỉ số khác như MACD, RSI để xác minh tín hiệu, tăng độ chính xác.

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

  3. Tối ưu hóa các tham số trung bình di chuyển cho các chu kỳ khác nhau.

  4. Thêm quản lý kho, sử dụng các kho khác nhau theo thị trường.

  5. Xem xét chi phí giao dịch, thay đổi điểm vào và thoát.

  6. Kiểm tra dữ liệu trong một khoảng thời gian dài hơn để tránh quá phù hợp.

  7. Sử dụng phân tích tiến bộ để tối ưu hóa các tham số liên tục.

Tóm tắt

Chiến lược chéo đường trung bình di chuyển là một chiến lược theo dõi xu hướng đơn giản và thực tế. Nó có thể lọc các biến động ngẫu nhiên, xác định hướng xu hướng. Nhưng cũng có một số vấn đề như chậm trễ, nên được sử dụng với các chỉ số khác.

Mã nguồn chiến lược
/*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