
Стратегия использует среднюю линию EMA и индикатор MACD, чтобы идентифицировать трендовые сигналы в течение нескольких временных рамок, чтобы улавливать средне- и долгосрочные тенденции. Принимаются действия по отслеживанию тенденций, когда краткосрочные тенденции совпадают с направлением среднесрочных тенденций.
Стратегия определяет направление среднесрочной и долгосрочной тенденции на 50-дневную и 100-дневную линии EMA. Когда краткосрочные тенденции идентифицируются MACD-индикатором, определяется, согласуется ли направление краткосрочной тенденции с направлением среднесрочной и долгосрочной тенденции. Если согласуется, проводится операция по отслеживанию тенденции.
В частности, когда MACD проходит медленную линию на скоростной линии и закрывается > 50-дневная ЭМА и закрывается > 100-дневная ЭМА, делается больше; когда MACD проходит медленную линию под скоростной линией и закрывается < 50-дневная ЭМА и закрывается < 100-дневная ЭМА, делается пусто.
Кроме того, стратегия использует индикатор ATR для расчета диапазона колебаний и установления стоп-стоп-цены. Стоп-позиция ATR определяется кратным количеством ценой закрытия.
Ответ:
Стратегия включает в себя использование таких показателей, как EMA, MACD и ATR, для осуществления операций по отслеживанию тенденций в течение нескольких временных рамок. С помощью оптимизации параметров ожидается получение лучшей доходности стратегии. В то же время необходимо предотвратить риск отставания показателей, корректировки параметров и неправильного контроля колебаний.
/*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)