체결 모델

다른 표현: 주문 체결 방식, 브로커 체결 유형, 딜링데스크 vs 노딜링데스크

체결 모델이란 브로커가 주문을 처리하는 방식이다 — 스스로 거래 상대방이 되어 반대편을 받거나, 외부 유동성으로 주문을 내보내거나 — 그리고 그 방식이 누가 누구에게 어떻게 대가를 치르는지, 그 계좌가 어떤 EA를 허용할지를 결정한다.

체결 모델 — MT5 glossary overview

한눈에 보기

용어 유형
브로커 용어
난이도
중급
사용 상황
브로커 선택 · EA 평가 · MT5 운용

쉽게 말하면

매수 버튼을 누르면, 브로커가 직접 당신에게 팔거나, 아니면 주문을 다른 누군가에게 넘기고 그 수고의 대가로 수수료를 챙깁니다. 이 하나의 선택이 비용이 어떤 모습으로 나타나는지, 당신이 잃을 때 누가 버는지, 브로커가 어떤 매매 행태까지 참아 줄지를 결정합니다.

왜 중요한가

스프레드, 수수료, 리쿼트, 스캘핑 금지, 체결 품질 — 트레이더가 브로커에 대해 갖는 모든 불만은 주문이 어디로 가느냐로 거슬러 올라갑니다. 모델을 먼저 읽으면 그 불만들이 하나의 설명으로 모입니다.

  • 이해상충이 애초에 존재하는지를 결정합니다. 거래 상대방이 되는 브로커는 구조상 고객의 손실에서 벌고, 주문을 내보내는 브로커는 거래량에서 법니다.
  • 가격 체계를 설명합니다. 고정 스프레드는 누군가가 움직임을 흡수할 때만 성립하고, 그 누군가가 바로 반대편을 받는 쪽입니다.
  • 제한을 설명합니다. 최소 보유 시간, 스캘핑 금지, 라스트룩 거부는 빠른 흐름을 흡수하지 못하는 장부에서 나오는 것이지 플랫폼의 한계에서 나오는 것이 아닙니다.
  • 백테스트가 결코 보여 줄 수 없는 유일한 브로커 속성입니다. 테스터는 실제로 누가 체결해 주었을지와 무관하게 모든 주문을 가격 시계열에서 체결하기 때문입니다.

브로커의 정의

  • 마켓메이커, 딜링데스크 또는 B-book이라고도 부릅니다: 브로커가 거래의 반대편을 받으며, 그 차이를 스스로 흡수하기 때문에 고정 스프레드를 제시할 수 있습니다.
  • STP, straight-through processing: 브로커가 주문을 외부 유동성 공급자에게 넘기고, 따로 청구하는 대신 호가에 마크업을 얹습니다.
  • ECN: 주문이 원시 호가에서 참가자 풀과 만나고, 브로커는 랏당 명시된 수수료를 법니다.
  • 하이브리드: 대부분의 리테일 브로커는 고객별 또는 심볼별로 일부 흐름은 내보내고 나머지는 내부에서 소화합니다. 이것이 예외가 아니라 흔한 경우입니다.
  • 대부분의 관할권에서 표기는 브로커 스스로의 선택입니다. 브로커가 어떻게 대가를 받는지 — 마크업인지 명시된 수수료인지 — 가 관찰 가능한 사실이며, 한 브로커가 둘 다 쓸 수 있습니다: XM은 마켓메이커 표기를 쓰면서도 원시 가격에 랏당 $3.5를 더한 Zero 계좌를 함께 제공합니다.

