
이 전략은 EMA 평균선과 MACD 지표를 사용하여 여러 시간 프레임에 걸쳐 트렌드 신호를 식별하여 중장선 트렌드를 포착합니다. 단기 트렌드가 중장기 트렌드 방향과 일치하면 트렌드 추적 작업을 수행합니다. 동시에 ATR 지표를 사용하여 스톱을 설정하고 변동에 대한 위험을 제어합니다.
전략은 50일 EMA선과 100일 EMA선으로 중장기 트렌드 방향을 판단한다. 단기 트렌드 방향이 MACD 지표에 의해 식별될 때, 단기 트렌드 방향이 중장기 트렌드 방향과 일치하는지 판단한다. 일치하면 트렌드 추적 동작을 한다.
구체적으로, MACD 빠른 라인에서 느린 라인을 통과하고, closes > 50 일 EMA와 closes > 100 일 EMA를 닫을 때, 더 많이; MACD 빠른 라인 아래에서 느린 라인을 통과하고, closes < 50 일 EMA와 closes < 100 일 EMA를 닫을 때, 공백을 다.
또한, 전략은 ATR 지표를 사용하여 변동 범위를 계산하고, 스톱 스톱 가격을 설정한다. 클로즈 가격의 일정한 배수의 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)