REST, WebSocket, FIX และ MT5 มักถูกนำเสนอเป็นสี่ API การเทรดฟอเร็กซ์ที่แข่งขันกัน แต่จริง ๆ แล้วพวกเขาไม่ใช่เช่นนั้น.

REST โดยทั่วไปเป็นวิธีที่สะอาดที่สุดในการขอข้อมูลบัญชี โหลดประวัติ หรือส่งคำสั่งเป็นครั้งคราว WebSocket รักษาการเชื่อมต่อให้อยู่ในสถานะเปิดเพื่อให้ราคาสินค้าและการอัปเดตคำสั่งสามารถเข้ามาได้เมื่อเกิดขึ้น FIX เป็นมาตรฐานการส่งข้อความทางการเงินที่ใช้สำหรับการส่งคำสั่ง รายงานการดำเนินการ และข้อมูลตลาดระหว่างระบบการซื้อขายมืออาชีพ MT5 เป็นแพลตฟอร์มการซื้อขายที่มี API หลายตัวสำหรับงานที่แตกต่างกัน

โบรกเกอร์อาจใช้ทั้งสี่วิธี แอปพลิเคชันมือถือสามารถโหลดบัญชีผ่าน REST สตรีมราคา ผ่าน WebSocket ส่งคำสั่งไปยัง MetaTrader 5 และจัดการการเปิดเผยภายนอกไปยัง ผู้ให้สภาพคล่อง ผ่าน FIX แต่ละอินเตอร์เฟซมีความสำคัญในส่วนที่แตกต่างกันของการซื้อขาย.

อินเทอร์เฟซรูปแบบการสื่อสารเหมาะสมที่สุดไม่เหมาะสม
REST APIไคลเอนต์ส่งคำขอและรับการตอบกลับการเข้าสู่ระบบ, บัญชี, สัญลักษณ์, ประวัติ, รายงาน และคำสั่งที่มีความถี่ต่ำการสตรีมราคาต่อเนื่องผ่านการตรวจสอบซ้ำ
WebSocket APIไคลเอนต์และเซิร์ฟเวอร์รักษาการเชื่อมต่อแบบสองทางไว้ราคาสด, ความลึก, สถานะคำสั่ง และเหตุการณ์บัญชีการสอบถามประวัติยาว ๆ และบันทึกการจัดการที่ง่าย
FIX APIระบบการซื้อขายสองระบบแลกเปลี่ยนข้อความทางการเงินที่มีมาตรฐานภายในเซสชันที่จัดการการไหลของคำสั่งจากนายหน้าไปยัง LP, สถานที่ และสถาบันAPI สาธารณะที่ง่ายสำหรับแอปมือถือค้าปลีก
MT5 APIsหลายอินเทอร์เฟซรอบแพลตฟอร์ม MetaTrader 5การจัดการนายหน้า, การขยายแพลตฟอร์ม, เกตเวย์, รายงาน และการทำงานอัตโนมัติของเทอร์มินัลโปรโตคอลสากลที่ไม่ขึ้นกับ MT5

วิธีที่ API เหล่านี้เข้ากับระบบการซื้อขายฟอเร็กซ์หนึ่ง

ฉันถือว่าสี่ชื่อนั้นเป็นชั้นที่แตกต่างกัน

REST และ WebSocket มักจะอยู่ใกล้กับแอปพลิเคชันที่ผู้ค้าหันหน้าไปหา FIX มักจะอยู่ลึกลงไปในโครงสร้างพื้นฐานการดำเนินการ MT5 อาจเป็นแพลตฟอร์มการซื้อขายที่อยู่ตรงกลาง แต่ก็สามารถเชื่อมต่อกับเว็บไซต์ เครื่องมือภายใน และสถานที่ภายนอกผ่าน API ของตนเองได้

การที่คำสั่งฟอเร็กซ์หนึ่งคำสั่งเคลื่อนที่ผ่านสแต็ค

หนึ่งคำสั่ง. ห้าขั้นตอน. จากแอปของเทรดเดอร์ไปยังการดำเนินการและกลับมาอีกครั้ง.

