การอ้างอิง API¶
แนวคิดทั่วไป ¶
ปริมาณ ราคา ประเภทคำสั่ง และระยะเวลาที่มีผล
ปริมาณ¶
ปริมาณระบุเป็น เซนต์ (หน่วยของ 0.0000001 ล็อต)
| ล็อต | ปริมาณ (เซนต์) |
|---|---|
| 0.01 | 100,000 |
| 0.1 | 1,000,000 |
| 1.0 | 10,000,000 |
ราคา¶
ค่าราคาอยู่ใน pipettes ในการแปลง: display_price = pipette_value / 10^pipDigits
สำหรับ EURUSD (5 หลัก) ค่า pipette ของ 112345 = 1.12345
ประเภทคำสั่ง¶
| ประเภท | คำอธิบาย | ฟิลด์ที่จำเป็น |
|---|---|---|
MARKET | ดำเนินการทันทีที่ราคาปัจจุบัน | symbolId, tradeSide, volume |
LIMIT | ดำเนินการที่ราคา Limit หรือดีกว่า | + limitPrice |
STOP | เริ่มทำงานเมื่อตลาดถึงราคา Stop | + stopPrice |
MARKET_RANGE | ดำเนินการภายในช่วงราคา | + baseSlippagePrice |
STOP_LIMIT | คำสั่ง Limit ที่เริ่มทำงานที่ราคา Stop | + stopPrice, limitPrice |
ระยะเวลาที่มีผล¶
| นโยบาย | คำอธิบาย |
|---|---|
GOOD_TILL_CANCEL | คำสั่งยังคงใช้งานได้จนกว่าจะถูกดำเนินการหรือยกเลิก |
GOOD_TILL_DATE | คำสั่งหมดอายุที่ expirationTimestamp ที่ระบุ |
IMMEDIATE_OR_CANCEL | ดำเนินการสิ่งที่มีอยู่ทันที ยกเลิกส่วนที่เหลือ |
ข้อมูลบัญชี ¶
GET /v1/balance Get account balance
ส่งคืนยอดคงเหลือบัญชี อิควิตี้ และมาร์จิ้นที่เหลืออยู่
ไม่มีพารามิเตอร์
200 การตอบกลับที่สำเร็จ
{
"balance": 10000.00,
"equity": 10250.75,
"freeMargin": 9800.50,
"balanceVersion": 42,
"moneyDigits": 2,
"depositAssetId": 1
}
| ฟิลด์ | ประเภท | คำอธิบาย |
|---|---|---|
balance | double | ยอดคงเหลือบัญชีในสกุลเงินฝาก |
equity | double | ยอดคงเหลือ + P&L แบบลอยตัว |
freeMargin | double | มาร์จิ้นที่พร้อมใช้งานสำหรับเทรดใหม่ |
balanceVersion | int64 | ตัวนับเวอร์ชันยอดคงเหลือ |
moneyDigits | int32 | ตำแหน่งทศนิยมสำหรับค่าเงิน |
depositAssetId | int64 | ID สินทรัพย์สกุลเงินฝาก |
GET /v1/symbols รับสัญลักษณ์ที่พร้อมใช้งาน
ส่งคืนสัญลักษณ์ทั้งหมดที่พร้อมใช้งานสำหรับการเทรดในบัญชี
ไม่มีพารามิเตอร์
200 อาร์เรย์ของออบเจ็กต์ Symbol
[
{
"symbolId": 1,
"symbolName": "EURUSD",
"enabled": true,
"baseAssetId": 2,
"quoteAssetId": 1,
"description": "Euro vs US Dollar"
}
]
Symbol
| ฟิลด์ | ประเภท | คำอธิบาย |
|---|---|---|
symbolId | int64 | ID สัญลักษณ์ (ใช้ในการเรียก API อื่น ๆ) |
symbolName | string | ชื่อสัญลักษณ์ (เช่น "EURUSD") |
enabled | boolean | ว่าสัญลักษณ์สามารถเทรดได้หรือไม่ |
baseAssetId | int64 | ID สินทรัพย์ฐาน |
quoteAssetId | int64 | ID สินทรัพย์อ้างอิง |
description | string | คำอธิบายที่อ่านได้โดยมนุษย์ |
GET /v1/assets รับสินทรัพย์ที่พร้อมใช้งาน
ส่งคืนสินทรัพย์ที่พร้อมใช้งาน (สกุลเงิน)
ไม่มีพารามิเตอร์
200 อาร์เรย์ของออบเจ็กต์ Asset
[
{
"assetId": 1,
"name": "USD",
"displayName": "US Dollar"
}
]
Asset
| ฟิลด์ | ประเภท | คำอธิบาย |
|---|---|---|
assetId | int64 | ID สินทรัพย์ |
name | string | รหัสสินทรัพย์ (เช่น "USD") |
displayName | string | ชื่อที่แสดง |
ข้อมูลตลาด ¶
GET /v1/prices รับราคาปัจจุบัน
ส่งคืนราคา Bid/Ask ปัจจุบันสำหรับสัญลักษณ์ที่ระบุ นี่คือ สแนปช็อต – API ไม่รองรับการสตรีม
| ชื่อ | อยู่ใน | ประเภท | จำเป็น | คำอธิบาย |
|---|---|---|---|---|
symbolId | query | int64[] | ID สัญลักษณ์คั่นด้วยเครื่องหมายจุลภาค |
200 อาร์เรย์ของออบเจ็กต์ SpotPrice
[
{
"symbolId": 1,
"bid": 112340,
"ask": 112355,
"high": 112890,
"low": 111950,
"sessionClose": 112100,
"timestamp": 1700000000000
}
]
SpotPrice
| ฟิลด์ | ประเภท | คำอธิบาย |
|---|---|---|
symbolId | int64 | ID ของสัญลักษณ์ |
bid | int64 | ราคา Bid ที่ดีที่สุด (pipettes) |
ask | int64 | ราคา Ask ที่ดีที่สุด (pipettes) |
high | int64 | ราคาสูงสุดของเซสชัน (pipettes) |
low | int64 | ราคาต่ำสุดของเซสชัน (pipettes) |
sessionClose | int64 | ราคาปิดของเซสชันก่อนหน้า (pipettes) |
timestamp | int64 | ประทับเวลาราคาอ้างอิง (epoch ms) |
GET /v1/trendbars รับข้อมูล OHLCV ย้อนหลัง
ส่งคืนข้อมูลแท่งเทียน (OHLCV) ย้อนหลังสำหรับสัญลักษณ์
| ชื่อ | อยู่ใน | ประเภท | จำเป็น | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|---|---|
symbolId | query | int64 | – | ID ของสัญลักษณ์ | |
period | query | string | – | ช่วงเวลาของแท่ง | |
fromTimestamp | query | string | – | เวลาเริ่มต้น (ISO-8601) | |
toTimestamp | query | string | – | เวลาสิ้นสุด (ISO-8601) | |
count | query | int32 | 100 | จำนวนแท่งสูงสุดที่จะส่งคืน |
ช่วงเวลาที่มีให้ใช้งาน
M_1 M_2 M_3 M_4 M_5 M_10 M_15 M_30 H_1 H_2 H_3 H_4 H_6 H_8 H_12 D_1 W_1 MN_1
200 อาร์เรย์ของออบเจ็กต์ Trendbar
[
{
"timestamp": 1700000000000,
"open": 112340.0,
"high": 112890.0,
"low": 111950.0,
"close": 112500.0,
"volume": 4521
}
]
Trendbar
| ฟิลด์ | ประเภท | คำอธิบาย |
|---|---|---|
timestamp | int64 | เวลาเปิดแท่ง (epoch ms) |
open | double | ราคาเปิด (pipettes) |
high | double | ราคาสูงสุด (pipettes) |
low | double | ราคาต่ำสุด (pipettes) |
close | double | ราคาปิด (pipettes) |
volume | int64 | ปริมาณ tick |
คำสั่ง ¶
POST /v1/orders ส่งคำสั่งใหม่
ส่งคำสั่งซื้อขายใหม่ ส่งคืน ExecutionResponse
ไม่มีพารามิเตอร์ path หรือ query
| ฟิลด์ | ประเภท | จำเป็น | คำอธิบาย |
|---|---|---|---|
symbolId | int64 | สัญลักษณ์ที่จะซื้อขาย | |
orderType | string | MARKET, LIMIT, STOP, MARKET_RANGE, STOP_LIMIT | |
tradeSide | string | BUY หรือ SELL | |
volume | int64 | ปริมาณในหน่วยเซ็นต์ | |
limitPrice | double | ราคา Limit – จำเป็นสำหรับ LIMIT, STOP_LIMIT | |
stopPrice | double | ราคาทริกเกอร์ Stop – จำเป็นสำหรับ STOP, STOP_LIMIT | |
stopLoss | double | ราคา Stop loss | |
takeProfit | double | ราคา Take profit | |
comment | string | ความคิดเห็นแบบข้อความอิสระ (สูงสุด 256 ตัวอักษร) | |
label | string | ป้ายกำกับบอท (สูงสุด 100 ตัวอักษร) | |
timeInForce | string | GOOD_TILL_CANCEL, GOOD_TILL_DATE, IMMEDIATE_OR_CANCEL | |
baseSlippagePrice | double | ราคาฐานสำหรับสลิปเพจ – จำเป็นสำหรับ MARKET_RANGE | |
slippageInPoints | int32 | สลิปเพจสูงสุดเป็นจุด | |
expirationTimestamp | int64 | เวลาหมดอายุ (epoch ms) – สำหรับ GOOD_TILL_DATE |
{
"symbolId": 1,
"orderType": "MARKET",
"tradeSide": "BUY",
"volume": 10000000,
"stopLoss": 112000,
"takeProfit": 113000
}
200 ExecutionResponse – คำสั่งได้รับการยอมรับหรือดำเนินการแล้ว
400 INVALID_REQUEST หรือ TRADING_BAD_VOLUME
422 NOT_ENOUGH_MONEY
409 MARKET_CLOSED
{
"orderId": 12345,
"positionId": 67890,
"executionType": "ORDER_FILLED",
"order": { "..." : "..." },
"position": { "..." : "..." },
"deal": { "..." : "..." }
}
GET /v1/orders รับคำสั่งที่รอดำเนินการ
ส่งคืนคำสั่งที่รอดำเนินการ (ยังไม่ได้ดำเนินการ) ทั้งหมด
ไม่มีพารามิเตอร์
200 อาร์เรย์ของออบเจ็กต์ Order ที่รอดำเนินการ
PUT /v1/orders/{orderId} แก้ไขคำสั่งที่รอดำเนินการ
แก้ไขคำสั่งที่รอดำเนินการที่มีอยู่ ส่งคืน ExecutionResponse
| ชื่อ | อยู่ใน | ประเภท | จำเป็น | คำอธิบาย |
|---|---|---|---|---|
orderId | path | int64 | คำสั่งที่จะแก้ไข |
ชุดย่อยใดๆ ของฟิลด์ต่อไปนี้
| ฟิลด์ | ประเภท | คำอธิบาย |
|---|---|---|
volume | int64 | ปริมาณใหม่เป็นเซนต์ |
limitPrice | double | ราคา Limit ใหม่ |
stopPrice | double | ราคา Stop ใหม่ |
stopLoss | double | ราคา Stop loss ใหม่ |
takeProfit | double | ราคา Take profit ใหม่ |
expirationTimestamp | int64 | เวลาหมดอายุใหม่ (epoch ms) |
200 ExecutionResponse พร้อม ORDER_REPLACED
404 ไม่พบคำสั่ง
DELETE /v1/orders/{orderId} ยกเลิกคำสั่งที่รอดำเนินการ
ยกเลิกคำสั่งที่รอดำเนินการ ส่งคืน ExecutionResponse
| ชื่อ | อยู่ใน | ประเภท | จำเป็น | คำอธิบาย |
|---|---|---|---|---|
orderId | path | int64 | คำสั่งที่จะยกเลิก |
200 ExecutionResponse พร้อม ORDER_CANCELLED
404 ไม่พบคำสั่ง
GET /v1/orders/history รับประวัติคำสั่ง
ส่งคืนคำสั่งในอดีตภายในช่วงเวลาที่กำหนด
| ชื่อ | อยู่ใน | ประเภท | จำเป็น | คำอธิบาย |
|---|---|---|---|---|
fromTimestamp | query | string | เวลาเริ่มต้น (ISO-8601) | |
toTimestamp | query | string | เวลาสิ้นสุด (ISO-8601) |
200 OrderListResponse
| ฟิลด์ | ประเภท | คำอธิบาย |
|---|---|---|
orders | Order[] | อาร์เรย์ของคำสั่งในอดีต |
hasMore | boolean | มีหน้าเพิ่มเติมหรือไม่ |
ตำแหน่ง ¶
GET /v1/positions รับสถานะที่เปิดอยู่
ส่งคืนสถานะที่เปิดอยู่และคำสั่งที่รอดำเนินการทั้งหมด
ไม่มีพารามิเตอร์
200 อาร์เรย์ของออบเจ็กต์ Position
[
{
"positionId": 67890,
"symbolId": 1,
"tradeSide": "BUY",
"volume": 10000000,
"entryPrice": 112345.0,
"stopLoss": 112000.0,
"takeProfit": 113000.0,
"unrealizedPnl": 155.25,
"commission": -7.00,
"swap": -1.20
}
]
โพสิชัน
| ฟิลด์ | ประเภท | คำอธิบาย |
|---|---|---|
positionId | int64 | ID โพสิชัน |
symbolId | int64 | ID ของสัญลักษณ์ |
tradeSide | string | BUY หรือ SELL |
volume | int64 | ปริมาณในหน่วยเซ็นต์ |
entryPrice | double | ราคาเข้าตาม VWAP |
stopLoss | double | ราคา Stop loss |
takeProfit | double | ราคา Take profit |
unrealizedPnl | double | กำไร/ขาดทุนลอยตัว |
commission | double | ค่าคอมมิชชันที่เรียกเก็บ |
swap | double | จำนวนสวอป |
GET /v1/positions/{positionId} รับรายละเอียดของตำแหน่ง
ส่งคืนตำแหน่งพร้อมคำสั่งและดีลที่เกี่ยวข้อง
| ชื่อ | อยู่ใน | ประเภท | จำเป็น | คำอธิบาย |
|---|---|---|---|---|
positionId | path | int64 | ID ของตำแหน่ง |
200 PositionDetailResponse
| ฟิลด์ | ประเภท | คำอธิบาย |
|---|---|---|
position | Position | ออบเจ็กต์ตำแหน่ง |
orders | Order[] | คำสั่งที่เกี่ยวข้อง |
deals | Deal[] | ดีลที่เกี่ยวข้อง |
PUT /v1/positions/{positionId} แก้ไข SL/TP ของตำแหน่ง
อัปเดต Stop Loss และ/หรือ Take Profit สำหรับตำแหน่งที่เปิดอยู่ ส่งคืน ExecutionResponse
| ชื่อ | อยู่ใน | ประเภท | จำเป็น | คำอธิบาย |
|---|---|---|---|---|
positionId | path | int64 | ID ของตำแหน่ง |
| ฟิลด์ | ประเภท | คำอธิบาย |
|---|---|---|
stopLoss | double | ราคา Stop Loss ใหม่ (null เพื่อลบออก) |
takeProfit | double | ราคา Take Profit ใหม่ (null เพื่อลบออก) |
trailingStopLoss | boolean | เปิดใช้งาน Trailing Stop Loss |
{
"stopLoss": 111500,
"takeProfit": 113500,
"trailingStopLoss": false
}
POST /v1/positions/{positionId}/close ปิดตำแหน่ง
ปิดตำแหน่งที่เปิดอยู่ทั้งหมดหรือบางส่วน ใช้ค่าที่น้อยกว่าปริมาณเต็มของตำแหน่งสำหรับการปิดบางส่วน ส่งคืน ExecutionResponse
| ชื่อ | อยู่ใน | ประเภท | จำเป็น | คำอธิบาย |
|---|---|---|---|---|
positionId | path | int64 | ID ของตำแหน่ง |
| ฟิลด์ | ประเภท | จำเป็น | คำอธิบาย |
|---|---|---|---|
volume | int64 | ปริมาณที่จะปิดเป็นเซนต์ |
{
"volume": 10000000
}
422 NOT_ENOUGH_MONEY – มาร์จินไม่เพียงพอสำหรับการปิดบางส่วน
Deals ¶
GET /v1/deals รับประวัติดีล
ส่งคืนดีลที่ดำเนินการภายในช่วงเวลาที่กำหนด
| ชื่อ | อยู่ใน | ประเภท | จำเป็น | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|---|---|
fromTimestamp | query | string | – | เวลาเริ่มต้น (ISO-8601) | |
toTimestamp | query | string | – | เวลาสิ้นสุด (ISO-8601) | |
maxRows | query | int32 | 50 | จำนวนดีลสูงสุดที่จะส่งคืน |
200 อาร์เรย์ของออบเจ็กต์ดีล
[
{
"dealId": 11111,
"orderId": 12345,
"positionId": 67890,
"symbolId": 1,
"tradeSide": "BUY",
"volume": 10000000,
"filledVolume": 10000000,
"executionPrice": 112345.0,
"executionTimestamp": 1700000000000,
"dealStatus": "FILLED",
"commission": -7.00
}
]
ดีล
| ฟิลด์ | ประเภท | คำอธิบาย |
|---|---|---|
dealId | int64 | ID ดีล |
orderId | int64 | คำสั่งที่ทริกเกอร์ดีลนี้ |
positionId | int64 | ID โพสิชัน |
symbolId | int64 | ID ของสัญลักษณ์ |
tradeSide | string | BUY หรือ SELL |
volume | int64 | ปริมาณที่ร้องขอเป็นเซนต์ |
filledVolume | int64 | ปริมาณที่เติมเป็นเซนต์ |
executionPrice | double | ราคาที่ดำเนินการ |
executionTimestamp | int64 | เวลาที่ดำเนินการ (epoch ms) |
dealStatus | string | สถานะ – ดูค่าด้านล่าง |
commission | double | ค่าคอมมิชชันที่เรียกเก็บ |
ค่า dealStatus
| คุณค่า | ความหมาย |
|---|---|
FILLED | คำสั่งเติมเต็มทั้งหมด |
PARTIALLY_FILLED | คำสั่งถูกจับคู่บางส่วน |
REJECTED | ถูกปฏิเสธโดยเซิร์ฟเวอร์เทรด |
INTERNALLY_REJECTED | ถูกปฏิเสธภายในก่อนถึงเซิร์ฟเวอร์ |
ERROR | เกิดข้อผิดพลาดระหว่างการดำเนินการ |
MISSED | คำสั่งพลาด (เช่น ช่องว่างในตลาด) |
Schemas { #execution-response-schema } ¶
ExecutionResponse ¶
การดำเนินการวางคำสั่ง แก้ไข และยกเลิกคำสั่งทั้งหมดจะส่งคืนออบเจ็กต์นี้
| ฟิลด์ | ประเภท | คำอธิบาย |
|---|---|---|
orderId | int64 | ID คำสั่งที่ได้รับผลกระทบ |
positionId | int64 | ID ตำแหน่งที่ได้รับผลกระทบ |
executionType | string | ประเภทผลลัพธ์ – ดูค่าด้านล่าง |
order | Order | รายละเอียดคำสั่ง (ถ้ามี) |
position | Position | รายละเอียดตำแหน่ง (ถ้ามี) |
deal | Deal | รายละเอียดดีล (ถ้ามี) |
ค่า executionType
| คุณค่า | ความหมาย |
|---|---|
ORDER_ACCEPTED | คำสั่งรอดำเนินการได้รับการยอมรับ |
ORDER_FILLED | คำสั่งเติมเต็มทั้งหมด |
ORDER_REPLACED | คำสั่งถูกแก้ไข |
ORDER_CANCELLED | ยกเลิกคำสั่งแล้ว |
ORDER_EXPIRED | คำสั่งหมดอายุแล้ว |
ORDER_REJECTED | คำสั่งถูกปฏิเสธ |
ORDER_CANCEL_REJECTED | คำขอยกเลิกถูกปฏิเสธ |
ORDER_PARTIAL_FILL | คำสั่งถูกจับคู่บางส่วน |
SWAP | สวอปตำแหน่งถูกนำไปใช้ |
DEPOSIT | ฝากเงินเข้าบัญชี |
WITHDRAW | ถอนเงินจากบัญชี |
BONUS_DEPOSIT_WITHDRAW | ฝากหรือถอนโบนัส |
ขอบเขตอัตรา ¶
เกตเวย์บังคับใช้ขอบเขตอัตราในหลายระดับ
| ระดับ | คำอธิบาย |
|---|---|
| ต่อ IP | จำกัดคำขอทั้งหมดจากที่อยู่ IP เดียว |
| ต่อผู้ใช้ | จำกัดคำขอทั้งหมดในทุกบัญชีสำหรับโทเค็นเดียว |
| ต่อบัญชี | จำกัดคำขอที่กำหนดเป้าหมายไปยังบัญชีเทรดเดียว |
เกินขอบเขตอัตรา
เมื่อเกินขอบเขตอัตรา API จะส่งคืน 429 Too Many Requests พร้อมกับส่วนหัว Retry-After
การจัดการข้อผิดพลาด ¶
เมื่อคำขอล้มเหลว API จะส่งคืนการตอบกลับข้อผิดพลาด JSON
{
"error": {
"code": "NOT_ENOUGH_MONEY",
"message": "Insufficient free margin for this order",
"httpStatus": 422,
"retryAfter": null
}
}
รหัสข้อผิดพลาด ¶
| โค้ด | HTTP | คำอธิบาย |
|---|---|---|
INVALID_REQUEST | 400 | พารามิเตอร์คำขอไม่ถูกต้องหรือขาดหายไป |
UNAUTHORIZED | 401 | โทเค็นไม่ถูกต้อง หมดอายุ หรือขาดหายไป |
TRADING_BAD_VOLUME | 400 | ปริมาณไม่ถูกต้อง (ต่ำกว่าขั้นต่ำหรือเกินกว่าตำแหน่ง) |
NOT_ENOUGH_MONEY | 422 | มาร์จิ้นที่เหลืออยู่ไม่เพียงพอ |
SYMBOL_NOT_FOUND | 404 | ID ของสัญลักษณ์ไม่มีอยู่ |
MARKET_CLOSED | 409 | ตลาดสำหรับสัญลักษณ์ปิดอยู่ในขณะนี้ |
MAINTENANCE | 503 | เซิร์ฟเวอร์เทรดอยู่ในโหมดบำรุงรักษา |
TIMEOUT | 504 | เซิร์ฟเวอร์เทรดไม่ตอบสนองทันเวลา |
GATEWAY_RATE_LIMIT | 429 | เกินขอบเขตอัตรา – ดูส่วนหัว Retry-After |
การจัดการขอบเขตอัตรา
เมื่อคุณได้รับการตอบกลับ 429 ส่วนหัว Retry-After และฟิลด์ retryAfter จะระบุจำนวนวินาทีที่คุณต้องรอก่อนส่งคำขอถัดไป