
이 전략의 핵심은 EMA와 MACD의 두 지표를 사용하여 트렌드 방향과 입시 시기를 식별하는 것입니다. 가격이 EMA를 뚫을 때 트렌드가 변하는 것으로 간주되며 MACD의 해체 지표는 트렌드 신호를 추가적으로 확인합니다. 가격과 EMA 및 MACD의 관계에 따라 구매 및 판매 시기를 판단 할 수 있습니다.
이 전략은 주로 20주기의 EMA선과 MACD 지표에 의존하여 트렌드 방향을 판단한다. 구체적인 거래 신호 생성 규칙은 다음과 같다:
구매 신호: 가격이 20EMA보다 낮고 MACD 지표선이 0축 아래 있을 때, 가격이 20EMA를 넘어 상향으로 돌파될 때까지 기다립니다. 동시에 MACD 지표선이 마이너스 교정으로 바뀌었는지 또는 방금 마이너스 교정으로 바뀌었는지 확인합니다. 만족하면 20EMA 상위 10파인 가격에서 구매 신호를 냅니다.
판매 신호: 가격이 20 EMA보다 높고 MACD 지표선은 0 축 위에 있을 때, 가격이 아래로 돌파되어 20 EMA를 넘을 때까지 기다립니다. 동시에 MACD 지표선은 동시에 긍정적으로 또는 부정적으로 전환되었는지 확인합니다. 만족하면 20 EMA 아래 10 포인트 가격에서 판매 신호를 냅니다.
이 전략은 트렌드 판단과 지표 필터링을 결합하여 트렌드의 변화 지점을 효과적으로 식별하고, 평형 영역에서 잘못된 신호를 피합니다.
이 전략의 가장 큰 장점은 EMA를 사용하여 큰 트렌드 방향을 판단하는 동시에 MACD 지표로 이중 확인을 하는 데 있습니다. 따라서 일부 잡음 거래 신호를 필터링 할 수 있습니다. EMA 라인은 주요 트렌드 방향을 더 잘 판단 할 수 있으며, MACD는 부진이 발생하는지 여부를 추가로 판단 할 수 있습니다. 따라서이 조합 필터링 방법은 전략 신호를 더 신뢰할 수 있습니다.
다른 한편으로, 이 전략은 또한 위험 제어 메커니즘을 제공합니다. 고정된 손실 및 중지 방법을 사용하여 위험을 효과적으로 관리 할 수 있습니다. 또한 일부 포지션은 보본의 퇴장을 맞이하고 다른 일부는 트렌드를 추적하여 이익을 얻습니다. 이 방법은 위험과 수익을 균형 잡습니다.
이 전략의 가장 큰 위험은 EMA와 MACD가 판단한 트렌드 신호가 반드시 완전히 신뢰할 수 없다는 것입니다. 가격이 어느 정도 반전이 발생할 수 있기 때문에 스톱 손실이 유발 될 수 있습니다. 또한 회수 과정에서 잘못된 신호가 발생할 수 있습니다. 이것은 매개 변수를 최적화하여 최대한 피해야합니다.
다른 한편으로, 고정 스톱 설정도 위험합니다. 시장이 급격하게 변동할 때 고정 값의 스톱이 시장에 완전히 적응하기가 어렵고, 조기 퇴출되거나 조기 퇴출 될 수 있습니다. 이는 당시에 변동성과 유동성에 따라 스톱 매개 변수를 조정해야합니다.
이 전략은 다음과 같은 부분에서 최적화될 수 있습니다.
다양한 변수들을 테스트하는 EMA 주기, 최적의 변수 조합을 찾는 것
MACD의 매개 변수를 최적화하여 거래되는 품종의 특성에 맞게 조정
ATR을 사용해서 손해 차단 장치의 설정을 변경하십시오.
다른 지표를 추가하여 신호를 필터링하여 신호 품질을 향상시킵니다.
다양한 품종의 거래 효과를 평가하고 가장 적합한 품종을 선택합니다.
매개 변수 및 모델의 최적화를 통해 전략의 안정성과 수익성을 더욱 향상시킬 수 있습니다. 또한 최적화 과정의 과잉 적합의 위험을 제어해야합니다.
이 전략은 전체적으로 상당히 튼튼하며, 트렌드 신호를 판단하는 쌍방향 지표를 사용하여 어느 정도 노이즈 트레이딩을 필터링 할 수 있습니다. 위험 제어 또한 적절합니다. 파라미터와 모델을 추가적으로 최적화하면 이 전략은 실험 테스트 할 가치가있는 정량화 된 거래 전략이 될 수 있습니다.
/*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=4
strategy("EMA and MACD Trading Strategy", overlay=true)
// Define inputs
emaPeriod = input(20, title="EMA Period")
macdShort = input(12, title="MACD Short Period")
macdLong = input(26, title="MACD Long Period")
macdSignal = input(9, title="MACD Signal Period")
riskAmount = input(10, title="Risk Amount (in pips)")
// Calculate indicators
ema = ema(close, emaPeriod)
[macdLine, signalLine, _] = macd(close, macdShort, macdLong, macdSignal)
// Define long trade conditions
longCondition = crossover(close, ema) and (macdLine > 0 or crossover(macdLine, signalLine)) // Removed unnecessary argument
// Define short trade conditions
shortCondition = crossunder(close, ema) and (macdLine < 0 or crossunder(macdLine, signalLine)) // Removed unnecessary argument
// Execute long trade
if (longCondition)
stopLoss = close - riskAmount
takeProfit = close + riskAmount
strategy.entry("Long", strategy.long)
strategy.exit("Exit", "Long", stop=stopLoss, limit=takeProfit)
// Execute short trade
if (shortCondition)
stopLoss = close + riskAmount
takeProfit = close - riskAmount
strategy.entry("Short", strategy.short)
strategy.exit("Exit", "Short", stop=stopLoss, limit=takeProfit)