Chiến lược MACD không có xu hướng

Tác giả:ChaoZhang, Ngày: 2023-10-30 17:08:16
Tags:

img

Tổng quan

Chiến lược này sử dụng phương pháp loại bỏ xu hướng giá cổ phiếu để quan sát chỉ số MACD rõ ràng hơn. Bằng cách tính DEMA đường nhanh và DEMA đường chậm, đường MACD và đường tín hiệu được dẫn ra. Các tín hiệu giao dịch được tạo ra bằng cách vượt qua giữa đường MACD và đường tín hiệu. Chiến lược cũng kết hợp các bộ lọc điều kiện ngày và tháng và logic dừng lỗ để tạo thành một hệ thống hoàn chỉnh hơn.

Chiến lược logic

Đầu tiên, EMA của giá được tính để loại bỏ xu hướng giá và có được EMA giảm giá. Sau đó DEMA đường nhanh, DEMA đường chậm và đường MACD được tính dựa trên EMA. DEMA đường nhanh được tính bằng cách: đầu tiên tính EMA1 của đường nhanh, sau đó tính EMA2 của EMA1, và cuối cùng tính DEMA=(2*EMA1-EMA2). DEMA đường chậm và đường tín hiệu được tính tương tự. Sau khi có được đường MACD (DEMA đường nhanh - DEMA đường chậm) và đường tín hiệu, một tín hiệu mua được tạo ra khi đường MACD vượt trên đường tín hiệu, và một tín hiệu bán được tạo ra khi đường MACD vượt qua đường tín hiệu bên dưới. Cuối cùng, kết hợp các bộ lọc ngày và tháng, và đặt logic dừng lỗ.

Logic cốt lõi của chiến lược này là:

  1. Loại bỏ xu hướng giá để xem chỉ số MACD rõ ràng hơn.

  2. Tính toán DEMA đường nhanh, DEMA đường chậm để dẫn ra đường MACD và đường tín hiệu.

  3. Đường MACD và đường truyền tín hiệu tạo ra tín hiệu giao dịch.

  4. Thêm bộ lọc ngày tháng.

  5. Thiết lập logic dừng mất mát.

Phân tích lợi thế

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

  1. Loại bỏ xu hướng giá có thể tiết lộ tình hình chéo của MACD rõ ràng hơn mà không bị đánh lừa bởi xu hướng.

  2. Sử dụng thuật toán DEMA để tính toán MACD lọc ra một số tiếng ồn và làm cho tín hiệu rõ ràng hơn.

  3. Kết hợp các bộ lọc ngày và tháng có thể giảm các giao dịch không cần thiết.

  4. Logic dừng lỗ có thể cắt giảm lỗ trong thời gian và kiểm soát rủi ro.

  5. Sử dụng chéo để tạo tín hiệu làm giảm các giao dịch không chính xác.

  6. Nhìn chung, kết hợp loại bỏ xu hướng, tính toán DEMA và bộ lọc tình trạng, chiến lược này có thể tạo ra các tín hiệu giao dịch tương đối rõ ràng và đáng tin cậy.

Phân tích rủi ro

Một số rủi ro của chiến lược này cần được chú ý:

  1. Sau khi loại bỏ xu hướng, tín hiệu chéo MACD có thể tăng lên, cần thử nghiệm trực tiếp để xác minh tính khả thi.

  2. Mặc dù thuật toán DEMA lọc một số tiếng ồn, vẫn có thể có nhiều tín hiệu sai trong tính toán chỉ số.

  3. Các điều kiện lọc ngày và tháng có thể quá cứng nhắc, bỏ lỡ một số cơ hội giao dịch.

  4. Vị trí dừng lỗ cần phải được đặt hợp lý, quá lỏng sẽ làm tăng rủi ro, quá chặt sẽ thường xuyên dừng lỗ.

  5. Chiến lược chủ yếu dựa trên MACD, nếu thị trường không phù hợp với chỉ số này, hiệu suất có thể bị ảnh hưởng.

  6. Vẫn còn nhiều chỗ cho tối ưu hóa tham số, cần kiểm tra thêm thông qua backtest và giao dịch trực tiếp.

