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

Tác giả:ChaoZhang, Ngày: 2023-12-08 15:23:33
Tags:

img

Chiến lược này sử dụng sự chéo chéo giữa trung bình động 20 ngày và trung bình động 60 ngày để tạo ra tín hiệu giao dịch. Nó đi dài khi giá phá vỡ trên 20 ngày MA và đóng vị trí khi giá phá vỡ dưới 20 ngày MA. Tương tự, nó tạo ra tín hiệu giao dịch khi giá vượt qua 60 ngày MA. Chiến lược này thuộc về một hệ thống theo xu hướng điển hình.

Chiến lược logic

  1. Tính toán trung bình di chuyển đơn giản 20 ngày và trung bình di chuyển đơn giản 60 ngày
  2. Đi dài khi giá đóng phá vỡ trên MA 20 ngày
  3. Khóa vị trí khi giá đóng vỡ dưới mức MA 20 ngày
  4. Đi dài khi giá đóng phá vỡ trên MA 60 ngày
  5. Khóa vị trí khi giá đóng vỡ dưới mức MA 60 ngày

Các quy tắc trên xác định các tín hiệu giao dịch và logic cho chiến lược này. Khi giá vượt qua đường MA, nó cho thấy một xu hướng mới đang nổi lên và chúng ta có thể theo xu hướng để đi dài. Khi giá giảm xuống dưới đường MA, nó cho thấy xu hướng đang kết thúc vì vậy chúng ta đóng vị trí.

Ưu điểm

  1. Việc áp dụng hai MA làm cho chiến lược ổn định hơn. MA 20 ngày nắm bắt các cơ hội ngắn hạn nhanh hơn trong khi MA 60 ngày lọc ra một số tiếng ồn thị trường và khóa trong xu hướng trung bình dài hạn.
  2. Việc kiểm tra ngược bắt đầu từ năm 2018 và chọn thị trường chứng khoán Đài Loan, có hệ thống giao dịch phát triển hơn so với thị trường cổ phiếu A của Trung Quốc, phản ánh hiệu quả chiến lược tốt hơn.
  3. Nó thiết lập đúng stop loss và kích thước vị trí, kiểm soát tối đa rủi ro.

Rủi ro

  1. Chiến lược chỉ dựa trên chỉ số MA. Nó có thể tạo ra nhiều whipsaws hơn khi không có xu hướng rõ ràng trên thị trường.
  2. Chiến lược không tối ưu hóa kích thước và vị trí mua / bán, không tối đa hóa việc sử dụng vốn.
  3. Chiến lược phản ứng đối xứng với giá tăng và giảm, không thể thích nghi với các điều kiện thị trường khác nhau.

Giải pháp rủi ro:

  1. Thêm các chỉ số khác như KDJ, MACD để hình thành nhiều xác nhận, tránh giao dịch sai.
  2. Tối ưu hóa kích thước vị trí và hiệu quả sử dụng vốn theo vốn hóa thị trường, biến động v.v.
  3. Sử dụng các động thái không đối xứng dựa trên các giai đoạn thị trường, giảm giao dịch trong thị trường giới hạn phạm vi và tăng kích thước vị trí trong xu hướng rõ ràng.

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

  1. Tối ưu hóa số lượng mua / bán. Điều chỉnh kích thước vị trí năng động dựa trên dừng lỗ.
  2. Tối ưu hóa các thông số MA. Tìm các thông số tốt hơn thông qua tối ưu hóa bước đi trước và tối ưu hóa ngẫu nhiên.
  3. Thêm chiến lược dừng lỗ. Di chuyển lệnh dừng lỗ hoặc lệnh dừng giới hạn bảo vệ lợi nhuận tốt hơn.
  4. Thêm quản lý kích thước vị trí. Điều chỉnh động kích thước vị trí cho mỗi giao dịch dựa trên quy mô vốn, vốn hóa thị trường vv

Tóm lại

Đây là một chiến lược chéo trung bình động kép điển hình. Ý tưởng cốt lõi là theo xu hướng bằng cách thiết lập vị trí khi giá vượt qua đường MA. Chiến lược này đơn giản và thực tế để thực hiện. Trong khi đó, có không gian tối ưu hóa hơn nữa, bằng cách điều chỉnh tham số, dừng lỗ, kích thước vị trí vv để đạt được kết quả tốt hơn.


/*backtest
start: 2022-12-01 00:00:00
end: 2023-12-07 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/
// © Astorhsu

//@version=5
strategy("Astor SMA20/60 TW", overlay=true, margin_long=100, margin_short=100)
backtest_year = input(2018, title='backtest_year') //回測開始年分
backtest_month = input.int(01, title='backtest_month', minval=1, maxval=12) //回測開始月份
backtest_day = input.int(01, title='backtest_day', minval=1, maxval=31)  //回測開始日期
start_time = timestamp(backtest_year, backtest_month, backtest_day, 00, 00)  //回測開始的時間函數

//Indicators
sma20 = ta.sma(close,20)
sma60 = ta.sma(close,60)
plot(sma20, color=color.green, title="sma(20)")
plot(sma60, color=color.red, title="sma(60)")

//進場條件
longCondition = ta.crossover(close, ta.sma(close, 20))
if (longCondition) and time >= start_time
    strategy.entry("open long20", strategy.long, qty=1, comment="站上m20做多")


shortCondition = ta.crossunder(close, ta.sma(close, 20))
if (shortCondition) and time >= start_time
    strategy.close("open long20",comment="跌破m20平倉", qty=1)     
    
longCondition1 = ta.crossover(close, ta.sma(close, 60))
if (longCondition1) and time >= start_time
    strategy.entry("open long60", strategy.long, qty=1, comment="站上m60做多")


shortCondition1 = ta.crossunder(close, ta.sma(close, 60))
if (shortCondition1) and time >= start_time
    strategy.close("open long60",comment="跌破m60平倉", qty=1)     

Thêm nữa