Chiến lược chéo trung bình động SMA

Tác giả:ChaoZhang, Ngày: 2024-03-28 17:50:00
Tags:

img

Tổng quan

Chiến lược này là một chiến lược chéo trung bình chuyển động SMA đơn giản. Nó sử dụng hai trung bình chuyển động đơn giản (SMA) với chiều dài khác nhau. Khi MA nhanh vượt qua trên MA chậm, nó đi vào một vị trí dài. Khi MA nhanh vượt qua dưới MA chậm, nó đóng vị trí dài.

Ý tưởng chính của chiến lược này là sử dụng các đặc điểm xu hướng của các đường trung bình động và các đặc điểm tín hiệu của các đường chéo MA để giao dịch. Khi MA nhanh vượt quá MA chậm, nó chỉ ra xu hướng tăng và nên giữ một vị trí dài. Khi MA nhanh dưới MA chậm, nó chỉ ra xu hướng giảm và không nên giữ vị trí.

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

  1. Tính toán hai SMA với chiều dài khác nhau, có thể được tùy chỉnh.
  2. Kiểm tra xem thời gian hiện tại có nằm trong cửa sổ backtesting hay không.
  3. Nếu MA nhanh vượt qua MA chậm, nhập vào vị trí dài.
  4. Nếu MA nhanh vượt qua dưới MA chậm, đóng tất cả các vị trí dài.
  5. Trong những trường hợp khác, cứ đứng yên và không làm gì cả.

Phân tích lợi thế

  1. Đơn giản và dễ hiểu, với logic rõ ràng, thích hợp cho người mới bắt đầu học và sử dụng.
  2. Trung bình động là một chỉ số kỹ thuật được sử dụng rộng rãi, với các đặc điểm xu hướng rõ ràng, có thể phản ánh xu hướng thị trường hiện tại.
  3. MA crossover là một tín hiệu theo xu hướng cổ điển có thể nhanh chóng nắm bắt những thay đổi trong xu hướng.
  4. Chiều dài của MAs và cửa sổ backtesting có thể được tùy chỉnh, cung cấp sự linh hoạt tốt.
  5. Thích hợp cho các công cụ và khung thời gian có đặc điểm xu hướng mạnh.

Phân tích rủi ro

  1. Đường trung bình động có một sự chậm trễ nhất định. Khi thị trường biến động mạnh và xu hướng thường xuyên đảo ngược, có thể có các tín hiệu chéo thường xuyên, dẫn đến giao dịch quá mức và chi phí giao dịch tăng.
  2. Chiến lược này chỉ có thể nắm bắt xu hướng tăng lên, và không có sức mạnh trong các thị trường giới hạn phạm vi và xu hướng giảm.
  3. Việc lựa chọn các tham số MA cần được tối ưu hóa cho các công cụ và khung thời gian khác nhau.
  4. Chiến lược này không có bất kỳ biện pháp dừng lỗ nào và có thể phải đối mặt với rủi ro rút vốn lớn hơn khi thị trường biến động đáng kể.

Hướng dẫn tối ưu hóa

  1. Xem xét thêm các biện pháp dừng lỗ thích hợp, chẳng hạn như dừng lại theo ATR, để kiểm soát mức lỗ tối đa của một giao dịch duy nhất.
  2. Xem xét thêm một số điều kiện lọc, chẳng hạn như khối lượng giao dịch và biến động, để lọc ra một số tín hiệu sai.
  3. Hãy xem xét tối ưu hóa các tham số, chẳng hạn như sử dụng các thuật toán di truyền hoặc các thuật toán thông minh khác để tìm kết hợp tham số tối ưu.
  4. Xem xét kết hợp các chỉ số kỹ thuật hoặc tín hiệu giao dịch khác với đường chéo MA, chẳng hạn như MACD và RSI, để cải thiện độ tin cậy và hiệu quả của chiến lược.

Kết luận

Chiến lược chéo trung bình di chuyển SMA là một chiến lược theo xu hướng đơn giản, dễ hiểu, cổ điển và thực tế, phù hợp cho người mới bắt đầu học và sử dụng. Nó sử dụng các đặc điểm xu hướng của trung bình di chuyển và các đặc điểm tín hiệu của chéo MA để nhanh chóng nắm bắt những thay đổi trong xu hướng thị trường. Tuy nhiên, chiến lược này cũng có một số hạn chế và rủi ro, chẳng hạn như chậm trễ, giao dịch thường xuyên và thiếu dừng lỗ. Do đó, trong các ứng dụng thực tế, nó cần được tối ưu hóa và cải thiện phù hợp theo các điều kiện cụ thể để tăng tính ổn định và lợi nhuận của chiến lược.


/*backtest
start: 2023-03-22 00:00:00
end: 2024-03-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © j0secyn

//@version=5
strategy("MA Cross", overlay=true, margin_long=100, margin_short=100, default_qty_value=100, default_qty_type=strategy.percent_of_equity, initial_capital=10000)

// === INPUT BACKTEST RANGE ===
fromDay   = input.int(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input.int(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear  = input.int(defval = 2018,title = "From Year", minval = 1970)
thruDay   = input.int(defval = 30, title = "Thru Day", minval = 1, maxval = 31)
thruMonth = input.int(defval = 9, title = "Thru Month", minval = 1, maxval = 12)
thruYear  = input.int(defval = 2024, title = "Thru Year", minval = 1970)

slow_ma_length = input.int(defval = 100, title = "Slow MA lenght")
fast_ma_length = input.int(defval = 30, title = "Fast MA lenght")

// === FUNCTION EXAMPLE ===
start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)            // backtest start  window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)            // backtest finish window
window()  => true

// === LOGIC ===
crossOv = ta.crossover(ta.sma(close, fast_ma_length), ta.sma(close, slow_ma_length))
crossUn = ta.crossunder(ta.sma(close, fast_ma_length), ta.sma(close, slow_ma_length))

// === EXECUTION ===
// strategy.entry("L", strategy.long, when = window() and crossOv)        // enter long when "within window of time" AND crossover
// strategy.close("L", when = window() and crossUn)                       // exits long when "within window of time" AND crossunder         
strategy.entry("L", strategy.long, when = window() and crossOv)        // enter long when "within window of time" AND crossover
strategy.close("L", when = window() and crossUn)                       // exits long when "within window of time" AND crossunder         

Thêm nữa