RA Mean Reversion Portfolio
RA Mean Reversion Portfolio는 MetaTrader 5용 멀티 커런시 EA입니다. 두 통화쌍에서 통계적으로
과도하게 벌어진 일봉 움직임을 찾아내고, 그러한 움직임이 최근 평균으로 되돌아가는 경향이 있다는
가정으로 거래합니다. 두 통화쌍은 하나의 차트에서 거래되며 하나의 리스크 한도로 하나의 포트폴리오
처럼 관리됩니다. 모든 거래에는 보호용 손절매가 설정됩니다.
전략 유형: D1 멀티 커런시 포트폴리오 평균 회귀(설계상 역추세).
이 EA는 D1에서만 작동하고, 심볼당 하나의 포지션만 보유하며, 그리드·물타기·마틴게일을 사용하지
않습니다.
장점
- 단순하고 완전히 결정론적인 로직. 신호는 일봉 종가의 z 점수이므로 모든 판단을 사용자가 직접
재계산하여 검증할 수 있습니다. 숨겨진 적응형 구성 요소가 없습니다.
- 하나의 포트폴리오, 하나의 리스크 한도. 거래당 리스크는 고정되어 있고, 포트폴리오 전체 리스크에
상한이 있으며, 동시 보유 수가 제한됩니다.
- 상관관계 필터. 이미 보유한 포지션과 상관관계가 높은 통화쌍의 신규 거래는 리스크를 절반으로
줄여 진입하며, 그러한 상관 포지션이 두 개 있으면 추가 진입이 차단됩니다.
- 모든 거래에 손절매를 설정하며 진입 시점의 ATR로 계산합니다. 손절매는 절대 넓히지 않으며,
청산 규칙을 방해하는 익절도 없습니다.
- 리스크 초과보다 건너뛰기. 계산된 수량이 브로커의 최소 랏보다 작으면 해당 거래는 아예 열지
않습니다.
- 보호 모듈. 에쿼티 최고점 대비 낙폭이 깊거나 당일 손실이 클 때 신규 진입을 중지합니다.
- 손절 후 대기. 손절이 발생하면 EA는 기다리며, z 점수가 진입 임계값 안으로 돌아온 뒤에만 다시
거래합니다.
- 브로커 친화적. 접두사·접미사가 붙은 심볼 이름을 자동으로 찾고, 모든 주문 전에 가용 증거금을
확인하며, netting 계좌와 hedging 계좌 모두에서 작동합니다.
- CSV 거래 일지. 청산된 모든 거래를 방향, 가격, z 점수, 결과, 청산 사유와 함께 파일에 기록하여
독립적으로 분석할 수 있습니다.
- 모든 입력 파라미터 이름과 프로그램 출력 메시지는 영어입니다.
작동 방식
각 심볼에 대해 EA는 롤링 윈도우에서 일봉 종가의 로그에 대한 z 점수를 계산합니다.
z = (종가의 로그 - 윈도우 평균) / 윈도우 표준편차
기본 윈도우는 45개 일봉이며 신호를 발생시킨 봉은 포함하지 않습니다. 따라서 모든 계산은 확정된
봉을 기준으로 이루어지고 신호는 다시 그려지지 않습니다.
- z가 +2.0보다 크면 해당 통화쌍이 위쪽으로 과도하게 벌어졌다고 판단하여 EA는 매도합니다.
- z가 -2.0보다 작으면 아래쪽으로 과도하게 벌어졌다고 판단하여 EA는 매수합니다.
- z가 0으로 돌아오거나 최대 보유 시간(일봉 25개)에 도달하거나 손절매가 발동되면 포지션을
청산합니다.
손절 거리는 진입 시점의 ATR(14)에 1.5를 곱한 값입니다. 수량은 이 거리와 설정된 리스크 비율로부터
심볼의 틱 가치와 틱 크기를 사용해 계산합니다.
리스크 관리
- 거래당 리스크: 기본 계좌 잔고의 0.3%.
- 모든 보유 포지션의 총 리스크: 기본 잔고의 1.5%.
- 동시 보유 최대 수: 기본 3.
- 비상 보호: 에쿼티 최고점 대비 낙폭이 15%를 초과하는 동안 또는 당일 손실이 3%에 도달한 후에는
신규 진입이 금지됩니다.
- 보유 포지션은 항상 자체 규칙으로 관리됩니다. 보호 모듈은 신규 진입만 중지합니다.
지원 심볼과 계좌
- 기본 심볼: D1의 EURGBP와 AUDUSD. 파라미터를 조정하고 검증한 두 통화쌍입니다.
- 다른 통화쌍도 입력 파라미터에 지정하면 거래되지만, 모델은 그 통화쌍에 최적화되지 않았습니다.
- 심볼 이름은 문자와 숫자로만 대조하므로 EURGBP, EURGBP.a, EURGBPm 등도 자동으로 찾아냅니다.
지정한 심볼이 계좌에 하나도 없으면 EA는 시작을 거부하는 대신 차트 심볼로 거래합니다.
- 계좌: netting과 hedging을 모두 지원합니다. 심볼당 하나의 포지션을 열고 각자의 티켓으로
청산하며 매직 넘버로 필터링하므로 수동 거래나 다른 EA의 포지션에는 영향을 주지 않습니다.
- 시간프레임: 아무 D1 차트에나 EA를 붙이면 됩니다. 거래 통화쌍은 입력 파라미터에서 가져옵니다.
이 EA가 하지 않는 것
- 그리드, 물타기(평균 단가 조정), 마틴게일, 손실 후 랏 증가를 사용하지 않습니다.
- 트레일링 스탑과 손익분기 이동을 사용하지 않습니다. 손절매는 진입 시 설정된 후 그대로
유지됩니다.
- 익절이 없습니다. 청산은 z 점수 회귀, 최대 보유 시간, 또는 손절매입니다.
- 뉴스·경제 캘린더 필터가 없습니다.
- 멀티 타임프레임 로직이 없습니다. 모델은 D1에서만 작동합니다.
- 같은 심볼에서 기존 포지션과 반대 방향의 포지션을 열지 않습니다.
요구 사항
- MetaTrader 5. 터미널에서 자동매매를 활성화하고 EA에 거래를 허용해야 합니다.
- 권장 입금액: 5000 USD/EUR 이상. 아래 테스트는 10000 EUR로 수행했습니다. 잔고의 0.3%가 최소
랏 0.01을 감당하지 못하면 EA는 해당 거래를 건너뜁니다. 이 통화쌍들의 일반적인 일봉 ATR 손절
기준으로 그 임계값은 EURGBP 약 2900 EUR, AUDUSD 약 4400 USD입니다.
- 레버리지: 1:30 이상이면 충분합니다. 사용 가능한 증거금의 일부만 사용합니다.
- 가격 이력: 심볼당 최소 47개 일봉. 상관관계 필터는 90개를 사용합니다.
테스트 결과
아래 수치는 MetaTrader 5 전략 테스터(build 6241)의 기본 설정으로 얻은 것으로, 과거 시뮬레이션
결과이며 실제 거래 결과가 아닙니다.
- 기간: 2020.01.01 - 2026.10.09 (약 6.75년)
- 심볼: EURGBP D1과 AUDUSD D1 (하나의 EURGBP D1 차트에서 거래)
- 모델: every tick, 입금 10000 EUR, 레버리지 1:100
- 순손익: +887.09 EUR (최종 잔고 10887.09 EUR)
- 거래 수: 124, 수익 팩터 1.59, 승률 약 57%
- 최대 잔고 낙폭: 1.58% (174 EUR), 최대 에쿼티 낙폭: 1.78% (197 EUR)
- 거래당 샤프 비율: 1.13
- AUDUSD: 65건, +272 EUR, 수익 팩터 1.30
- EURGBP: 58건, +610 EUR, 수익 팩터 2.06
- 연도별: 2020 +98.66 EUR(17건), 2021 +219.40(18), 2022 +147.65(18), 2023 +329.10(20),
2024 +41.47(20), 2025 +130.26(19), 2026년 09.10까지 -85.25(11)
이 수치를 읽는 방법
- 결과는 시간적으로 균등하지 않습니다. 가장 좋은 해(2023)가 전체의 약 3분의 1을 차지하고,
2024년은 거의 횡보였으며, 진행 중인 2026년은 마이너스입니다. 평균 회귀 모델은 횡보 시장에서
가장 잘 작동하며 강한 추세에서는 성과가 나빠질 것으로 예상됩니다.
- 테스트는 테스트 계좌의 스프레드 이력, 스왑, 수수료 설정을 사용합니다. 브로커가 다르면 결과도
달라집니다.
- 백테스트 결과와 과거 성과는 미래 수익을 보장하지 않습니다.
입력 파라미터
포트폴리오:
- InpPairs = EURGBP,AUDUSD - 거래 심볼, 쉼표로 구분
- InpMaxPositions = 3 - 동시 보유 최대 수
- InpRiskPct = 0.3 - 거래당 리스크, 계좌 잔고 대비 %
- InpMaxPortfolioRiskPct = 1.5 - 모든 보유 포지션의 최대 총 리스크, 잔고 대비 %
상관관계 모듈:
- InpUseCorr = true - 상관관계 필터 활성화
- InpCorrWindow = 90 - 상관관계 윈도우, 일봉 개수
- InpCorrMax = 0.7 - 신규 진입의 리스크를 절반으로 줄이는 상관관계 임계값
핵심(D1 z 점수):
- InpZWin = 45 - z 점수 윈도우, 일봉 개수
- InpEntry = 2.0 - |z| 진입 임계값
- InpExitZ = 0.0 - 포지션을 청산하는 z 수준
- InpMaxHold = 25 - 최대 보유 시간, 일봉 개수
- InpATRPeriod = 14 - 손절매에 사용하는 ATR 기간
- InpATRMult = 1.5 - 손절매에 사용하는 ATR 배수
보호:
- InpMaxDDStopPct = 15.0 - 에쿼티 최고점 대비 낙폭이 이 %를 초과하면 신규 진입 차단
- InpDailyLossStopPct = 3.0 - 당일 손실이 이 %를 초과하면 신규 진입 차단
- InpSLCooldownBars = 5 - 손절 후 대기, 일봉 개수(0 = 사용 안 함)
서비스:
- InpRequireNeutralReset = true - 손절 후 |z|가 진입 임계값 안으로 돌아올 때까지 대기
- InpMagic = 1544010 - 매직 넘버, 차트마다 고유해야 함
- InpSlippage = 30 - 허용 슬리피지, 포인트
- InpJournal = true - 거래 일지를 CSV로 기록
- InpJournalFile = AI_Portfolio_trades.csv - 일지 파일 이름
- InpJournalCommon = false - 일지를 터미널 데이터 폴더가 아닌 공용 폴더에 기록
설치
1. Market에서 EA를 설치하거나 파일을 터미널의 Experts 폴더에 복사합니다.
2. 아무 D1 차트에 붙이고 EA에 자동매매를 허용합니다.
3. 터미널에서 자동매매가 활성화되어 있는지 확인합니다.
4. "전문가" 일지를 확인합니다. 시작 시 해석된 심볼, 계좌 마진 모드, 활성 설정이 출력됩니다.
면책 조항
금융 시장 거래에는 손실 위험이 있습니다.
이 EA는 정의된 거래 로직을 구현한 것이며, 시장을 예측하지 않고 어떤 수익도 약속하지 않습니다.
MetaTrader 5 전략 테스터에서 얻은 결과는 과거 시뮬레이션 결과이며 실제 거래 결과가 아닙니다.
과거 성과는 미래 수익을 보장하지 않습니다.
실계좌에 사용하기 전에 데모 계좌에서 제품을 테스트하고, 감당할 수 없는 자금은 절대 투입하지
마십시오.