Chiến lược kết hợp trung bình động và MACD

Tác giả:ChaoZhang, Ngày: 2023-10-24 13:51:02
Tags:

img

Tổng quan

Chiến lược này kết hợp hệ thống chéo trung bình động và chỉ số MACD để thực hiện một chiến lược giao dịch tự động kéo dài trong thời kỳ xu hướng và lấy lợi nhuận / dừng lại khi xu hướng đảo ngược.

Nguyên tắc

Chiến lược này chủ yếu dựa trên sự kết hợp giữa hệ thống chéo trung bình động và chỉ số MACD. Cụ thể, nó đi dài khi trung bình động ngắn hạn vượt qua trung bình động dài hạn và đi ngắn khi trung bình động ngắn hạn vượt dưới trung bình động dài hạn.

Đồng thời, chỉ số MACD được sử dụng để xác nhận tín hiệu giao dịch. Chỉ khi đường MACD DIFF vượt qua đường DEA, một tín hiệu dài sẽ được kích hoạt. Và một khi đường DIFF vượt qua dưới đường DEA, vị trí dài sẽ được đóng cửa để dừng lỗ.

Ngoài ra, chỉ số RSI được sử dụng để tránh mua ngắn quá mức, với một vị trí ngắn chỉ được bắt đầu khi chỉ số RSI dưới 30%.

Đối với các lỗ dừng, chiến lược sử dụng phương pháp dừng theo dõi tỷ lệ phần trăm cố định, với lỗ dừng dài được đặt ở mức 1% dưới giá nhập cảnh và lỗ dừng ngắn được đặt ở mức 1% trên giá nhập cảnh. Chiến lược cũng thực hiện lợi nhuận chuyển động khi lợi nhuận động của vị trí dài đạt 3% giá nhập cảnh.

Phân tích lợi thế

Ưu điểm lớn nhất của chiến lược này là sử dụng hệ thống trung bình động để xác định hướng xu hướng chính, sau đó sử dụng chỉ số MACD cho các tín hiệu đầu vào, có thể lọc hiệu quả các đột phá sai. so với chỉ sử dụng hệ thống chéo trung bình động một mình, điều này có thể làm giảm tần suất giao dịch không hiệu quả và cải thiện tỷ lệ thắng.

Ngoài ra, tỷ lệ dừng lỗ cố định và chuyển động lợi nhuận giúp giữ lỗ trong giới hạn chấp nhận được, trong khi đảm bảo lợi nhuận sớm khi có thể. Điều này có thể làm giảm việc rút tiền tài khoản và tránh thua lỗ do tham lam trong giao dịch thực tế.

Phân tích rủi ro

Những rủi ro chính của chiến lược này là:

  1. Hệ thống chéo trung bình động có các vấn đề chậm trễ, có thể dẫn đến sự chậm trễ vào và bỏ lỡ các điểm vào tốt nhất. Điều này có thể được cải thiện bằng cách tối ưu hóa các tham số MA.

  2. Chỉ số MACD có xu hướng tạo ra tín hiệu sai.

  3. Lợi nhuận dừng lỗ phần trăm cố định đôi khi không thể thoát vào thời điểm thích hợp.

  4. Chiến lược có thể có drawdowns lớn.

  5. Chiến lược chỉ kéo dài và không thể lợi nhuận từ xu hướng giảm.

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

Chiến lược có thể được cải thiện trong các khía cạnh sau:

  1. Tối ưu hóa các thông số MA để có tín hiệu chính xác hơn.

  2. Thêm các chỉ số khác để lọc các tín hiệu chéo MA, chẳng hạn như KDJ, RSI vv, để giảm giao dịch xấu.

  3. Kiểm tra các phương pháp dừng mất mát năng động như dừng lại và dừng ATR để kiểm soát tốt hơn rủi ro.

  4. Thêm cơ chế bán ngắn để chiến lược có thể kiếm lợi từ xu hướng giảm.

  5. Tối ưu hóa kích thước vị trí và quản lý tiền để giảm rút tối đa.

  6. Kiểm tra hiệu suất trên các sản phẩm và lớp tài sản khác nhau để mở rộng khả năng áp dụng.

  7. Kết hợp các thuật toán học máy để tự động tối ưu hóa các thông số và giảm can thiệp thủ công.

Kết luận

Chiến lược này kết hợp các điểm mạnh của hệ thống chéo trung bình động và chỉ số MACD để có lợi nhuận cao. Các cải tiến hơn nữa trong điều chỉnh tham số, các bộ lọc bổ sung, cơ chế dừng lỗ và cơ chế rút ngắn có thể cải thiện tính ổn định và giảm rút. Việc kết hợp máy học cũng có thể mở rộng khả năng áp dụng.


/*backtest
start: 2023-10-16 00:00:00
end: 2023-10-23 00:00:00
period: 2m
basePeriod: 1m
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/
// © Toxic_Cat_

//@version=5
// strategy("MA_50_200_CROSS", overlay=true, margin_long=100, margin_short=100)

EMA21 = ta.ema(close, 21)
EMA100 = ta.ema(close, 100)
[macdLine, signalLine, histLine] = ta.macd(close, 12, 26, 9)

plot(EMA21)
plot(EMA100, color = color.orange)

openLong = ta.crossover(EMA21, EMA100) and macdLine > signalLine
openShort = ta.crossunder(EMA21, EMA100) and ta.rsi(close, 14) <= 33

crossunderMACD = ta.crossunder(macdLine, signalLine)


if (strategy.opentrades < 1)
    if openLong 
        strategy.entry("L",strategy.long, 1)

   if openShort
      strategy.entry("S",strategy.short, 1)

// slose long
// if ((strategy.opentrades.entry_price(0) + strategy.opentrades.entry_price(0)*0.03) <= open) 
//     strategy.exit("profit L", "L", limit = close)

// else if strategy.opentrades.entry_price(0) - strategy.opentrades.entry_price(0)*0.01 >= open or crossunderMACD
//     strategy.exit("loss L", "L", stop = close)

// slose short
// if (strategy.opentrades.entry_price(0) - strategy.opentrades.entry_price(0)*0.03) >= open
//     strategy.exit("profit S", "S", limit = (strategy.opentrades.entry_price(0) - strategy.opentrades.entry_price(0)*0.03))

// else if strategy.opentrades.entry_price(0) + strategy.opentrades.entry_price(0)*0.01 <= open
//    strategy.exit("loss S", "S", stop = (strategy.opentrades.entry_price(0) + strategy.opentrades.entry_price(0)*0.01))

















Thêm nữa