เรสต์ฟิกซ์เว็บซ็อกเก็ต
แอปเทรดเดอร์ซื้อ 100K EUR/USD
แกนโบรกเกอร์คำสั่ง #A-18427 / EUR/USD
API เกตเวย์รอ
เครื่องยนต์ความเสี่ยงรอดำเนินการ
แพลตฟอร์มการซื้อขาย – MT5พร้อมใช้งาน
เราเตอร์การดำเนินการรอดำเนินการ
RESTรอคำสั่ง
ผู้ให้บริการสภาพคล่องราคา + การเติม
CRM / อัตโนมัติข้อมูลบัญชีและลูกค้า
สถานที่ / แลกเปลี่ยนข้อมูลตลาดและสถานที่
  1. แอปส่งคำสั่งไปยังโบรกเกอร์ผ่าน REST.
  2. ผู้ให้บริการสภาพคล่องส่งราคาไปยังโบรกเกอร์ และ WebSocket ทำให้แอปทันสมัยอยู่เสมอ.
  3. โบรกเกอร์ตรวจสอบคำสั่งและส่งต่อไปยังแพลตฟอร์มการเทรด.
  4. เราท์เตอร์การดำเนินการส่งคำสั่งไปยังผู้ให้บริการสภาพคล่องผ่าน FIX.
  5. การเติมกลับไปยังโบรกเกอร์ จากนั้นแอปจะได้รับการยืนยันผ่าน WebSocket.

เส้นทางที่แน่นอนขึ้นอยู่กับโบรกเกอร์ บางแพลตฟอร์มเปิดเผยคำสั่งซื้อขายผ่าน REST ขณะที่แพลตฟอร์มอื่น ๆ ใช้ทั้งคำขอและเหตุการณ์ผ่าน WebSocket หรือ TCP ดิบ โบรกเกอร์ MT5 อาจใช้เกตเวย์ สะพาน หรือการทำงานภายในแทนที่จะส่งคำสั่งทุกคำสั่งตรงไปยังผู้ให้สภาพคล่อง

ดังนั้น แผนภาพควรถูกอ่านว่าเป็นรูปแบบสถาปัตยกรรม ไม่ใช่คำสัญญาว่าผู้ซื้อขายทุกคนจะดำเนินการซื้อขายในลักษณะเดียวกัน

REST API ในการซื้อขายฟอเร็กซ์คืออะไร?

API REST เปิดเผยทรัพยากรผ่าน HTTP ลูกค้าส่งคำขอไปยังจุดสิ้นสุด และเซิร์ฟเวอร์ส่งกลับการตอบสนอง

การโทรศัพท์ทั่วไปจะมีลักษณะเช่นนี้:

  • GET /accounts/417 เพื่อโหลดบัญชี;
  • GET /orders?status=open เพื่อนำข้อมูลคำสั่งซื้อตามสถานะที่เปิดอยู่;
  • GET /candles?symbol=EURUSD&timeframe=1h เพื่อขอข้อมูลแท่งประวัติศาสตร์;
  • POST /orders เพื่อส่งคำสั่งซื้อ;
  • DELETE /orders/8921 เพื่อขอยกเลิกการสั่งซื้อ.

URL และวิธีการที่แน่นอนขึ้นอยู่กับผู้ให้บริการ แนวคิดที่มั่นคงคือการร้องขอและการตอบสนอง HTTP เองเป็นโปรโตคอลที่ไม่มีสถานะ ซึ่งหมายความว่าการร้องขอแต่ละครั้งสามารถเข้าใจได้ด้วยตัวมันเอง ข้อกำหนด HTTP กำหนดความหมายเบื้องหลังวิธีการ รหัสสถานะ และการตอบสนอง

ที่ไหนที่ REST ทำงานได้ดี

REST เป็นทางเลือกที่เหมาะสมสำหรับข้อมูลที่เปลี่ยนแปลงเฉพาะเมื่อมีการร้องขอ:

  • โปรไฟล์บัญชีและสิทธิ์;
  • เครื่องมือและการตั้งค่าในสัญญาที่มีอยู่;
  • เงินฝาก, การถอนเงิน และรายงาน;
  • คำสั่งประวัติศาสตร์, ข้อตกลงและเทียน;
  • การตั้งค่าแผนกลยุทธ์;
  • การสร้างหรือยกเลิกคำสั่งซื้อเมื่อ API รองรับการซื้อขาย。

