Chiến lược theo dõi xu hướng MACD

Tác giả:ChaoZhang, Ngày: 2023-12-22 14:17:34
Tags:

img

Tổng quan

Chiến lược này đánh giá xu hướng giá thông qua việc tính toán trung bình di chuyển nhanh, trung bình di chuyển chậm và chỉ số MACD, và xây dựng các tín hiệu giao dịch chéo vàng và chéo chết. Nó cũng kết hợp lấy lợi nhuận, dừng lỗ và dừng lỗ để khóa lợi nhuận và liên tục theo dõi xu hướng.

Chiến lược logic

Chiến lược này được xây dựng chủ yếu dựa trên ba chỉ số.

Đầu tiên, nó tính toán trung bình di chuyển nhanh và hai trung bình di chuyển chậm. Khi MA nhanh vượt quá hai MA chậm, một tín hiệu mua được tạo ra. Khi MA nhanh xuống dưới hai MA chậm, một tín hiệu bán được tạo ra. Điều này đánh giá mối quan hệ giữa xu hướng ngắn hạn và dài hạn để nhận ra giao dịch chéo vàng và chéo chết.

Thứ hai, nó tính toán chỉ số MACD, bao gồm đường MACD, đường tín hiệu và biểu đồ. Khi biểu đồ MACD > 0, đó là một chỉ số tăng; khi biểu đồ MACD < 0, đó là một chỉ số giảm. Điều này giúp đánh giá độ tin cậy của các tín hiệu chéo vàng và chéo chết.

Cuối cùng, nó kết hợp các cơ chế lấy lợi nhuận, dừng lỗ và dừng lỗ.

Ưu điểm

Những lợi thế của chiến lược này bao gồm:

  1. Golden cross, dead cross kết hợp với MACD đánh giá đáng tin cậy xu hướng giá.
  2. Các điểm dừng lỗ ngăn ngừa tổn thất lớn hơn.
  3. Trailing stop loss di chuyển tự động để khóa lợi nhuận liên tục và tối đa hóa lợi nhuận xu hướng.
  4. Cài đặt tham số linh hoạt như thời gian trung bình động tùy chỉnh.

Rủi ro

Ngoài ra còn có một số rủi ro:

  1. Các cú sốc giá có thể kích hoạt các điểm dừng lỗ.
  2. Tiếp tục hoạt động lâu dài của việc dừng lỗ kéo dài đòi hỏi phải theo dõi liên tục và điều chỉnh kịp thời.
  3. Cài đặt tham số không chính xác có thể dẫn đến giao dịch quá mức hoặc bỏ lỡ giao dịch.

Các giải pháp là:

  1. Thiết lập các điểm dừng lỗ thích hợp để ngăn chặn dừng lỗ không cần thiết.
  2. Thường xuyên kiểm tra và tối ưu hóa cài đặt tham số.
  3. Can thiệp thủ công và giám sát tình trạng.

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

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

  1. Thêm thêm các chỉ số như RSI để làm cho tín hiệu đáng tin cậy hơn.
  2. Tối ưu hóa các thông số trung bình động để phù hợp với các công cụ giao dịch khác nhau.
  3. Thêm các thuật toán dừng lại động để làm cho điểm dừng thay đổi với thị trường.
  4. Thêm các mô-đun quản lý rủi ro và kích thước vị trí.

Tóm lại

Tóm lại, đây là một chiến lược đơn giản nhưng hiệu quả sử dụng Golden Cross, Dead Cross và MACD để đánh giá xu hướng và nhận ra stop loss. Những lợi thế là theo dõi xu hướng và khóa lợi nhuận với khả năng tùy biến cao. Đây là một chiến lược tối ưu hóa tham số phổ quát phù hợp với các công cụ giao dịch khác nhau.


/*backtest
start: 2023-12-14 00:00:00
end: 2023-12-21 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy('The Puria Method', shorttitle = 'Puria',overlay = true)

//=== GENERAL INPUTS ===

// short ma
maFastSource   = input(defval = close, title = "Fast MA Source")
maFastLength   = input(defval = 5, title = "Fast MA Period", minval = 1)

// long ma 1
maSlow1Source   = input(defval = low, title = "Slow MA1 Source")
maSlow1Length   = input(defval = 85, title = "Slow MA Period", minval = 1)

// long ma 2
maSlow2Source   = input(defval = low, title = "Slow MA2 Source")
maSlow2Length   = input(defval = 75, title = "Slow MA Period", minval = 1)

//macd
macdFastLength   = input(defval = 12, title = "Fast MACD Period", minval = 1)
macdSlowLength   = input(defval = 26, title = "Slow MACD Period", minval = 1)
macdSmaLength   = input(defval = 9, title = "SMA MACD Period", minval = 1)

// the risk management inputs
inpTakeProfit   = input(defval = 30, title = "Take Profit", minval = 0)
inpStopLoss     = input(defval = 10, title = "Stop Loss", minval = 0)
inpTrailStop    = input(defval = 5, title = "Trailing Stop Loss", minval = 0)
inpTrailOffset  = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0)

// if an input is less than 1, assuming not wanted so we assign 'na' value to disable it.
useTakeProfit   = inpTakeProfit  >= 1 ? inpTakeProfit  : na
useStopLoss     = inpStopLoss    >= 1 ? inpStopLoss    : na
useTrailStop    = inpTrailStop   >= 1 ? inpTrailStop   : na
useTrailOffset  = inpTrailOffset >= 1 ? inpTrailOffset : na

// === SERIES SETUP ===
maFast = ema(maFastSource, maFastLength)
maSlow1 = wma(maSlow1Source, maSlow1Length)
maSlow2 = wma(maSlow2Source, maSlow2Length)
[_, signal, histLine] = macd(close, macdFastLength, macdSlowLength, macdSmaLength)

// === PLOTTING ===
fast = plot(maFast, title = "Fast MA", color = green, linewidth = 2, style = line, transp = 50)
slow1 = plot(maSlow1, title = "Slow MA1", color = red, linewidth = 2, style = line, transp = 50)
slow2 = plot(maSlow2, title = "Slow MA2", color = red, linewidth = 2, style = line, transp = 50)

// === LOGIC ===
signalUp = crossover(maFast, maSlow1) and crossover(maFast, maSlow2) and histLine > 0
signalDown = crossunder(maFast, maSlow1) and crossunder(maFast, maSlow2) and histLine < 0

// ===STRATEGY===
strategy.entry(id = "Long", long = true, when = signalUp) 
strategy.entry(id = "Short", long = false, when = signalDown)
strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)
strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)

Thêm nữa