Chiến lược giao dịch MACD DEMA


Ngày tạo: 2023-09-19 16:10:19 sửa đổi lần cuối: 2023-09-19 16:10:19
sao chép: 0 Số nhấp chuột: 1114
1
tập trung vào
1617
Người theo dõi

Tổng quan

Chiến lược này kết hợp các chỉ số hai đường MACD và DEMA để tạo ra tín hiệu giao dịch thông qua nhiều đường dây vàng. Chiến lược này nắm bắt thời gian chuyển đổi của chỉ số MACD và sử dụng bộ lọc DEMA để giảm tiếng ồn để có được sự tham gia tốt hơn.

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

  1. Tính DEMAfast đường nhanh, lấy giá trị DEMA, độ dài chu kỳ là fastmacd。

  2. Tính DEMAslow dòng chậm, lấy giá trị DEMA của prices, độ dài chu kỳ là slowmacd。

  3. Đường MACD là độ chênh lệch đường nhanh chậm: DEMAfast - DEMAslow。

  4. Signal line là giá trị DEMA của dòng MACD, periodlength là signalmacd。

  5. Đường giao dịch được sử dụng như một tín hiệu giao dịch: Cung vàng làm nhiều, Cung chết làm trống.

  6. Thêm bộ lọc ngày tháng năm, chỉ phát tín hiệu trong phạm vi ngày được chỉ định.

Phân tích lợi thế

Chiến lược này có những lợi thế:

  1. Kết hợp MACD và DEMA, các chỉ số bổ sung cho nhau. MACD bắt chuyển, DEMA lọc để cải thiện chất lượng tín hiệu.

  2. Thiết kế hai đường ray của DEMA giúp giảm độ trễ và tiếng ồn của chỉ số MACD.

  3. Giao lộ đa không gian dễ phân định, tạo tín hiệu đơn giản và rõ ràng.

  4. Có thể thiết lập phạm vi ngày giao dịch linh hoạt để phù hợp với các nhu cầu chiến lược khác nhau.

  5. Các tham số MACD có thể được tối ưu hóa để đáp ứng linh hoạt với nhiều tình huống.

Phân tích rủi ro

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

  1. MACD là một chỉ số theo dõi xu hướng, không phù hợp với thị trường ngang.

  2. Các kết nối đa không gian có thể tạo ra tín hiệu giả, cần có bộ lọc hiệu quả.

  3. Chiến lược dừng lỗ không hoàn hảo, dễ bị dừng lỗ quá lớn.

  4. Các tham số được tối ưu hóa không toàn diện, hiệu quả khác nhau giữa các giống khác nhau.

  5. Các ngày giao dịch được lọc quá cứng, cần phải được điều chỉnh động.

Giải pháp tương ứng:

  1. Kết hợp với chỉ số động lượng, tránh ngang.

  2. Tăng giá, lọc tín hiệu giao thoa giả.

  3. Thiết lập dừng lỗ ban đầu hợp lý và dừng lỗ theo dõi.

  4. Kiểm tra hiệu quả của các tham số đa giống, tối ưu hóa động lực.

  5. Ngày lọc được điều chỉnh theo thời gian thực.

Hướng tối ưu hóa

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

  1. Tăng các chỉ số giao dịch để lọc tín hiệu.

  2. Tối ưu hóa sự kết hợp các tham số MACD để kiểm tra dữ liệu của các giống khác nhau.

  3. Thiết lập các chiến lược dừng lỗ, chẳng hạn như dừng cố định, theo dõi dừng lỗ.

  4. Điều chỉnh vị trí dừng lỗ theo biến động của thị trường.

  5. Theo dõi xu hướng mạnh hoặc yếu, điều chỉnh kích thước vị trí.

Tóm tắt

Chiến lược MACD DEMA kết hợp lợi thế của hai chỉ số, tận dụng xu hướng bắt tín hiệu chéo. Tuy nhiên, bản chất của MACD có tính chậm trễ, cần chú ý đến việc lọc tín hiệu giả. Ngoài ra, chiến lược dừng lỗ cần được tối ưu hóa để giảm lỗ hổng không hợp lý.

Mã nguồn chiến lược
/*backtest
start: 2023-01-01 00:00:00
end: 2023-09-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(" MACD DEMA STRATEGY ", overlay=true)

source=close
price=source



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(close,slowmacd)
macdslowline2 = ema(macdslowline1,slowmacd)
DEMAslow = ((2 * macdslowline1) - macdslowline2 )

macdfastline1 = ema(close,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 = SignalLine-MACDLine


colorbar= MACDSignal>0?green:red




yearfrom = input(2018)
yearuntil =input(2019)
monthfrom =input(1)
monthuntil =input(12)
dayfrom=input(1)
dayuntil=input(31)







if ( crossover(MACDLine,SignalLine) ) 
    strategy.entry("MMAL", strategy.long, stop=close, oca_name="TREND",  comment="AL")
    
else
    strategy.cancel(id="MMAL")


if (  crossunder(MACDLine,SignalLine) ) 

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