REST, WebSocket, FIX dan MT5 sering kali dipresentasikan sebagai empat API forex yang bersaing. Mereka tidak demikian.

REST biasanya adalah cara yang paling bersih untuk meminta data akun, memuat riwayat, atau mengirim perintah sesekali. WebSocket menjaga koneksi tetap terbuka sehingga harga dan pembaruan pesanan dapat tiba saat terjadi. FIX adalah standar pesan keuangan yang digunakan untuk pengalihan pesanan, laporan eksekusi, dan data pasar antara sistem perdagangan profesional. MT5 adalah platform perdagangan dengan beberapa API untuk berbagai pekerjaan.

Seorang broker dapat menggunakan keempatnya. Aplikasi seluler dapat memuat akun melalui REST, mengalirkan harga melalui WebSocket, mengirimkan pesanan ke MetaTrader 5 dan mengarahkan eksposur eksternal ke penyedia likuiditas melalui FIX. Setiap antarmuka berada di bagian yang berbeda dari perdagangan.

AntarmukaPola komunikasiKesesuaian terbaikKesesuaian buruk
REST APIKlien mengirim permintaan dan menerima responsAlur login, akun, simbol, riwayat, laporan, dan perintah frekuensi rendahStreaming harga terus-menerus melalui polling berulang
WebSocket APIKlien dan server menjaga koneksi dua arah tetap terbukaKutipan langsung, kedalaman, status pesanan, dan peristiwa akunKuery historis panjang dan catatan administratif sederhana
FIX APIDua sistem perdagangan bertukar pesan keuangan yang distandarisasi dalam sesi yang dikelolaAliran pesanan broker-ke-LP, venue, dan institusiAPI publik sederhana untuk aplikasi mobile ritel
MT5 APIsBeberapa antarmuka di sekitar platform MetaTrader 5Administrasi broker, ekstensi platform, gerbang, laporan, dan otomatisasi terminalProtokol universal yang independen dari MT5

Bagaimana API ini cocok ke dalam satu sistem perdagangan forex

Saya menganggap keempat nama tersebut sebagai lapisan yang berbeda.

REST dan WebSocket biasanya berada dekat dengan aplikasi yang dihadapi trader. FIX sering berada lebih dalam di infrastruktur eksekusi. MT5 mungkin adalah platform trading di tengah, tetapi juga dapat terhubung ke situs web, alat internal, dan tempat eksternal melalui API-nya sendiri.

Bagaimana satu pesanan forex bergerak melalui tumpukan

Satu pesanan. Lima langkah. Dari aplikasi trader ke eksekusi dan kembali.

RESTFIXWebSocket
Aplikasi TraderBELI 100K EUR/USD
Broker intiORDER #A-18427 / EUR/USD
Gateway APIMenunggu
Mesin risikoTertunda
Platform perdagangan – MT5Siap
Pengatur eksekusiTertunda
RESTMenunggu pesanan
Penyedia likuiditasHarga + pengisian
CRM / otomatisasiData akun dan klien
Tempat / pertukaranData pasar dan tempat
  1. Aplikasi mengirimkan pesanan ke broker melalui REST.
  2. Penyedia likuiditas mengirimkan harga ke broker, dan WebSocket menjaga aplikasi tetap terkini.
  3. Broker memeriksa pesanan dan meneruskannya ke platform trading.
  4. Router eksekusi mengirimkan pesanan ke penyedia likuiditas melalui FIX.
  5. Pengisian kembali ke broker, kemudian aplikasi menerima konfirmasi melalui WebSocket.
