이동 평균 금 叉死 叉 거래 전략은 단기 및 장기 이동 평균 (EMA) 의 교차 상황을 추적하는 양적 거래 전략으로, 금 叉 및死 叉 때 구매 및 판매 작업을 수행한다. 이 전략은 MACD 지표와 결합하여 거래 신호 판단한다.
이 전략은 주로 12일 EMA, 26일 EMA 및 MACD 지표에 의존한다. 구체적인 논리는 다음과 같다:
이 정책은 또한 몇 가지 필터링 조건을 설정합니다.
이 전략은 이동 평균 크로스와 MACD 지표와 결합하여 시장의 단기 및 중기 경향의 전환점을 효과적으로 포착할 수 있습니다. 주요 장점은 다음과 같습니다:
이 전략에는 몇 가지 위험도 있습니다.
대응방법:
이 전략은 다음과 같은 부분에서 최적화될 수 있습니다.
이동 평균 레지드 포크 데드 포크는 MACD 거래 전략과 결합하여 간단한 트렌드 추적을 통해 거래 신호를 형성하고, 실행하기 쉬운, 적절한 필터 조건과 결합하여 위험을 제어하는 효과적인 양적 거래 전략입니다. 이 전략은 파라미터를 최적화하고, 손해 막기 메커니즘을 증가시키고, 더 많은 보조 지표와 결합하여 개선 할 수 있습니다.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("EMMA", max_bars_back = 200)
var up1 = #26A69A
var up2 = #B2DFDB
var down1 = #FF5252
var down2 = #FFCDD2
var confirmationLength = 2
var earliest = timestamp("20 Jan 2024 00:00 +0000")
// Regn u
shortEMA = ta.ema(close, 12)
longEMA = ta.ema(close, 26)
macd = shortEMA - longEMA
signal = ta.ema(macd, 9)
delta = macd - signal
absDelta = math.abs(delta)
previousDelta = delta[1]
signalCrossover = ta.crossover(macd, signal)
signalCrossunder = ta.crossunder(macd, signal)
harskiftetdag = hour(time[confirmationLength]) > hour(time)
enterLongSignal = signalCrossover[confirmationLength] and (macd > signal) and (absDelta >= 0.08)
exitLongSignal = signalCrossunder[confirmationLength] and (macd < signal)
enterShortSignal = signalCrossunder[confirmationLength] and (macd < signal) and (absDelta >= 0.08)
exitShortSignal = signalCrossover[confirmationLength] and (macd > signal)
// Så er det tid til at købe noe
qty = math.floor(strategy.equity / close)
if time >= earliest and not harskiftetdag
if exitLongSignal
strategy.close("long")
else if enterLongSignal
strategy.close("short")
strategy.entry("long", strategy.long, qty = qty)
if exitShortSignal
strategy.close("short")
else if enterShortSignal
strategy.close("long")
strategy.entry("short", strategy.short, qty = qty)
// Så er det tid til at vise noe
plot(macd, color=color.blue)
plot(signal, color=color.orange)
// bgcolor(color = delta > 0.1 ? color.new(color.green, 90) : color.new(color.green, 100))
// bgcolor(color = signalCrossover ? color.purple : signalCrossunder ? color.aqua : color.new(color.green, 100))
histogramColor = delta > 0 ? (previousDelta < delta ? up1 : up2) : (previousDelta > delta ? down1 : down2)
plot(
delta,
style=plot.style_columns,
color=histogramColor
)