
La stratégie utilise l’intermédiaire EMA et l’indicateur MACD pour identifier les signaux de tendance sur plusieurs périodes de temps afin de capturer les tendances de la ligne moyenne et longue. La stratégie utilise également l’indicateur ATR pour définir des arrêts de perte et contrôler le risque de fluctuation.
La stratégie détermine l’orientation de la tendance à moyen et à long terme à l’aide des lignes EMA à 50 jours et EMA à 100 jours. Lorsque la tendance à court terme est identifiée par l’indicateur MACD, détermine si la tendance à court terme est cohérente avec la tendance à moyen et à long terme. Si elle est cohérente, effectuez des opérations de suivi de tendance.
Plus précisément, lorsque le MACD franchit la ligne lente sur la ligne rapide et se ferme > 50 jours d’EMA et se ferme > 100 jours d’EMA, faites plus; lorsque le MACD franchit la ligne lente sous la ligne rapide et se ferme < 50 jours d’EMA et se ferme < 100 jours d’EMA, faites moins.
En outre, la stratégie utilise l’indicateur ATR pour calculer la marge de fluctuation et définir un prix d’arrêt-stop.
La réponse:
Cette stratégie utilise des indicateurs tels que EMA, MACD et ATR pour réaliser des opérations de suivi de tendance sur plusieurs périodes. Grâce à l’optimisation des paramètres, il est possible d’obtenir de meilleurs rendements stratégiques. Il est également nécessaire de prévenir les risques de retard des indicateurs, d’ajustement des paramètres et de contrôle inapproprié des fluctuations.
/*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)