Giải pháp:

  1. Thêm các chỉ số xác nhận khác để tránh tín hiệu sai.

  2. Tối ưu hóa điều kiện lọc ngày phù hợp.

  3. Kiểm tra và tối ưu hóa các điểm dừng lỗ cẩn thận.

  4. Thêm cơ chế đánh giá xu hướng để tránh giao dịch chống lại xu hướng.

  5. Kiểm tra hậu quả toàn diện và tối ưu hóa tham số để cải thiện sự ổn định.

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

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

  1. Kiểm tra các đường trung bình chuyển động giá khác nhau để tìm một lựa chọn thay thế tốt hơn cho EMA.

  2. Hãy thử các kết hợp tham số khác nhau để tối ưu hóa đường nhanh, đường chậm và chiều dài đường tín hiệu của MACD.

  3. Thêm các chỉ số phụ trợ như âm lượng để tránh tín hiệu sai.

  4. Tối ưu hóa chiến lược dừng lỗ, đặt chuyển động hợp lý hoặc lệnh dừng lỗ.

  5. Tối ưu hóa các điều kiện lọc ngày và tháng để làm cho chúng linh hoạt hơn.

  6. Thêm phán đoán xu hướng để tránh giao dịch chống lại xu hướng.

  7. Tối ưu hóa tham số toàn diện để cải thiện sự ổn định.

  8. Backtest trên thời gian dài hơn để kiểm tra hiệu suất dài hạn.

  9. Giao dịch trực tiếp để xác minh và sửa đổi thêm các thông số dựa trên giao dịch thực tế.

Tóm lại

Tóm lại, chiến lược này sử dụng ý tưởng loại bỏ xu hướng và tính toán DEMA MACD kết hợp với các bộ lọc ngày để tạo ra tín hiệu giao dịch, đó là một ý tưởng chiến lược đơn giản nhưng khả thi. Ưu điểm lớn nhất của nó là tiết lộ mô hình MACD rõ ràng mà không bị ảnh hưởng bởi xu hướng giá. Tuy nhiên, vẫn có một số rủi ro của chiến lược này cần tối ưu hóa tham số và các biện pháp kiểm soát rủi ro để được thực hiện để áp dụng thực tế. Ngoài ra còn có nhiều chỗ để tối ưu hóa, và với xác minh và tối ưu hóa đầy đủ, chiến lược này có thể trở thành một hệ thống giao dịch ngắn hạn ổn định và đáng tin cậy.


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

//@version=2

strategy(title = "Trendless MACD  Strategy",shorttitle="MACD-T Strategy",default_qty_type = strategy.percent_of_equity, default_qty_value = 100,commission_type=strategy.commission.percent,commission_value=0.01,initial_capital=100000)



maperiod=input(9)
ema=ema(close,maperiod)


fastmacd = input(12,title='MACD Fast  Line Length')
slowmacd = input(26,title='MACD Slow Line Length')
signalmacd = input(9,title='Signal Line Length')

macdslowline1 = ema(ema,slowmacd)
macdslowline2 = ema(macdslowline1,slowmacd)
DEMAslow = ((2 * macdslowline1) - macdslowline2 )

macdfastline1 = ema(ema,fastmacd)
macdfastline2 = ema(macdfastline1,fastmacd)
DEMAfast = ((2 * macdfastline1) - macdfastline2)

MACDLine = (DEMAfast - DEMAslow)

SignalLine1 = ema(MACDLine, signalmacd)
SignalLine2 = ema(SignalLine1, signalmacd)
SignalLine = ((2 * SignalLine1) - SignalLine2 )


MACDSignal = MACDLine-SignalLine


colorbar= MACDSignal>0?green:red

plot(MACDSignal,color=colorbar,style=columns,title='Histogram',histbase=0)
p1 = plot(MACDLine,color=blue,title='MACDLine')
p2=plot(SignalLine,color=red,title="SignalLine")
fill(p1,p2,color=blue)


longCond =  crossover(MACDLine,SignalLine) 

shortCond =  crossunder(MACDLine,SignalLine) 




monthfrom =input(1)
monthuntil =input(12)
dayfrom=input(1)
dayuntil=input(31)

yearfrom= input(2018)
yearuntil=input(2021)

if (  longCond   ) 
    strategy.entry("LONG", strategy.long, stop=close, oca_name="TREND",  comment="LONG")
    
else
    strategy.cancel(id="LONG")
    



if ( shortCond  ) 

    strategy.entry("SHORT", strategy.short,stop=close, oca_name="TREND", comment="SHORT")
else
    strategy.cancel(id="SHORT")





Thêm nữa