Chiến lược MACD độc quyền động lực chủ yếu là sử dụng kết hợp của chỉ số MACD và chỉ số động lực để tạo ra tín hiệu giao dịch, thuộc chiến lược theo dõi xu hướng. Chiến lược này đầu tiên tính toán đường EMA nhanh và đường EMA chậm, sau đó tính toán giá trị MACD, sau đó tính toán đường tín hiệu của MACD. Đồng thời tính toán giá trị động lực của giá.
Chiến lược này chủ yếu dựa trên sự kết hợp của MACD và chỉ số động lực.
Chỉ số MACD là một chỉ số theo dõi xu hướng, bao gồm các biểu đồ hình cột của đường EMA nhanh, đường EMA chậm và MACD. Các tham số EMA đường nhanh thường là 12 ngày, tham số EMA đường chậm là 26 ngày, công thức tính là:
Đường nhanh EMA = EMA ((giá đóng cửa, 12)
Đường chậm EMA = EMA (giá đóng cửa, 26)
MACD = đường nhanh EMA - đường chậm EMA
Đường tín hiệu = EMA ((MACD,9)
Khi đường nhanh đi qua đường chậm, cho thấy động lực tăng ngắn hạn mạnh hơn dài hạn, là tín hiệu đầu vào; khi đường nhanh đi qua đường chậm, cho thấy động lực giảm dài hạn mạnh hơn ngắn hạn, là tín hiệu đầu ra.
Chỉ số động lực là một chỉ số kỹ thuật phản ánh tốc độ biến động của giá cổ phiếu, được tính bằng công thức:
Giá trị động lực = giá đóng cửa hôm nay - giá đóng cửa trước ngày N
Trong đó, N thường lấy 10. Khi giá đóng cửa ngày hôm nay tăng cao hơn N ngày trước, động lực là tích cực, cổ phiếu có xu hướng tăng; Khi giá đóng cửa ngày hôm nay giảm thấp hơn N ngày trước, động lực là âm, cổ phiếu có xu hướng giảm.
Chiến lược này sử dụng MACD kết hợp với các chỉ số động lực để tạo ra tín hiệu giao dịch. Các tiêu chuẩn để xác định tín hiệu giao dịch là: tạo ra tín hiệu mua khi chênh lệch MACD và chênh lệch động lực trên giá trị khác nhau đi qua trục 0 và tạo ra một đường chéo trên trục 0; tạo ra tín hiệu bán khi chênh lệch MACD và chênh lệch động lực dưới giá trị khác nhau đi qua trục 0 và tạo ra một đường chéo dưới trục 0 . Đây là một cơ chế tạo tín hiệu giao dịch được xác nhận kép, có thể lọc một số tín hiệu giả và theo dõi xu hướng.
Chiến lược này có những ưu điểm sau:
Sự kết hợp của chỉ số MACD với chỉ số động lực, thực hiện theo dõi xu hướng, tránh giao dịch không hiệu quả chỉ khi giá tài sản bị chấn động và thiếu hướng.
Các tín hiệu giao dịch được tạo ra dựa trên cơ chế xác nhận kép, có thể lọc một số tiếng ồn và tránh nhiễu tín hiệu giả.
Các tham số của chỉ số MACD có thể điều chỉnh, có thể tối ưu hóa tham số theo các giống và chu kỳ giao dịch khác nhau, có khả năng thích ứng mạnh mẽ.
Một cơ chế giao dịch hai chiều mua và bán được sử dụng để nắm bắt xu hướng hai chiều.
Chiến lược này rất dễ hiểu, ít tham số, phù hợp với người mới bắt đầu.
Chiến lược này cũng có một số rủi ro:
MACD và chỉ số động lực đều thuộc loại chỉ số theo xu hướng, có thể tạo ra nhiều giao dịch vô hiệu khi thị trường có biến động mạnh hoặc không có xu hướng rõ ràng.
Mặc dù có thể lọc các tín hiệu giả, nhưng các cặp chỉ số đôi cũng có thể bỏ lỡ các cơ hội giao dịch, nên điều chỉnh các tham số thích hợp để cân bằng rủi ro.
Khi xu hướng chu kỳ lớn đảo ngược, MACD có thể bị tụt hậu, dẫn đến tổn thất giao dịch.
Tần suất giao dịch có thể cao, cần lưu ý quản lý tiền và kiểm soát phí.
Các tham số không phù hợp có thể dẫn đến quá nhạy cảm hoặc quá chậm trễ, cần phải liên tục kiểm tra và tối ưu hóa tùy theo tình hình thị trường.
Chiến lược này có thể được tối ưu hóa bằng cách:
Tối ưu hóa các tham số của chỉ số MACD, tìm ra sự kết hợp tham số tối ưu nhất cho các loại giao dịch và chu kỳ khác nhau.
Tối ưu hóa tham số ngày của chỉ số động lực, cân bằng độ nhạy và lọc tiếng ồn.
Tăng cơ chế dừng lỗ để kiểm soát tổn thất tối đa của một giao dịch.
Thêm mô-đun quản lý vị thế để cho phép quy mô giao dịch theo xu hướng.
Thêm các bộ lọc như chỉ số mật độ để tránh giao dịch sai trong trường hợp cong.
Kết hợp với các chỉ số khác như Bollinger Bands, RSI và nhiều tín hiệu giao dịch được xác nhận.
Thêm vòng lặp tối ưu hóa để các tham số có thể lặp và tối ưu hóa liên tục.
Chiến lược độc quyền động lực MACD sử dụng chỉ số MACD và chỉ số động lực Strengths để thực hiện giao dịch theo dõi xu hướng. Cơ chế xác nhận kép của nó có thể loại bỏ tiếng ồn thị trường một cách hiệu quả và tránh giao dịch không hiệu quả. Chiến lược này đơn giản, trực tiếp, dễ hiểu và đặc biệt phù hợp cho người mới bắt đầu học.
/*backtest
start: 2022-10-13 00:00:00
end: 2023-10-19 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title="MACD MOMENTUM TEST", shorttitle="MACD MOM TEST")
// Getting inputs
fast_length = input(title="Fast Length", type=input.integer, defval=12)
slow_length = input(title="Slow Length", type=input.integer, defval=26)
len = input(title="Momentum", type=input.integer, defval=10)
src1 = input(title="Source MACD", type=input.source, defval=close)
src2 = input(title="Source MOMENTUM", type=input.source, defval=close)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 14)
sma_source = input(title="Simple MA(Oscillator)", type=input.bool, defval=false)
sma_signal = input(title="Simple MA(Signal Line)", type=input.bool, defval=false)
// Plot colors
col_grow_above = #0c8e61
col_grow_below = #ffcdd2
col_fall_above = #b2dfdb
col_fall_below = #d42f28
col_macd = #ffffff
col_signal = #d42f28
col_mom = #fbc02d
// Calculating
fast_ma = sma_source ? sma(src1, fast_length) : ema(src1, fast_length)
slow_ma = sma_source ? sma(src1, slow_length) : ema(src1, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal
mom = src2 - src2[len]
ma(s,l) => ema(s,l)
sema = ma( src1, fast_length )
lema = ma( src1, slow_length )
i1 = sema + mom + ma( src1 - sema, fast_length )
i2 = lema + mom + ma( src1 - lema, slow_length )
macdl = i1 - i2
macd1 =sema - lema
delta = mom - macd1
// Strategy
// Backtest
FromYear = input(defval = 2001, title = "From Year", minval = 2009)
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
ToYear = input(defval = 9999, title = "To Year", minval = 2009)
ToMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
ToDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
// Function exampel
start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window
window() => time >= start and time <= finish ? true : false // create function "within window of time"
if (crossover(delta, 0))
strategy.entry("Buy", true, when=window(), comment="Buy")
if (crossunder(delta, 0))
strategy.close_all(when=window())
// Plot
//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)
plot(hist, title="Histogram", style=plot.style_histogram, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below) ), transp=0 )
plot(macd, title="MACD", color=col_macd, transp=0)
plot(signal, title="Signal", color=col_signal, transp=0)
plot(mom, color=col_mom, title="Mom")