Хичээл 4 / 6advanced18 мин унших

API арилжааны үндэс

Брокеруудтай програмчлалаар холбогдох. REST API, WebSocket, гүйцэтгэлийн автоматжуулалт.

Гол нэр томьёо

API·REST·WebSocket·FIX protocol·programmatic trading

Application Programming Interface буюу API нь таны арилжааны санаа болон брокерийн гүйцэтгэлийн дэд бүтцийг холбодог гүүр юм. MetaTrader зэрэг платформууд Expert Advisor-ээр дамжуулан автоматжуулсан арилжааны суулгасан орчныг хангадаг боловч API trading нь үндсэндээ өөр зүйл санал болгодог: ямар ч програмчлалын хэлээр, ямар ч платформ дээр, ямар ч архитектураар арилжааны систем бүтээх эрх чөлөө. MQL5 болон MetaTrader экосистемд хязгаарлагдахын оронд API trading нь Python, JavaScript, C++, Java эсвэл HTTP хүсэлт илгээх эсвэл socket холболт үүсгэх чадвартай аливаа хэлээр стратеги бичих боломжийг олгодог.

Платформд тусгайлсан автоматжуулалтын хязгаарлалтаас өссөн эсвэл арилжааг гадны өгөгдлийн эх үүсвэр, machine learning загвар эсвэл тусгай аналитиктай нэгтгэхийг хүсч буй трейдерүүдийн хувьд API trading бол дараагийн байгалийн алхам юм. Энэ хичээлд суурь протоколууд, практик хэрэгжүүлэлтийн хэв маяг, API арилжаа эрэлхийлж буй хүн бүрийн ойлгох ёстой аюулгүй байдлын асуудлуудыг авч үзнэ.

API Trading дахь үндсэн протоколууд

Гурван үндсэн холбооны протокол forex API trading-ийн орчинд давамгайлдаг. Тэдгээрийн ялгаа, давуу тал, зохих хэрэглээг ойлгох нь үр дүнтэй арилжааны систем зохион бүтээхэд чухал.

REST (Representational State Transfer)

REST API нь жижиглэнгийн forex арилжааны хамгийн түгээмэл интерфейс юм. Тэдгээр нь брокерийн сервертэй харилцахын тулд стандарт HTTP аргууд - GET, POST, PUT, DELETE ашигладаг. Хүсэлт бүр бие даасан, статусгүй бөгөөд сервер тогтвортой холболт хадгалахгүй эсвэл өмнөх хүсэлтийг санахгүй гэсэн үг.

Арилжаа байрлуулах ердийн REST харилцаа псевдокодоор иймэрхүү харагдаж болно:

POST /v3/accounts/{accountID}/orders
Headers:
  Authorization: Bearer {your-api-token}
  Content-Type: application/json

Body:
{
  "order": {
    "type": "MARKET",
    "instrument": "EUR_USD",
    "units": "10000",
    "timeInForce": "FOK",
    "stopLossOnFill": {
      "price": "1.0800"
    },
    "takeProfitOnFill": {
      "price": "1.0900"
    }
  }
}

Response:
{
  "orderFillTransaction": {
    "id": "17582",
    "type": "ORDER_FILL",
    "instrument": "EUR_USD",
    "units": "10000",
    "price": "1.0850",
    "time": "2026-02-05T14:30:00Z"
  }
}

REST-ийн давуу тал: Хэрэгжүүлэхэд энгийн, өргөн дэмжигддэг, өргөн баримтжуулалттай, cURL эсвэл Postman зэрэг хэрэгслээр debug хийхэд хялбар, бараг бүх програмчлалын хэлтэй ажилладаг.

REST-ийн хязгаарлалт: Хүсэлт бүр бүрэн HTTP шилжүүлэлт шаарддаг бөгөөд latency нэвтрүүлдэг. Бодит цагийн өгөгдлийн streaming шаарддаг програмуудад тохиромжгүй. Үнийн шинэчлэлтийг polling хийх (дахин дахин GET хүсэлт илгээх) нь үр ашиггүй бөгөөд хоцрол нэвтрүүлдэг.

