다중 지표 교차 모멘텀 거래 시스템: EMA+CPR+볼륨 필터 자동 손절매 및 손절매 전략

EMA CPR SMA SL/TP VOLUME FILTER Momentum Trading Crossover Strategy technical analysis
생성 날짜: 2025-05-20 10:00:05 마지막으로 수정됨: 2025-05-20 10:00:05
복사: 1 클릭수: 345
avatar of ianzeng123 ianzeng123
2
집중하다
319
수행원

다중 지표 교차 모멘텀 거래 시스템: EMA+CPR+볼륨 필터 자동 손절매 및 손절매 전략 다중 지표 교차 모멘텀 거래 시스템: EMA+CPR+볼륨 필터 자동 손절매 및 손절매 전략

개요

이 전략은 지수 이동 평균 (EMA) 교차, 중점 참조 가격 (CPR), 거래량 필터링 및 자동 중단 / 중지 설정을 결합 한 다중 기술 지표를 기반으로 한 거래 시스템입니다. 전략의 핵심 논리는 EMA 단선과 느린 선의 교차를 통해 시장의 방향을 결정하는 것이며, CPR를 추가 가격 참조 포인트로 사용하여 신호를 확인하고 거래량 필터를 통해 시장의 활성을 확인하고, 마지막으로 고정된 비율의 중지 및 중지를 설정하여 위험을 관리하고 수익을 잠금합니다. 이 전략은 선물 및 주식 시장에 적합하며, 전체 피드백 기능을 제공하며, 사용자의 요구에 따라 파라미터를 조정할 수 있습니다.

전략 원칙

