Chiến lược giao dịch moving average là một chiến lược giao dịch định lượng theo dõi sự giao thoa của đường trung bình di chuyển ngắn hạn và dài hạn (EMA), thực hiện các hoạt động mua và bán khi có hai đường trung bình di chuyển. Chiến lược này kết hợp với MACD để đánh giá tín hiệu giao dịch.
Chiến lược này chủ yếu dựa trên chỉ số EMA 12, EMA 26 và MACD.
Ngoài ra, chiến lược này còn đặt ra một số điều kiện lọc:
Chiến lược này kết hợp với các đường trung bình di chuyển và MACD để nắm bắt hiệu quả các điểm biến của xu hướng ngắn hạn và trung hạn của thị trường. Các lợi thế chính là:
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:
Chiến lược này có thể được tối ưu hóa bằng cách:
Moving Average Binary Dead Fork kết hợp với chiến lược giao dịch MACD, tạo ra tín hiệu giao dịch bằng cách theo dõi xu hướng đơn giản, dễ thực hiện và kết hợp với điều kiện lọc thích hợp để kiểm soát rủi ro, là một chiến lược giao dịch định lượng hiệu quả. Chiến lược này có thể được cải thiện bằng cách tối ưu hóa tham số, tăng cơ chế dừng lỗ và kết hợp với nhiều chỉ số phụ trợ.
/*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
)