เครื่องมือ FIX ของ cTrader (Rules of Engagement)¶
บทนำ ¶
ขอบเขต ¶
ข้อกำหนดนี้มีวัตถุประสงค์เพื่อเป็นคู่มือการใช้งานสำหรับนักพัฒนาซอฟต์แวร์สำหรับ API ของเครื่องมือ FIX ของ cTrader
เวอร์ชัน FIX ¶
cTrader รองรับ FIX เวอร์ชัน 4.4 สำหรับข้อมูลเพิ่มเติมเกี่ยวกับเวอร์ชันนี้ โปรดดูที่ ข้อกำหนด เหล่านี้
การเชื่อมต่อ ¶
ประเภทการเชื่อมต่อ ¶
การเชื่อมต่อกับเครื่องมือ FIX ของ cTrader สามารถทำได้ผ่านอินเทอร์เน็ต อุโมงค์ VPN หรือการเชื่อมต่อแบบ cross-connect กับศูนย์ข้อมูลของเราในสหราชอาณาจักร ติดต่อเราเพื่อขอรายละเอียดเพิ่มเติม
การรีเซ็ตหมายเลขลำดับ ¶
ทุกด้านของเซสชัน FIX ควรมีการรีเซ็ตหมายเลขลำดับเมื่อสร้างเซสชัน FIX ดูที่ข้อความ Logon
ข้อความ ¶
ตามที่กำหนดไว้ในโปรโตคอล FIX เซิร์ฟเวอร์ FIX ของ cTrader ใช้ระดับข้อมูลสองระดับที่แตกต่างกัน (ระบบและแอปพลิเคชัน) โปรดทราบว่านี่เป็นชุดข้อความขั้นต่ำที่จำเป็นเพื่อรองรับขั้นตอนการทำงานที่จำเป็น อาจมีการเปลี่ยนแปลงเมื่อเวลาผ่านไปตามความต้องการทางธุรกิจและมาตรฐาน FIX ที่พัฒนาขึ้น
เครื่องมือ FIX ของ cTrader ¶
ข้อความระบบ¶
- 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 ควรมีส่วนหัวมาตรฐานพร้อมฟิลด์ต่อไปนี้:
| Tag | ชื่อฟิลด์ | จำเป็น | ค่า | รูปแบบ FIX | ความคิดเห็น |
|---|---|---|---|---|---|
| 8 | BeginString | ใช่ | FIX.4.4 | String | ไม่มีการเข้ารหัสเสมอ ต้องเป็นฟิลด์แรกในข้อความ |
| 9 | BodyLength | ใช่ | ค่าที่ถูกต้องใดๆ | Integer | ความยาวของเนื้อความ ไม่มีการเข้ารหัสเสมอ ต้องเป็นฟิลด์ที่สองในข้อความ |
| 35 | MsgType | ใช่ | A | String | ประเภทข้อความ ไม่มีการเข้ารหัสเสมอ ต้องเป็นฟิลด์ที่สามในข้อความ |
| 49 | SenderCompID | ใช่ | ค่าที่ถูกต้องใดๆ | String | ID ของฝ่ายการเทรดในรูปแบบต่อไปนี้: <Environment>.<BrokerUID>.<Trader Login> โดย Environment คือการกำหนดเซิร์ฟเวอร์ เช่น demo หรือ live; BrokerUID จัดเตรียมโดย cTrader และ Trader Login คือตัวระบุตัวเลขของบัญชีนักเทรด |
| 56 | TargetCompID | ใช่ | CSERVER | String | เป้าหมายของข้อความ The valid value is CSERVER. |
| 57 | TargetSubID | ใช่ | QUOTE หรือ TRADE | String | ตัวกำหนดเซสชันเพิ่มเติม ค่าที่เป็นไปได้คือ QUOTE และ TRADE |
| 50 | SenderSubID | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | String | ค่าที่กำหนดใช้เพื่อระบุผู้สร้างข้อความเฉพาะ ต้องตั้งค่าเป็น QUOTE ถ้า TargetSubID=QUOTE |
| 34 | MsgSeqNum | ใช่ | 1 | Integer | หมายเลขลำดับของข้อความ |
| 52 | SendingTime | ใช่ | 20131129-15:40:08.155 | UTCTimestamp | เวลาของการส่งข้อความแสดงเป็น UTC (Universal Time Coordinated หรือที่รู้จักกันในชื่อ GMT) เสมอ |
ส่วนท้ายมาตรฐาน ¶
แต่ละข้อความ ทั้งการบริหารหรือแอปพลิเคชัน จะสิ้นสุดด้วยส่วนท้ายมาตรฐาน ส่วนท้ายใช้เพื่อแยกข้อความและมีการแสดงค่า CheckSum (tag=10) แบบสามหลัก
| Tag | ชื่อฟิลด์ | จำเป็น | ค่า | รูปแบบ FIX | ความคิดเห็น |
|---|---|---|---|---|---|
| 10 | CheckSum | ใช่ | 054 | String | การตรวจสอบผลรวมอย่างง่ายแบบสามไบต์ เป็นฟิลด์สุดท้ายในข้อความเสมอ (ตัวอย่างเช่น ทำหน้าที่) โดยมี <SOH> ท้ายเป็นตัวคั่นสิ้นสุดข้อความ กำหนดเป็นสามอักขระ (ไม่มีการเข้ารหัสเสมอ) |
ข้อความเซสชัน ¶
Heartbeat (MsgType(35)=0)¶
ข้อความ Heartbeat ถูกส่งโดยทั้ง cTrader และแอปพลิเคชันของลูกค้าเพื่อยืนยันการเชื่อมต่อที่ใช้งานอยู่
แอปพลิเคชันของลูกค้าของผู้ให้บริการส่ง heartbeat ซ้ำๆ ตามช่วงเวลาที่กำหนดโดยฟิลด์ HeartBtInt (tag=108) ในข้อความ Logon หรือเป็นการตอบสนองต่อข้อความ Test Request
| Tag | ชื่อฟิลด์ | จำเป็น | ค่า | รูปแบบ FIX | ความคิดเห็น |
|---|---|---|---|---|---|
Standard Header | ใช่ | ||||
| 112 | TestReqID | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | String | หาก heartbeat เป็นผลมาจากข้อความ Test Request จำเป็นต้องมี TestReqID |
Standard Trailer | ใช่ |
Test Request (MsgType(35)=1)¶
มันบังคับให้เกิด heartbeat จากผู้รับคำขอ การตอบสนองถูกส่งจากระบบที่รับเป็นข้อความ Heartbeat ที่มี TestReqID
| Tag | ชื่อฟิลด์ | จำเป็น | ค่า | รูปแบบ FIX | ความคิดเห็น |
|---|---|---|---|---|---|
Standard Header | ใช่ | ||||
| 112 | TestReqID | ใช่ | ค่าที่ถูกต้องใดๆ | String | ID ข้อความ heartbeat TestReqID ควรเพิ่มขึ้นเรื่อยๆ |
Standard Trailer | ใช่ |
Logon (bidirectional) (MsgType(35)=A)¶
ข้อความ Logon ถูกส่งจากแอปพลิเคชันฝั่งลูกค้าเพื่อเริ่มเซสชัน FIX ของ cTrader และการตอบสนองถูกส่งโดย cTrader ไปยังแอปพลิเคชันฝั่งลูกค้า เมื่อการเข้าสู่ระบบเสร็จสมบูรณ์ การไหลของราคาและการเทรดสามารถดำเนินต่อไปได้ตลอดอายุของเซสชัน
หาก cTrader ได้รับข้อความ Logon ที่ไม่ถูกต้อง (มีฟิลด์ที่ไม่ถูกต้อง) cTrader จะส่งข้อความ Logout เป็นการตอบสนอง
| Tag | ชื่อฟิลด์ | จำเป็น | ค่า | รูปแบบ FIX | ความคิดเห็น |
|---|---|---|---|---|---|
Standard Header | ใช่ | ||||
| 98 | EncryptMethod | ใช่ | 0 | Integer | กำหนดรูปแบบการเข้ารหัสข้อความ ปัจจุบันรองรับเฉพาะการรักษาความปลอดภัยระดับการขนส่งเท่านั้น ค่าที่ถูกต้องคือ 0 = NONE_OTHER (ไม่ใช้การเข้ารหัส) |
| 108 | HeartBtInt | ใช่ | ค่าที่ถูกต้องใดๆ | Integer | ช่วงเวลา heartbeat เป็นวินาที ค่านี้ถูกตั้งในไฟล์ config.properties (ฝั่งลูกค้า) เป็น SERVER.POLLING.INTERVAL ค่าช่วงเวลาเริ่มต้นคือ 30 วินาที หาก HeartBtInt ถูกตั้งเป็น 0 จะไม่จำเป็นต้องมีข้อความ heartbeat |
| 141 | ResetSeqNumFlag | ไม่ใช่ | Y | Boolean | ทุกฝ่ายของเซสชัน FIX ควรรีเซ็ตหมายเลขลำดับ ค่าที่ถูกต้องคือ Y (รีเซ็ต) |
| 553 | Username | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | String | ID ผู้ใช้แบบตัวเลข ผู้ใช้เชื่อมโยงกับค่า SenderCompID (องค์กรของผู้ใช้, tag=49) |
| 554 | Password | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | String | รหัสผ่านของผู้ใช้ |
Standard Trailer | ใช่ |
หมายเหตุ
ฟิลด์ Username (tag=553) ต้องมีค่าการเข้าสู่ระบบของนักเทรดแบบตัวเลข ในขณะที่ SenderCompID (tag=49) ต้องมีสภาพแวดล้อม BrokerUID และการเข้าสู่ระบบของนักเทรดคั่นด้วยจุด (ตัวอย่างเช่น live.theBroker.12345)
ดูตัวอย่างของข้อความ Logon ด้านล่าง
คำขอ:
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)¶
ข้อความ Logout ถูกส่งจากแอปพลิเคชันของลูกค้าเพื่อขอสิ้นสุดเซสชันกับ cTrader และเป็นการตอบสนองโดย cTrader การออกจากระบบของเซสชันเกิดขึ้นเพื่อตอบสนองต่อผู้เข้าร่วมตลาดที่ส่งข้อความ Logout ไปยัง cTrader ก่อนที่จะยุติเซสชัน cTrader จะยกเลิกราคาทั้งหมดที่ยังคงสตรีมออกไปยังฝ่ายที่ร้องขออย่างแอคทีฟ หาก cTrader ได้รับข้อความ Logon ที่ไม่ถูกต้อง (มีฟิลด์ที่ไม่ถูกต้อง) cTrader จะส่งข้อความ Logout เป็นการตอบสนองพร้อมรายละเอียดข้อผิดพลาดในฟิลด์ Text (tag=58)
| Tag | ชื่อฟิลด์ | จำเป็น | ค่า | รูปแบบ FIX | ความคิดเห็น |
|---|---|---|---|---|---|
Standard Header | ใช่ | ||||
| 58 | Text | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | String | รายละเอียดการปฏิเสธการเข้าสู่ระบบ ใช้สำหรับข้อความจาก cTrader ไปยังลูกค้าเท่านั้นเป็นการตอบสนองต่อข้อความ Logon ที่ไม่ถูกต้อง |
Standard Trailer | ใช่ |
ดูตัวอย่างของข้อความ Logout ด้านล่าง
คำขอ:
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)¶
ข้อความขาเข้า/ขาออกใช้เพื่อขอให้ส่งข้อความ (หรือหลายข้อความ) ซ้ำ โดยทั่วไปเมื่อตรวจพบช่องว่างในการลำดับหมายเลข
| Tag | ชื่อฟิลด์ | จำเป็น | ค่า | รูปแบบ FIX | ความคิดเห็น |
|---|---|---|---|---|---|
Standard Header | ใช่ | ||||
| 7 | BeginSeqNo | ใช่ | ค่าที่ถูกต้องใดๆ | Integer | หมายเลขลำดับข้อความของบันทึกแรกในช่วงที่จะส่งซ้ำ |
| 16 | EndSeqNo | ใช่ | ค่าที่ถูกต้องใดๆ | Integer | หมายเลขลำดับข้อความของบันทึกสุดท้ายในช่วงที่จะส่งซ้ำ |
Standard Trailer | ใช่ |
Reject (bidirectional) (MsgType(35)=3)¶
ส่งเมื่อไม่สามารถประมวลผลข้อความที่ได้รับเนื่องจากการละเมิดกฎระดับเซสชัน ข้อความที่ถูกปฏิเสธต้องถูกบันทึกและต้องมีการเพิ่มหมายเลขลำดับขาเข้า
| Tag | ชื่อฟิลด์ | จำเป็น | ค่า | รูปแบบ FIX | ความคิดเห็น |
|---|---|---|---|---|---|
Standard Header | ใช่ | ||||
| 45 | RefSeqNum | ใช่ | ค่าที่ถูกต้องใดๆ | SeqNum | หมายเลขลำดับของข้อความที่อ้างอิง |
| 58 | Text | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | String | สตริงข้อความรูปแบบอิสระ |
| 354 | EncodedTextLen | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | ความยาว | ความยาวของฟิลด์ EncodedText (อักขระที่ไม่ใช่ ASCII) เป็นไบต์ |
| 355 | EncodedText | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | ข้อมูล | การแสดงฟิลด์ Text (แท็ก=58) ที่เข้ารหัสโดยใช้รูปแบบที่ระบุในฟิลด์ MessageEncoding (แท็ก=347) (จากส่วนหัวมาตรฐาน) หากใช้การแสดงผล ASCII ควรระบุไว้ในฟิลด์ Text (แท็ก=58) ด้วย |
| 371 | RefTagID | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | Integer | หมายเลขแท็กของฟิลด์ FIX ที่เริ่มต้นการปฏิเสธข้อความ |
| 372 | RefMsgType | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | String | MsgType (แท็ก=35) ของข้อความ FIX ที่อ้างอิง |
| 373 | SessionRejectReason | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | Integer | สาเหตุของการปฏิเสธที่เข้ารหัส ค่าที่ถูกต้องคือ: 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)¶
ข้อความขาเข้า/ขาออกไม่ควรใช้ในระดับแอปพลิเคชัน ข้อความ Sequence Reset สามารถเพิ่มหมายเลขลำดับได้เท่านั้น
| Tag | ชื่อฟิลด์ | จำเป็น | ค่า | รูปแบบ FIX | ความคิดเห็น |
|---|---|---|---|---|---|
Standard Header | ใช่ | ||||
| 123 | GapFillFlag | ไม่ใช่ | Yes หรือ No | String | ระบุว่าข้อความ Sequence Reset กำลังแทนที่ข้อความการจัดการหรือแอปพลิเคชันที่จะไม่ถูกส่งซ้ำ |
| 36 | NewSeqNo | ใช่ | 1 | Integer | หมายเลขลำดับใหม่ |
Standard Trailer | ใช่ |
ข้อความแอปพลิเคชัน ¶
Market Data Request (MsgType(35)=V)¶
| Tag | ชื่อฟิลด์ | จำเป็น | ค่า | รูปแบบ FIX | ความคิดเห็น |
|---|---|---|---|---|---|
Standard Header | ใช่ | ||||
| 262 | MDReqID | ใช่ | ค่าที่ถูกต้องใดๆ | String | ID คำขอราคาที่ไม่ซ้ำกัน ID ใหม่สำหรับการสมัครสมาชิกใหม่ ID เดียวกันกับที่ใช้ก่อนหน้านี้สำหรับการลบการสมัครสมาชิก |
| 263 | SubscriptionRequestType | ใช่ | 1 หรือ 2 | Char | 1 = สแนปช็อตบวกการอัปเดต (สมัครสมาชิก) 2 = ปิดใช้งานคำขอสแนปช็อตบวกการอัปเดตก่อนหน้า (ยกเลิกการสมัครสมาชิก) |
| 264 | MarketDepth | ใช่ | 0 หรือ 1 | Integer | จะมีการให้หนังสือเต็มรูปแบบ 0 = การสมัครสมาชิกความลึก 1 = การสมัครสมาชิก Spot |
| 265 | MDUpdateType | ใช่ | ค่าที่ถูกต้องใดๆ | Integer | รองรับเฉพาะการรีเฟรชแบบเพิ่มขึ้นเท่านั้น |
| 267 | NoMDEntryTypes | ใช่ | 2 | Integer | ตั้งค่าเป็น 2 เสมอ (จะส่งทั้ง bid และ ask) |
| 269 | MDEntryType | ใช่ | 0 หรือ 1 | Char | กลุ่มที่ทำซ้ำนี้มีรายการประเภทของรายการข้อมูลตลาดทั้งหมดที่ผู้ร้องขอต้องการรับ 0 = Bid 1 = Offer |
| 146 | NoRelatedSym | ใช่ | ค่าที่ถูกต้องใดๆ | Integer | จำนวนสัญลักษณ์ที่ร้องขอ |
| 55 | Symbol | ใช่ | ค่าที่ถูกต้องใดๆ | Long | ตัวระบุเครื่องมือจัดเตรียมโดย Spotware |
Standard Trailer | ใช่ |
ดูตัวอย่างของข้อความคำขอข้อมูลตลาดด้านล่าง
สำหรับ Spots
คำขอ:
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|
สำหรับ Depths
คำขอ:
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)¶
| Tag | ชื่อฟิลด์ | จำเป็น | ค่า | รูปแบบ FIX | ความคิดเห็น |
|---|---|---|---|---|---|
Standard Header | ใช่ | ||||
| 262 | MDReqID | ใช่ | ค่าที่ถูกต้องใดๆ | String | ID ของคำขอข้อมูลตลาดที่ส่งไปก่อนหน้านี้ |
| 55 | Symbol | ใช่ | ค่าที่ถูกต้องใดๆ | Long | ตัวระบุเครื่องมือจัดเตรียมโดย Spotware |
| 268 | NoMDEntries | ใช่ | ค่าที่ถูกต้องใดๆ | Integer | จำนวนรายการที่ตามมา |
| 269 | MDEntryType | ไม่ใช่ | 0 หรือ 1 | Char | ค่าที่ถูกต้องคือ: 0 = Bid 1 = Offer จำเป็นเฉพาะเมื่อ NoMDEntries (แท็ก=268) > 0 |
| 299 | QuoteEntryID | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | String | การระบุที่ไม่ซ้ำกันของราคาเสนอซื้อขายเป็นส่วนหนึ่งของ `QuoteSet |
| 270 | MDEntryPx | ไม่ใช่ | 1.2345 | ราคา | ราคาของรายการข้อมูลตลาด จำเป็นเฉพาะเมื่อ NoMDEntries (tag=268) > 0 |
| 271 | MDEntrySize | ไม่ใช่ | 500000 | ปริมาณ | ปริมาณของรายการข้อมูลตลาด จำเป็นเฉพาะเมื่อ NoMDEntries (tag=268) > 0 |
| 278 | MDEntryID | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | String | ตัวระบุรายการข้อมูลตลาดที่ไม่ซ้ำกัน |
Standard Trailer | ใช่ |
Market Data Incremental Refresh (MsgType(35)=X)¶
| Tag | ชื่อฟิลด์ | จำเป็น | ค่า | รูปแบบ FIX | ความคิดเห็น |
|---|---|---|---|---|---|
Standard Header | ใช่ | ||||
| 262 | MDReqID | ใช่ | ค่าที่ถูกต้องใดๆ | String | ID ของคำขอข้อมูลตลาดที่ส่งไปก่อนหน้านี้ |
| 268 | NoMDEntries | ใช่ | ค่าที่ถูกต้องใดๆ | Integer | จำนวนรายการที่ตามมา กลุ่มที่ทำซ้ำนี้ประกอบด้วยรายการประเภทรายการข้อมูลตลาดทั้งหมดที่ผู้ร้องขอต้องการรับ |
| 279 | MDUpdateAction | ใช่ | 0 หรือ 2 | Char | ประเภทของการอัปเดตข้อมูลตลาด ค่าที่ถูกต้องคือ: 0 = ใหม่ 2 = ลบ |
| 269 | MDEntryType | ไม่ใช่ | 0 หรือ 1 | Char | ค่าที่ถูกต้องคือ: 0 = Bid 1 = Offer |
| 278 | MDEntryID | ใช่ | ค่าที่ถูกต้องใดๆ | String | ID ของรายการข้อมูลตลาด |
| 55 | Symbol | ใช่ | ค่าที่ถูกต้องใดๆ | Long | ตัวระบุเครื่องมือจัดเตรียมโดย Spotware |
| 270 | MDEntryPx | ไม่ใช่ | 1.2345 | ราคา | จำเป็นเฉพาะเมื่อ MDUpdateAction (tag=279) = 0 |
| 271 | MDEntrySize | ไม่ใช่ | 10000 | สองเท่า | จำเป็นเฉพาะเมื่อ MDUpdateAction (tag=279) = 0 |
Standard Trailer | ใช่ |
New Order Single (MsgType(35)=D)¶
ข้อความคำสั่งใหม่เดี่ยวมีรูปแบบดังต่อไปนี้
| Tag | ชื่อฟิลด์ | จำเป็น | ค่า | รูปแบบ FIX | ความคิดเห็น |
|---|---|---|---|---|---|
Standard Header | ใช่ | ||||
| 11 | ClOrdID | ใช่ | ค่าที่ถูกต้องใดๆ | String | ตัวระบุที่ไม่ซ้ำกันของคำสั่งที่จัดสรรโดยลูกค้า |
| 55 | Symbol | ใช่ | ค่าที่ถูกต้องใดๆ | Long | ตัวระบุเครื่องมือจัดเตรียมโดย Spotware |
| 54 | Side | ใช่ | 1 หรือ 2 | Integer | 1 = Buy 2 = Sell |
| 60 | TransactTime | ใช่ | ค่าที่ถูกต้องใดๆ | ตราประทับเวลา | เวลาที่ร้องขอที่สร้างโดยลูกค้า |
| 38 | OrderQty | ใช่ | ค่าที่ถูกต้องใดๆ | Qty | จำนวนหุ้นที่สั่ง นี่แสดงถึงจำนวนหุ้นสำหรับหุ้นทุนหรือตามข้อตกลงปกติจำนวนสัญญาสำหรับออปชัน ฟิวเจอร์ส หุ้นกู้แปลงสภาพ ฯลฯ ความแม่นยำสูงสุดคือ 0.01 ก่อน FIX 4.2 ประเภทของฟิลด์นี้คือ "Integer" |
| 40 | OrdType | ใช่ | 1, 2 หรือ 3 | Char | 1 = Market คำสั่งจะถูกประมวลผลด้วยแผน Immediate or Cancel (IOC) (TimeInForce, tag=59) 2 = Limit คำสั่งจะถูกประมวลผลด้วยแผน Good Till Cancel (GTC) (TimeInForce, tag=59) 3 = Stop คำสั่งจะถูกประมวลผลด้วยแผน Good Till Cancel (GTC) (TimeInForce, tag=59) |
| 44 | Price | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | ราคา | ราคาลูกค้าที่แย่ที่สุดที่ลูกค้าจะยอมรับได้ จำเป็นเฉพาะเมื่อ OrdType (tag=40) = 2 ในกรณีนี้คำสั่งจะไม่ถูกจับคู่เว้นแต่จะสามารถทำตามราคานี้ได้ |
| 99 | StopPx | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | ราคา | ราคาที่ทริกเกอร์คำสั่ง Stop จำเป็นเฉพาะเมื่อ OrdType (tag=40) = 3 ในกรณีนี้คำสั่งจะไม่ถูกจับคู่เว้นแต่จะสามารถทำตามราคานี้ได้ |
| 59 | TimeInForce | ไม่ใช่ | 1, 3 or 6 | String | เลิกใช้แล้ว ค่านี้จะถูกละเว้น TimeInForce จะถูกตรวจจับโดยอัตโนมัติขึ้นอยู่กับ OrdType (tag=40) และ ExpireTime (tag=126): 1 = Good Till Cancel (GTC) จะใช้เฉพาะสำหรับคำสั่ง Limit และ Stop (OrdType, tag=40) เท่านั้นหากไม่ได้กำหนด ExpireTime (tag=126) 3 = Immediate or Cancel (IOC) จะใช้เฉพาะสำหรับคำสั่ง Market (OrdType, tag=40) 6 = Good Till Date (GTD) จะใช้เฉพาะสำหรับคำสั่ง Limit และ Stop (OrdType, tag=40) เท่านั้นหากกำหนด ExpireTime (tag=126) |
| 126 | ExpireTime | ไม่ใช่ | 20140215-07:24:55 | ตราประทับเวลา | เวลาหมดอายุในรูปแบบ "YYYYMMDD-HH:MM:SS" หากกำหนด คำสั่งจะถูกประมวลผลด้วยแผน GTD (TimeInForce: GTD) |
| 721 | PosMaintRptID | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | String | ID โพสิชันที่ควรวางคำสั่งนี้ หากไม่ได้กำหนด จะสร้างโพสิชันใหม่และ ID ของมันจะถูกส่งคืนในข้อความรายงานการดำเนินการ สามารถระบุได้เฉพาะสำหรับบัญชีที่มีการป้องกันความเสี่ยงเท่านั้น |
| 494 | Designation | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | String | ป้ายกำกับคำสั่งที่กำหนดเอง |
Standard Trailer | ใช่ |
ดูตัวอย่างของข้อความคำสั่งใหม่เดี่ยวด้านล่าง
คำสั่ง Market สำหรับโพสิชันใหม่
คำขอ:
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|
คำสั่ง Market สำหรับโพสิชันที่มีอยู่
คำขอ:
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
คำสั่ง Limit สำหรับโพสิชันที่มีอยู่
คำขอ:
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|
คำสั่ง Stop สำหรับโพสิชันใหม่
คำขอ:
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) สำหรับคำสั่งทั้งหมด
| Tag | ชื่อฟิลด์ | จำเป็น | ค่า | รูปแบบ FIX | ความคิดเห็น |
|---|---|---|---|---|---|
Standard Header | ใช่ | ||||
| 11 | ClOrdID | ใช่ | ค่าที่ถูกต้องใดๆ | String | ตัวระบุที่ไม่ซ้ำกันของคำสั่งที่จัดสรรโดยลูกค้า |
| 54 | Side | ไม่ใช่ | 1 หรือ 2 | Integer | 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)¶
ข้อความคำขอสถานะคำสั่งจำนวนมากร้องขอสถานะสำหรับคำสั่งที่ตรงกับเกณฑ์ที่ระบุในคำขอ คำตอบจะถูกส่งคืนเป็นจำนวนข้อความรายงานการดำเนินการ (หนึ่งข้อความสำหรับแต่ละคำสั่ง) หรือเป็นข้อความปฏิเสธข้อความทางธุรกิจหากไม่พบคำสั่งใดๆ
| Tag | ชื่อฟิลด์ | จำเป็น | ค่า | รูปแบบ FIX | ความคิดเห็น |
|---|---|---|---|---|---|
Standard Header | ใช่ | ||||
| 584 | MassStatusReqID | ใช่ | ค่าที่ถูกต้องใดๆ | String | ID ที่ไม่ซ้ำกันของคำขอสถานะจำนวนมากตามที่กำหนดโดยไคลเอนต์ |
| 585 | MassStatusReqType | ใช่ | ค่าที่ถูกต้องใดๆ | Integer | 7 = สถานะสำหรับคำสั่งทั้งหมด ปัจจุบันรองรับเฉพาะค่า 7 เท่านั้น |
| 225 | IssueDate | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | String | หากตั้งค่าไว้ การตอบสนองจะมีเฉพาะคำสั่งที่สร้างขึ้นก่อนวันที่นี้เท่านั้น |
Standard Trailer | ใช่ |
ดูตัวอย่างข้อความคำขอสถานะจำนวนมากด้านล่าง
คำขอ:
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)¶
ข้อความรายงานการดำเนินการสำหรับคำสั่งที่ได้รับการยอมรับมีรูปแบบดังต่อไปนี้
| Tag | ชื่อฟิลด์ | จำเป็น | ค่า | รูปแบบ FIX | ความคิดเห็น |
|---|---|---|---|---|---|
Standard Header | ใช่ | ||||
| 37 | OrderID | ใช่ | ค่าที่ถูกต้องใดๆ | String | ID คำสั่ง cTrader |
| 11 | ClOrdID | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | String | ตัวระบุที่ไม่ซ้ำกันของคำสั่งที่จัดสรรโดยลูกค้า |
| 911 | TotNumReports | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | Integer | จำนวนรายงานทั้งหมดที่ส่งคืนเพื่อตอบสนองต่อข้อความคำขอสถานะจำนวนมาก |
| 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 | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | Long | ตัวระบุเครื่องมือจัดเตรียมโดย Spotware |
| 54 | Side | ไม่ใช่ | 1 หรือ 2 | Integer | 1 = ซื้อ 2 = ขาย |
| 60 | TransactTime | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | ตราประทับเวลา | เวลาดำเนินการของธุรกรรมที่แสดงโดยข้อความรายงานการดำเนินการ (ใน UTC) |
| 6 | AvgPx | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | Integer | ราคาที่ดีลถูกจับคู่ สำหรับคำสั่ง IOC หรือ GTD นี่คือราคาเฉลี่ยถ่วงน้ำหนักด้วยปริมาณ (VWAP) ของคำสั่งที่ถูกจับคู่ |
| 38 | OrderQty | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | Qty | นี่แสดงถึงจำนวนหุ้นสำหรับหุ้นทุนหรือตามข้อตกลงปกติจำนวนสัญญาสำหรับออปชัน ฟิวเจอร์ส หุ้นกู้แปลงสภาพ ฯลฯ ก่อน FIX 4.2 ประเภทของฟิลด์นี้คือ "Integer" |
| 151 | LeavesQty | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | Qty | จำนวนคำสั่งที่ยังต้องจับคู่ ค่าที่เป็นไปได้คือระหว่าง 0 (จับคู่เต็มจำนวน) และ OrderQty (จับคู่บางส่วน) |
| 14 | CumQty | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | Qty | จำนวนคำสั่งทั้งหมดที่ถูกจับคู่แล้ว |
| 32 | LastQty | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | Qty | ปริมาณที่ซื้อ/ขายของคำสั่งที่ถูกจับคู่ในการจับคู่ (ล่าสุด) นี้ |
| 40 | OrdType | ไม่ใช่ | 1 หรือ 2 | Char | 1 = Market 2 = Limit |
| 44 | Price | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | ราคา | หากระบุในข้อความคำสั่งใหม่ จะถูกส่งกลับในข้อความรายงานการดำเนินการนี้ |
| 99 | StopPx | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | ราคา | หากระบุในข้อความคำสั่งใหม่ จะถูกส่งกลับในข้อความรายงานการดำเนินการนี้ |
| 59 | TimeInForce | ไม่ใช่ | 1, 3 หรือ 6 | String | 1 = Good Till Cancel (GTC) 3 = Immediate or Cancel (IOC) 6 = Good Till Date (GTD) |
| 126 | ExpireTime | ไม่ใช่ | 20140215-07:24:55 | ตราประทับเวลา | หากระบุในข้อความคำสั่งใหม่ จะถูกส่งกลับในข้อความรายงานการดำเนินการนี้ |
| 58 | Text | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | String | หากเป็นไปได้ ข้อความจะอธิบายรายงานการดำเนินการ |
| 103 | OrdRejReason | ไม่ใช่ | 0 | Integer | 0 = OrdRejReason.BROKER_EXCHANGE_OPTION |
| 721 | PosMaintRptID | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | String | ID โพสิชัน |
| 494 | Designation | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | String | ป้ายกำกับคำสั่งที่กำหนดเองของไคลเอนต์ |
| 584 | MassStatusReqID | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | String | ID ที่ไม่ซ้ำกันของคำขอสถานะจำนวนมากตามที่กำหนดโดยไคลเอนต์ |
| 1000 | AbsoluteTP | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | ราคา | ราคาสัมบูรณ์ที่ Take Profit จะถูกทริกเกอร์ |
| 1001 | RelativeTP | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | ราคา | ระยะทางเป็น pip จากราคาเข้าที่ Take Profit จะถูกทริกเกอร์ |
| 1002 | AbsoluteSL | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | ราคา | ราคาสัมบูรณ์ที่ Stop Loss จะถูกทริกเกอร์ |
| 1003 | RelativeSL | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | ราคา | ระยะทางเป็น pip จากราคาเข้าที่ Stop Loss จะถูกทริกเกอร์ |
| 1004 | TrailingSL | ไม่ใช่ | N หรือ Y | Boolean | ระบุว่า Stop Loss เป็นแบบ Trailing หรือไม่ N = Stop Loss ไม่ใช่แบบ Trailing Y = Stop Loss เป็นแบบ Trailing |
| 1005 | TriggerMethodSL | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | Integer | วิธีการทริกเกอร์ที่ระบุของ Stop Loss 1 = Stop Loss จะถูกทริกเกอร์โดยฝั่งการเทรด 2 = Stop Loss จะถูกทริกเกอร์โดยฝั่งตรงข้าม (Ask สำหรับโพสิชันซื้อและ Bid สำหรับโพสิชันขาย) 3 = Stop Loss จะถูกทริกเกอร์หลังจากสองติ๊กติดต่อกันตามฝั่งการเทรด 4 = Stop Loss จะถูกทริกเกอร์หลังจากสองติ๊กติดต่อกันตามฝั่งตรงข้าม (ติ๊ก Ask ที่สองสำหรับโพสิชันซื้อและติ๊ก Bid ที่สองสำหรับโพสิชันขาย) |
| 1006 | GuaranteedSL | ไม่ใช่ | N หรือ Y | Boolean | ระบุว่า Stop Loss ได้รับการรับประกันหรือไม่ N = Stop Loss ไม่ได้รับการรับประกัน Y = Stop Loss ได้รับการรับประกัน |
Standard Trailer | ใช่ |
ดูตัวอย่างคำสั่งใหม่เดี่ยวที่ท้ายคู่มือ
Business Message Reject (MsgType(35)=j)¶
ข้อความประเภทนี้จะถูกส่งเมื่อระบบไม่สามารถประมวลผลคำขอการสมัครสมาชิกหรือไม่สามารถดำเนินการคำสั่งได้
| Tag | ชื่อฟิลด์ | จำเป็น | ค่า | รูปแบบ FIX | ความคิดเห็น |
|---|---|---|---|---|---|
Standard Header | ใช่ | ||||
| 45 | RefSeqNum | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | Integer | MsgSeqNum (tag=34) ของข้อความที่ถูกปฏิเสธ |
| 372 | RefMsgType | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | String | MsgType (tag=35) ของข้อความ FIX ที่อ้างถึง |
| 379 | BusinessRejectRefID | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | String | ค่าของฟิลด์ ID ระดับธุรกิจในข้อความที่อ้างถึง จำเป็นต้องมีเว้นแต่ฟิลด์ ID ที่เกี่ยวข้องไม่ได้ระบุไว้ |
| 380 | BusinessRejectReason | ใช่ | 0 | Integer | รหัสเพื่อระบุเหตุผลสำหรับข้อความปฏิเสธธุรกิจ 0 = อื่นๆ |
| 58 | Text | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | String | หากเป็นไปได้ ข้อความเพื่ออธิบายเหตุผลสำหรับการปฏิเสธ |
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)¶
| Tag | ชื่อฟิลด์ | จำเป็น | ค่า | รูปแบบ FIX | ความคิดเห็น |
|---|---|---|---|---|---|
Standard Header | ใช่ | ||||
| 710 | PosReqID | ใช่ | ค่าที่ถูกต้องใดๆ | String | ID คำขอที่ไม่ซ้ำกัน (กำหนดโดยลูกค้า) |
| 721 | PosMaintRptID | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | String | 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)¶
| Tag | ชื่อฟิลด์ | จำเป็น | ค่า | รูปแบบ FIX | ความคิดเห็น |
|---|---|---|---|---|---|
Standard Header | ใช่ | ||||
| 710 | PosReqID | ใช่ | ค่าที่ถูกต้องใดๆ | String | ID ของข้อความคำขอโพสิชัน |
| 721 | PosMaintRptID | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | String | ID โพสิชัน ซึ่งไม่ได้กำหนดหาก PosReqResult (tag=728) ไม่ใช่ VALID_REQUEST |
| 727 | TotalNumPosReports | ใช่ | ค่าที่ถูกต้องใดๆ | String | จำนวนรวมของรายงานโพสิชันในลำดับเมื่อ PosReqResult (tag=728) เป็น VALID_REQUEST มิฉะนั้นจะเท่ากับ 0 |
| 728 | PosReqResult | ใช่ | 0 หรือ 2 | String | 0 = คำขอถูกต้อง 2 = ไม่พบโพสิชันที่เปิดอยู่ที่ตรงกับเกณฑ์ |
| 55 | Symbol | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | String | สัญลักษณ์ที่รายงานโพสิชันปัจจุบันถูกจัดเตรียมขึ้น ไม่ได้กำหนดหาก PosReqResult (tag=728) ไม่ใช่ VALID_REQUEST |
| 702 | NoPositions | ไม่ใช่ | 1 | String | 1 เมื่อ PosReqResult (tag=728) เป็น VALID_REQUEST มิฉะนั้นจะไม่ถูกกำหนด |
| 704 | LongQty | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | String | ปริมาณที่เปิดของโพสิชันในกรณีของฝั่งการเทรดซื้อ เท่ากับ 0 ในกรณีของฝั่งการเทรดขาย ไม่ได้กำหนดหาก PosReqResult (tag=728) ไม่ใช่ VALID_REQUEST |
| 705 | ShortQty | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | String | ปริมาณที่เปิดของโพสิชันในกรณีของฝั่งการเทรดขาย เท่ากับ 0 ในกรณีของฝั่งการเทรดซื้อ ไม่ได้กำหนดหาก PosReqResult (tag=728) ไม่ใช่ VALID_REQUEST |
| 730 | SettlPrice | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | String | ราคาเฉลี่ยของปริมาณที่เปิดในรายงานโพสิชันปัจจุบัน |
| 1000 | AbsoluteTP | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | ราคา | ราคาสัมบูรณ์ที่ Take Profit จะถูกทริกเกอร์ |
| 1002 | AbsoluteSL | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | ราคา | ราคาสัมบูรณ์ที่ Stop Loss จะถูกทริกเกอร์ |
| 1004 | TrailingSL | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | Boolean | ระบุว่า Stop Loss เป็นแบบ Trailing หรือไม่ N = Stop Loss ไม่ใช่แบบ Trailing Y = Stop Loss เป็นแบบ Trailing |
| 1005 | TriggerMethodSL | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | Integer | วิธีการทริกเกอร์ที่ระบุของ Stop Loss 1 = Stop Loss จะถูกทริกเกอร์โดยฝั่งการเทรด 2 = Stop Loss จะถูกทริกเกอร์โดยฝั่งตรงข้าม (Ask สำหรับโพสิชันซื้อและ Bid สำหรับโพสิชันขาย) 3 = Stop Loss จะถูกทริกเกอร์หลังจากสองติ๊กติดต่อกันตามฝั่งการเทรด 4 = Stop Loss จะถูกทริกเกอร์หลังจากสองติ๊กติดต่อกันตามฝั่งตรงข้าม (ติ๊ก Ask ที่สองสำหรับโพสิชันซื้อและติ๊ก Bid ที่สองสำหรับโพสิชันขาย) |
| 1006 | GuaranteedSL | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | Boolean | ระบุว่า Stop Loss ได้รับการรับประกันหรือไม่ N = Stop Loss ไม่ได้รับการรับประกัน Y = Stop Loss ได้รับการรับประกัน |
Standard Trailer | ใช่ |
Order Cancel Request (MsgType(35)=F)¶
| Tag | ชื่อฟิลด์ | จำเป็น | ค่า | รูปแบบ FIX | ความคิดเห็น |
|---|---|---|---|---|---|
Standard Header | ใช่ | ||||
| 41 | OrigClOrdID | ใช่ | ค่าที่ถูกต้องใดๆ | String | ตัวระบุเฉพาะของคำสั่งที่จะถูกยกเลิก ซึ่งกำหนดโดยไคลเอนต์ |
| 37 | OrderID | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | String | ID เฉพาะของคำสั่งที่ส่งคืนโดย cServer |
| 11 | ClOrdID | ใช่ | ค่าที่ถูกต้องใดๆ | String | 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)¶
| Tag | ชื่อฟิลด์ | จำเป็น | ค่า | รูปแบบ FIX | ความคิดเห็น |
|---|---|---|---|---|---|
Standard Header | ใช่ | ||||
| 37 | OrderID | ใช่ | ค่าที่ถูกต้องใดๆ | String | ตัวระบุเฉพาะของคำสั่งที่ระบบไม่สามารถยกเลิกได้ |
| 11 | ClOrdID | ใช่ | ค่าที่ถูกต้องใดๆ | String | ตัวระบุเฉพาะของคำขอยกเลิกคำสั่ง |
| 41 | OrigClOrdID | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | String | ตัวระบุเฉพาะของคำสั่งที่พยายามจะยกเลิก ซึ่งกำหนดโดยไคลเอนต์ |
| 39 | OrdStatus | ใช่ | ค่าที่ถูกต้องใดๆ | Char | 0 = ใหม่ 1 = เติมบางส่วน 2 = เติมเต็ม 8 = ปฏิเสธ 4 = ยกเลิก (เมื่อคำสั่งถูกเติมบางส่วน Canceled จะถูกส่งคืนเพื่อระบุ (tag=151), LeavesQty ถูกยกเลิกและจะไม่ถูกเติมในภายหลัง) C = หมดอายุ |
| 434 | CxlRejResponseTo | ใช่ | 1 หรือ 2 | Char | 1 = ปฏิเสธการยกเลิกคำสั่ง 2 = ปฏิเสธการแก้ไขคำสั่งจากเทอร์มินัลอื่น |
| 58 | Text | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | String | คำสั่งอยู่ระหว่างการดำเนินการ |
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)¶
| Tag | ชื่อฟิลด์ | จำเป็น | ค่า | รูปแบบ FIX | ความคิดเห็น |
|---|---|---|---|---|---|
Standard Header | ใช่ | ||||
| 41 | OrigClOrdID | ใช่ | Any valid value | String | ตัวระบุเฉพาะของคำสั่งที่จะถูกแก้ไข ซึ่งกำหนดโดยไคลเอนต์ |
| 37 | OrderID | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | String | ID เฉพาะของคำสั่งเดิมที่จะถูกแก้ไข ซึ่งกำหนดโดยเซิร์ฟเวอร์ วิธีที่แนะนำให้ใช้ |
| 11 | ClOrdID | ใช่ | ค่าที่ถูกต้องใดๆ | String | ID เฉพาะของคำขอแก้ไขที่กำหนดโดยไคลเอนต์ |
| 38 | OrderQty | ใช่ | ค่าที่ถูกต้องใดๆ | Qty | จำนวนที่มีอยู่หรือที่ระบุใหม่เพื่อแทนที่ค่าเดิม |
| 44 | Price | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | ราคา | ราคา Limit ที่มีอยู่หรือที่ระบุใหม่เพื่อแทนที่ค่าเดิม ใช้ได้เฉพาะกับคำสั่ง Limit |
| 99 | StopPx | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | ราคา | ราคา Stop ที่มีอยู่หรือที่ระบุใหม่เพื่อแทนที่ค่าเดิม ใช้ได้เฉพาะกับคำสั่ง Stop |
| 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)¶
| Tag | ชื่อฟิลด์ | จำเป็น | ค่า | รูปแบบ FIX | ความคิดเห็น |
|---|---|---|---|---|---|
Standard Header | ใช่ | ||||
| 262 | MDReqID | ใช่ | ค่าที่ถูกต้องใดๆ | String | ต้องอ้างอิงถึง MDReqID (tag=262) ของคำขอ |
| 281 | MDReqRejReason | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | Integer | 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)¶
| Tag | ชื่อฟิลด์ | จำเป็น | ค่า | รูปแบบ FIX | ความคิดเห็น |
|---|---|---|---|---|---|
Standard Header | ใช่ | ||||
| 320 | SecurityReqID | ใช่ | ค่าที่ถูกต้องใดๆ | String | ID เฉพาะของคำขอนิยามหลักทรัพย์ |
| 559 | SecurityListRequestType | ใช่ | 0 | Integer | ประเภทของคำขอรายการหลักทรัพย์ที่กำลังทำ รองรับเฉพาะ 0 = Symbol (tag=55) |
| 55 | Symbol | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | Integer | 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)¶
| Tag | ชื่อฟิลด์ | จำเป็น | ค่า | รูปแบบ FIX | ความคิดเห็น |
|---|---|---|---|---|---|
Standard Header | ใช่ | ||||
| 320 | SecurityReqID | ใช่ | ค่าที่ถูกต้องใดๆ | String | ID เฉพาะของคำขอนิยามหลักทรัพย์ |
| 322 | SecurityResponseID | ใช่ | ค่าที่ถูกต้องใดๆ | String | ID เฉพาะของการตอบสนองรายการหลักทรัพย์ |
| 560 | SecurityRequestResult | ใช่ | 0 | Integer | ผลลัพธ์ที่ส่งคืนให้กับข้อความคำขอหลักทรัพย์ ค่าที่ถูกต้องคือ: 0 = คำขอถูกต้อง 1 = คำขอไม่ถูกต้องหรือไม่รองรับ 2 = ไม่พบเครื่องมือที่ตรงกับเกณฑ์การเลือก 3 = ไม่ได้รับอนุญาตให้ดึงข้อมูลเครื่องมือ 4 = ข้อมูลเครื่องมือไม่พร้อมใช้งานชั่วคราว 5 = ไม่รองรับคำขอข้อมูลเครื่องมือ |
| 146 | NoRelatedSym | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | Integer | ระบุจำนวนของสัญลักษณ์ (เครื่องมือ) ที่ซ้ำกัน |
| 55 | Symbol | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | Integer | ตัวระบุเครื่องมือจัดเตรียมโดย Spotware |
| 1007 | SymbolName | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | String | ชื่อสัญลักษณ์ |
| 1008 | SymbolDigits | ไม่ใช่ | ค่าที่ถูกต้องใดๆ | Integer | จำนวนทศนิยมของสัญลักษณ์ ค่าที่เป็นไปได้คือ 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|