มันง่ายต่อการตรวจสอบ, บันทึก, แคช และรวมเข้ากับโครงสร้างพื้นฐานเว็บทั่วไป ทีมพัฒนาส่วนใหญ่รู้วิธีทำงานกับ HTTP และ JSON อยู่แล้ว

จุดเริ่มต้นที่ REST เริ่มมีปัญหา

REST ไม่ได้ช้าโดยธรรมชาติ API REST ที่สร้างขึ้นอย่างดีสามารถตอบสนองได้อย่างรวดเร็วพอสำหรับหลาย ๆ กระบวนการซื้อขาย ปัญหาจะเกิดขึ้นเมื่อไคลเอนต์ต้องถามคำถามเดียวกันซ้ำแล้วซ้ำเล่าเป็นร้อย ๆ ครั้ง:

EUR/USD เปลี่ยนแปลงหรือไม่?

คำสั่งซื้อของฉันถูกดำเนินการหรือยัง?

ขอบของฉันเปลี่ยนแปลงไปหรือไม่?

การสำรวจนั้นสร้างคำขอซ้ำๆ, หัวเรื่องและการทำงานของเซิร์ฟเวอร์ มันยังสามารถทำให้มีช่องว่างระหว่างการสำรวจ หากแอปขอราคาหนึ่งครั้งต่อวินาที มันจะไม่รู้ว่าเกิดอะไรขึ้นระหว่างคำขอนั้น

ฉันใช้ REST สำหรับการถ่ายภาพและคำสั่ง ฉันไม่ใช้การตรวจสอบเป็นแหล่งข้อมูลหลักของสถานะการซื้อขายสดเมื่อมีการสตรีมเหตุการณ์ที่เหมาะสมอยู่

WebSocket API คืออะไรในตลาดฟอเร็กซ์?

WebSocket สร้างการเชื่อมต่ออย่างต่อเนื่องแบบสองทางระหว่างไคลเอนต์และเซิร์ฟเวอร์ หลังจากการจับมือเปิดแล้ว ฝ่ายใดฝ่ายหนึ่งสามารถส่งข้อความได้โดยไม่ต้องรอคำขอ HTTP ใหม่ พฤติกรรมนี้ถูกกำหนดไว้ใน โปรโตคอล WebSocket.

ในแอปการซื้อขาย ลูกค้าสามารถสมัครสมาชิก EURUSD ได้ครั้งเดียว จากนั้นเซิร์ฟเวอร์จะส่งการอัปเดตอ้างอิงที่อนุญาตแต่ละครั้งผ่านการเชื่อมต่อที่เปิดอยู่ สตรีมเดียวกันอาจส่งการยืนยันคำสั่ง การเติมเงิน การเปลี่ยนแปลงยอดคงเหลือ และเหตุการณ์มาร์จิ้น

ที่ไหนที่ WebSocket ทำงานได้ดี

API เว็บซ็อกเก็ต Forex เหมาะสำหรับข้อมูลที่เปลี่ยนแปลงตลอดเวลา:

  • ราคาเสนอซื้อและเสนอขาย;
  • การอัปเดตแผนภูมิ;
  • ความลึกของตลาด;
  • การยอมรับคำสั่งซื้อ, การปฏิเสธและการเติมเต็ม;
  • การเปลี่ยนตำแหน่งและบัญชี;
  • คำเตือนเกี่ยวกับขอบ;
  • สถานะการซื้อขาย.

ลูกค้าจะได้รับการเปลี่ยนแปลงแทนที่จะต้องร้องขอซ้ำแล้วซ้ำอีก สิ่งนี้ช่วยลดการตรวจสอบและทำให้ส่วนต่อประสานรู้สึกสดใหม่

การเชื่อมต่อแบบเปิดไม่เพียงพอ

WebSocket ไม่ทำให้แอปพลิเคชันการซื้อขายมีความน่าเชื่อถือด้วยตัวมันเอง

โทรศัพท์เปลี่ยนเครือข่าย แล็ปท็อปเข้าสู่โหมดพักเครื่อง พร็อกซี่ปิดการเชื่อมต่อที่ไม่ใช้งาน เซิร์ฟเวอร์เริ่มต้นใหม่ ข้อความอาจหยุดเข้ามาก่อนที่ส่วนติดต่อจะสังเกตเห็น

