Chiến lược chuyển động trung bình chéo với dừng lỗ và lấy lợi nhuận

Tác giả:ChaoZhang, Ngày: 2023-12-21 15:52:57
Tags:

img

Tổng quan

Chiến lược này tính toán trung bình động của các giai đoạn khác nhau, thiết lập điểm dừng lỗ và lấy lợi nhuận để thực hiện giao dịch tự động. Nó đi dài khi thời gian ngắn trung bình di chuyển vượt quá thời gian dài trung bình di chuyển, và đi ngắn khi thời gian ngắn trung bình di chuyển vượt dưới thời gian dài trung bình di chuyển. Trong khi đó, nó thiết lập điểm dừng lỗ và lấy lợi nhuận để kiểm soát rủi ro.

Chiến lược logic

Chiến lược này dựa trên nguyên tắc chéo trung bình động. Nó tính toán cả trung bình động đơn giản 9 ngày và 55 ngày đồng thời. Khi MA 9 ngày vượt qua trên MA 55 ngày, nó báo hiệu rằng xu hướng ngắn hạn đã đảo ngược lên, vì vậy đi dài. Khi MA 9 ngày vượt qua dưới MA 55 ngày, nó báo hiệu rằng xu hướng ngắn hạn đã đảo ngược xuống, vì vậy đi ngắn.

Trong khi đó, chiến lược này sử dụng chỉ số ATR để thiết lập điểm dừng lỗ và lấy lợi nhuận. Chỉ số ATR có thể đo mức độ biến động giá trên thị trường. Điểm dừng lỗ được thiết lập ở mức giá đóng trừ giá trị ATR, vì vậy nó có thể thiết lập mức dừng lỗ hợp lý dựa trên biến động thị trường. Điểm lấy lợi nhuận sử dụng tỷ lệ rủi ro-lợi nhuận, được thiết lập ở đây là 2 - lấy lợi nhuận = giá đóng + 2 * giá trị ATR.

Ưu điểm

Đây là một chiến lược giao dịch ngắn hạn rất đơn giản và thực tế với những lợi thế sau:

  1. Nguyên tắc chéo trung bình động dễ hiểu và nắm vững;
  2. Sự kết hợp giữa dừng lỗ và lấy lợi nhuận có hiệu quả kiểm soát rủi ro và tăng tính thực tế;
  3. Các thông số trung bình động có thể được điều chỉnh linh hoạt để thích nghi với môi trường thị trường khác nhau;
  4. ATR stop-loss có thể thiết lập điểm stop-loss dựa trên biến động thị trường, khá thông minh;
  5. Việc thiết lập tỷ lệ rủi ro-lợi nhuận có thể được điều chỉnh theo sở thích rủi ro cá nhân.

Rủi ro

Ngoài ra còn có một số rủi ro với chiến lược này:

  1. Các tín hiệu chéo trung bình di chuyển có thể có sự phá vỡ sai, gây ra các giao dịch sai;
  2. Các thiết lập stop-loss hoặc take-profit không đúng có thể làm tăng lỗ hoặc giảm lợi nhuận;
  3. Các thông số trung bình động không chính xác có thể dẫn đến tần suất giao dịch quá cao hoặc tín hiệu chậm;
  4. Các thiết lập tham số ATR không chính xác cũng có thể làm cho các điểm dừng lỗ quá gần hoặc quá xa.

Những rủi ro này có thể được giảm bằng cách tối ưu hóa các tham số, dừng lỗ nghiêm ngặt và kích thước vị trí hợp lý.

Tối ưu hóa

Chiến lược này có thể được tối ưu hóa thêm:

  1. Sử dụng các công cụ tối ưu hóa để tìm ra sự kết hợp các tham số trung bình động tối ưu;
  2. Thêm các chỉ số khác để lọc các tín hiệu chéo trung bình động để tránh sự đột phá sai;
  3. Hãy thử các loại trung bình động khác, chẳng hạn như trung bình động theo cấp số nhân, v.v.;
  4. Xem xét thêm tham số ATR vào tối ưu hóa cũng như để làm cho dừng lỗ và lợi nhuận thông minh hơn.

Kết luận

Khả năng giao dịch thông thường của hệ thống giao dịch giao dịch thông thường là một hệ thống giao dịch đơn giản và dễ dàng tối ưu hóa. Khi kết hợp với COMPLETE hoặc các khung khác, nó có thể được nâng cao hơn để trở thành một hệ thống giao dịch định lượng thực tế.


/*backtest
start: 2022-12-14 00:00:00
end: 2023-12-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("MA Crossover Strategy with Stop-Loss and Take-Profit", overlay=true)

// Input for selecting the length of the moving averages
maShortLength = input(9, title="Short MA Length")
maLongLength = input(55, title="Long MA Length")

// Input for setting the risk-reward ratio
riskRewardRatio = input(2, title="Risk-Reward Ratio")

// Calculate moving averages
maShort = ta.sma(close, maShortLength)
maLong = ta.sma(close, maLongLength)

// Buy condition: 9-period MA crosses above 55-period MA
buyCondition = ta.crossover(maShort, maLong)

// Sell condition: 9-period MA crosses below 55-period MA
sellCondition = ta.crossunder(maShort, maLong)

// Set stop-loss and take-profit levels
atrValue = ta.atr(14)
stopLossLevel = close - atrValue  // Use ATR for stop-loss (adjust as needed)
takeProfitLevel = close + riskRewardRatio * atrValue  // Risk-reward ratio of 1:2

// Execute buy and sell orders with stop-loss and take-profit
strategy.entry("Buy", strategy.long, when = buyCondition)
strategy.exit("Sell", from_entry="Buy", loss=stopLossLevel, profit=takeProfitLevel)

// Plot moving averages on the chart
plot(maShort, color=color.blue, title="Short MA")
plot(maLong, color=color.red, title="Long MA")

Thêm nữa