
Chiến lược này kết hợp sử dụng đường trung bình EMA và chỉ số MACD để nhận diện tín hiệu xu hướng trên nhiều khung thời gian để nắm bắt xu hướng đường trung và dài. Khi xu hướng ngắn hạn phù hợp với hướng xu hướng trung và dài hạn, chiến lược sử dụng chỉ số ATR để thiết lập điểm dừng lỗ và kiểm soát rủi ro biến động.
Chiến lược đánh giá hướng xu hướng trung và dài hạn bằng đường EMA 50 ngày và đường EMA 100 ngày. Khi xu hướng ngắn hạn được MACD xác định, đánh giá hướng xu hướng ngắn hạn có phù hợp với hướng xu hướng trung và dài hạn không. Nếu phù hợp, thực hiện hoạt động theo dõi xu hướng.
Cụ thể, khi MACD trên đường nhanh đi qua đường chậm và đóng cửa > 50 ngày EMA và đóng cửa > 100 ngày EMA, hãy làm nhiều hơn; khi MACD dưới đường nhanh đi qua đường chậm và đóng cửa < 50 ngày EMA và đóng cửa < 100 ngày EMA, hãy làm trống.
Ngoài ra, chiến lược sử dụng chỉ số ATR để tính toán phạm vi biến động, thiết lập giá dừng lỗ. Với ATR gấp đôi giá đóng một số lần như điểm dừng lỗ, với ATR gấp đôi giá đóng một số lần như điểm dừng.
Phản ứng:
Chiến lược này sử dụng các chỉ số như EMA, MACD và ATR để thực hiện các hoạt động theo dõi xu hướng trong nhiều khung thời gian. Bằng cách tối ưu hóa tham số, có thể đạt được lợi nhuận chiến lược tốt hơn. Đồng thời, cần phải phòng ngừa các rủi ro như chỉ số trì trệ, điều chỉnh tham số và kiểm soát biến động không phù hợp, cần tiếp tục tối ưu hóa và nâng cao.
/*backtest
start: 2022-12-29 00:00:00
end: 2024-01-04 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("EMA-50, EMA-100, and MACD Strategy with ATR for Stop Loss/Profit", overlay=true)
// MACD hesaplama
fastLength = input(12, title="Fast Length")
slowLength = input(26, title="Slow Length")
signalLength = input(9, title="Signal Length")
[macdLine, signalLine, _] = ta.macd(close, fastLength, slowLength, signalLength)
// EMA-50 ve EMA-100 hesaplama
ema50 = ta.ema(close, 50)
ema100 = ta.ema(close, 100)
// ATR hesaplama
atrLength = input(14, title="ATR Length")
atrValue = ta.atr(atrLength)
// Take Profit ve Stop Loss çoklayıcıları
takeProfitMultiplier = input(3.0, title="Take Profit Multiplier") // TP, 3 katı ATR
stopLossMultiplier = input(1.0, title="Stop Loss Multiplier")
// Long Pozisyon Koşulları
longCondition = ta.crossover(macdLine, signalLine) and close > ema50 and close > ema100
// Short Pozisyon Koşulları
shortCondition = ta.crossunder(macdLine, signalLine) and close < ema50 and close < ema100
// Take Profit ve Stop Loss Seviyeleri
takeProfitLevel = close + takeProfitMultiplier * atrValue
stopLossLevel = close - stopLossMultiplier * atrValue
// Long Pozisyon İşlemleri
strategy.entry("Long", strategy.long, when=longCondition)
strategy.exit("Take Profit/Stop Loss", from_entry="Long", loss=stopLossLevel, profit=takeProfitLevel)
// Short Pozisyon İşlemleri
strategy.entry("Short", strategy.short, when=shortCondition)
strategy.exit("Take Profit/Stop Loss", from_entry="Short", loss=stopLossLevel, profit=takeProfitLevel)
// Grafikte Gösterme
plot(ema50, color=color.blue, title="EMA-50")
plot(ema100, color=color.red, title="EMA-100")
hline(0, "Zero Line", color=color.gray)