ฉันมองหากลไกการฟื้นฟูห้าอย่าง:

  1. การเต้นของหัวใจ. ลูกค้าต้องรู้ว่า การเชื่อมต่อยังคงใช้งานอยู่หรือไม่.
  2. สถานะข้อมูลที่ล้าสมัย. อินเทอร์เฟซต้องหยุดการแสดงราคาที่เก่าเป็นราคาปัจจุบัน.
  3. เชื่อมต่อใหม่และสมัครสมาชิกอีกครั้ง. ลูกค้าจำเป็นต้องกู้คืนทุกสตรีมที่จำเป็น.
  4. สแน็ปช็อตพร้อมอัปเดต. หลังจากเชื่อมต่อใหม่ โหลดสแน็ปช็อต REST ปัจจุบันก่อนที่จะใช้เหตุการณ์ใหม่.
  5. ลำดับหรือเคอร์เซอร์ หาก API มีการระบุเหตุการณ์ ให้ใช้เพื่อตรวจจับช่องว่างและข้อมูลซ้ำ

FIX API คืออะไรในการซื้อขายฟอเร็กซ์?

FIX ย่อมาจาก Financial Information eXchange มันกำหนดข้อความที่ระบบการเงินใช้ในการสื่อสารเกี่ยวกับการสั่งซื้อ การดำเนินการ การเสนอราคา ข้อมูลตลาด และเซสชันต่างๆ

คำสั่งใหม่ ตัวอย่างเช่น จะตามข้อความที่แชร์ซึ่งมีฟิลด์ที่ตั้งชื่อสำหรับรายละเอียด เช่น เครื่องมือ, ด้าน, ปริมาณ, ประเภทคำสั่ง และรหัสคำสั่งของลูกค้า.

FIX เป็นเรื่องปกติระหว่าง:

  • นายหน้าและผู้ให้บริการสภาพคล่อง;
  • โบรกเกอร์และตลาดหลักทรัพย์หรือสถานที่อื่น ๆ;
  • ลูกค้าสถาบันและนายหน้า;
  • ระบบการจัดการคำสั่งซื้อและระบบการดำเนินการ.

ทำไมบริษัทต่างๆ จึงใช้ FIX

FIX ให้ทั้งสองฝ่ายมีภาษาการเงินที่เป็นกลางและวิธีการที่มีระเบียบในการจัดการการเชื่อมต่อ มันไม่ได้เป็น API ที่เร็วที่สุดโดยอัตโนมัติ; เครื่องยนต์ เครือข่าย และการตั้งค่าฝ่ายตรงข้ามยังคงกำหนดประสิทธิภาพ

เซสชัน FIX จะติดตามหมายเลขลำดับข้อความ หากด้านหนึ่งได้รับข้อความ 208 หลังจากข้อความ 206 มันสามารถตรวจจับได้ว่า 207 ขาดหายไปและขอให้ส่งใหม่ การส่งสัญญาณชีพและคำขอทดสอบช่วยให้ทั้งสองฝ่ายสามารถตรวจสอบเซสชันได้

สิ่งนั้นมีความสำคัญเมื่อข้อความที่ส่งแสดงถึงคำสั่งและการเติมเต็ม “การเชื่อมต่อกลับมา” ไม่เพียงพอ ทั้งสองระบบต้องตกลงกันว่า ข้อความใดถูกประมวลผลแล้ว

สิ่งที่ FIX ไม่สามารถแก้ไขได้

FIX ไม่ได้ลบงานการรวมเข้าด้วยกัน.

คู่สัญญาทั้งสองยังต้องตกลงกันเกี่ยวกับ:

  • เวอร์ชัน FIX และข้อความที่รองรับ;
  • ฟิลด์ที่จำเป็น, ฟิลด์ที่เลือกได้และฟิลด์ที่กำหนดเอง;
  • ชื่อสัญลักษณ์และตัวระบุอุปกรณ์;
  • ประเภทคำสั่งที่รองรับและค่าช่วงเวลาที่มีผล;
  • ความแม่นยำของราคาและปริมาณ;
  • เซสชันการซื้อขายและหน้าต่างการดูแลรักษา;
  • กฎการรีเซ็ตลำดับและส่งใหม่;
  • กรณีทดสอบการรับรอง;
  • ความปลอดภัยของเครือข่ายและที่อยู่ IP ที่อนุญาต

