cTrader FIX 엔진¶
소개 ¶
범위 ¶
이 명세서는 소프트웨어 개발자들을 위한 cTrader FIX 엔진 API 구현 가이드로 사용됩니다.
FIX 버전 ¶
cTrader는 FIX 버전 4.4를 지원합니다. 이 버전에 대한 자세한 정보는 이 명세서를 참조하십시오.
연결성 ¶
연결 유형 ¶
cTrader의 FIX 엔진에 대한 연결은 인터넷, VPN 터널 또는 영국의 데이터 센터 시설에 대한 크로스 커넥트를 통해 이용할 수 있습니다. 자세한 내용은 고객 문의하시기 바랍니다.
시퀀스 번호 재설정 ¶
FIX 세션의 모든 측면은 FIX 세션을 설정할 때 시퀀스 번호를 재설정해야 합니다. 로그온 메시지를 참조하십시오.
메시지 ¶
FIX 프로토콜에 정의된 대로 cTrader FIX 서버는 두 가지 다른 데이터 레벨(시스템 및 애플리케이션)을 사용합니다. 이는 필요한 워크플로우를 지원하는 데 필요한 최소한의 메시지 세트입니다. 비즈니스 요구사항과 FIX 표준이 발전함에 따라 시간이 지나면서 변경될 수 있습니다.
cTrader FIX 엔진 ¶
시스템 메시지¶
- Heartbeat (클라이언트 ↔ cTrader)
- Test Request (클라이언트 ↔ cTrader)
- Logon (클라이언트 → cTrader)
- Logout (클라이언트 → cTrader)
- Resend Request (클라이언트 ↔ cTrader)
- Reject (클라이언트 ↔ cTrader)
- Sequence Reset (클라이언트 ↔ cTrader)
애플리케이션 메시지¶
- Market Data Request (클라이언트 → cTrader)
- Market Data Snapshot/Full Refresh (클라이언트 ← cTrader)
- Market Data Incremental Refresh (클라이언트 ← cTrader)
- New Order Single (클라이언트 → cTrader)
- Order Status Request (클라이언트 → cTrader)
- Order Mass Status Request (클라이언트 → cTrader)
- Execution Report (클라이언트 ← cTrader)
- Business Message Reject (클라이언트 ← cTrader)
- Request for Positions (클라이언트 → cTrader)
- Position Report (클라이언트 ← cTrader)
- Order Cancel Request (클라이언트 → cTrader)
- Order Cancel Reject (클라이언트 ← cTrader)
- Order Cancel/Replace Request (클라이언트 → cTrader)
- Security List Request (클라이언트 → cTrader)
- Security List (클라이언트 ← cTrader)
표준 헤더 ¶
각 관리 또는 애플리케이션 메시지 앞에는 표준 헤더가 붙습니다. 헤더는 메시지 유형, 길이, 목적지, 시퀀스 번호, 발신지 및 시간을 식별합니다.
cTrader로 전송되는 모든 메시지는 다음 필드가 포함된 표준 헤더를 가져야 합니다:
| 태그 | 필드 이름 | 필수 | 값 | FIX 형식 | 코멘트 |
|---|---|---|---|---|---|
| 8 | BeginString | 예 | FIX.4.4 | 문자열 | 항상 암호화되지 않으며, 메시지의 첫 번째 필드여야 합니다. |
| 9 | BodyLength | 예 | 유효한 값 | 정수 | 메시지 본문 길이. 항상 암호화되지 않으며, 메시지의 두 번째 필드여야 합니다. |
| 35 | MsgType | 예 | A | 문자열 | 메시지 유형. 항상 암호화되지 않으며, 메시지의 세 번째 필드여야 합니다. |
| 49 | SenderCompID | 예 | 유효한 값 | 문자열 | 다음 형식의 거래 당사자 ID: <Environment>.<BrokerUID>,.Environment는 데모 또는 라이브와 같은 서버의 결정이고; BrokerUID는 cTrader에서 제공하며 Trader Login은 트레이더 계정의 숫자 식별자입니다. |
| 56 | TargetCompID | 예 | CSERVER | 문자열 | 메시지 대상. The valid value is CSERVER. |
| 57 | TargetSubID | 예 | QUOTE 또는 TRADE | 문자열 | 추가 세션 한정자. 가능한 값은 QUOTE와 TRADE입니다. |
| 50 | SenderSubID | 아니요 | 유효한 값 | 문자열 | 특정 메시지 발신자를 식별하는 데 사용되는 할당된 값. TargetSubID=QUOTE인 경우 QUOTE로 설정해야 합니다. |
| 34 | MsgSeqNum | 예 | 1 | 정수 | 메시지의 시퀀스 번호. |
| 52 | SendingTime | 예 | 20131129-15:40:08.155 | UTCTimestamp | 메시지 전송 시간은 항상 UTC(협정 세계시, GMT로도 알려짐)로 표시됩니다. |
표준 트레일러 ¶
각 메시지(관리 또는 애플리케이션)는 표준 트레일러로 종료됩니다. 트레일러는 메시지를 분리하는 데 사용되며 CheckSum (tag=10) 값의 3자리 표현을 포함합니다.
| 태그 | 필드 이름 | 필수 | 값 | FIX 형식 | 코멘트 |
|---|---|---|---|---|---|
| 10 | CheckSum | 예 | 054 | 문자열 | 3바이트 단순 체크섬. 항상 메시지의 마지막 필드이며(예: 제공), 끝에 있는 <SOH>가 메시지 종료 구분자 역할을 합니다. 3자로 정의됩니다(항상 암호화되지 않음). |
세션 메시지 ¶
Heartbeat (MsgType(35)=0)¶
하트비트 메시지는 cTrader와 클라이언트 애플리케이션 모두에서 활성 연결을 확인하기 위해 전송됩니다.
제공자의 클라이언트 애플리케이션은 로그온 메시지의 HeartBtInt (tag=108) 필드에 정의된 간격으로 반복적인 하트비트를 전송하거나 테스트 요청 메시지에 대한 응답으로 전송합니다.
| 태그 | 필드 이름 | 필수 | 값 | FIX 형식 | 코멘트 |
|---|---|---|---|---|---|
Standard Header | 예 | ||||
| 112 | TestReqID | 아니요 | 유효한 값 | 문자열 | 하트비트가 테스트 요청 메시지의 결과인 경우 TestReqID가 필요합니다. |
Standard Trailer | 예 |
Test Request (MsgType(35)=1)¶
요청 수신자로부터 하트비트를 강제로 보냅니다. 응답은 TestReqID를 포함하는 하트비트 메시지로 수신 시스템에서 전송됩니다.
| 태그 | 필드 이름 | 필수 | 값 | FIX 형식 | 코멘트 |
|---|---|---|---|---|---|
Standard Header | 예 | ||||
| 112 | TestReqID | 예 | 유효한 값 | 문자열 | 하트비트 메시지 ID. TestReqID는 증가해야 합니다. |
Standard Trailer | 예 |
Logon (bidirectional) (MsgType(35)=A)¶
로그온 메시지는 cTrader FIX 세션을 시작하기 위해 클라이언트 측 애플리케이션에서 전송되며, cTrader에서 클라이언트 측 애플리케이션으로 응답이 전송됩니다. 로그온이 완료되면 세션의 수명 주기 동안 견적 및 거래 흐름이 진행될 수 있습니다.
cTrader가 유효하지 않은 로그온 메시지를 수신하면(유효하지 않은 필드 포함), cTrader는 응답으로 로그아웃 메시지를 전송합니다.
| 태그 | 필드 이름 | 필수 | 값 | FIX 형식 | 코멘트 |
|---|---|---|---|---|---|
Standard Header | 예 | ||||
| 98 | EncryptMethod | 예 | 0 | 정수 | 메시지 암호화 체계를 정의합니다. 현재는 전송 수준 보안만 지원됩니다. 유효한 값은 0 = NONE_OTHER (암호화가 사용되지 않음)입니다. |
| 108 | HeartBtInt | 예 | 유효한 값 | 정수 | 초 단위의 하트비트 간격. 값은 config.properties 파일(클라이언트 측)에서 SERVER.POLLING.INTERVAL로 설정됩니다. 기본 간격 값은 30초입니다. HeartBtInt가 0으로 설정된 경우 하트비트 메시지가 필요하지 않습니다. |
| 141 | ResetSeqNumFlag | 아니요 | Y | 부울 | FIX 세션의 모든 측면은 시퀀스 번호를 재설정해야 합니다. 유효한 값은 Y (재설정)입니다. |
| 553 | Username | 아니요 | 유효한 값 | 문자열 | 숫자 사용자 ID. 사용자는 SenderCompID 값(사용자의 조직, tag=49)과 연결됩니다. |
| 554 | Password | 아니요 | 유효한 값 | 문자열 | 사용자 비밀번호. |
Standard Trailer | 예 |
참고
Username (tag=553) 필드는 숫자 트레이더 로그인 값을 포함해야 하며, SenderCompID (tag=49)는 환경, BrokerUID 및 점으로 구분된 트레이더 로그인을 포함해야 합니다(예: live.theBroker.12345).
아래의 로그온 메시지 예시를 참조하십시오.
요청:
8=FIX.4.4|9=126|35=A|49=live.theBroker.12345|56=CSERVER|34=1|52=20170117-08:03:04|57=TRADE|50=any_string|98=0|108=30|141=Y|553=12345|554=passw0rd!|10=131|
응답 (성공):
8=FIX.4.4|9=106|35=A|34=1|49=CSERVER|50=TRADE|52=20170117-08:03:04.509|56=live.theBroker.12345|57=any_string|98=0|108=30|141=Y|10=066|
응답 (실패):
8=FIX.4.4|9=109|35=5|34=1|49=CSERVER|50=TRADE|52=20170117-08:03:04.509|56=live.theBroker.12345|58=InternalError: RET_INVALID_DATA|10=033|
Logout (MsgType(35)=5)¶
로그아웃 메시지는 cTrader와의 세션 종료를 요청하기 위해 클라이언트 애플리케이션에서 전송되며 cTrader에 의해 응답으로 전송됩니다. 세션 로그아웃은 시장 참가자가 cTrader에 로그아웃 메시지를 보내는 것에 대한 응답으로 발생합니다. 세션을 종료하기 전에 cTrader는 요청 당사자에게 여전히 활발하게 스트리밍되고 있는 모든 가격을 취소합니다. cTrader가 유효하지 않은 로그온 메시지를 수신하면(유효하지 않은 필드 포함), cTrader는 Text (tag=58) 필드에 오류 세부 정보가 포함된 로그아웃 메시지를 응답으로 전송합니다.
| 태그 | 필드 이름 | 필수 | 값 | FIX 형식 | 코멘트 |
|---|---|---|---|---|---|
Standard Header | 예 | ||||
| 58 | Text | 아니요 | 유효한 값 | 문자열 | 로그온 거부 세부 정보. 유효하지 않은 로그온 메시지 응답으로 cTrader에서 클라이언트로의 메시지에만 사용됩니다. |
Standard Trailer | 예 |
로그아웃 메시지의 예시는 아래를 참조하세요.
요청:
8=FIX.4.4|9=86|35=5|49=live.theBroker.12345|56=CSERVER|34=161|52=20170117-09:22:33|57=TRADE|50=any_string|10=102|
응답:
8=FIX.4.4|9=90|35=5|34=160|49=CSERVER|50=TRADE|52=20170117-09:22:33.077|56=live.theBroker.12345|57=any_string|10=044|
Resend Request (MsgType(35)=2)¶
인바운드/아웃바운드 메시지는 메시지(또는 메시지들)의 재전송을 요청하는 데 사용되며, 일반적으로 시퀀스 번호에서 간격이 감지될 때 사용됩니다.
| 태그 | 필드 이름 | 필수 | 값 | FIX 형식 | 코멘트 |
|---|---|---|---|---|---|
Standard Header | 예 | ||||
| 7 | BeginSeqNo | 예 | 유효한 값 | 정수 | 재전송할 범위의 첫 번째 레코드의 메시지 시퀀스 번호. |
| 16 | EndSeqNo | 예 | 유효한 값 | 정수 | 재전송할 범위의 마지막 레코드의 메시지 시퀀스 번호. |
Standard Trailer | 예 |
Reject (bidirectional) (MsgType(35)=3)¶
세션 수준 규칙 위반으로 인해 수신된 메시지를 처리할 수 없을 때 전송됩니다. 거부된 메시지는 기록되어야 하며 수신 시퀀스 번호에 증분이 적용되어야 합니다.
| 태그 | 필드 이름 | 필수 | 값 | FIX 형식 | 코멘트 |
|---|---|---|---|---|---|
Standard Header | 예 | ||||
| 45 | RefSeqNum | 예 | 유효한 값 | SeqNum | 참조된 메시지의 시퀀스 번호. |
| 58 | Text | 아니요 | 유효한 값 | 문자열 | 자유 형식의 텍스트 문자열. |
| 354 | EncodedTextLen | 아니요 | 유효한 값 | 길이 | EncodedText (비 ASCII 문자) 필드의 바이트 단위 길이. |
| 355 | EncodedText | 아니요 | 유효한 값 | 데이터 | MessageEncoding (태그=347) 필드(표준 헤더에서)에 지정된 형식을 사용하여 인코딩된 Text (태그=58) 필드의 표현. ASCII 표현이 사용되는 경우 Text (태그=58) 필드에도 지정되어야 합니다. |
| 371 | RefTagID | 아니요 | 유효한 값 | 정수 | 메시지 거부를 초래한 FIX 필드의 태그 번호. |
| 372 | RefMsgType | 아니요 | 유효한 값 | 문자열 | 참조된 FIX 메시지의 MsgType (태그=35). |
| 373 | SessionRejectReason | 아니요 | 유효한 값 | 정수 | 거부의 코드화된 원인. 유효한 값은 다음과 같습니다: 0 = 유효하지 않은 태그 번호 1 = 필수 태그 누락 2 = 이 메시지 유형에 대해 정의된 태그 없음 3 = 정의되지 않은 태그 4 = 지정된 태그에 대한 값 없음 5 = 이 태그의 값이 범위를 벗어남 6 = 값에 대한 데이터 형식이 잘못됨 7 = 복호화 문제 8 = 서명 오류 9 = CompID 오류 10 = SendingTime 정확도 오류 11 = MsgType 유효하지 않음 12 = XML 유효성 검사 오류 13 = 태그가 반복됨 14 = 지정된 태그가 올바른 순서가 아님 15 = 반복 그룹 필드가 올바른 순서가 아님 16 = 반복 그룹에 대한 NumInGroup 카운트가 잘못됨 17 = 필드 구분자(SOH 문자)가 비데이터 값에 포함됨 |
Standard Trailer | 예 |
Sequence Reset (MsgType(35)=4)¶
인바운드/아웃바운드 메시지는 애플리케이션 수준에서 사용되어서는 안 됩니다. 시퀀스 재설정 메시지는 시퀀스 번호를 증가시킬 수만 있습니다.
| 태그 | 필드 이름 | 필수 | 값 | FIX 형식 | 코멘트 |
|---|---|---|---|---|---|
Standard Header | 예 | ||||
| 123 | GapFillFlag | 아니요 | Yes 또는 No | 문자열 | 시퀀스 재설정 메시지가 재전송되지 않을 관리 또는 애플리케이션 메시지를 대체하고 있음을 나타냅니다. |
| 36 | NewSeqNo | 예 | 1 | 정수 | 새로운 시퀀스 번호. |
Standard Trailer | 예 |
애플리케이션 메시지 ¶
Market Data Request (MsgType(35)=V)¶
| 태그 | 필드 이름 | 필수 | 값 | FIX 형식 | 코멘트 |
|---|---|---|---|---|---|
Standard Header | 예 | ||||
| 262 | MDReqID | 예 | 유효한 값 | 문자열 | 고유한 호가 요청 ID. 새로운 구독에 대한 새 ID, 구독 제거를 위해 이전에 사용된 것과 동일한 ID. |
| 263 | SubscriptionRequestType | 예 | 1 또는 2 | Char | 1 = 스냅샷 및 업데이트(구독). 2 = 이전 스냅샷 및 업데이트 요청 비활성화(구독 취소). |
| 264 | MarketDepth | 예 | 0 또는 1 | 정수 | 전체 호가창이 제공됩니다. 0 = 깊이 구독 1 = 스팟 구독 |
| 265 | MDUpdateType | 예 | 유효한 값 | 정수 | 증분 새로 고침만 지원됩니다. |
| 267 | NoMDEntryTypes | 예 | 2 | 정수 | 항상 2로 설정(매수와 매도 모두 전송됨). |
| 269 | MDEntryType | 예 | 0 또는 1 | Char | 이 반복 그룹에는 요청자가 받고자 하는 모든 유형의 시장 데이터 항목 목록이 포함되어 있습니다. 0 = Bid 1 = Offer |
| 146 | NoRelatedSym | 예 | 유효한 값 | 정수 | 요청된 심볼의 수. |
| 55 | Symbol | 예 | 유효한 값 | 롱 | Spotware에서 제공하는 상품 식별자. |
Standard Trailer | 예 |
시장 데이터 요청 메시지의 예시는 아래를 참조하세요.
스팟의 경우
요청:
8=FIX.4.4|9=131|35=V|49=live.theBroker.12345|56=CSERVER|34=3|52=20170117-10:26:54|50=QUOTE|262=876316403|263=1|264=1|265=1|146=1|55=1|267=2|269=0|269=1|10=094|
응답:
8=FIX.4.4|9=134|35=W|34=2|49=CSERVER|50=QUOTE|52=20170117-10:26:54.630|56=live.theBroker.12345|57=any_string|55=1|268=2|269=0|270=1.06625|269=1|270=1.0663|10=118|
깊이의 경우
요청:
8=FIX.4.4|9=131|35=V|49=live.theBroker.12345|56=CSERVER|34=2|52=20170117-11:13:44|50=QUOTE|262=876316411|263=1|264=0|265=1|146=1|55=1|267=2|269=0|269=1|10=087|
응답:
8=FIX.4.4|9=310|35=W|34=2|49=CSERVER|50=QUOTE|52=20180925-12:05:28.284|56=live.theBroker.12345|57=Quote|55=1|268=6|269=1|270=1.11132|271=3000000|278=16|269=1|270=1.11134|271=5000000|278=17|269=1|270=1.11133|271=3000000|278=15|269=0|270=1.1112|271=2000000|278=12|269=0|270=1.11121|271=1000000|278=13|269=0|270=1.11122|271=3000000|278=14|10=247|
8=FIX.4.4|9=693|35=X|34=2|49=CSERVER|50=QUOTE|52=20170117-11:13:44.461|56=live.theBroker.12345|57=any_string|268=12|279=0|269=1|278=7475|55=1|270=1.0691|271=2000000|279=0|269=1|278=7476|55=1|270=1.06911|271=3000000|279=0|269=1|278=7484|55=1|270=1.06931|271=34579000|279=0|269=1|278=7485|55=1|270=1.06908|271=1000000|279=0|269=1|278=7483|55=1|270=1.06906|271=500000|279=0|269=1|278=7482|55=1|270=1.06907|271=500000|279=0|269=1|278=7488|55=1|270=1.06909|271=3000000|279=0|269=0|278=7468|55=1|270=1.06898|271=500000|279=0|269=0|278=7467|55=1|270=1.06874|271=32371000|279=0|269=0|278=7457|55=1|270=1.06899|271=1000000|279=0|269=0|278=7478|55=1|270=1.06896|271=7000000|279=0|269=0|278=7477|55=1|270=1.06897|271=1500000|10=111|
8=FIX.4.4|9=376|35=X|34=3|49=CSERVER|50=QUOTE|52=20170117-11:13:44.555|56=live.theBroker.12345|57=any_string|268=8|279=0|269=0|278=7491|55=1|270=1.06897|271=1000000|279=0|269=0|278=7490|55=1|270=1.06898|271=1000000|279=0|269=0|278=7489|55=1|270=1.06874|271=32373000|279=0|269=1|278=7496|55=1|270=1.06931|271=34580000|279=2|278=7477|55=1|279=2|278=7468|55=1|279=2|278=7467|55=1|279=2|278=7484|55=1|10=192|
Market Data Snapshot/Full Refresh (MsgType(35)=W)¶
| 태그 | 필드 이름 | 필수 | 값 | FIX 형식 | 코멘트 |
|---|---|---|---|---|---|
Standard Header | 예 | ||||
| 262 | MDReqID | 예 | 유효한 값 | 문자열 | 이전에 전송된 시장 데이터 요청의 ID. |
| 55 | Symbol | 예 | 유효한 값 | 롱 | Spotware에서 제공하는 상품 식별자. |
| 268 | NoMDEntries | 예 | 유효한 값 | 정수 | 다음에 오는 항목의 수. |
| 269 | MDEntryType | 아니요 | 0 또는 1 | Char | 유효한 값은 다음과 같습니다: 0 = 매수 1 = 매도 NoMDEntries (태그=268) > 0인 경우에만 필요. |
| 299 | QuoteEntryID | 아니요 | 유효한 값 | 문자열 | QuoteSet의 일부로서 호가의 고유 식별. |
| 270 | MDEntryPx | 아니요 | 1.2345 | 가격 | 시장 데이터 항목의 가격. NoMDEntries (태그=268) > 0인 경우에만 필요합니다. |
| 271 | MDEntrySize | 아니요 | 500000 | 거래량 | 시장 데이터 항목의 거래량. NoMDEntries (태그=268) > 0인 경우에만 필요합니다. |
| 278 | MDEntryID | 아니요 | 유효한 값 | 문자열 | 고유한 시장 데이터 항목 식별자. |
Standard Trailer | 예 |
Market Data Incremental Refresh (MsgType(35)=X)¶
| 태그 | 필드 이름 | 필수 | 값 | FIX 형식 | 코멘트 |
|---|---|---|---|---|---|
Standard Header | 예 | ||||
| 262 | MDReqID | 예 | 유효한 값 | 문자열 | 이전에 전송된 시장 데이터 요청의 ID. |
| 268 | NoMDEntries | 예 | 유효한 값 | 정수 | 다음에 오는 항목의 수. 이 반복 그룹에는 요청자가 받고자 하는 모든 유형의 시장 데이터 항목 목록이 포함되어 있습니다. |
| 279 | MDUpdateAction | 예 | 0 또는 2 | Char | 시장 데이터 업데이트 작업의 유형. 유효한 값은 다음과 같습니다: 0 = 신규 2 = 삭제 |
| 269 | MDEntryType | 아니요 | 0 또는 1 | Char | 유효한 값은 다음과 같습니다: 0 = 매수 1 = 매도 |
| 278 | MDEntryID | 예 | 유효한 값 | 문자열 | 시장 데이터 항목의 ID. |
| 55 | Symbol | 예 | 유효한 값 | 롱 | Spotware에서 제공하는 상품 식별자. |
| 270 | MDEntryPx | 아니요 | 1.2345 | 가격 | MDUpdateAction (태그=279) = 0인 경우에만 필요합니다. |
| 271 | MDEntrySize | 아니요 | 10000 | 이중 | MDUpdateAction (태그=279) = 0인 경우에만 필요합니다. |
Standard Trailer | 예 |
New Order Single (MsgType(35)=D)¶
신규 주문 단일 메시지는 다음과 같은 형식을 가집니다.
| 태그 | 필드 이름 | 필수 | 값 | FIX 형식 | 코멘트 |
|---|---|---|---|---|---|
Standard Header | 예 | ||||
| 11 | ClOrdID | 예 | 유효한 값 | 문자열 | 클라이언트가 할당한 주문의 고유 식별자. |
| 55 | Symbol | 예 | 유효한 값 | 롱 | Spotware에서 제공하는 상품 식별자. |
| 54 | Side | 예 | 1 또는 2 | 정수 | 1 = Buy 2 = Sell |
| 60 | TransactTime | 예 | 유효한 값 | 타임스탬프 | 클라이언트가 생성한 요청 시간. |
| 38 | OrderQty | 예 | 유효한 값 | 수량 | 주문된 주식의 수량. 이는 주식의 경우 주식 수를 나타내며, 옵션, 선물, 전환사채 등의 경우 일반적인 관행에 따라 계약 수를 나타냅니다. 최대 정밀도는 0.01입니다. FIX 4.2 이전에는 이 필드의 유형이 "Integer"였습니다. |
| 40 | OrdType | 예 | 1, 2 또는 3 | Char | 1 = 시장가, 주문은 즉시 취소(IOC) 방식으로 처리됩니다(TimeInForce, 태그=59). 2 = 지정가, 주문은 취소 전까지 유효(GTC) 방식으로 처리됩니다(TimeInForce, 태그=59). 3 = 역지정가, 주문은 취소 전까지 유효(GTC) 방식으로 처리됩니다(TimeInForce, 태그=59). |
| 44 | Price | 아니요 | 유효한 값 | 가격 | 클라이언트가 수락할 수 있는 최악의 클라이언트 가격. OrdType (태그=40) = 2인 경우에만 필요하며, 이 경우 이 가격을 충족할 수 없으면 주문이 체결되지 않습니다. |
| 99 | StopPx | 아니요 | 유효한 값 | 가격 | 역지정 주문을 발동시키는 가격. OrdType (태그=40) = 3인 경우에만 필요하며, 이 경우 이 가격을 충족할 수 없으면 주문이 체결되지 않습니다. |
| 59 | TimeInForce | 아니요 | 1, 3 or 6 | 문자열 | 더 이상 사용되지 않으며, 이 값은 무시됩니다. TimeInForce는 OrdType (태그=40)과 ExpireTime (태그=126)에 따라 자동으로 감지됩니다: 1 = 취소 전까지 유효(GTC), ExpireTime (태그=126)이 정의되지 않은 경우에만 지정가 및 역지정가 주문(OrdType, 태그=40)에 사용됩니다. 3 = 즉시 취소(IOC), 시장가 주문(OrdType, 태그=40)에만 사용됩니다. 6 = 지정일까지 유효(GTD), ExpireTime (태그=126)이 정의된 경우에만 지정가 및 역지정가 주문(OrdType, 태그=40)에 사용됩니다. |
| 126 | ExpireTime | 아니요 | 20140215-07:24:55 | 타임스탬프 | YYYYMMDD-HH:MM:SS 형식의 만료 시간. 할당된 경우, 주문은 GTD 방식(TimeInForce: GTD)으로 처리됩니다. |
| 721 | PosMaintRptID | 아니요 | 유효한 값 | 문자열 | 이 주문이 배치되어야 하는 포지션 ID. 설정되지 않은 경우, 새 포지션이 생성되고 해당 ID가 체결 보고 메시지에서 반환됩니다. 헤징 계좌에만 지정할 수 있습니다. |
| 494 | Designation | 아니요 | 유효한 값 | 문자열 | 사용자 지정 주문 라벨. |
Standard Trailer | 예 |
아래에서 신규 주문 단일 메시지의 예를 참조하세요.
새 포지션에 대한 시장가 주문
요청:
8=FIX.4.4|9=143|35=D|49=live.theBroker.12345|56=CSERVER|34=77|52=20170117-10:02:14|50=any_string|57=TRADE|11=876316397|55=1|54=1|60=20170117-10:02:14|40=1|38=10000|10=010|
응답:
8=FIX.4.4|9=197|35=8|34=77|49=CSERVER|50=TRADE|52=20170117-10:02:14.720|56=live.theBroker.12345|57=any_string|11=876316397|14=0|37=101|38=10000|39=0|40=1|54=1|55=1|59=3|60=20170117-10:02:14.591|150=0|151=10000|721=101|10=149|
8=FIX.4.4|9=206|35=8|34=78|49=CSERVER|50=TRADE|52=20170117-10:02:15.045|56=live.theBroker.12345|57=any_string|6=1.0674|11=876316397|14=10000|32=10000|37=101|38=10000|39=2|40=1|54=1|55=1|59=3|60=20170117-10:02:14.963|150=F|151=0|721=101|10=077|
기존 포지션에 대한 시장가 주문
요청:
8=FIX.4.4|9=151|35=D|49=live.theBroker.12345|56=CSERVER|34=80|52=20170117-10:02:55|50=any_string|57=TRADE|11=876316398|55=1|54=1|60=20170117-10:02:55|40=1|38=10000|721=101|10=120|
응답:
8=FIX.4.4|9=197|35=8|34=80|49=CSERVER|50=TRADE|52=20170117-10:02:56.003|56=live.theBroker.12345|57=any_string|11=876316398|14=0|37=102|38=10000|39=0|40=1|54=1|55=1|59=3|60=20170117-10:02:55.984|150=0|151=10000|721=101|10=156|
8=FIX.4.4|9=207|35=8|34=81|49=CSERVER|50=TRADE|52=20170117-10:02:56.239|56=live.theBroker.12345|57=any_string|6=1.06735|11=876316398|14=10000|32=10000|37=102|38=10000|39=2|40=1|54=1|55=1|59=3|60=20170117-10:02:56.210|150=F|151=0|721=101|10=127
기존 포지션에 대한 지정가 주문
요청:
8=FIX.4.4|9=162|35=D|49=live.theBroker.12345|56=CSERVER|34=89|52=20170117-10:06:22|50=any_string|57=TRADE|11=876316400|55=1|54=2|60=20170117-10:06:22|40=2|44=1.07162|38=50000|721=101|10=122|
응답:
8=FIX.4.4|9=208|35=8|34=90|49=CSERVER|50=TRADE|52=20170117-10:06:22.466|56=live.theBroker.12345|57=any_string|11=876316400|14=0|37=104|38=50000|39=0|40=2|44=1.07162|54=2|55=1|59=1|60=20170117-10:06:22.436|150=0|151=50000|721=101|10=149|
새 포지션에 대한 역지정가 주문
요청:
8=FIX.4.4|9=153|35=D|49=live.theBroker.12345|56=CSERVER|34=9|52=20170117-12:10:48|57=TRADE|50=any_string|11=876316418|55=1|54=1|60=20170117-12:10:48|40=3|38=50000|99=1.07148|10=249|
응답:
8=FIX.4.4|9=207|35=8|34=8|49=CSERVER|50=TRADE|52=20170117-12:10:48.400|56=live.theBroker.12345|57=any_string|11=876316418|14=0|37=205|38=50000|39=0|40=3|54=1|55=1|59=1|60=20170117-12:10:48.362|99=1.07148|150=0|151=50000|721=202|10=122|
Order Status Request (MsgType(35)=H)¶
주문 상태 요청 메시지는 기관이 트레이더로부터 주문 상태 메시지를 생성하는 데 사용됩니다. 올바른 상호 작용을 위해서는 모든 주문에 대해 고유한 클라이언트 주문 식별자(ClOrdID)를 갖는 것이 매우 중요합니다.
| 태그 | 필드 이름 | 필수 | 값 | FIX 형식 | 코멘트 |
|---|---|---|---|---|---|
Standard Header | 예 | ||||
| 11 | ClOrdID | 예 | 유효한 값 | 문자열 | 클라이언트가 할당한 주문의 고유 식별자. |
| 54 | Side | 아니요 | 1 또는 2 | 정수 | 1 = Buy 2 = Sell |
Standard Trailer | 예 |
아래에서 주문 상태 요청 메시지의 예를 참조하세요.
요청:
8=FIX.4.4|9=98|35=H|49=live.theBroker.12345|56=CSERVER|34=95|52=20170117-10:08:31|50=any_string|57=TRADE|11=876316400|10=191|
응답:
8=FIX.4.4|9=208|35=8|34=95|49=CSERVER|50=TRADE|52=20170117-10:08:31.819|56=live.theBroker.12345|57=any_string|11=876316400|14=0|37=104|38=50000|39=0|40=2|44=1.07162|54=2|55=1|59=1|60=20170117-10:06:22.436|150=0|151=50000|721=101|10=158|
Order Mass Status Request (MsgType(35)=AF)¶
주문 대량 상태 요청 메시지는 요청 내에 지정된 기준과 일치하는 주문의 상태를 요청합니다. 답변은 여러 개의 체결 보고 메시지(각 주문에 대해 하나씩)로 반환되거나, 주문을 찾을 수 없는 경우 비즈니스 메시지 거부 메시지로 반환됩니다.
| 태그 | 필드 이름 | 필수 | 값 | FIX 형식 | 코멘트 |
|---|---|---|---|---|---|
Standard Header | 예 | ||||
| 584 | MassStatusReqID | 예 | 유효한 값 | 문자열 | 클라이언트가 할당한 Mass Status Request의 고유 ID. |
| 585 | MassStatusReqType | 예 | 유효한 값 | 정수 | 7 = 모든 주문의 상태. 현재 7 값만 지원됩니다. |
| 225 | IssueDate | 아니요 | 유효한 값 | 문자열 | 설정된 경우, 응답에는 이 날짜 이전에 생성된 주문만 포함됩니다. |
Standard Trailer | 예 |
아래에서 주문 Mass Status Request 메시지의 예를 참조하세요.
요청:
8=FIX.4.4|9=117|35=AF|34=3|49=live.theBroker.12345|52=20170404-07:20:55.325|56=CSERVER|57=TRADE|225=20170404-07:20:44.582|584=mZzEY|585=7|10=065|
응답:
8=FIX.4.4|9=199|35=8|34=13|49=CSERVER|50=TRADE|52=20170404-07:20:55.333|56=live.theBroker.12345|14=0|37=635|38=100000|39=0|40=2|44=1.35265|54=2|55=1|59=1|60=20170404-07:20:44.582|150=I|151=100000|584=mZzEY|721=617|911=1|10=152|
Execution Report (MsgType(35)=8)¶
수락된 주문에 대한 Execution Report 메시지는 다음 형식을 갖습니다.
| 태그 | 필드 이름 | 필수 | 값 | FIX 형식 | 코멘트 |
|---|---|---|---|---|---|
Standard Header | 예 | ||||
| 37 | OrderID | 예 | 유효한 값 | 문자열 | cTrader 주문 ID. |
| 11 | ClOrdID | 아니요 | 유효한 값 | 문자열 | 클라이언트가 할당한 주문의 고유 식별자. |
| 911 | TotNumReports | 아니요 | 유효한 값 | 정수 | Order Mass Status Request 메시지에 대한 응답으로 반환된 총 보고서 수. |
| 150 | ExecType | 예 | 유효한 값 | Char | 0 = New 4 = Canceled 5 = Replace 8 = Rejected C = Expired F = Trade I = Order Status |
| 39 | OrdStatus | 예 | 유효한 값 | Char | 0 = 신규 1 = 부분 체결 2 = 전체 체결 8 = 거부됨 4 = 취소됨 (주문이 부분 체결된 경우, Canceled가 반환되어 (tag=151), LeavesQty가 취소되었으며 이후 체결되지 않음을 나타냅니다). C = 만료됨 |
| 55 | Symbol | 아니요 | 유효한 값 | 롱 | Spotware에서 제공하는 상품 식별자. |
| 54 | Side | 아니요 | 1 또는 2 | 정수 | 1 = 매수 2 = 매도 |
| 60 | TransactTime | 아니요 | 유효한 값 | 타임스탬프 | Execution Report 메시지가 나타내는 거래의 실행 시간 (UTC 기준). |
| 6 | AvgPx | 아니요 | 유효한 값 | 정수 | 거래가 체결된 가격. IOC 또는 GTD 주문의 경우, 이는 체결된 주문의 거래량 가중평균가격(VWAP)입니다. |
| 38 | OrderQty | 아니요 | 유효한 값 | 수량 | 이는 주식의 경우 주식 수를 나타내며, 옵션, 선물, 전환사채 등의 경우 일반적인 관행에 따라 계약 수를 나타냅니다. FIX 4.2 이전에는 이 필드의 유형이 "Integer"였습니다. |
| 151 | LeavesQty | 아니요 | 유효한 값 | 수량 | 아직 체결되지 않은 주문의 수. 가능한 값은 0 (전체 체결)에서 OrderQty (부분 체결) 사이입니다. |
| 14 | CumQty | 아니요 | 유효한 값 | 수량 | 체결된 주문의 총 수. |
| 32 | LastQty | 아니요 | 유효한 값 | 수량 | 이번(마지막) 체결에서 체결된 주문의 매수/매도 수량. |
| 40 | OrdType | 아니요 | 1 또는 2 | Char | 1 = 시장가 2 = 지정가 |
| 44 | Price | 아니요 | 유효한 값 | 가격 | New Order Single 메시지에 제공된 경우, 이 Execution Report 메시지에서 그대로 반환됩니다. |
| 99 | StopPx | 아니요 | 유효한 값 | 가격 | New Order Single 메시지에 제공된 경우, 이 Execution Report 메시지에서 그대로 반환됩니다. |
| 59 | TimeInForce | 아니요 | 1, 3 또는 6 | 문자열 | 1 = 취소 전까지 유효(GTC) 3 = 즉시 체결 아니면 취소(IOC) 6 = 지정일까지 유효(GTD) |
| 126 | ExpireTime | 아니요 | 20140215-07:24:55 | 타임스탬프 | New Order Single 메시지에 제공된 경우, 이 Execution Report 메시지에서 그대로 반환됩니다. |
| 58 | Text | 아니요 | 유효한 값 | 문자열 | 가능한 경우, 메시지는 Execution Report를 설명합니다. |
| 103 | OrdRejReason | 아니요 | 0 | 정수 | 0 = OrdRejReason.BROKER_EXCHANGE_OPTION |
| 721 | PosMaintRptID | 아니요 | 유효한 값 | 문자열 | 포지션 ID. |
| 494 | Designation | 아니요 | 유효한 값 | 문자열 | 클라이언트의 사용자 지정 주문 라벨. |
| 584 | MassStatusReqID | 아니요 | 유효한 값 | 문자열 | 클라이언트가 할당한 mass status request의 고유 ID. |
| 1000 | AbsoluteTP | 아니요 | 유효한 값 | 가격 | 이익실현이 발동될 절대 가격. |
| 1001 | RelativeTP | 아니요 | 유효한 값 | 가격 | 이익실현이 발동될 진입 가격으로부터의 거리(핍 단위). |
| 1002 | AbsoluteSL | 아니요 | 유효한 값 | 가격 | 손절매가 발동될 절대 가격. |
| 1003 | RelativeSL | 아니요 | 유효한 값 | 가격 | 손절매가 발동될 진입 가격으로부터의 거리(핍 단위). |
| 1004 | TrailingSL | 아니요 | N 또는 Y | 부울 | 손절매가 추적 중인지 여부를 나타냅니다. N = 손절매가 추적 중이 아님. Y = 손절매가 추적 중임. |
| 1005 | TriggerMethodSL | 아니요 | 유효한 값 | 정수 | 손절매의 지정된 발동 방식. 1 = 손절매는 거래 방향에 의해 발동됩니다. 2 = 손절매는 반대 방향에 의해 발동됩니다(매수 포지션의 경우 매수 가격, 매도 포지션의 경우 매도 가격). 3 = 손절매는 거래 방향에 따라 연속된 두 번의 틱 이후에 발동됩니다. 4 = 손절매는 반대 방향에 따라 연속된 두 번의 틱 이후에 발동됩니다(매수 포지션의 경우 두 번째 매수 틱, 매도 포지션의 경우 두 번째 매도 틱). |
| 1006 | GuaranteedSL | 아니요 | N 또는 Y | 부울 | 손절매가 보장되는지 여부를 나타냅니다. N = 손절매가 보장되지 않습니다. Y = 손절매가 보장됩니다. |
Standard Trailer | 예 |
가이드 끝부분에서 새 주문 단일 예시를 참조하세요.
Business Message Reject (MsgType(35)=j)¶
이 메시지 유형은 시스템이 구독 요청을 처리할 수 없거나 주문을 실행할 수 없을 때 전송됩니다.
| 태그 | 필드 이름 | 필수 | 값 | FIX 형식 | 코멘트 |
|---|---|---|---|---|---|
Standard Header | 예 | ||||
| 45 | RefSeqNum | 아니요 | 유효한 값 | 정수 | 거부된 메시지의 MsgSeqNum (태그=34). |
| 372 | RefMsgType | 아니요 | 유효한 값 | 문자열 | 참조되는 FIX 메시지의 MsgType (태그=35). |
| 379 | BusinessRejectRefID | 아니요 | 유효한 값 | 문자열 | 참조되는 메시지의 비즈니스 레벨 ID 필드 값. 해당 ID 필드가 지정되지 않은 경우가 아니라면 필수입니다. |
| 380 | BusinessRejectReason | 예 | 0 | 정수 | 비즈니스 메시지 거부 사유를 식별하는 코드. 0 = 기타 |
| 58 | Text | 아니요 | 유효한 값 | 문자열 | 가능한 경우, 거부 사유를 설명하는 메시지. |
Standard Trailer | 예 |
아래에서 비즈니스 메시지 거부 메시지의 예시를 참조하세요.
8=FIX.4.4|9=149|35=j|34=2|49=CSERVER|52=20170105-06:36:00.912|56=live.theBroker.12345|57=any_string|58=Message to explain reason for rejection|379=u4Jr7Rr5t2VS7HSP|380=0|10=123|
Request for Positions (MsgType(35)=AN)¶
| 태그 | 필드 이름 | 필수 | 값 | FIX 형식 | 코멘트 |
|---|---|---|---|---|---|
Standard Header | 예 | ||||
| 710 | PosReqID | 예 | 유효한 값 | 문자열 | 고유한 요청 ID (클라이언트가 설정). |
| 721 | PosMaintRptID | 아니요 | 유효한 값 | 문자열 | 요청할 포지션 ID. 설정되지 않은 경우, 모든 오픈 포지션이 반환됩니다. |
Standard Trailer | 예 |
아래에서 포지션 요청 메시지의 예시를 참조하세요.
요청:
8=FIX.4.4|9=100|35=AN|49=live.theBroker.12345|56=CSERVER|34=99|52=20170117-10:09:54|50=any_string|57=TRADE|710=876316401|10=103|
응답:
8=FIX.4.4|9=163|35=AP|34=98|49=CSERVER|50=TRADE|52=20170117-10:09:54.076|56=live.theBroker.12345|57=any_string|55=1|710=876316401|721=101|727=1|728=0|730=1.06671|702=1|704=0|705=30000|10=182|
Position Report (MsgType(35)=AP)¶
| 태그 | 필드 이름 | 필수 | 값 | FIX 형식 | 코멘트 |
|---|---|---|---|---|---|
Standard Header | 예 | ||||
| 710 | PosReqID | 예 | 유효한 값 | 문자열 | 포지션 요청 메시지의 ID. |
| 721 | PosMaintRptID | 아니요 | 유효한 값 | 문자열 | 포지션 ID, PosReqResult (태그=728)가 VALID_REQUEST가 아닌 경우 설정되지 않습니다. |
| 727 | TotalNumPosReports | 예 | 유효한 값 | 문자열 | PosReqResult (태그=728)가 VALID_REQUEST일 때 시퀀스의 총 포지션 보고서 수, 그렇지 않으면 0. |
| 728 | PosReqResult | 예 | 0 또는 2 | 문자열 | 0 = 유효한 요청 2 = 기준에 맞는 오픈 포지션이 없습니다. |
| 55 | Symbol | 아니요 | 유효한 값 | 문자열 | 현재 포지션 보고서가 작성된 심볼. PosReqResult (태그=728)가 VALID_REQUEST가 아닌 경우 설정되지 않습니다. |
| 702 | NoPositions | 아니요 | 1 | 문자열 | PosReqResult (태그=728)가 VALID_REQUEST일 때 1, 그렇지 않으면 설정되지 않습니다. |
| 704 | LongQty | 아니요 | 유효한 값 | 문자열 | 매수 거래 방향의 경우 포지션의 오픈 거래량, 매도 거래 방향의 경우 0과 동일. PosReqResult (태그=728)가 VALID_REQUEST가 아닌 경우 설정되지 않습니다. |
| 705 | ShortQty | 아니요 | 유효한 값 | 문자열 | 매도 거래 방향의 경우 포지션의 오픈 거래량, 매수 거래 방향의 경우 0과 동일. PosReqResult (태그=728)가 VALID_REQUEST가 아닌 경우 설정되지 않습니다. |
| 730 | SettlPrice | 아니요 | 유효한 값 | 문자열 | 현재 포지션 보고서의 오픈 거래량의 평균 가격. |
| 1000 | AbsoluteTP | 아니요 | 유효한 값 | 가격 | 이익실현이 발동될 절대 가격. |
| 1002 | AbsoluteSL | 아니요 | 유효한 값 | 가격 | 손절매가 발동될 절대 가격. |
| 1004 | TrailingSL | 아니요 | 유효한 값 | 부울 | 손절매가 추적 중인지 여부를 나타냅니다. N = 손절매가 추적 중이 아님. Y = 손절매가 추적 중임. |
| 1005 | TriggerMethodSL | 아니요 | 유효한 값 | 정수 | 손절매의 지정된 발동 방식. 1 = 손절매는 거래 방향에 의해 발동됩니다. 2 = 손절매는 반대 방향에 의해 발동됩니다(매수 포지션의 경우 매수 가격, 매도 포지션의 경우 매도 가격). 3 = 손절매는 거래 방향에 따라 연속된 두 번의 틱 이후에 발동됩니다. 4 = 손절매는 반대 방향에 따라 연속된 두 번의 틱 이후에 발동됩니다(매수 포지션의 경우 두 번째 매수 틱, 매도 포지션의 경우 두 번째 매도 틱). |
| 1006 | GuaranteedSL | 아니요 | 유효한 값 | 부울 | 손절매가 보장되는지 여부를 나타냅니다. N = 손절매가 보장되지 않습니다. Y = 손절매가 보장됩니다. |
Standard Trailer | 예 |
Order Cancel Request (MsgType(35)=F)¶
| 태그 | 필드 이름 | 필수 | 값 | FIX 형식 | 코멘트 |
|---|---|---|---|---|---|
Standard Header | 예 | ||||
| 41 | OrigClOrdID | 예 | 유효한 값 | 문자열 | 클라이언트가 할당한 취소할 주문의 고유 식별자. |
| 37 | OrderID | 아니요 | 유효한 값 | 문자열 | cServer가 반환한 주문의 고유 ID. |
| 11 | ClOrdID | 예 | 유효한 값 | 문자열 | 클라이언트가 할당한 취소 요청의 고유 ID. |
Standard Trailer | 예 |
아래의 주문 취소 요청 메시지 예시를 참조하세요.
요청:
8=FIX.4.4|9=115|35=F|34=2|49=live.theBroker.12345|50=Trade|52=20170721-13:41:21.694|56=CSERVER|57=TRADE|11=jR8dBPcZEQa9|41=n9Tm8x1AavO5|10=182|
응답 (성공):
8=FIX.4.4|9=221|35=8|34=3|49=CSERVER|50=TRADE|52=20170721-13:41:21.784|56=live.theBroker.12345|57=Trade|11=jR8dBPcZEQa9|14=0|37=641|38=100000|39=4|40=2|41=n9Tm8x1AavO5|44=1.499|54=1|55=1|59=1|60=20170721-13:41:21.760|150=4|151=100000|721=624|10=180|
응답 (실패):
8=FIX.4.4|9=174|35=j|34=3|49=CSERVER|50=TRADE|52=20170721-13:41:21.856|56=live.theBroker.12345|57=Trade|58=ORDER_NOT_FOUND:Order with clientOrderId=n9Tm8x1AavO5 not found.|379=jR8dBPcZEQa9|380=0|10=075|
Order Cancel Reject (MsgType(35)=9)¶
| 태그 | 필드 이름 | 필수 | 값 | FIX 형식 | 코멘트 |
|---|---|---|---|---|---|
Standard Header | 예 | ||||
| 37 | OrderID | 예 | 유효한 값 | 문자열 | 시스템이 취소할 수 없었던 주문의 고유 식별자. |
| 11 | ClOrdID | 예 | 유효한 값 | 문자열 | 주문 취소 요청의 고유 식별자. |
| 41 | OrigClOrdID | 아니요 | 유효한 값 | 문자열 | 클라이언트가 할당한 취소하려고 시도한 주문의 고유 식별자. |
| 39 | OrdStatus | 예 | 유효한 값 | Char | 0 = 신규 1 = 부분 체결 2 = 전량 체결 8 = 거부됨 4 = 취소됨 (주문이 부분 체결되었을 때 Canceled가 반환되며 (tag=151), LeavesQty가 취소되고 이후 체결되지 않음을 의미). C = 만료됨 |
| 434 | CxlRejResponseTo | 예 | 1 또는 2 | Char | 1 = 주문 취소 거부. 2 = 다른 터미널에서의 주문 수정 거부. |
| 58 | Text | 아니요 | 유효한 값 | 문자열 | 주문이 실행 중입니다. |
Standard Trailer | 예 |
아래의 주문 취소 거부 메시지 예시를 참조하세요.
응답:
8=FIX.4.4|9=156|35=9|34=3|49=CSERVER|50=TRADE|52=20181024-12:35:02.896|56=live.theBroker.12345|57=Trade|11=gBljx7YOg5jY|37=629|39=0|41=FdXLfS0tTyUL|58=Order is under execution|434=1|10=109|
Order Cancel/Replace Request (MsgType(35)=G)¶
| 태그 | 필드 이름 | 필수 | 값 | FIX 형식 | 코멘트 |
|---|---|---|---|---|---|
Standard Header | 예 | ||||
| 41 | OrigClOrdID | 예 | Any valid value | 문자열 | 클라이언트가 할당한 수정할 주문의 고유 식별자. |
| 37 | OrderID | 아니요 | 유효한 값 | 문자열 | 서버가 할당한 수정할 원래 주문의 고유 ID. 사용하기 선호되는 방법. |
| 11 | ClOrdID | 예 | 유효한 값 | 문자열 | 클라이언트가 할당한 수정 요청의 고유 ID. |
| 38 | OrderQty | 예 | 유효한 값 | 수량 | 이전 값을 대체할 기존 또는 새로 지정된 수량. |
| 44 | Price | 아니요 | 유효한 값 | 가격 | 이전 값을 대체할 기존 또는 새로 지정된 지정가. 지정가 주문에만 유효. |
| 99 | StopPx | 아니요 | 유효한 값 | 가격 | 이전 값을 대체할 기존 또는 새로 지정된 역지정가. 역지정가 주문에만 유효. |
| 126 | ExpireTime | 아니요 | 20140215-07:24:55 | 타임스탬프 | 기존 또는 새로 지정된 만료 시간. 예약 주문에만 유효. |
Standard Trailer | 예 |
아래의 주문 취소/대체 요청 메시지 예시를 참조하세요.
요청:
8=FIX.4.4|9=123|35=G|34=3|49=live.theBroker.12345|50=Trade|52=20170721-13:42:17.680|56=CSERVER|57=TRADE|11=Is03AvsknNYK|38=5000|41=n9Tm8x1AavO5|44=1.1|10=010|
응답 (성공):
8=FIX.4.4|9=192|35=8|34=3|49=CSERVER|50=TRADE|52=20170721-13:42:18.784|56=live.theBroker.12345|57=Trade|11=Is03AvsknNYK|14=0|37=629|38=5000|39=0|40=2|44=1.1|54=1|55=1|59=1|60=20170721-13:42:18.760|150=5|151=5000|721=624|10=150|
응답 (실패):
8=FIX.4.4|9=171|35=j|34=3|49=CSERVER|50=TRADE|52=20170721-13:42:18.784|56=live.theBroker.12345|57=Trade|58=ORDER_NOT_FOUND:Order with orderId:4429421711699105367 isn't found|379=NXek3EzJvMme|380=0|10=245|
Market Data Request Reject (MsgType(35)=Y)¶
| 태그 | 필드 이름 | 필수 | 값 | FIX 형식 | 코멘트 |
|---|---|---|---|---|---|
Standard Header | 예 | ||||
| 262 | MDReqID | 예 | 유효한 값 | 문자열 | 요청의 MDReqID (tag=262)를 참조해야 합니다. |
| 281 | MDReqRejReason | 아니요 | 유효한 값 | 정수 | 0 = 알 수 없는 심벌 4 = 지원되지 않는 SubscriptionRequestType (tag=263) 5 = 지원되지 않는 MarketDepth (tag=264) |
Standard Trailer | 예 |
아래의 시장 데이터 요청 거부 메시지 예시를 참조하세요.
요청:
8=FIX.4.4|9=148|35=V|34=2|49=live.theBroker.12345|50=Quote|52=20170920-09:52:13.032|56=CSERVER|57=QUOTE|262=CS8260:sXlXex|263=1|264=0|265=1|146=1|55=CS8260|267=2|269=0|269=1|10=129|
거부:
8=FIX.4.4|9=164|35=Y|34=2|49=CSERVER|50=QUOTE|52=20170920-09:52:13.036|56=live.theBroker.12345|57=Quote|58=INVALID_REQUEST: Expected numeric symbolId, but got CS8260|262=CS8260:sXlXex|281=0|10=236|
요청:
8=FIX.4.4|9=136|35=V|34=6|49=live.theBroker.12345|50=Quote|52=20170920-09:52:13.199|56=CSERVER|57=QUOTE|262=EwOhiWvMdCpc|263=1|264=3|146=1|55=1|267=2|269=0|269=1|10=182|
거부:
8=FIX.4.4|9=157|35=Y|34=6|49=CSERVER|50=QUOTE|52=20170920-09:52:13.201|56=live.theBroker.12345|57=Quote|58=INVALID_REQUEST: MarketDepth should be either 0 or 1|262=EwOhiWvMdCpc|281=5|10=088|
Security List Request (MsgType(35)=x)¶
| 태그 | 필드 이름 | 필수 | 값 | FIX 형식 | 코멘트 |
|---|---|---|---|---|---|
Standard Header | 예 | ||||
| 320 | SecurityReqID | 예 | 유효한 값 | 문자열 | 증권 정의 요청의 고유 ID. |
| 559 | SecurityListRequestType | 예 | 0 | 정수 | 요청되는 증권 목록 요청의 유형. 0 = Symbol (tag=55)만 지원됩니다. |
| 55 | Symbol | 아니요 | 유효한 값 | 정수 | 심벌 이름을 해결하기 위한 ID. |
Standard Trailer | 예 |
아래의 증권 목록 요청 메시지 예시를 참조하세요.
요청:
8=FIX.4.4|9=107|35=x|34=3|49=live.theBroker.12345|50=Trade|52=20180427-12:24:27.106|56=CSERVER|57=TRADE|55=39|320=ILCea0JkdQEm|559=0|10=248|
응답:
8=FIX.4.4|9=158|35=y|34=3|49=CSERVER|50=TRADE|52=20180427-12:24:27.107|56=live.theBroker.12345|57=Trade|320=ILCea0JkdQEm|322=responce:ILCea0JkdQEm|560=0|146=1|55=39|1007=NZDCHF|1008=4|10=088|
Security List (MsgType(35)=y)¶
| 태그 | 필드 이름 | 필수 | 값 | FIX 형식 | 코멘트 |
|---|---|---|---|---|---|
Standard Header | 예 | ||||
| 320 | SecurityReqID | 예 | 유효한 값 | 문자열 | 증권 정의 요청의 고유 ID. |
| 322 | SecurityResponseID | 예 | 유효한 값 | 문자열 | 증권 목록 응답의 고유 ID. |
| 560 | SecurityRequestResult | 예 | 0 | 정수 | 증권 요청 메시지에 대해 반환된 결과. 유효한 값은 다음과 같습니다: 0 = 유효한 요청. 1 = 유효하지 않거나 지원되지 않는 요청. 2 = 선택 기준과 일치하는 상품이 없습니다. 3 = 상품 데이터를 검색할 권한이 없습니다. 4 = 상품 데이터를 일시적으로 사용할 수 없습니다. 5 = 상품 데이터 요청이 지원되지 않습니다. |
| 146 | NoRelatedSym | 아니요 | 유효한 값 | 정수 | 반복되는 심벌(상품)의 수를 지정합니다. |
| 55 | Symbol | 아니요 | 유효한 값 | 정수 | Spotware에서 제공하는 상품 식별자. |
| 1007 | SymbolName | 아니요 | 유효한 값 | 문자열 | 심벌 이름. |
| 1008 | SymbolDigits | 아니요 | 유효한 값 | 정수 | 심벌 소수점. 가능한 값은 0부터 5까지입니다. |
Standard Trailer | 예 |
아래의 증권 목록 메시지 예시를 참조하세요.
응답:
8=FIX.4.4|9=3977|35=y|34=2|49=CSERVER|50=TRADE|52=20180426-12:07:37.816|56=live.theBroker.12345|57=Trade|320=Sxo2Xlb1jzJC|322=responce:Sxo2Xlb1jzJC|560=0|146=143|55=1|1007=EURUSD|1008=5|55=2|1007=GBPUSD|1008=5|55=3|1007=EURJPY|1008=3|55=4|1007=USDJPY|1008=3|55=5|1007=AUDUSD|1008=5|55=6|1007=USDCHF|1008=5|55=7|1007=GBPJPY|1008=3|55=8|1007=USDCAD|1008=5|55=9|1007=EURGBP|1008=5|55=10|1007=EURCHF|1008=5|55=11|1007=AUDJPY|1008=2|55=12|1007=NZDUSD|1008=5|55=13|1007=CHFJPY|1008=2|55=14|1007=EURAUD|1008=4|55=15|1007=CADJPY|1008=2|55=16|1007=GBPAUD|1008=4|55=17|1007=EURCAD|1008=4|55=10001|1007=USDCFDSAX|1008=5|55=18|1007=AUDCAD|1008=4|55=10002|1007=CD3295|1008=5|55=19|1007=GBPCAD|1008=4|55=10003|1007=DU3295|1008=5|55=20|1007=AUDNZD|1008=4|55=10004|1007=CS5965|1008=2|55=21|1007=NZDJPY|1008=2|55=10005|1007=CS6014_3|1008=5|55=22|1007=USDNOK|1008=4|55=10006|1007=DU6014_3|1008=5|55=23|1007=AUDCHF|1008=4|55=10007|1007=CS6014_4|1008=5|55=24|1007=USDMXN|1008=4|55=10008|1007=DU6014_4|1008=5|55=25|1007=GBPNZD|1008=4|55=10009|1007=CS5953|1008=5|55=26|1007=EURNZD|1008=4|55=10010|1007=CS6407_01_EURUSD|1008=5|55=27|1007=CADCHF|1008=4|55=10011|1007=CS6407_01_GBPUSD|1008=5|55=28|1007=USDSGD|1008=5|55=10012|1007=CS6407_02_EURUSD|1008=5|55=29|1007=USDSEK|1008=4|55=10013|1007=CS6407_03_EURUSD|1008=5|55=30|1007=NZDCAD|1008=4|55=31|1007=EURSEK|1008=4|55=10015|1007=CS7847_01_EURUSD|1008=5|55=32|1007=GBPSGD|1008=4|55=10016|1007=CS7847_01_GBPUSD|1008=5|55=33|1007=EURNOK|1008=4|55=10017|1007=CS7847_02_EURUSD|1008=5|55=34|1007=EURHUF|1008=2|55=10018|1007=CS7847_03_EURUSD|1008=5|55=35|1007=USDPLN|1008=4|55=10019|1007=CS7847_04_GBPUSD|1008=5|55=36|1007=USDDKK|1008=4|55=10020|1007=CS9004S|1008=2|10=096|