Chiến lược tăng cường xu hướng hội tụ trung bình động

Tác giả:ChaoZhang, Ngày: 2023-09-14 16:46:53
Tags:

Chiến lược logic

Chiến lược theo xu hướng này sử dụng chỉ số MACD nâng cao. Nó tính toán EMA nhanh, EMA chậm, sự khác biệt của chúng và EMA của sự khác biệt đó để tạo ra tín hiệu.

Lý do là:

  1. Tính toán thời gian EMA nhanh, ví dụ 12 ngày

  2. Tính toán thời gian EMA chậm, ví dụ 26 ngày

  3. Trừ nhanh từ EMA chậm để có được MACD

  4. Lấy EMA của MACD làm đường tín hiệu, ví dụ 9 ngày

  5. EMA của tín hiệu MACD trừ đi cho tín hiệu tăng cường

  6. Đi dài khi tín hiệu tăng cường vượt qua đường không

  7. Đóng dài khi tín hiệu tăng cường vượt qua dưới đường không

Chiến lược khai thác khả năng theo xu hướng của MACD và tối ưu hóa nó hơn nữa cho các tín hiệu xu hướng chất lượng trung và dài hạn.

Ưu điểm

  • MACD nâng cao làm giảm tiếng ồn và cải thiện tín hiệu

  • Định hướng và sức mạnh EMA nhanh / chậm

  • Các thông số chậm hơn tập trung vào xu hướng trung bình đến dài hạn

Rủi ro

  • Cần tối ưu hóa cẩn thận các khoảng thời gian EMA

  • LONG chỉ không thể sử dụng các cơ hội ngắn hạn

  • Sự xuất hiện của tín hiệu ít hơn

Tóm lại

Chiến lược này tận dụng MACD nâng cao để xác định xu hướng trung và dài hạn tốt hơn. Nhưng tối ưu hóa và kiểm soát rủi ro là chìa khóa. Kết hợp với các yếu tố khác có thể cải thiện hiệu suất.


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

//@version=3
//study("MACDAS")
// strategy("macdas",shorttitle="macdas",overlay=true,default_qty_value=10000,initial_capital=10000,currency=currency.USD)

// Date range filter
testStartYear = input(2018, "Backtest Start Year")
testStartMonth = input(4, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, 0, 0)

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

inTimeRange = true


fastperiod = input(12,title="fastperiod",minval=1,maxval=500)
slowperiod = input(26,title="slowperiod",minval=1,maxval=500)
signalperiod = input(9,title="signalperiod",minval=1,maxval=500)
fastMA = ema(close, fastperiod)
slowMA = ema(close, slowperiod)
macd = fastMA - slowMA
signal = ema(macd, signalperiod)
macdAS = macd - signal
signalAS = ema(macdAS, signalperiod)
plot(macdAS, color=blue, linewidth=2)
plot(signalAS, color=red, linewidth=2)
plot(0, color=black)

strategy.entry("LONG", strategy.long, when =inTimeRange and crossover(macdAS,signalAS))
strategy.close("LONG", when= inTimeRange and crossunder(macdAS,signalAS))

plotshape(crossover(macdAS, signalAS) , style = shape.arrowup, text="Long",color=green,size=size.huge)
plotshape(crossover(signalAS,macdAS) , style = shape.arrowdown, text="End Long",color=red,size=size.huge)



Thêm nữa