WebSocket

WebSocket холболтууд нь таны програм болон брокерийн серверийн хооронд тогтвортой, хоёр чиглэлтэй холбооны суваг хангадаг. Холболт анхны HTTP handshake-ээр үүссэний дараа өгөгдөл давтан HTTP хүсэлтийн overhead-гүйгээр хоёр чиглэлд чөлөөтэй урсдаг.

WebSocket нь дараахад зайлшгүй шаардлагатай:

  • Бодит цагийн үнийн streaming: Polling-ийн хоцролгүй bid/ask үнийн саналуудыг өөрчлөгдөх үед авах.
  • Захиалгын төлөвийн шинэчлэлтүүд: Захиалга биелсэн, өөрчлөгдсөн эсвэл цуцлагдсан үед шууд мэдэгдэл авах.
  • Дансны үйл явдлын хяналт: Margin call, stop-out эсвэл бусад дансны түвшний үйл явдлын талаар сэрэмжлүүлэг авах.

Псевдокод дахь хялбаршуулсан WebSocket үнийн streaming тохиргоо:

// Establish WebSocket connection
connection = WebSocket.connect("wss://stream.broker.com/prices")
connection.authenticate(apiToken)

// Subscribe to price stream
connection.send({
  "type": "SUBSCRIBE",
  "instruments": ["EUR_USD", "GBP_USD", "USD_JPY"]
})

// Handle incoming price updates
connection.onMessage(function(data) {
  if (data.type == "PRICE") {
    instrument = data.instrument
    bid = data.bid
    ask = data.ask
    // Evaluate trading conditions with new price
    evaluateStrategy(instrument, bid, ask)
  }
})

WebSocket-ийн давуу тал: Бараг бодит цагийн өгөгдөл хүргэлт, үр ашигтай bandwidth хэрэглээ, хоёр чиглэлтэй харилцааг дэмждэг, давтан HTTP хүсэлтийн latency-г арилгадаг.

WebSocket-ийн хязгаарлалт: REST-ээс илүү нарийн төвөгтэй хэрэгжүүлэх, холболтын удирдлага (тасалдал, дахин холболтыг зохицуулах) шаарддаг, бүх програмчлалын орчин WebSocket-ийг угаас дэмждэггүй.

FIX Protocol (Financial Information eXchange)

FIX protocol нь банкууд, хедж фонд, байгууллагын трейдерүүдийн электрон арилжаанд ашигладаг салбарын стандарт messaging protocol юм. 1992 онд боловсруулагдсан энэ нь байгууллагын forex арилжааны давамгайлагч протокол болж, өдөр бүр тэрбум долларын гүйлгээний эргэлтийг зохицуулдаг.

FIX нь tag-value хос мессежийн формат юм. Хялбаршуулсан захиалгын мессеж иймэрхүү харагдана:

8=FIX.4.4|35=D|49=CLIENT|56=BROKER|
11=ORD001|55=EUR/USD|54=1|38=100000|
40=1|44=1.0850|60=20260205-14:30:00|

Тоо бүр (tag) тодорхой талбарыг илэрхийлнэ: 35=D нь шинэ захиалгыг илэрхийлнэ, 54=1 нь buy гэсэн үг, 38=100000 нь тоо хэмжээ гэх мэт.

FIX-ийн давуу тал: Маш хурдан (бага latency), салбар даяар стандартчилагдсан, нарийн төвөгтэй захиалгын төрөл, ажлын урсгалыг дэмждэг, хөрвөх чадварын provider-уудад хамгийн шууд хандалтыг хангадаг.

FIX-ийн хязгаарлалт: Эгц сурах муруйтай, хэрэгжүүлэхэд мэргэшсэн сан шаарддаг, ихэвчлэн зөвхөн байгууллагын үйлчлүүлэгчид эсвэл их хэмжээний жижиглэнгийн трейдерүүдэд боломжтой, жижиглэнгийн түвшинд брокерийн FIX дэмжлэг хязгаарлагдмал.