브로커마다 다른 점

  • 같은 브로커의 계좌 유형별로, 이것이 통상입니다: 표준 계좌는 내부 소화, 로우 계좌는 외부 라우팅. 아래에서 비교하는 브로커 6곳 모두 $0 등급과 수수료 등급을 나란히 싣습니다.
  • 한 계좌 안의 심볼별로. 메이저는 라우팅하고 이종 통화나 지수는 내부에서 소화하는 분리가 흔합니다.
  • 체결 모드별로. Market Watch → 심볼 우클릭 → Specification에 Execution이 Instant, Market, Request, Exchange 중 무엇인지 표시됩니다. 리쿼트가 가능한지를 결정하는 것은 마케팅 페이지가 아니라 그 필드입니다.
  • filling 정책별로. 같은 창에 서버가 받아들이는 filling 유형 — Fill or Kill, Immediate or Cancel, Return — 이 나열되며, 브로커 사이에서도 한 브로커의 계좌 유형 사이에서도 다릅니다.
  • 계약별로. 자동매매, 스캘핑, 보유 시간에 관한 정책은 모델에서 따라 나오지만, 그것이 적혀 있는 곳은 고객 약관입니다.

EA 성과에 미치는 영향

  • Instant execution에서는 요청에 가격과 포인트 단위 편차(deviation)가 실리고, 편차를 넘는 움직임은 10004 TRADE_RETCODE_REQUOTE를 돌려줍니다. Market execution에서는 서버가 현재가로 체결하며 두 필드 모두 무시합니다.
  • 심볼이 허용하지 않는 filling 유형을 보내는 EA는 모든 주문에서 10030 TRADE_RETCODE_INVALID_FILL을 받습니다. SymbolInfoInteger로 SYMBOL_FILLING_MODE를 읽고 거기서 유형을 고르십시오. 플래그는 Fill or Kill과 Immediate or Cancel만 다루며, Return은 플래그가 아니라 Market 및 Exchange execution의 속성입니다.
  • 0보다 큰 stops level은 그 안쪽에 놓인 손절이나 목표가를 10016 TRADE_RETCODE_INVALID_STOPS로 거부합니다. 거래 상대방 장부는 이를 설정하는 경향이 있어, 좁은 스캘핑 손절은 전략이 돌아가기도 전에 실패할 수 있습니다.
  • Strategy Tester에는 체결 모델이 없습니다. Delays 설정이 밀리초 단위 지연을 흉내 내지만, 체결은 여전히 히스토리가 실어 온 스프레드로 가격 시계열에서 이루어집니다.
  • 여기의 모든 목록은 기록이 나온 히스토리를 명시하며 — 33개 중 30개가 Exness MT5 M1 히스토리를 명시합니다 — 따라서 기록 안의 비용은 어느 계좌에 입금하든 한 거래처의 비용입니다.

입금 전에 확인할 것

  • 입금할 계좌에서 브로커가 대가를 받는 방식: 스프레드 안의 마크업인지, 랏당 명시된 수수료인지. 이 6개 브로커는 한 등급에서 $0, 수수료 등급에서 랏당 $3에서 $7를 명시합니다.
  • EA가 거래하는 바로 그 심볼의, 개설할 계좌 유형에서의 MT5 심볼 사양에 있는 Execution 필드와 filling 유형.
  • 그 심볼의 stops level과 freeze level을, EA가 보내는 가장 작은 손절·목표가와 견주어.
  • 자동매매, 최소 보유 시간, 스캘핑에 관한 고객 약관 조항 — 마케팅 페이지는 계약이 아닙니다.
  • 브로커가 체결 또는 슬리피지 통계를 공개하는지, 그리고 그것이 얼마나 최근 것인지. 이 사이트의 실시간 스프레드 장부는 아직 0행입니다.

일반적인 위험

  • 표기로 고르는 것. ECN, STP, 노딜링데스크는 대부분의 지역에서 규제되지 않는 단어이며, 브로커는 대부분의 흐름을 내부에서 소화하면서도 이 단어들을 쓸 수 있습니다.
  • 플랫폼이 EA를 허용하니 계좌가 EA 친화적이라고 여기는 것. 플랫폼은 언제나 허용합니다. 제한하는 것은 고객 약관입니다.
  • 배포 후에야 최소 보유 시간을 발견하는 것. 스캘핑 EA가 이미 돌아간 뒤 그 거래들이 취소되거나 조정되어 돌아옵니다.
  • 고정 스프레드를 비용 우위로 읽는 것. 고정 가격은 거래 상대방이 변동을 떠안는다는 뜻이고, 그 값은 가격에 반영되어 있습니다.