ฉันไม่เคยรับ “FIX supported” เป็นคำตอบการรวมระบบที่สมบูรณ์ ฉันขอรายละเอียดการเฉพาะเจาะจงของคู่สัญญาและแผนการรับรอง มาตรฐานที่มีกฎฟิลด์ที่แตกต่างกันในแต่ละด้านยังคงต้องการการแมพปิ้งและการทดสอบ

“MT5 API” หมายถึงอะไร?

MetaTrader 5 เป็นแพลตฟอร์ม ไม่ใช่โปรโตคอล API ตัวเดียว MetaQuotes มีรายการอินเทอร์เฟซหลายรายการสำหรับโบรกเกอร์ ซึ่งรวมถึง Manager, Gateway, Report, Server และ Web APIs แต่ละรายการมีบทบาทที่แตกต่างกันในสภาพแวดล้อม MT5.

ผู้จัดการ API

API ผู้จัดการเป็นเครื่องมือสำหรับการบริหารจัดการและการจัดการด้านโบรกเกอร์ โบรกเกอร์สามารถใช้เพื่อสร้างยูทิลิตี้ภายในเกี่ยวกับบัญชี กลุ่ม การดำเนินการซื้อขาย และการบริหารจัดการแพลตฟอร์ม

นี่ไม่ใช่ผลิตภัณฑ์เดียวกันกับ API key ของผู้ค้าปลีก การเข้าถึง การอนุญาต และการดำเนินการที่รองรับเป็นของการตั้งค่า MetaTrader ของโบรกเกอร์

เกตเวย์ API

Gateway API เป็นเครื่องมือที่ใช้เชื่อมต่อ MetaTrader 5 กับระบบการซื้อขายภายนอกและการให้ข้อมูล MetaQuotes อธิบายว่า gateway เป็นปลั๊กอินของแพลตฟอร์มที่จัดการการโต้ตอบกับการแลกเปลี่ยนหรือระบบที่เชื่อมต่ออื่นๆ

นี่อยู่ใกล้กับการเชื่อมต่อกับตลาดมากกว่าจุดสิ้นสุด REST ที่เผชิญหน้ากับผู้ค้าค่ะ

เว็บ, รายงานและ API เซิร์ฟเวอร์

MetaQuotes อธิบาย Web API ว่าเป็นส่วนต่อประสานสำหรับเชื่อมโยงแพลตฟอร์มกับทรัพยากรและบริการเว็บของโบรกเกอร์ รายงาน API ขยายการรายงานเซิร์ฟเวอร์ เซิร์ฟเวอร์ API ช่วยให้ผู้ดำเนินการแพลตฟอร์มสามารถเพิ่มฟังก์ชันการทำงานของเซิร์ฟเวอร์การค้าและเซิร์ฟเวอร์ประวัติได้

ชื่อของพวกเขาอาจดูเหมือนจะอธิบายตัวเองได้ แต่ขอบเขตและความพร้อมใช้งานต้องตรวจสอบในใบอนุญาตของโบรกเกอร์และเอกสารทางเทคนิค

MQL5

MQL5 เป็นภาษาที่ใช้และสภาพแวดล้อมการเขียนโปรแกรมที่ใช้ภายใน MetaTrader 5 นักเทรดและนักพัฒนาสร้างที่ปรึกษาผู้เชี่ยวชาญ, ตัวชี้วัด, สคริปต์และบริการที่ทำงานร่วมกับเทอร์มินัล

เป็นเส้นทางพื้นเมืองสำหรับกลยุทธ์อัตโนมัติที่ต้องการข้อมูลแผนภูมิ ตัวชี้วัด และฟังก์ชันการซื้อขายภายใน MT5 ไม่ใช่โปรโตคอลจากโบรกเกอร์ไปยังผู้ให้สภาพคล่อง.

การรวม MetaTrader 5 กับ Python

แพ็คเกจ MetaTrader5 Python อย่างเป็นทางการช่วยให้โปรแกรม Python สามารถอ่านข้อมูลและส่งคำขอการซื้อขายผ่านทางเทอร์มินัล MetaTrader 5 คำสำคัญคือ ผ่านทางเทอร์มินัล.

เอกสาร Python อย่างเป็นทางการ ระบุว่าชุดโปรแกรมสื่อสารโดยตรงกับเทอร์มินัลโดยใช้การสื่อสารระหว่างกระบวนการ มันไม่ให้บริการคลาวด์แบบสุ่มเชื่อมต่อโดยตรงกับเซิร์ฟเวอร์ MT5 ของโบรกเกอร์

