Chiến lược giao dịch theo xu hướng dựa trên chỉ báo MACD


Ngày tạo: 2024-02-02 11:32:48 sửa đổi lần cuối: 2024-02-02 11:32:48
sao chép: 3 Số nhấp chuột: 642
1
tập trung vào
1617
Người theo dõi

Chiến lược giao dịch theo xu hướng dựa trên chỉ báo MACD

Tổng quan

Cốt lõi của chiến lược này dựa trên các chỉ số được phát triển bởi Andrew Abraham trong bài viết được xuất bản trong tạp chí TASC của tạp chí Trend Trader vào tháng 9 năm 1998. Chỉ số này sử dụng phạm vi biến động thực tế trung bình và kênh giá để xác định hướng của xu hướng thị trường, kết hợp với chỉ số MACD để lọc tín hiệu giao dịch nhằm nắm bắt xu hướng đường dài giữa.

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

Chiến lược này đầu tiên tính toán trung bình di chuyển trọng lượng của phạm vi biến động thực tế trung bình 21 ngày ((ATR) làm phạm vi biến động cơ sở. Sau đó tính toán giá cao nhất và giá thấp nhất trong 21 ngày qua để so sánh giá đóng cửa K hiện tại với đường viền trên và dưới của phạm vi biến động cơ sở để xác định giá có phá vỡ kênh hay không, để xác định hướng xu hướng.

Cụ thể, định nghĩa của kênh trên là giá cao nhất trong 21 ngày qua trừ 3 lần ATR cơ sở, và kênh dưới là giá thấp nhất trong 21 ngày qua cộng với 3 lần ATR cơ sở. Khi giá đóng cửa cao hơn kênh trên, đánh giá là xu hướng lạc quan; Khi giá đóng cửa thấp hơn kênh dưới, đánh giá là xu hướng giảm.

Trong khi xác định hướng của xu hướng, chiến lược này cũng giới thiệu các chỉ số MACD để lọc. Chỉ khi đường MACD tròn là chính xác, tín hiệu mua sẽ được tạo ra để tránh bỏ lỡ điểm mua.

Lợi thế chiến lược

Chiến lược này kết hợp với việc đánh giá xu hướng và lọc chỉ số, có thể xác định hiệu quả hướng xu hướng đường dài trong thị trường, tránh bị lừa bởi biến động ngắn hạn của thị trường. Các ưu điểm cụ thể như sau:

  1. Sử dụng kênh giá để đánh giá xu hướng, xác định chính xác hướng xu hướng đường dài
  2. Phạm vi biến động của chỉ số có thể được điều chỉnh động để thích ứng với sự thay đổi của thị trường
  3. Bộ lọc chỉ số MACD để tăng cơ sở quyết định và tránh bỏ lỡ điểm mua
  4. Các tham số có thể cấu hình, tùy chỉnh phong cách chính sách linh hoạt

Rủi ro chiến lược

Chiến lược này cũng có một số rủi ro, bao gồm:

  1. Không thể hoàn toàn tránh được nguy cơ bị phá vỡ phạm vi kênh giá
  2. Chỉ số MACD có thể tạo ra tín hiệu sai lệch
  3. Thiết lập không chính xác các tham số có thể gây ra sự bất ổn trong chiến lược

Đối với điều này, có thể giảm rủi ro bằng cách thiết lập tham số tối ưu, kích thước vị trí nghiêm ngặt và dừng lỗ kịp thời.

Hướng tối ưu hóa chiến lược

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

  1. Kiểm tra các kết hợp các tham số khác nhau để tìm ra tham số tốt nhất

Có thể thử nghiệm các kết hợp của các tham số Length hoặc Multiplier khác nhau để tìm ra các kết hợp tham số tạo ra tỷ lệ lợi nhuận tốt nhất dựa trên dữ liệu phản hồi.

  1. Kết hợp các chỉ số khác để lọc tín hiệu

Có thể thử nghiệm kết hợp với các chỉ số khác như RSI, KDJ để lọc tín hiệu và xem liệu có thể cải thiện lợi nhuận hay không.

Các tham số điều chỉnh động

Các tham số có thể được điều chỉnh động theo tình hình thị trường, chẳng hạn như mở rộng phạm vi kênh thích hợp khi xu hướng rõ ràng và thắt chặt phạm vi kênh thích hợp khi có biến động.

Tóm tắt

Chiến lược này nói chung là một chiến lược theo dõi xu hướng tương đối vững chắc. Nó kết hợp phương pháp định hướng xu hướng của kênh giá và các tín hiệu lọc chỉ số MACD, có thể xác định hiệu quả xu hướng đường dài trong thị trường, tạo ra lợi nhuận ổn định. Với việc tối ưu hóa tham số, quản lý rủi ro và điều chỉnh thích hợp, chiến lược này có thể trở thành một phần quan trọng trong hệ thống giao dịch định lượng.

Mã nguồn chiến lược
/*backtest
start: 2023-01-26 00:00:00
end: 2024-02-01 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/
// © melihtuna

//@version=1
strategy("Trend Trader Strategy with MACD", overlay=true)

// === Trend Trader Strategy ===
Length = input(21),
Multiplier = input(3, minval=1)
MacdControl = input(true, title="Control 'MACD Histogram is positive?' when Buy condition")
avgTR      = wma(atr(1), Length)
highestC   = highest(Length)
lowestC    = lowest(Length)
hiLimit = highestC[1]-(avgTR[1] * Multiplier)
loLimit = lowestC[1]+(avgTR[1] * Multiplier)
ret = iff(close > hiLimit and close > loLimit, hiLimit,
        iff(close < loLimit and close < hiLimit, loLimit, nz(ret[1], 0)))
pos =	iff(close > ret, 1,
	    iff(close < ret, -1, nz(pos[1], 0))) 
barcolor(pos == -1 ? red: pos == 1 ? green : blue )
plot(ret, color= blue , title="Trend Trader Strategy with MACD")

// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2020, title = "From Year", minval = 2017)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 2017)

// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => true

// === MACD ===
[macdLine, signalLine, histLine] = macd(close, 12, 26, 9)
macdCond= MacdControl ? histLine[0] > 0 ? true : false : true

strategy.entry("BUY", strategy.long, when = window() and pos == 1 and macdCond)
strategy.entry("SELL", strategy.short, when = window() and pos == -1)