Chiến lược DEMA Breakout của MACD

Tác giả:ChaoZhang, Ngày: 2023-09-11 14:43:52
Tags:

Chiến lược này xây dựng các tín hiệu giao dịch dựa trên chỉ số MACD DEMA của Toff. Chỉ số MACD DEMA tính toán sự khác biệt giữa đường DEMA nhanh và đường DEMA chậm, với xử lý không chậm, loại bỏ hiệu quả vấn đề chậm của MACD thông thường.

Các quy tắc giao dịch là: đi dài khi MACD không trễ vượt qua đường 0, và đi ngắn khi MACD vượt qua đường 0.

Lợi thế của chiến lược MACD không trễ này là nó có thể nắm bắt được những thay đổi xu hướng một cách nhạy cảm hơn. Sử dụng DEMA thay vì EMA cũng lọc các đột phá sai. Tuy nhiên, MACD tự nó có khả năng đánh giá hạn chế về hành động giá phức tạp, với một số rủi ro về tín hiệu sai. Các bộ lọc xu hướng cần thiết để cải thiện sự ổn định.

Tóm lại, chiến lược đột phá MACD DEMA không trễ hoạt động rất tốt trên các xu hướng mạnh, nắm bắt cơ hội nhanh chóng. Nhưng nó hoạt động kém hơn trong các giai đoạn giới hạn phạm vi, đòi hỏi phải sử dụng thận trọng. Chỉ thông qua tối ưu hóa liên tục và kiểm soát rủi ro nghiêm ngặt, chiến lược này có thể được áp dụng thành công trong dài hạn.


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

//@version=4
// strategy(title="Patron04 MACD DEMA Strategy",default_qty_type = strategy.percent_of_equity,default_qty_value = 3500, overlay=true)

testStartYear = input(2000, "Backtest Start Year") 
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2100, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false

sma = input(12,title='DEMA Courte')
lma = input(26,title='DEMA Longue')
tsp = input(9,title='Signal')
dolignes = input(true,title="Lignes")

MMEslowa = ema(close,lma)
MMEslowb = ema(MMEslowa,lma)
DEMAslow = ((2 * MMEslowa) - MMEslowb )

MMEfasta = ema(close,sma)
MMEfastb = ema(MMEfasta,sma)
DEMAfast = ((2 * MMEfasta) - MMEfastb)

LigneMACDZeroLag = (DEMAfast - DEMAslow)

MMEsignala = ema(LigneMACDZeroLag, tsp)
MMEsignalb = ema(MMEsignala, tsp)
Lignesignal = ((2 * MMEsignala) - MMEsignalb )

MACDZeroLag = (LigneMACDZeroLag - Lignesignal)

long = LigneMACDZeroLag > 0
short = LigneMACDZeroLag < 0

if testPeriod()

    strategy.entry("Long", strategy.long,when=long)
    strategy.entry("Short", strategy.short,when=short)







Thêm nữa