ความแตกต่างนั้นเปลี่ยนวิธีการใช้งาน การวางกลยุทธ์ด้วย Python ต้องการสภาพแวดล้อมในเทอร์มินัลที่เข้ากันได้ การเข้าสู่ระบบบัญชี การติดตาม และแผนสำหรับการรีสตาร์ทเทอร์มินัล มันไม่ควรถูกออกแบบราวกับว่า pip install MetaTrader5 สร้าง API โบรกเกอร์ด้านเซิร์ฟเวอร์

คำสั่งหนึ่งสามารถผ่านหลาย API ได้

สมมติว่าผู้ค้ามีการซื้อ 100,000 หน่วยของ EUR/USD ในแอปมือถือของโบรกเกอร์

  1. แอปโหลดบัญชี, การระบุสัญลักษณ์ และสิทธิ์ผ่าน REST.
  2. มันรับราคาประมูลและเสนอปัจจุบันผ่าน WebSocket.
  3. ผู้ค้ากดซื้อ แอปจะส่งคำสั่งซื้อที่มีหมายเลขคำสั่งซื้อเฉพาะของลูกค้า
  4. บริการความเสี่ยงของโบรกเกอร์ตรวจสอบมาร์จิน ขีดจำกัด และสถานะตลาด
  5. แพลตฟอร์มการซื้อขายจะยอมรับหรือปฏิเสธคำสั่งนั้น แพลตฟอร์มนั้นอาจเป็น MT5.
  6. ขึ้นอยู่กับโมเดลการดำเนินการของโบรกเกอร์ การเปิดเผยภายนอกอาจถูกส่งไปยังผู้ให้บริการสภาพคล่องผ่าน FIX, เกตเวย์ หรือการเชื่อมต่ออื่น ๆ.
  7. รายงานการดำเนินการจะส่งกลับผ่านสแต็ก。
  8. แอปจะได้รับคำสั่งซื้อที่อัปเดต ตำแหน่ง และยอดคงเหลือผ่านสตรีมเหตุการณ์ของมัน

REST ไม่ได้แข่งขันกับ FIX ในลำดับนี้ พวกเขาทำงานที่ขอบเขตที่แตกต่างกัน

กรณีหมดเวลา ที่เปิดเผย API ที่อ่อนแอ

ส่วนที่ยากของ API คำสั่งคือไม่ใช่การส่งคำขอ แต่คือการรู้ว่าเกิดอะไรขึ้นเมื่อการตอบกลับหายไป

สมมติว่าแอปส่งคำสั่งนี้:

ซื้อ EURUSD, clientOrderId = mobile-84721

คำขอหมดเวลา มีสองความเป็นไปได้:

  • นายหน้าซื้อขายไม่เคยได้รับมัน;
  • นายหน้าตกลงรับมัน แต่คำตอบไม่ได้ส่งถึงแอปพลิเคชัน

การส่งคำสั่งซื้อขายเดียวกันโดยไม่ดูให้ดีอาจสร้างตำแหน่งได้สองตำแหน่ง

การทำงานที่ปลอดภัยมากขึ้นคือ:

  1. รักษาหมายเลขคำสั่งซื้อของลูกค้าให้เหมือนเดิม.
  2. สอบถามสถานะคำสั่งที่มีอำนาจหรือรอเหตุการณ์คำสั่ง
  3. ให้เซิร์ฟเวอร์ปฏิเสธหรือทำการกำจัดคำสั่งที่ซ้ำกันที่มี ID เดียวกัน
  4. ทำการปรับยอดคำสั่งซื้อสุดท้ายและกรอกข้อมูลก่อนที่จะเปิดใช้งานการลองใหม่อีกครั้ง.

REST กับ WebSocket กับ FIX กับ MT5 ตามกรณีการใช้งาน