이 전략의 핵심 거래 논리는 다음과 같은 몇 가지 핵심 구성 요소에 기반합니다.

  1. EMA 교차 시스템전략은 20주기 및 50주기 지수 이동 평균 (EMA) 을 주요 트렌드 지표로 사용한다. 빠른 EMA (20주기) 상에서 느린 EMA (50주기) 를 통과할 때, 다중 신호를 생성한다. 빠른 EMA 아래에서 느린 EMA를 통과할 때, 다중 신호를 생성한다. 이것은 트렌드의 전환점을 포착하기 위해 사용되는 고전적인 평행선 교차 전략이다.

  2. CPR (Central Point Reference Price) 확정: 전략은 CPR 지표를 가격 레벨 확인 도구로 도입한다. CPR은 3개의 핵심 가격 레벨로 구성된다: 축점 ((Pivot), 하부 중앙 ((BC)), 상부 중앙 ((TC)). 이 레벨은 전날의 최고점, 최저점, 그리고 종결 가격에 기초하여 계산된다. 다중의 경우, 전략은 가격이 축점 위에 있어야 한다고 요구한다. 공백의 경우, 가격은 축점 아래에 있어야 한다.

  3. 거래량 필터: 거래량이 부족할 때 거래하는 것을 피하기 위해, 전략은 거래량이 20일 평균 거래량보다 커야 한다는 조건을 설정했다. 높은 거래량은 일반적으로 시장 참여도가 높으며 가격 움직임의 신뢰성을 증가시킨다. 사용자는 이 필터를 활성화할지 여부를 선택할 수 있다.

  4. 자동 중지/정지: 전략은 입시 가격에 기반한 고정 비율의 중지 및 정지를 설정한다. 기본 설정에서는 중지 손실이 입시 가격보다 1.5% 낮고 정지는 입시 가격보다 3% 높다. 이것은 위험의 수익률 비율을 1:2로 만듭니다. 건강한 위험 관리 원칙에 부합한다. 이러한 매개 변수는 입력 제어로 조정할 수 있다.

  5. 신호 시각화전략: 차트 상에서 태그와 모양의 형태로 구매 및 판매 신호를 직관적으로 표시하여 거래자가 입문 지점을 명확하게 볼 수 있도록합니다.

거래 실행 논리는 간단하다: 다중 조건이 충족되면 (EMA 상위, 가격보다 높은 축점, 거래량 조건이 충족되면) 전략은 다중 포지션에 들어가며, 동시에 중지 손실 및 중지 주문을 설정한다. 공백 조건이 충족되면 (EMA 아래, 가격보다 낮은 축점, 거래량 조건이 충족되면) 전략은 공백 포지션에 들어가며, 또한 그에 따른 중지 손실 및 중지 주문을 설정한다.

전략적 이점

  1. 다중 인증 메커니즘전략: 트렌드 지표 ((EMA), 가격 수준 지표 ((CPR) 및 거래량 지표가 결합되어 여러 가지 확인 시스템을 형성합니다. 이것은 가짜 신호의 가능성을 줄이고 거래의 신뢰성을 높입니다. 단일 지표는 잘못된 신호를 일으킬 수 있지만 여러 가지 유형의 지표의 확인은 거래의 성공 가능성을 증가시킵니다.

  2. 적응력조정 가능한 매개 변수들 (EMA 길이, 스톱 손실 비율, 스톱 스톱 비율, 거래량 필터 사용 여부 등) 을 통해 전략은 다른 시장 환경과 거래자의 위험 선호에 적응할 수 있습니다. 이것은 전략이 변동성이 높은 시장뿐만 아니라 비교적 안정적인 시장에도 적용되도록합니다.

  3. 리스크 관리 통합이 전략은 자동으로 중지 및 중지하는 메커니즘을 내장하고 있습니다. 이것은 모든 거래에 미리 정의된 위험과 수익 목표가 있으며, 감정적 인 결정이 거래 결과에 영향을 미치지 않도록합니다.

  4. 시각화 거래 신호전략: 전략은 차트에 거래 신호를 직관적으로 표시하여 거래자가 입출소를 쉽게 식별할 수 있도록 도와줍니다. 이는 전략을 재검토하고 조정하는 데 도움이됩니다.

  5. 코드는 간결하고 효율적입니다.전략 코드 구조는 명확하고 논리적으로 모듈화되어 이해하기 쉽고 수정할 수 있습니다. 이것은 프로그래밍 경험이 제한된 거래자도 전략의 작동 방식을 이해하고 자신의 필요에 따라 조정할 수 있습니다.

  6. 광범위한 적용: 전략은 선물과 주식을 포함한 다양한 거래 품종에 적용되며 특정 시장에 대한 특별한 조정이 필요하지 않습니다. 이러한 보편성은 전략이 다른 시장 환경에서 비교적 안정적인 성능을 유지할 수있게합니다.

전략적 위험

  1. 가짜 교차 신호: EMA 교차 전략은 수평 또는 변동하는 시장에서 여러 번의 가짜 교차 신호를 생성하여 연속적인 손실 거래로 이어질 수 있습니다. CPR 및 거래량 필터가 이러한 가짜 신호를 줄이는 데 도움이되지만, 명확한 추세가없는 시장에서는 여전히 중요한 위험입니다. 해결책은 수평 시장에서 거래를 중지하거나 추가적인 추세 확인 지표를 추가하는 것입니다.

  2. 고정 손실의 한계전략: 입시 가격에 기반한 고정 퍼센트 스톱을 사용한다. 이것은 모든 시장 환경과 변동 조건에 적합하지 않을 수 있다. 높은 변동성이 있는 시장에서 고정 퍼센트 스톱은 너무 밀도 있고, 낮은 변동성이 있는 시장에서는 너무 느슨하다.

  3. 슬라이드 포인트와 실행 위험전략: 모든 주문이 지정된 가격으로 실행될 수 있다고 가정하지만, 실제 거래에는 슬라이드 및 실행 지연이있을 수 있습니다. 특히 유동성이 제한된 시장에서. 이것은 실제 거래 결과와 재검토 결과의 차이가 발생할 수 있습니다. 이러한 위험을 줄이기 위해 실제 거래에서는 스톱 레인지를 늘리거나 포지션 크기를 줄이는 것과 같은 보수적인 설정을 사용할 수 있습니다.

  4. 변수 최적화 과잉전략의 성능은 선택된 파라미터에 크게 의존한다. (EMA 길이, 중지/정지 비율 등) 과도한 최적화 파라미터로 인해 재검토에서 좋은 성능이지만 실제 거래에서 좋지 않은 성능이 발생할 수 있다. 해결책은 더 긴 재검토 주기를 사용하여 여러 시장 조건에서 전략의 건전성을 테스트하는 것이다.

  5. 일선 CPR의 한계CPR을 계산하기 위한 전략: 일선 데이터를 사용한다. 일일 거래나 더 짧은 시간 프레임의 거래에서는 충분히 유연하지 않거나 빠르게 반응하지 않을 수 있다. 가능한 해결책은 사용된 시간 프레임에 따라 CPR의 계산주기를 조정하는 것이다.

  6. 거래량 가짜 신호20일 평균보다 높은 거래량에 의존하는 간단한 조건만으로는 시장의 활성도를 정확하게 판단하는 데 충분하지 않을 수 있습니다. 일부 비정상적인 거래 날에 거래량이 급증 할 수 있지만 진정한 트렌드 확인을 의미하지는 않습니다. 거래량 추세 또는 거래량의 상대적 변화율과 같은 더 복잡한 거래량 분석을 추가하는 것을 고려할 수 있습니다.

전략 최적화 방향

  1. 트렌드 인식 개선: 현재 전략은 주로 EMA 교차 인식 트렌드에 의존하고 있으며, ADX와 같은 추가적인 트렌드 지표를 추가하는 것을 고려할 수 있습니다. 이는 트렌드 시장의 가짜 신호를 필터링하는 데 도움이 될 것이며, 거래의 양보다 거래의 질을 향상시킵니다. 코드 구현에 ADX>25의 조건을 추가 거래 필터로 추가 할 수 있습니다.

  2. 동적 손해 및 정지ATR과 같은 변동성 지표로 고정된 비율의 중지 및 중지를 대체하여 다른 시장 환경의 변동성에 더 잘 적응합니다. 예를 들어, 손실을 2 배의 ATR로 설정하고, 중지를 4 배의 ATR로 설정하여 동일한 위험과 수익률을 유지하지만 시장 조건에 더 잘 적응 할 수 있습니다.

  3. 거래량 분석 강화거래량 필터를 개선하여 거래량 크기를 고려하는 것뿐만 아니라 거래량 트렌드와 가격-거래량 관계도 고려할 수 있습니다. 예를 들어, 거래량이 가격 움직임 방향과 일치하도록 요구되는 조건을 추가하거나 OBV (에너지 유동) 과 같은 더 복잡한 거래량 지표를 사용할 수 있습니다.

  4. 입학 시점을 최적화: 현재 전략은 교차가 발생했을 때 즉시 입문할 수 있으며, 확인 조건을 추가하는 것을 고려할 수 있습니다. 예를 들어, 중요한 지지/저항 지점으로 가격 회귀를 기다리는 것 또는 1-2주기의 확인을 기다리는 것은 가짜 돌파의 위험을 줄이기 위해 가능합니다. 이것은 입문 신호를 지연하거나 가격 패턴 확인을 추가하여 수행 할 수 있습니다.

  5. 시장 환경 필터를 추가합니다.: 시장 환경 판단 논리를 추가할 수 있습니다. 예를 들어, 변동성 지표 (VIX 또는 ATR과 같은) 를 통해 현재 시장 상태를 판단하고, 다른 시장 환경에서 다른 파라미터 설정을 사용하거나 심지어 거래를 중지 할 수 있습니다. 예를 들어, 높은 변동성 시장에서 더 넓은 스톱 손실과 더 보수적인 포지션 크기가 필요할 수 있습니다.

  6. 모의 거래량 손실: 거래량 데이터가 없는 시장이나 거래량 데이터가 신뢰할 수 없는 시장에서 전략의 적용성을 강화하기 위해 거래량 데이터가 필요하지 않은 대안 버전을 개발할 수 있습니다. 예를 들어 거래량 확인 대신 가격 변동 범위 또는 다른 기술 지표를 사용합니다.

  7. 시간 필터를 추가: 시간 필터 조건을 추가하는 것을 고려하고, 시장 개시 전과 종료 후의 높은 변동성 시간대에 거래를 피하거나, 중요한 경제 자료가 발표되는 시간을 피하십시오. 이것은 현재 거래 시간을 확인하고 거래가 허용되는 시간 창을 설정하여 수행 할 수 있습니다.

요약하다

이 EMA 횡단, CPR 및 거래량 필터링에 기반한 거래 전략은 트렌드 추적, 가격 수준 확인 및 거래량 검증을 결합한 종합적인 거래 시스템 프레임 워크를 제공하며 위험 관리 기능을 내장하고 있습니다. 전략의 핵심 장점은 여러 확인 메커니즘과 자동 스톱 / 스톱 설정을 통해 거래의 신뢰성과 규율을 높이는 데 도움이됩니다.

그러나, 모든 거래 전략과 마찬가지로, 그것은 가짜 신호의 위험과 고정 변수의 한계와 같은 몇 가지 도전에 직면합니다. 위와 같은 최적화 방향, 특히 트렌드 식별, 동적 스톱 / 스톱 조정 및 강화된 시장 환경 필터링을 개선함으로써 전략의 튼튼함과 적응력을 더욱 높일 수 있습니다.

트레이더에게, 이 전략은 개인 거래 스타일과 시장 선호에 따라 맞춤형 조정을 할 수 있는 좋은 출발점을 제공합니다. 가장 중요한 것은, 전략이 어떻게 수정되든 항상 건전한 위험 관리 원칙을 유지해야하며, 과도한 최적화 파라미터를 피하고, 실물 거래 전에 충분한 피드백과 시뮬레이션 거래 검증을 수행해야합니다.

전략 소스 코드
/*backtest
start: 2024-05-20 00:00:00
end: 2025-05-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDC"}]
*/

//@version=6
strategy("Backtest: EMA + CPR + Volume + SL/Target", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=1)

// === INPUTS === //
emaFastLen = input.int(20, title="Fast EMA (20)")
emaSlowLen = input.int(50, title="Slow EMA (50)")
showCPR = input.bool(true, title="Show CPR?")
slPct = input.float(1.5, title="Stop Loss %") / 100
tpPct = input.float(3.0, title="Target %") / 100
useVolume = input.bool(true, title="Use Volume Filter?")

// === EMAs === //
emaFast = ta.ema(close, emaFastLen)
emaSlow = ta.ema(close, emaSlowLen)
bullishCross = ta.crossover(emaFast, emaSlow)
bearishCross = ta.crossunder(emaFast, emaSlow)

plot(emaFast, color=color.orange, title="EMA 20")
plot(emaSlow, color=color.blue, title="EMA 50")

// === CPR === //
prevHigh = request.security(syminfo.tickerid, "D", high[1])
prevLow = request.security(syminfo.tickerid, "D", low[1])
prevClose = request.security(syminfo.tickerid, "D", close[1])
pivot = (prevHigh + prevLow + prevClose) / 3
bc = (prevHigh + prevLow) / 2
tc = (pivot * 2) - bc

plot(showCPR ? pivot : na, color=color.gray, title="Pivot")
plot(showCPR ? bc : na, color=color.gray, title="CPR BC")
plot(showCPR ? tc : na, color=color.gray, title="CPR TC")

// === Volume Filter === //
volOK = not useVolume or (volume > ta.sma(volume, 20))

// === BUY / SELL CONDITIONS === //
longCondition = bullishCross and close > pivot and volOK
shortCondition = bearishCross and close < pivot and volOK

// === TRADE EXECUTION === //
if (longCondition)
    strategy.entry("BUY", strategy.long)
    strategy.exit("TP/SL", from_entry="BUY", stop=close * (1 - slPct), limit=close * (1 + tpPct))
    
if (shortCondition)
    strategy.entry("SELL", strategy.short)
    strategy.exit("TP/SL", from_entry="SELL", stop=close * (1 + slPct), limit=close * (1 - tpPct))

// === VISUAL SIGNALS === //
plotshape(longCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(shortCondition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")