Chiến lược giao dịch chéo trung bình động MACD là một chiến lược giao dịch định lượng theo dõi các tình huống chéo của trung bình di chuyển theo cấp số nhân ngắn hạn và dài hạn (EMA) và thực hiện các giao dịch mua và bán khi chéo vàng và chéo chết xảy ra.
Chiến lược này chủ yếu dựa trên EMA 12 ngày, EMA 26 ngày và chỉ số MACD.
Ngoài ra, chiến lược này cũng đặt ra một số điều kiện lọc:
Chiến lược này kết hợp đường chéo trung bình động và chỉ số MACD, có thể nắm bắt hiệu quả các điểm biến động của xu hướng thị trường ngắn hạn và trung hạn.
Chiến lược này cũng có một số rủi ro:
Phương pháp giảm thiểu tương ứng:
Các khía cạnh chính để tối ưu hóa chiến lược này bao gồm:
Chiến lược giao dịch đường chéo MACD tạo ra các tín hiệu giao dịch thông qua việc theo dõi xu hướng đơn giản và kiểm soát hiệu quả rủi ro với các điều kiện lọc thích hợp. Đây là một chiến lược giao dịch định lượng hiệu quả. Chiến lược có thể được cải thiện theo những cách như tối ưu hóa tham số, thêm cơ chế dừng lỗ, kết hợp nhiều chỉ số phụ trợ hơn.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("EMMA", max_bars_back = 200) var up1 = #26A69A var up2 = #B2DFDB var down1 = #FF5252 var down2 = #FFCDD2 var confirmationLength = 2 var earliest = timestamp("20 Jan 2024 00:00 +0000") // Regn u shortEMA = ta.ema(close, 12) longEMA = ta.ema(close, 26) macd = shortEMA - longEMA signal = ta.ema(macd, 9) delta = macd - signal absDelta = math.abs(delta) previousDelta = delta[1] signalCrossover = ta.crossover(macd, signal) signalCrossunder = ta.crossunder(macd, signal) harskiftetdag = hour(time[confirmationLength]) > hour(time) enterLongSignal = signalCrossover[confirmationLength] and (macd > signal) and (absDelta >= 0.08) exitLongSignal = signalCrossunder[confirmationLength] and (macd < signal) enterShortSignal = signalCrossunder[confirmationLength] and (macd < signal) and (absDelta >= 0.08) exitShortSignal = signalCrossover[confirmationLength] and (macd > signal) // Så er det tid til at købe noe qty = math.floor(strategy.equity / close) if time >= earliest and not harskiftetdag if exitLongSignal strategy.close("long") else if enterLongSignal strategy.close("short") strategy.entry("long", strategy.long, qty = qty) if exitShortSignal strategy.close("short") else if enterShortSignal strategy.close("long") strategy.entry("short", strategy.short, qty = qty) // Så er det tid til at vise noe plot(macd, color=color.blue) plot(signal, color=color.orange) // bgcolor(color = delta > 0.1 ? color.new(color.green, 90) : color.new(color.green, 100)) // bgcolor(color = signalCrossover ? color.purple : signalCrossunder ? color.aqua : color.new(color.green, 100)) histogramColor = delta > 0 ? (previousDelta < delta ? up1 : up2) : (previousDelta > delta ? down1 : down2) plot( delta, style=plot.style_columns, color=histogramColor )