ความต้องการส่วนติดต่อที่ฉันจะตรวจสอบเป็นอันดับแรกเหตุผล
เว็บไซต์ของโบรกเกอร์ที่แสดงประวัติบัญชีRESTการสอบถามที่ง่าย การรับรองความถูกต้องที่คุ้นเคย และการตอบสนองที่ชัดเจน
รายการเฝ้าดูแบบสดในแอปเว็บไซต์หรือมือถือWebSocketการอ้างอิงเข้ามาเป็นเหตุการณ์โดยไม่ต้องตรวจสอบตามเวลาที่กำหนด
การสั่งซื้อจากแอปที่กำหนดเองคำสั่ง REST พร้อมสถานะ WebSocketกระบวนการส่งที่ชัดเจนพร้อมการยืนยันแบบสดและการอัปเดตการเติม
การเชื่อมต่อของโบรกเกอร์กับผู้ให้บริการสภาพคล่องFIX หรือการเชื่อมต่อที่ได้รับการรับรองจากผู้ให้บริการกระบวนการสั่งซื้อและการดำเนินการมาตรฐานระหว่างระบบการซื้อขาย
การบริหารจัดการโบรกเกอร์รอบ MT5MT5 Manager APIสร้างขึ้นสำหรับยูทิลิตี้การจัดการฝั่งแพลตฟอร์ม
การเชื่อมต่อ MT5 ที่กำหนดเองกับสถานที่MT5 Gateway API หรือการตั้งค่าบริดจ์/เกตเวย์ที่ผ่านการทดสอบออกแบบมาสำหรับการเชื่อมต่อระหว่างตลาดแพลตฟอร์ม
ที่ปรึกษาผู้เชี่ยวชาญที่ทำงานใน MT5MQL5การทำงานอัตโนมัติของเทอร์มินัลแบบเนทีฟและสภาพแวดล้อมการทดสอบ
การวิเคราะห์และการดำเนินการ Python ผ่านเทอร์มินัล MT5MetaTrader 5 Python packageให้ Python เข้าถึงข้อมูลเทอร์มินัลและฟังก์ชันการซื้อขาย
ชุดข้อมูลการวิจัยประวัติศาสตร์REST หรือการส่งออกข้อมูลแบบกลุ่มการแบ่งหน้า ง่ายขึ้น ช่วงวันที่ และการดึงข้อมูลซ้ำได้

ตารางเป็นจุดเริ่มต้น ตัวเลือกสุดท้ายขึ้นอยู่กับ API ของผู้ให้บริการจริง ข้อจำกัดอัตรา การตรวจสอบสิทธิ์ ประเภทคำสั่งที่รองรับ และการรับประกันบริการ

คำถามที่ฉันถามก่อนเลือก API การซื้อขายฟอเร็กซ์

ข้อมูลตลาด

  • ฟีดเป็นแบบทีละนาที, รวมกันหรือสุ่มตัวอย่าง?
  • เวลาเสนอราคาและถามถูกสร้างขึ้นที่แหล่งที่มา หรือในขณะจัดส่ง?
  • การสตรีมรวมหมายเลขลำดับหรือไม่?
  • ลูกค้าจะกู้คืนข้อมูลได้อย่างไรหลังจากการตัดการเชื่อมต่อ?
  • การระบุสัญลักษณ์จะมีการเวอร์ชันเมื่อการตั้งค่าในสัญญาเปลี่ยนแปลงหรือไม่?

คำสั่งซื้อ

  • มีหมายเลขคำสั่งซื้อของลูกค้าที่ไม่ซ้ำกันหรือไม่?
  • คำสั่งสร้างและยกเลิกมีอิดempotent หรือไม่?
  • API สามารถรายงานการเติมบางส่วนและรายงานการดำเนินการหลายครั้งได้หรือไม่?
  • บันทึกใดที่เป็นที่เชื่อถือได้หลังจากหมดเวลา?
  • คำสั่งที่ถูกปฏิเสธ หมดอายุ และถูกแทนที่จะแสดงผลอย่างไร?

การดำเนินงาน

  • ข้อกำหนดในการขอ การสมัครสมาชิก และข้อจำกัดการเชื่อมต่อคืออะไร?
  • สภาพแวดล้อมเดโมและสดมีพฤติกรรมเทียบเท่ากันหรือไม่?
  • มีหน้าสถานะและการแจ้งเตือนการบำรุงรักษาที่กำหนดไว้หรือไม่?
  • สามารถทำให้บันทึกเชื่อมโยงกันได้ระหว่างลูกค้า โบรกเกอร์ และสถานที่จัดงานหรือไม่?
  • การเปลี่ยนแปลงที่สำคัญถูกเวอร์ชันและประกาศอย่างไร?

