
Strategi ini menggabungkan penggunaan EMA Mean Line dan MACD untuk mengenal pasti isyarat trend dalam jangka masa yang panjang untuk menangkap trend garis tengah. Apabila trend jangka pendek selaras dengan arah trend jangka panjang, ia mengambil tindakan untuk mengesan trend.
Strategi menilai arah trend jangka panjang dan pertengahan dengan garis EMA 50 hari dan garis EMA 100 hari. Apabila trend jangka pendek dikenal pasti oleh penunjuk MACD, tentukan sama ada arah trend jangka pendek dan arah trend jangka panjang dan pertengahan adalah sama. Jika sama, ambil tindakan trend-following.
Khususnya, apabila MACD melalui jalur lambat dan ditutup > 50 hari EMA dan ditutup > 100 hari EMA, lakukan lebih banyak; apabila MACD melalui jalur lambat dan ditutup < 50 hari EMA dan ditutup < 100 hari EMA, lakukan kosong.
Di samping itu, strategi menggunakan ATR untuk mengira julat pergerakan dan menetapkan harga stop loss. Dengan ATR beberapa kali ganda harga tutup sebagai tempat berhenti, dengan ATR beberapa kali ganda harga tutup sebagai tempat berhenti.
Kaedah pencegahan:
Strategi ini menggunakan indikator seperti EMA, MACD dan ATR secara menyeluruh untuk melaksanakan operasi pengesanan trend dalam bingkai masa yang pelbagai. Dengan pengoptimuman parameter, diharapkan untuk mendapatkan kadar pulangan strategi yang lebih baik.
/*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)