이 전략의 핵심은 EMA와 MACD 지표를 사용하여 트렌드 방향과 진입 시기를 식별하는 것입니다. 가격이 EMA를 통과하면 트렌드가 변경되었다고 간주되며 MACD 분차 지표는 트렌드 신호를 추가로 확인합니다. 구매 및 판매 시기는 가격과 EMA와 MACD 사이의 관계에 따라 결정 될 수 있습니다.
이 전략은 주로 트렌드 방향을 결정하기 위해 20주기 EMA 라인과 MACD 지표에 의존합니다. 구체적인 거래 신호 생성 규칙은 다음과 같습니다.
구매 신호: 가격이 20EMA 이하이고 MACD 지표 라인이 0 축 이하일 때, MACD 지표 라인이 동시에 음에서 양으로 전환되었는지 확인하는 동안 가격이 20EMA를 가로지르며 상향으로 깨지는 것을 기다립니다. 기준이 충족되면 20EMA보다 10 틱 이상의 가격으로 구매 신호가 발행됩니다.
판매 신호: 가격이 20EMA 이상이고 MACD 지표 라인이 0 축 이상일 때, MACD 지표 라인이 동시에 양에서 음으로 전환되었는지 확인하는 동안 가격이 20EMA를 가로 질러 하향적으로 붕괴 될 때까지 기다립니다. 기준이 충족되면 20EMA보다 10 틱 낮은 가격으로 판매 신호가 발급됩니다.
이 전략은 트렌드 판단과 지표 필터링을 결합하여 트렌드 변화 지점을 효과적으로 식별하고 통합 구역에서 잘못된 신호를 피합니다.
이 전략의 가장 큰 장점은 주요 트렌드 방향을 판단하기 위해 EMA를 사용하는 동안 MACD 지표가 일부 시끄러운 거래 신호를 필터하는 이중 확인에도 사용된다는 것입니다. EMA 라인은 주요 트렌드 방향을 더 잘 결정할 수 있으며 MACD는 그것이 양조 중인지 더 결정할 수 있습니다. 따라서이 조합 필터 방법은 전략 신호를 더 신뢰할 수 있습니다.
한편, 전략은 또한 위험 통제 메커니즘을 제공합니다. 고정 스톱 로스 및 수익을 취함으로써 위험을 효과적으로 제어 할 수 있습니다. 또한, 일부 포지션은 리스크 오프에 부응하며 다른 부분은 수익 트렌드를 따르기 위해 시도합니다. 이것은 위험과 수익을 균형있게합니다.
이 전략의 가장 큰 위험은 EMA와 MACD에 의해 판단되는 트렌드 신호가 완전히 신뢰할 수 없다는 것입니다. 가격은 어느 정도 반전되어 스톱 손실이 유발 될 수 있습니다. 통합 중에 잘못된 신호도 발생할 수 있습니다. 파라미터 최적화를 통해 가능한 한 이것을 피해야합니다.
한편, 고정 스톱 로스 및 취리 설정은 또한 특정 위험을 초래합니다. 시장이 극적인 변동을 볼 때, 스톱 로스 및 취리 고정 값은 시장에 완전히 적응하지 않을 수 있습니다. 이는 함락되거나 조기에 빠져 나가는 경향이 있습니다. 이것은 그 당시의 변동성과 유동성에 따라 스톱 로스 및 취리 매개 변수를 조정해야합니다.
전략은 다음과 같은 방법으로 최적화 될 수 있습니다.
최적의 매개 변수 조합을 찾기 위해 EMA를 위해 다른 매개 변수 기간을 테스트하십시오.
거래 품종의 특성에 더 적합하도록 MACD의 매개 변수를 최적화하십시오.
ATR Stop Loss 등을 사용하는 것과 같이 Stop Loss 및 Take Profit의 설정을 변경해보십시오.
신호 품질을 향상시키기 위해 신호 필터링을 위한 다른 지표를 추가합니다.
다른 품종에 대한 거래 성과를 평가하고 가장 적합한 것을 선택
매개 변수 및 모델 최적화를 통해 전략의 안정성과 수익성을 더욱 향상시킬 수 있습니다. 동시에 최적화 과정에서 과도한 적합성의 위험을 통제해야합니다.
전체적으로, 이 전략은 두 개의 지표 결합 판단을 사용하여 어느 정도 시끄러운 거래를 필터합니다. 위험 통제도 적절합니다. 매개 변수 및 모델의 추가 최적화를 통해 이 전략은 실시간 거래에서 검증 할 수있는 가치있는 양적 거래 전략이 될 수 있습니다.
/*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)