ความปลอดภัย

  • สิทธิ์ใดบ้างที่สามารถจำกัดได้ต่อแอปพลิเคชันหรือโทเค็น?
  • การเปลี่ยนและเพิกถอนข้อมูลรับรองทำได้อย่างไร?
  • มีการสนับสนุน IP allowlists, TLS และข้อมูลรับรองการผลิตแยกต่างหากหรือไม่?
  • บริการหนึ่งสามารถอ่านข้อมูลโดยไม่ต้องได้รับอนุญาตในการซื้อขายได้หรือไม่?
  • การกระทำที่มีสิทธิพิเศษทุกอย่างถูกบันทึกลงในบันทึกการตรวจสอบหรือไม่?

คำตอบบอกฉันมากกว่าป้ายกำกับบน API สอง REST APIs อาจแตกต่างกันในคุณภาพการใช้งานมากกว่าระหว่าง REST และ WebSocket

นายหน้าควรตัดสินใจก่อนการรวมระบบ

โครงการ API มักจะกลายเป็นเรื่องยากเมื่อความเป็นเจ้าของไม่ชัดเจน。

กำหนดจุดเหล่านี้ก่อนเริ่มการพัฒนา:

  1. ระบบการบันทึก. ระบบใดที่เป็นเจ้าของคำสั่ง, การเติมเต็ม, ยอดคงเหลือ และตำแหน่ง?
  2. ลำดับเหตุการณ์. การจัดการกับข้อความซ้ำ ข้อความที่ส่งช้า และการอัปเดตที่ไม่เป็นระเบียบทำอย่างไร?
  3. การกู้คืน. สแน็ปช็อตใดที่ถูกโหลดหลังจากการเชื่อมต่อใหม่ และเหตุการณ์จะเริ่มต้นจากเคอร์เซอร์ใด?
  4. ขอบเขตความเสี่ยง. การตรวจสอบใดบ้างที่เกิดขึ้นก่อนที่คำสั่งจะถึงแพลตฟอร์มหรือสถานที่?
  5. แบบจำลองสัญลักษณ์. ใครเป็นผู้กำหนดชื่อ ขนาดสัญญา ช่วงเวลา และความแม่นยำของราคา?
  6. บันทึกการตรวจสอบ. สามารถสนับสนุนการติดตามการกระทำของลูกค้าจากแอปไปยังรายงานการดำเนินการสุดท้ายได้หรือไม่?

นี่คือจุดที่การตัดสินใจเกี่ยวกับแพลตฟอร์มกลายเป็นการตัดสินใจในการดำเนินงาน โครงสร้างพื้นฐานการซื้อขายของ Quadcode นำแพลตฟอร์มการซื้อขาย แอปพลิเคชันของลูกค้า CRM สำนักงานหลัง ความเสี่ยง และการรวมเข้าเป็นสภาพแวดล้อมเดียว ความสามารถในการเชื่อมต่อ REST, สตรีมมิ่ง, MT5 หรือสภาพคล่องที่จำเป็นควรยังคงถูกเขียนลงในการออกแบบโซลูชันและทดสอบตามกระแสคำสั่งของโบรกเกอร์เอง

คำตอบสุดท้าย

ใช้ REST สำหรับคำขอที่ชัดเจน, สแน็ปช็อต และบันทึก ใช้ WebSocket เมื่อแอปพลิเคชันต้องรับการเปลี่ยนแปลงแบบสด ใช้ FIX สำหรับการสื่อสารการซื้อขายที่เป็นมาตรฐานระหว่างระบบมืออาชีพ ใช้ส่วนติดต่อ MT5 ที่เกี่ยวข้องเมื่อ MetaTrader 5 เป็นส่วนหนึ่งของแพลตฟอร์ม

ผลิตภัณฑ์ฟอเร็กซ์ส่วนใหญ่ต้องการการรวมกัน หลังจากการล้มเหลวของเครือข่าย สถาปัตยกรรมที่ดีสามารถตอบคำถามสามข้อ: ได้รับคำสั่งหรือไม่? ดำเนินการเสร็จหรือยัง? ระบบที่เชื่อมต่อทุกระบบตอนนี้เห็นพ้องต้องกันเกี่ยวกับผลลัพธ์หรือไม่?