API Trading орчноо тохируулах

Найдвартай API арилжааны систем бүтээхэд дэд бүтэц, баталгаажуулалт, алдаа зохицуулалтад нарийн анхаарал шаардлагатай.

Баталгаажуулалт ба аюулгүй байдал

Trading API-ууд таны ялгааг баталгаажуулахын тулд баталгаажуулалтын token (ихэвчлэн OAuth 2.0 bearer token эсвэл API key) ашигладаг. Аюулгүй байдлын шилдэг туршлагуудад:

  • API key-г эх код дотор хатуу кодлохгүй байх. Орчны хувьсагч эсвэл аюулгүй түлхүүр удирдлагын системийг ашигла.
  • Хөгжүүлэлт, үйлдвэрлэлд тусдаа API key ашигла. Ихэнх брокерууд тусдаа итгэмжлэлтэй sandbox эсвэл дадлагын орчин хангадаг.
  • Боломжтой бол IP whitelist хэрэгжүүл бөгөөд API хандалтыг тодорхой IP хаягуудад хязгаарла.
  • API key-г үе үе сэргээ бөгөөд эвдэрсэн байж болох аливаа key-г хүчингүй болго.
  • Үргэлж HTTPS/WSS (шифрлэгдсэн холболт) ашигла. API итгэмжлэлийг хэзээ ч шифрлэгдээгүй сувгаар дамжуулж болохгүй.
  • Token-уудыг энгийн текстийн оронд шифрлэгдсэн тохиргооны файлд хадгал бөгөөд файлын системийн зөвшөөрлийг арилжааны програмаа ажиллуулж буй үйлчилгээний дансанд хязгаарла.

Rate Limiting

Брокерууд API-дээ хэтрүүлэлтээс сэргийлж, бүх үйлчлүүлэгчдэд шударга хандалтыг хангахын тулд rate limit тавьдаг. Түгээмэл хязгаарууд нь REST endpoint-уудад секундэд 30-120 хүсэлт байдаг. Rate limit-ийг хэтрүүлэх нь HTTP 429 ("Too Many Requests") алдаа үүсгэж, түр эсвэл байнгын API хандалтын зогсоолтод хүргэж болно. Таны код брокерийн хязгаарт багтахын тулд ихэвчлэн token bucket эсвэл sliding window алгоритм ашиглан rate limiting логик хэрэгжүүлэх ёстой.

Алдаа зохицуулалт ба тэсвэрлэх чадвар

API арилжаанд бат бөх алдаа зохицуулалт сонголт биш - энэ нь асуудлаас сайн сэргэдэг систем болон санхүүгийн алдагдал үүсгэдэг системийн ялгаа юм.

Сүлжээний алдаа. Интернет холболт тасардаг. Таны систем холболтын алдааг илрүүлж, хүлээгдэж буй үйлдлүүдийг дараалалд оруулж, автоматаар дахин холбогдох ёстой. Серверийг хэт ачаалахаас зайлсхийхийн тулд дахин холбох оролдлогод экспоненциал backoff хэрэгжүүл.

Захиалга татгалзах зохицуулалт. Захиалга олон шалтгаанаар татгалзагдаж болно: хангалтгүй margin, буруу үнэ, зах зээл хаалттай эсвэл хэрэгсэл зогссон. Татгалзалтын шалтгаан бүр тодорхой зохицуулалтын логик шаарддаг. Debug хийхэд татгалзал бүрийг бүрэн дэлгэрэнгүйгээр бүртгэх нь чухал.

Хэсэгчлэн биелэлт. Зарим зах зээлийн нөхцөлд таны захиалга зөвхөн хэсэгчлэн биелж болно. Таны систем хэсэгчлэн биелэлтийг зөв зохицуулах ёстой бөгөөд үлдсэн биелээгүй тоо хэмжээг хянаж, үлдээх, цуцлах эсвэл өөр үнээр дахин илгээх эсэхийг шийдэх ёстой.