예시

이름을 밝힌 브로커 6곳 각각의 수수료 없는 등급에서 EUR/USD 표준 1랏을 거래할 때, 그리고 테스터라면 같은 주문을 어디서 체결했을지. 수치는 브로커가 공개한 통상 값이지 우리의 측정치가 아닙니다.

Exness Standard (표기: ECN)
0.7핍, 수수료 $0
카탈로그에서 가장 낮은 표준 등급 스프레드. 로우 등급은 랏당 $3.5가 더해집니다.
TitanFX Standard (표기: ECN)
1.0핍, 수수료 $0
Blade 등급은 랏당 $7를 청구합니다 — 여기서 가장 높은 명시 수수료입니다.
AXIORY Standard / FXGT Mini / HFM Premium (표기: STP)
1.1 / 1.2 / 1.2핍, 수수료 $0
수수료 등급은 랏당 $3에서 $3.5입니다.
XM Standard (표기: 마켓메이커)
1.6핍, 수수료 $0
여기서 가장 넓습니다 — 그리고 같은 브로커가 Zero 계좌에는 원시 가격에 랏당 $3.5를 더해 매깁니다.
테스터가 체결하는 값
M1 히스토리가 실어 온 스프레드
6개 계좌 중 어디에 입금하든 동일하며, 그래서 모델은 테스터 보고서에 결코 나타나지 않습니다.

출처: 이 브로커 6곳에 대해 기록된 executionModel, baseSpreadEurUsd, commissionPerLot 필드. 랏당 $1의 수수료는 EUR/USD 표준 1랏에서 0.1핍과 같으므로, 명시된 수수료는 스프레드와 같은 단위로 환산됩니다.

계산 랏당 $3.5 ÷ 핍당 $10 = 0.35핍 · 랏당 $7 ÷ 핍당 $10 = 0.7핍 (EUR/USD 표준 1랏, 청구 1회당)

결과 수수료 없는 등급 6개에서 0.7에서 1.6핍 — 백테스트는 하나, 비용은 여섯 가지

사용하는 법

브로커가 대가를 받는 방식과 주문이 체결되는 방식에서 모델을 식별한 다음, 가장 고급스럽게 들리는 표기가 아니라 전략이 필요로 하는 것에 맞추십시오.

구간 의미
원시 호가 더하기 명시 수수료, Market execution 비용이 명시적이고 서버는 리쿼트하지 않습니다. 잦은 거래와 작은 목표에 맞습니다.
마크업이 붙은 변동 스프레드, Market execution 바깥으로 라우팅되고 비용은 호가 안에 접혀 있습니다. 수십 핍 단위 목표라면 무난합니다.
고정 스프레드, Instant execution 거래 상대방 모델입니다. 느린 전략에는 쓸 만하지만, 배포 전에 보유 시간 조항을 읽으십시오.
최소 보유 시간이 문서화된 모든 모델 기록이 아무리 좋아도 스캘핑 EA는 여기서 돌아갈 수 없습니다.
  • 대가 지급 방식을 먼저 읽으십시오. 브로커가 쓰는 어떤 이름보다 모델을 더 확실하게 식별해 줍니다.
  • 첫 주문 전에 심볼 사양을 여십시오: Execution, filling 유형, stops level. 이 세 필드가 EA의 요청이 애초에 성공할 수 있는지를 결정합니다.
  • 모델을 거래 빈도에 맞추십시오. 일봉 EA는 거의 알아차리지 못하고, 몇 핍씩 가져가는 EA는 그것으로 살고 죽습니다.
  • EA의 스프레드 가드는 백테스트가 아니라 계좌 기준으로 설정하십시오. 여기 빌드들은 20에서 60포인트로 출고되는데, 1.6핍 표준 등급은 이미 16포인트이므로 20포인트 가드는 봉을 건너뛰기 시작하기까지 4포인트의 여유밖에 남기지 않습니다.
  • 같은 구간에서 실계좌 체결과 백테스트를 비교하십시오. 그 차이가 체결 모델, 스프레드, 슬리피지가 사는 자리입니다.