“`

Rute yang tepat bervariasi tergantung pada broker. Beberapa platform mengekspos perintah perdagangan melalui REST. Yang lain membawa baik permintaan maupun peristiwa melalui WebSocket atau TCP mentah. Seorang broker MT5 mungkin menggunakan gerbang, jembatan, atau logika perdagangan internal alih-alih mengirim setiap pesanan langsung ke penyedia likuiditas.

Jadi diagram harus dibaca sebagai pola arsitektur, bukan janji bahwa setiap broker memproses perdagangan dengan cara yang sama.

Apa itu REST API dalam perdagangan forex?

Sebuah REST API mengekspos sumber daya melalui HTTP. Sebuah klien mengirimkan permintaan ke sebuah titik akhir, dan server mengembalikan respons.

Panggilan yang khas terlihat seperti ini:

  • GET /accounts/417 untuk memuat akun;
  • GET /orders?status=open untuk mengambil pesanan yang terbuka;
  • GET /candles?symbol=EURUSD&timeframe=1h untuk meminta batang historis;
  • POST /orders untuk mengirimkan pesanan;
  • DELETE /orders/8921 untuk meminta pembatalan.

URL dan metode yang tepat tergantung pada penyedia. Ide stabilnya adalah permintaan dan respons. HTTP itu sendiri adalah protokol tanpa status, yang berarti setiap permintaan dapat dipahami secara terpisah. Spesifikasi HTTP mendefinisikan semantik di balik metode, kode status, dan respons.

Di mana REST bekerja dengan baik

REST adalah pilihan praktis untuk data yang hanya berubah saat diminta:

  • profil akun dan izin;
  • instrumen yang tersedia dan pengaturan kontrak;
  • setoran, penarikan, dan laporan;
  • pesanan historis, kesepakatan, dan lilin;
  • pengaturan strategi;
  • membuat atau membatalkan pesanan ketika API mendukung perdagangan.

Ini mudah untuk memeriksa, mencatat, menyimpan cache, dan mengintegrasikan dengan infrastruktur web biasa. Sebagian besar tim pengembangan sudah tahu cara bekerja dengan HTTP dan JSON.

Tempat REST mulai mengalami tekanan

REST tidak secara inheren lambat. API REST yang dibangun dengan baik dapat merespons dengan cukup cepat untuk banyak alur kerja perdagangan. Masalah muncul ketika klien harus mengajukan pertanyaan yang sama ratusan kali:

Apakah EUR/USD telah berubah?

Apakah pesanan saya sudah dipenuhi?

Apakah margin saya telah berubah?

Polling tersebut menciptakan permintaan yang berulang, header, dan kerja server. Ini juga dapat meninggalkan celah antara polling. Jika aplikasi meminta harga sekali per detik, ia tidak tahu apa yang terjadi di antara permintaan tersebut.

Saya menggunakan REST untuk snapshot dan perintah. Saya tidak menggunakan polling sebagai sumber utama keadaan perdagangan langsung ketika aliran peristiwa yang tepat ada.

Apa itu API WebSocket dalam trading forex?

WebSocket menciptakan satu koneksi dua arah yang permanen antara klien dan server. Setelah pembukaan handshake, salah satu pihak dapat mengirimkan pesan tanpa menunggu permintaan HTTP baru. Perilaku tersebut didefinisikan dalam protokol WebSocket.

Dalam aplikasi trading, klien dapat berlangganan EURUSD sekali. Server kemudian mengirimkan setiap pembaruan kutipan yang diizinkan melalui koneksi yang terbuka. Aliran yang sama dapat membawa pengakuan pesanan, pengisian, perubahan saldo, dan peristiwa margin.

Di mana WebSocket berfungsi dengan baik

API WebSocket forex cocok untuk data yang terus-menerus berubah:

  • harga tawar dan harga permintaan;
  • pembaruan grafik;
  • kedalaman pasar;
  • penerimaan pesanan, penolakan, dan pengisian;
  • perubahan posisi dan akun;
  • peringatan margin;
  • status sesi perdagangan.

Klien menerima perubahan daripada terus-menerus memintanya. Ini mengurangi polling dan membuat antarmuka terasa lebih hidup.

Koneksi yang terbuka tidak cukup

WebSocket tidak membuat aplikasi perdagangan menjadi dapat diandalkan dengan sendirinya.

Sebuah telepon berpindah jaringan. Sebuah laptop tidur. Sebuah proxy menutup koneksi yang tidak aktif. Server memulai ulang. Pesan mungkin berhenti datang sebelum antarmuka menyadarinya.

Saya mencari lima mekanisme pemulihan:

  1. Denyut jantung. Klien harus tahu apakah koneksi masih hidup.
  2. Keadaan data usang. Antarmuka harus berhenti menampilkan kutipan lama sebagai yang terkini.
  3. Sambungkan kembali dan berlangganan ulang. Klien perlu mengembalikan setiap aliran yang diperlukan.
  4. Snapshot plus pembaruan. Setelah terhubung kembali, muat snapshot REST terkini sebelum menerapkan acara baru.
  5. Urutan atau kursor. Jika API menyediakan pengidentifikasi acara, gunakan mereka untuk mendeteksi celah dan duplikat.

Apa itu FIX API dalam perdagangan forex?

FIX adalah singkatan dari Financial Information eXchange. Ini mendefinisikan pesan yang digunakan sistem keuangan untuk berkomunikasi tentang pesanan, eksekusi, kutipan, data pasar, dan sesi.

Sebuah pesanan baru, misalnya, mengikuti jenis pesan yang sama dengan bidang bernama untuk rincian seperti instrumen, sisi, kuantitas, tipe pesanan dan ID pesanan klien.

FIX adalah umum di antara:

  • broker dan penyedia likuiditas;
  • pialang dan bursa atau tempat lainnya;
  • klien institusional dan broker;
  • sistem manajemen pesanan dan sistem eksekusi.

Mengapa perusahaan menggunakan FIX

FIX memberikan kedua belah pihak bahasa keuangan yang sama dan cara yang disiplin untuk mengelola koneksi. Ini tidak otomatis menjadi API tercepat; mesin, jaringan, dan pengaturan lawan transaksi masih menentukan kinerja.

Sesi FIX melacak nomor urut pesan. Jika satu pihak menerima pesan 208 setelah pesan 206, mereka dapat mendeteksi bahwa 207 hilang dan meminta untuk dikirim ulang. Heartbeat dan permintaan tes membantu kedua belah pihak memantau sesi.

Itu penting ketika pesan-pesan tersebut mewakili pesanan dan pengisian. “Koneksi kembali” tidak cukup. Kedua sistem perlu sepakat tentang pesan mana yang telah diproses.

Apa yang tidak diselesaikan oleh FIX

FIX tidak menghapus pekerjaan integrasi.

Dua pihak masih harus sepakat mengenai:

  • versi FIX dan pesan yang didukung;
  • bidang yang diperlukan, opsional, dan kustom;
  • nama simbol dan pengidentifikasi instrumen;
  • tipe pesanan yang didukung dan nilai waktu dalam kekuatan;
  • presisi harga dan jumlah;
  • sesi perdagangan dan jendela pemeliharaan;
  • aturan pengaturan ulang dan pengiriman ulang;
  • kasus uji sertifikasi;
  • keamanan jaringan dan alamat IP yang diizinkan.

Saya tidak pernah menerima “FIX didukung” sebagai jawaban integrasi yang lengkap. Saya meminta spesifikasi pihak lawan dan rencana sertifikasi. Standar dengan aturan bidang yang berbeda di setiap sisi masih membutuhkan pemetaan dan pengujian.

Apa arti “MT5 API”?

MetaTrader 5 adalah sebuah platform, bukan satu protokol API. MetaQuotes mencantumkan beberapa antarmuka untuk broker, termasuk Manager, Gateway, Report, Server, dan Web API. Masing-masing memiliki peran yang berbeda dalam lingkungan MT5.

Manajer API

Manajer API adalah untuk administrasi dan alat manajemen sisi broker. Seorang broker dapat menggunakannya untuk membangun utilitas internal seputar akun, grup, operasi perdagangan, dan administrasi platform.

Ini bukan produk yang sama dengan kunci API pedagang ritel. Akses, lisensi, dan operasi yang didukung adalah milik pengaturan MetaTrader broker.

Gerbang API

Gateway API adalah untuk menghubungkan MetaTrader 5 dengan sistem perdagangan eksternal dan umpan data. MetaQuotes menggambarkan gateway sebagai plug-in platform yang menangani interaksi dengan bursa atau sistem terhubung lainnya.

Ini berada jauh lebih dekat dengan konektivitas pasar dibandingkan dengan endpoint REST yang menghadap trader.

Web, Laporan dan API Server

MetaQuotes menggambarkan Web API sebagai antarmuka untuk menghubungkan platform dengan sumber daya dan layanan web broker. Report API memperluas pelaporan server. Server API memungkinkan operator platform untuk menambahkan fungsi trade-server dan history-server.

Nama mereka mungkin terlihat jelas, tetapi cakupan dan ketersediaan harus diperiksa dalam lisensi broker dan dokumentasi teknis.

MQL5

MQL5 adalah bahasa dan lingkungan pemrograman yang digunakan di dalam MetaTrader 5. Trader dan pengembang membangun Penasihat Ahli, indikator, skrip, dan layanan yang berjalan dengan terminal.

Ini adalah rute asli untuk strategi otomatis yang memerlukan data grafik, indikator, dan fungsi perdagangan dalam MT5. Ini bukan protokol broker-ke-penyedia likuiditas.

Integrasi Python MetaTrader 5

Paket Python MetaTrader5 resmi memungkinkan program Python untuk membaca data dan mengirim permintaan perdagangan melalui terminal MetaTrader 5. Kata-kata penting adalah melalui terminal.

Dokumentasi Python resmi menyatakan bahwa paket ini berkomunikasi langsung dengan terminal menggunakan komunikasi antarproses. Ini tidak memberikan layanan cloud sembarangan koneksi langsung ke server MT5 broker.

Perbedaan itu mengubah penerapan. Strategi Python memerlukan lingkungan terminal yang kompatibel, sesi akun, pemantauan, dan rencana untuk restart terminal. Ini tidak boleh dirancang seolah-olah pip install MetaTrader5 membuat API broker sisi server.

Satu pesanan dapat melewati beberapa API

Misalkan seorang trader membeli 100.000 unit EUR/USD di aplikasi mobile broker.

  1. Aplikasi memuat akun, spesifikasi simbol, dan izin melalui REST.
  2. Ini menerima tawaran dan permintaan saat ini melalui WebSocket.
  3. Pedagang menekan Beli. Aplikasi mengirimkan perintah pesanan dengan ID pesanan klien yang unik.
  4. Layanan risiko broker memeriksa margin, batas, dan status pasar.
  5. Platform perdagangan menerima atau menolak pesanan. Platform tersebut bisa jadi adalah MT5.
  6. Terlepas dari model eksekusi broker, eksposur eksternal dapat dikirim ke penyedia likuiditas melalui FIX, gerbang, atau konektor lainnya.
  7. Laporan eksekusi kembali melalui tumpukan.
  8. Aplikasi menerima pesanan, posisi, dan saldo yang diperbarui melalui aliran acara.

REST tidak bersaing dengan FIX dalam urutan ini. Mereka bekerja di batas yang berbeda.

Kasus timeout yang mengungkapkan API yang lemah

Bagian sulit dari API pesanan bukanlah mengirimkan permintaan. Melainkan mengetahui apa yang terjadi ketika respons menghilang.

Anggap aplikasi mengirimkan instruksi ini:

Beli EURUSD, clientOrderId = mobile-84721

Permintaan telah habis waktu. Ada dua kemungkinan:

  • broker tidak pernah menerimanya;
  • pialang menerimanya, tetapi respons tersebut tidak sampai ke aplikasi.

Kirim perdagangan yang sama secara buta dapat menghasilkan dua posisi.

Alur kerja yang lebih aman adalah:

  1. Jaga agar ID pesanan klien tetap sama.
  2. Query status pesanan yang sah atau tunggu peristiwa pesanan.
  3. Biarkan server menolak atau menghapus duplikasi perintah yang sama dengan ID yang sama.
  4. Rekonsiliasi pesanan akhir dan lengkapi catatan sebelum mengizinkan percobaan ulang lainnya.

Ini sebabnya saya bertanya kepada penyedia API tentang idempotensi sebelum saya bertanya tentang laju permintaan headline. Endpoint yang cepat yang dapat menduplikasi tindakan finansial setelah waktu tunggu bukanlah endpoint trading yang baik.

REST vs WebSocket vs FIX vs MT5 berdasarkan kasus penggunaan

PersyaratanAntarmuka yang akan saya periksa terlebih dahuluAlasan
Situs web broker menunjukkan riwayat akunRESTKueri sederhana, otentikasi yang familiar, dan respons yang jelas
Daftar pantauan langsung di aplikasi web atau selulerWebSocketQuote tiba sebagai peristiwa tanpa polling terus-menerus
Masukan pesanan ritel dari aplikasi kustomPerintah REST ditambah status WebSocketAlur pengajuan yang jelas dengan pengakuan langsung dan pembaruan pengisian
Koneksi broker ke penyedia likuiditasFIX atau konektor bersertifikat penyediaAlur kerja pesanan dan eksekusi standar antara sistem perdagangan
Administrasi broker sekitar MT5API Manajer MT5Dibangun untuk utilitas manajemen sisi platform
Koneksi MT5 kustom ke venueAPI Gateway MT5 atau pengaturan jembatan/gateway yang telah terujiDirancang untuk konektivitas pasar platform
Penasihat Ahli yang berjalan di MT5MQL5Automasi terminal dan lingkungan pengujian asli
Analisis dan eksekusi Python melalui terminal MT5Paket Python MetaTrader 5Memberikan akses Python ke data terminal dan fungsi perdagangan
Kumpulan data penelitian historisREST atau ekspor data massalPengaturan ulang halaman, rentang tanggal, dan pengambilan yang dapat diulang lebih mudah

Meja adalah titik awal. Pilihan akhir tergantung pada API aktual penyedia, batasan tarif, otentikasi, jenis pesanan yang didukung, dan jaminan layanan.

Pertanyaan yang saya ajukan sebelum memilih API perdagangan forex

Data pasar

  • Apakah umpan tick-by-tick, dikumpulkan, atau diambil sampel?
  • Apakah cap waktu bid dan ask dihasilkan di sumber atau saat pengiriman?
  • Apakah aliran tersebut mencakup nomor urut?
  • Bagaimana cara klien memulihkan data setelah terputus?
  • Apakah spesifikasi simbol diberi versi saat pengaturan kontrak berubah?

Pesanan

  • Apakah ada ID pesanan klien yang unik?
  • Apakah perintah buat dan batal bersifat idempoten?
  • Bisakah API melaporkan pengisian sebagian dan beberapa laporan eksekusi?
  • Rekaman mana yang bersifat otoritatif setelah waktu habis?
  • Bagaimana cara pesanan yang ditolak, kadaluarsa, dan diganti diwakili?

Operasi

  • Apa batasan permintaan, langganan, dan koneksi?
  • Apakah lingkungan demo dan live setara secara perilaku?
  • Apakah ada halaman status dan pemberitahuan pemeliharaan yang dijadwalkan?
  • Bisakah log dikorelasikan antara klien, broker, dan tempat?
  • Bagaimana perubahan besar diberi versi dan diumumkan?

Keamanan

  • Hak akses mana yang dapat dibatasi per aplikasi atau token?
  • Bagaimana kredensial dirotasi dan dicabut?
  • Apakah daftar izinkan IP, TLS, dan kredensial produksi terpisah didukung?
  • Bisakah satu layanan membaca data tanpa menerima izin perdagangan?
  • Apakah setiap tindakan istimewa dicatat dalam log audit?

Jawaban-jawaban memberi tahu saya lebih banyak daripada label di API. Dua API REST dapat berbeda lebih dalam kualitas praktis daripada REST dan WebSocket.

Apa yang harus diputuskan oleh broker sebelum integrasi

Proyek API biasanya menjadi sulit ketika kepemilikan tidak jelas.

Tetapkan poin-poin ini sebelum pengembangan dimulai:

  1. Sistem catatan. Sistem mana yang memiliki pesanan, pengisian, saldo, dan posisi?
  2. Urutan acara. Bagaimana cara menangani duplikat, pesan terlambat, dan pembaruan yang tidak teratur?
  3. Pemulihan. Snapshot mana yang dimuat setelah koneksi ulang, dan dari kursor mana peristiwa dilanjutkan?
  4. Batas risiko. Pemeriksaan apa yang dilakukan sebelum pesanan mencapai platform atau tempat?
  5. Model simbol. Siapa yang memetakan nama, ukuran kontrak, sesi, dan presisi harga?
  6. Jejak audit. Dapat mendukung pelacakan satu tindakan klien dari aplikasi hingga laporan eksekusi akhir?

Ini adalah tempat di mana keputusan platform menjadi keputusan operasional. Infrastruktur broker Quadcode membawa platform trading, aplikasi klien, CRM, back office, risiko, dan integrasi ke dalam satu lingkungan. Konektivitas REST, streaming, MT5 atau likuiditas yang diperlukan tetap harus ditulis ke dalam desain solusi dan diuji terhadap aliran pesanan broker itu sendiri.

Jawaban akhir

Gunakan REST untuk permintaan yang jelas, snapshot, dan catatan. Gunakan WebSocket ketika aplikasi harus menerima perubahan secara langsung. Gunakan FIX untuk komunikasi perdagangan yang terstandarisasi antara sistem profesional. Gunakan antarmuka MT5 yang relevan ketika MetaTrader 5 adalah bagian dari platform.

Sebagian besar produk forex memerlukan kombinasi. Setelah kegagalan jaringan, arsitektur yang baik dapat menjawab tiga pertanyaan: Apakah pesanan diterima? Apakah pesanan tersebut dieksekusi? Apakah setiap sistem yang terhubung sekarang setuju mengenai hasilnya?