Timeout удирдлага. Бүх API хүсэлтэд зохих timeout тохируул. Хариу авахад 30 секунд зарцуулж буй захиалга аль хэдийн гүйцэтгэгдсэн байж болох бөгөөд дахин илгээх нь давхар позицод хүргэж болно.

Үндсэн API арилжааны систем бүтээх, Архитектур

Сайн зохион бүтээсэн API арилжааны систем ихэвчлэн хэд хэдэн сул холбогдсон бүрэлдэхүүн хэсгүүдээс бүрдэнэ.

Data Handler: Зах зээлийн өгөгдлийн эх үүсвэрүүд (WebSocket үнийн stream, REST түүхэн өгөгдлийн endpoint) руу холболтыг удирддаг. Ирж буй өгөгдлийг нийцтэй дотоод формат руу хэвийн болгож, бусад бүрэлдэхүүн хэсгүүдэд түгээдэг.

Strategy Engine: Арилжааны логик, дохио үүсгэх, индикатор тооцоолох, шийдвэрийн дүрмүүдийг агуулдаг. Data Handler-аас зах зээлийн өгөгдөл хүлээн авч, арилжааны дохио (buy, sell, adjust, close) гаргадаг.

Order Manager: Арилжааны дохиог API захиалга болгон хөрвүүлж, захиалгын амьдралын мөчлөгийг (илгээлт, баталгаажуулалт, өөрчлөлт, цуцлалт) удирдаж, нээлттэй позицуудыг хянадаг. Аливаа захиалга илгээхээс өмнө эрсдэлийн шалгалт хийдэг.

Risk Manager: Позицийн хязгаар, хамгийн их drawdown босго, хамааралын хязгаарлалт болон бусад эрсдэлийн параметрүүдийг хэрэгжүүлдэг. Strategy Engine-ийн дохиог давах эсвэл хаах эрх мэдэлтэй.

Logger and Monitor: Арилжааны дараах шинжилгээнд зориулж үнийн шинэчлэлт, дохио үүсгэлт, захиалга илгээлт, биелэлт, алдаа бүрийг цагийн тэмдэгтэй бүртгэдэг. Хэвийн бус зан үйлийн бодит цагийн хяналтын dashboard, сэрэмжлүүлэг хангадаг.

Энэ хариуцлагын тусгаарлалт нь системийг турших, debug хийх, засвар үйлчилгээ хийхэд хялбар болгодог. Бүрэлдэхүүн хэсэг бүрийг бие даан хөгжүүлж, турших, шинэчлэх боломжтой.

Практик асуудлууд

API Trading-д брокер сонгох

Бүх брокер API санал болгодоггүй бөгөөд санал болгодог брокерууд чанар, баримтжуулалт, боломжтой endpoint, найдвартай байдлаар ихээхэн ялгаатай. Үнэлэх гол хүчин зүйлс:

  • API баримтжуулалтын чанар. Код жишээ, алдааны лавлах гарын авлага, идэвхтэй хөгжүүлэгчийн community-тай сайн баримтжуулсан API-ууд хөгжүүлэлтийн хугацааг эрс бууруулдаг.
  • Sandbox/дадлагын орчин. Жинхэнэ капитал эрсдэлд оруулахгүйгээр хөгжүүлэлт, туршилтад загварчилсан зах зээлийн өгөгдөлтэй тусгай туршилтын орчин зайлшгүй шаардлагатай.
  • Дэмжигдсэн хэрэгсэл, захиалгын төрлүүд. API таны стратегийн шаарддаг бүх валютын хос, захиалгын төрөл (market, limit, stop, trailing stop), боломжуудыг дэмждэг эсэхийг баталгаажуул.
  • Гүйцэтгэлийн чанар ба latency. Брокерийн дата төвөөс таны зориулсан серверийн байршил хүртэлх дундаж гүйцэтгэлийн хугацаа, latency-ийн талаар мэдээлэл хүс.
  • Зохицуулалтын байдал. Ямар арилжааны аргыг ашиглаж байгаагаас үл хамааран брокер нэр хүндтэй байгууллагаар (FCA, ASIC, CySEC эсвэл түүнтэй дүйцэх) зохицуулагдсан эсэхийг шалга.