체결 모델은 비교하는 브로커마다 필드로 기록해 둘 만한 값이며, 그래야 계좌들이 같은 행 위에 놓입니다. 여기 수치를 어떻게 모았는지는 방법론 페이지에 있습니다.

흔한 오해

마켓메이커를 사기의 동의어로 취급하기

제대로 된 규제 당국 아래에서 마이너스 잔고 보호와 공개된 약관을 갖춘 거래 상대방 브로커는 정당한 구조이며, 느린 전략을 작은 크기로 거래하기에 가장 싼 길인 경우도 많습니다. 이해상충은 실재하고 약관을 읽어야 할 이유이지, 부정행위를 전제할 이유는 아닙니다. 여기 기록된 브로커 6곳 모두, 마켓메이커를 포함해, 마이너스 잔고 보호를 명시합니다.

백테스트에서 모델을 읽어낼 수 있다고 믿기

Strategy Tester는 모든 주문을 히스토리가 실어 온 스프레드로 가격 시계열에서 체결합니다. 라우팅이 전혀 다른 두 계좌가 동일한 테스터 보고서를 만들어 내며, 그래서 그 계좌 자체의 기록이 체결에 관해 존재하는 유일한 증거입니다.

브로커당 모델은 하나라고 가정하기

대부분의 리테일 브로커는 계좌 유형마다 다른 모델을 돌리고, 한 계좌 안에서도 심볼 그룹마다 다른 경우가 흔합니다. 질문은 결코 그 브로커가 무엇이냐가 아니라, 그 특정 계좌와 심볼이 무엇이냐입니다.

고객 약관을 무시하기

최소 보유 시간, 스캘핑 제한, 오프마켓 가격에 체결된 거래를 조정할 권리는 플랫폼이 아니라 계약 안에 삽니다. 계약으로 제한된 EA는 완벽하게 돌아간 다음 결과가 뒤집힙니다.

Market execution 계좌에서 deviation을 슬리피지 한도로 쓰기

Deviation은 Instant execution의 것으로, 서버가 리쿼트하기 전까지 가격이 얼마나 움직여도 되는지를 제한합니다. Market execution에서는 서버가 그 필드를 무시하므로 그것에 기대는 EA는 슬리피지 보호가 전혀 없습니다. 남는 것은 주문 전의 스프레드 가드와 주문 후의 POSITION_PRICE_OPEN 확인입니다.

자세히

이 사이트의 기록이 체결에 관해 말하는 것

각 목록은 기록이 나온 히스토리를 명시하고, 빌드에 있다면 함께 출고되는 스프레드 가드를 명시합니다. 그 필드들이 테스터 보고서가 남기는 체결 흔적의 전부입니다.

공개 EA 기록 33개, 비교 대상 브로커 6곳수치
Exness MT5 M1 히스토리를 출처로 명시한 기록33개 중 30개
실제 틱(Model 4)으로 돌린 기록33개 중 22개
M1 봉에서 생성된 틱(Model 0)으로 돌린 기록33개 중 10개 (1개는 모델 미기재)
스프레드 가드를 갖춘 빌드33개 중 14개, 20–60포인트 (그중 6개는 40)
틱 기록 평균 스프레드를 싣고 있는 기록33개 중 1개 (19.14포인트, GBPJPYm, 테스터 안에서)
명시된 모델별 브로커ECN 2 · STP 3 · 마켓메이커 1
그 브로커들의 수수료 없는 등급 EUR/USD 스프레드수수료 $0에 0.7에서 1.6핍
우리가 브로커 전반에서 측정한 실시간 스프레드0행