Хэл ба сангийн сонголт

API арилжаанд алдартай програмчлалын хэлүүд:

  • Python: Өргөн хүрээтэй сан (requests, websockets, pandas, numpy), зөөлөн сурах муруй, том community-аас болоод жижиглэнгийн algorithmic трейдерүүдийн хамгийн алдартай сонголт. Маш бага latency шаарддаггүй стратегиудад тохиромжтой.
  • JavaScript/Node.js: Үйл явдалд суурилсан архитектураасаа болоод WebSocket-д их ачаалалтай програмуудад маш тохиромжтой. Хүчтэй HTTP болон WebSocket сангуудын экосистемтэй.
  • C++ ба Java: Гүйцэтгэлийн хурд чухал latency-д мэдрэмтгий програмуудад илүүд үздэг. Хөгжүүлэхэд илүү нарийн төвөгтэй боловч дээд зэргийн гүйцэтгэлийг санал болгодог.
  • C#: .NET экосистемтэй аль хэдийн танил трейдерүүдэд маш тохиромжтой, хүчтэй сангийн дэмжлэг, боломжийн гүйцэтгэлтэй.

API нэгтгэлээ турших

Жинхэнэ капитал эрсдэлд орохоос өмнө туршилт олон үе шатаар үргэлжлэх ёстой.

Unit testing. Дангаар нь бүрэлдэхүүн хэсгүүдийг (өгөгдөл задлах, дохио үүсгэх, захиалга форматлах) mock өгөгдөл, загварчилсан API хариултуудаар турш.

Integration testing. Брокерийн sandbox орчинд холбогдож, систем загварчилсан боловч бодит орчинд захиалга зөв байрлуулж, биелэлт хүлээн авч, татгалзалтыг зохицуулж, позиц удирддаг эсэхийг баталгаажуул.

Paper trading. Бүрэн системээ амьд зах зээлийн өгөгдлийн эсрэг загварчилсан гүйцэтгэлтэйгээр ажиллуул. Стратеги бодит гүйцэтгэлтэй юу олох байсныг үр дүнтэй харьцуул.

Хамгийн бага хэмжээтэй амьд туршилт. Брокер зөвшөөрдөг хамгийн бага позицийн хэмжээгээр байршуул. Хүлээгдэж буй болон бодит зан үйлийн хоорондох зөрүүг нягт хяна. Нэмэгдүүлэхээс өмнө хамгийн багадаа хэдэн долоо хоног ажиллуул.

Аюулгүй байдлын асуудлууд

API арилжаа нь гар арилжаанд байхгүй аюулгүй байдлын эрсдэлүүдийг нэвтрүүлдэг. Таны арилжааны систем нь капиталд шууд хандалттай санхүүгийн програм бөгөөд үүнд тохирсон аюулгүй байдлын хатуу байдлаар хандах ёстой.

  • Хамгийн бага эрхийн зарчим. API key-д зөвхөн шаардлагатай зөвшөөрлийг өг. Хэрэв таны систем зөвхөн нэг тодорхой хэрэгсэл арилжаалдаг бол брокерийн API зөвшөөрвөл хандалтыг зохих ёсоор хязгаарла.
  • Audit бүртгэл. Хүсэлт, хариулт, цагийн тэмдэгийг оруулаад API харилцаа бүрийг бүртгэ. Эдгээр бүртгэлүүд нь зөвшөөрөлгүй хандалтыг илрүүлэх, зохицуулалтын нийцэлд зайлшгүй шаардлагатай.
  • Дэд бүтцийн аюулгүй байдал. VPS дээр ажиллуулж байгаа бол үйлдлийн систем, бүх программ хангамжийг шинэчилж бай, ирж буй холболтыг хязгаарлахын тулд firewall ашигла, сервер хандалтад хоёр хүчин зүйлт баталгаажуулалтыг идэвхжүүл.
  • Осолд хариу арга хэмжээний төлөвлөгөө. API итгэмжлэлүүд эвдэрсэн байж болно гэж сэжиглэвэл яах талаар баримтжуулсан журам бий болго: нөлөөлөгдсөн key-үүдийг шууд хүчингүй болгох, бүх нээлттэй позицыг хаах, зөвшөөрөлгүй үйл ажиллагааны бүртгэлийг шалгах.

Гол санаанууд

  • Trading API-ууд нь тусгай арилжааны системүүд бүтээх боломжийг олгодог ямар ч програмчлалын хэлээр, MetaTrader зэрэг платформд тусгайлсан орчны хязгаарлалтаас чөлөөлөгдөж, гадны өгөгдлийн эх үүсвэр, machine learning загвар, тусгай аналитиктай нэгтгэх боломжийг олгодог.
  • REST API-ууд энгийн, статусгүй холбоо хангадаг захиалга удирдахад тохиромжтой бол WebSocket холболтууд амьд үнийн хяналтад зайлшгүй шаардлагатай бодит цагийн streaming өгөгдөл хүргэдэг, ихэнх жижиглэнгийн системүүд хоёуланг нь ашигласнаар ашиг хүртдэг.
  • FIX protocol нь байгууллагын стандарт хамгийн бага latency, хамгийн иж бүрэн функционалыг санал болгодог боловч нарийн төвөгтэй байдал нь зөвхөн их хэмжээний трейдерүүд эсвэл шууд зах зээлд нэвтрэх эрх шаарддаг хүмүүст практик болгодог.
  • Аюулгүй байдал нь API арилжаанд хамгийн чухал. API key-үүдийг орчны хувьсагч, шифрлэлт, IP whitelist, хамгийн бага эрхийн зарчмаар хатуу хамгаалах ёстой - эвдэрсэн key нь таны капиталд шууд хандалт өгдөг.
  • Бат бөх алдаа зохицуулалт нь амжилттай API системүүдийг аюултайгаас ялгадаг. Сүлжээний алдаа, захиалга татгалзах, хэсэгчлэн биелэлт, timeout нөхцөл байдлыг бүгдийг код дотроо тодорхой зохицуулах ёстой.
  • Туршилт олон үе шатаар явагдах ёстой - unit test, sandbox орчинтой integration test, амьд өгөгдөлтэй paper trading, хамгийн бага хэмжээний амьд арилжаа - ач холбогдол бүхий капиталаар байршуулахаас өмнө.
  • Өвөрмөц үйлчлүүлэгчийн өгсөн захиалгын ID ашигласан idempotent захиалга илгээлт сүлжээний тодорхойгүй байдлаас үүссэн давхар позицоос сэргийлдэг бөгөөд аливаа үйлдвэрлэлийн арилжааны системийн чухал архитектурын шаардлага юм.

Энэ хичээл нь зөвхөн боловсролын зорилгоор бэлтгэгдсэн. Энэ нь санхүүгийн зөвлөгөө биш юм. Forex арилжаа нь ихээхэн алдагдлын эрсдэлтэй бөгөөд бүх хөрөнгө оруулагчдад тохиромжгүй. API арилжаа нь программ хангамжийн алдаа, аюулгүй байдлын эмзэг байдал, санаандгүй арилжаа эсвэл санхүүгийн алдагдалд хүргэж болох холболтын алдаа зэрэг нэмэлт эрсдэлтэй.

Энэ хичээлийг уншихын тулд бүртгүүлнэ үү

Уншиж эхлэхийн тулд үнэгүй бүртгэл үүсгэнэ үү. Сар бүр 5 үнэгүй хичээл, эсвэл Pro-руу шинэчлэж хязгааргүй хандалт аваарай.