기록 30개가 한 거래처의 히스토리를 공유하므로 그 안의 비용은 한 브로커의 비용이고, 위 브로커 6곳에서 같은 랏을 비교해 보면 라우팅 문제가 나오기도 전에 수수료 없는 등급 하나가 두 배 넘게 비싸다는 것이 드러납니다. 테스터에서 실계좌로 옮겨도 그대로 살아남는 유일한 줄이 스프레드 가드입니다. 그것은 SymbolInfoInteger(_Symbol, SYMBOL_SPREAD)를 읽어 실시간 스프레드가 빌드에 담긴 고정 MaxSpread 입력값보다 넓으면 신호를 건너뛰므로, 그 입력값은 백테스트가 아니라 입금할 계좌를 기준으로 설정해야 합니다.

관련 용어와 다음에 확인할 것

비용은 이 비교가 읽는 방식대로 읽으십시오 — 표준 등급의 스프레드, 로우 등급의 수수료, 그리고 둘 다 본 뒤에야 ECN 표기. 기록과 실계좌 사이의 간격은 슬리피지에 모델이 더하는 무엇을 합한 것이며, 스캘핑 빌드는 그 전부를 느끼고 일봉 엑스퍼트 어드바이저는 거의 느끼지 못합니다. 여기 기록된 계좌 6개는 같은 필드 위에 나란히 놓입니다.

자주 묻는 질문

내 계좌가 어떤 체결 모델을 쓰는지 어떻게 알 수 있습니까?
브로커가 대가를 받는 방식과 주문이 체결되는 방식을 보십시오. 0에 가까운 스프레드에 랏당 명시된 수수료가 있다면 그 계좌는 라우팅되고 원시 가격으로 매겨진 것이고, 수수료 없이 더 넓은 스프레드라면 비용은 호가 안에 있습니다. 그다음 해당 심볼의 Market Watch → Specification을 여십시오. Execution 필드가 Instant, Market, Request, Exchange 중 무엇인지 말해 주고, filling 유형이 서버가 무엇을 받아들이는지 말해 줍니다.
딜링데스크 브로커는 EA에 나쁩니까?
EA에 달려 있습니다. 포지션을 몇 시간이나 며칠 들고 가는 전략은 어떤 모델에서든 잘 돌아갑니다. 한 번에 몇 핍씩 가져가는 전략이 딜링데스크 브로커가 계약으로 제한하는 대상이므로, 입금 전에 정리할 질문은 품질이 아니라 허용 여부입니다.
데이터가 같은데 왜 실계좌 결과가 백테스트와 다릅니까?
테스터는 가격 시계열에서 체결하고 실계좌는 반대편에 있는 누군가로부터 체결되기 때문입니다. 스프레드, 수수료, 지연, 거부 행태는 모두 체결 모델에서 나오며, 그 어느 것도 테스터 보고서 안에는 존재하지 않습니다. 이 사이트에서 측정된 평균 스프레드를 싣고 있는 기록은 33개 중 하나뿐입니다.
ECN이면 리쿼트가 없다고 보장됩니까?
Market execution은 서버가 주문을 리쿼트하는 대신 체결하거나 거부한다는 것을 보장하고, 원시 가격 계좌는 보통 Market execution으로 돌아갑니다. 거부가 그 자체로 리쿼트보다 나은 것은 아니며 — Market execution은 deviation 필드를 무시하므로 EA는 보내기 전에 스프레드를 지키고 보낸 뒤에 체결가를 확인해야 합니다.
데모에서는 됐는데 왜 실계좌에서 EA가 10030 invalid fill을 받습니까?
두 계좌가 허용하는 filling 유형이 다르기 때문입니다. Fill or Kill, Immediate or Cancel, Return은 브로커의 체결 설정에 따라 심볼별로 정해지며, 한 유형을 하드코딩한 EA는 그것을 허용하지 않는 어떤 계좌에서든 실패합니다. 시작 시 SYMBOL_FILLING_MODE를 읽고 심볼이 보고하는 것에서 유형을 고르십시오. 플래그는 Fill or Kill과 Immediate or Cancel을 다루고, Return은 Market 및 Exchange execution 심볼에서 플래그 없이 쓸 수 있습니다.