Rujukan API¶
Konsep biasa ¶
Volum, harga, jenis pesanan, dan masa berkuat kuasa
Volum¶
Volum dinyatakan dalam sen (unit 0.0000001 lot).
| Lot | Volum (sen) |
|---|---|
| 0.01 | 100,000 |
| 0.1 | 1,000,000 |
| 1.0 | 10,000,000 |
Harga¶
Nilai harga adalah dalam pipet. Untuk menukar: display_price = pipette_value / 10^pipDigits
Untuk EURUSD (5 digit), nilai pipet 112345 = 1.12345.
Jenis pesanan¶
| Jenis | Penerangan | Medan diperlukan |
|---|---|---|
MARKET | Laksanakan serta-merta pada harga semasa | symbolId, tradeSide, volume |
LIMIT | Laksanakan pada harga had atau lebih baik | + limitPrice |
STOP | Picu apabila pasaran mencapai harga henti | + stopPrice |
MARKET_RANGE | Laksanakan dalam julat harga | + baseSlippagePrice |
STOP_LIMIT | Pesanan had dipicu pada harga henti | + stopPrice, limitPrice |
Masa berkuat kuasa¶
| Polisi | Penerangan |
|---|---|
GOOD_TILL_CANCEL | Pesanan kekal aktif sehingga diisi atau dibatalkan |
GOOD_TILL_DATE | Pesanan tamat tempoh pada expirationTimestamp yang dinyatakan |
IMMEDIATE_OR_CANCEL | Isi apa yang tersedia dengan segera, batalkan yang selebihnya |
Maklumat akaun ¶
GET /v1/balance Get account balance
Mengembalikan baki akaun, ekuiti, dan margin bebas.
Tiada parameter.
200 Respons berjaya
{
"balance": 10000.00,
"equity": 10250.75,
"freeMargin": 9800.50,
"balanceVersion": 42,
"moneyDigits": 2,
"depositAssetId": 1
}
| Medan | Jenis | Penerangan |
|---|---|---|
balance | double | Baki akaun dalam mata wang deposit |
equity | double | Baki + P&L terapung |
freeMargin | double | Margin tersedia untuk dagangan baharu |
balanceVersion | int64 | Kaunter versi baki |
moneyDigits | int32 | Tempat perpuluhan untuk nilai kewangan |
depositAssetId | int64 | ID aset mata wang deposit |
GET /v1/symbols Dapatkan simbol yang tersedia
Mengembalikan semua simbol yang tersedia untuk dagangan pada akaun.
Tiada parameter.
200 Array objek Symbol
[
{
"symbolId": 1,
"symbolName": "EURUSD",
"enabled": true,
"baseAssetId": 2,
"quoteAssetId": 1,
"description": "Euro vs US Dollar"
}
]
Symbol
| Medan | Jenis | Penerangan |
|---|---|---|
symbolId | int64 | ID simbol (digunakan dalam panggilan API lain) |
symbolName | string | Nama simbol (cth., "EURUSD") |
enabled | boolean | Sama ada simbol boleh didagangkan |
baseAssetId | int64 | ID aset asas |
quoteAssetId | int64 | ID aset sebut harga |
description | string | Penerangan yang boleh dibaca manusia |
GET /v1/assets Dapatkan aset yang tersedia
Mengembalikan aset yang tersedia (mata wang).
Tiada parameter.
200 Array objek Asset
[
{
"assetId": 1,
"name": "USD",
"displayName": "US Dollar"
}
]
Asset
| Medan | Jenis | Penerangan |
|---|---|---|
assetId | int64 | ID aset |
name | string | Kod aset (cth., "USD") |
displayName | string | Nama paparan |
Data pasaran ¶
GET /v1/prices Dapatkan harga spot
Mengembalikan harga bidaan/tawaran semasa untuk simbol yang dinyatakan. Ini adalah tangkapan – API tidak menyokong penstriman.
| Nama | Terletak dalam | Jenis | Diperlukan | Penerangan |
|---|---|---|---|---|
symbolId | query | int64[] | ID simbol yang dipisahkan koma |
200 Array objek SpotPrice
[
{
"symbolId": 1,
"bid": 112340,
"ask": 112355,
"high": 112890,
"low": 111950,
"sessionClose": 112100,
"timestamp": 1700000000000
}
]
SpotPrice
| Medan | Jenis | Penerangan |
|---|---|---|
symbolId | int64 | ID Simbol |
bid | int64 | Harga bidaan terbaik (pipet) |
ask | int64 | Harga tawaran terbaik (pipet) |
high | int64 | Tinggi sesi (pipet) |
low | int64 | Rendah sesi (pipet) |
sessionClose | int64 | Penutupan sesi sebelumnya (pipet) |
timestamp | int64 | Cap masa sebut harga (epoch ms) |
GET /v1/trendbars Dapatkan data OHLCV sejarah
Mengembalikan data candlestick (OHLCV) sejarah untuk simbol.
| Nama | Terletak dalam | Jenis | Diperlukan | Lalai | Penerangan |
|---|---|---|---|---|---|
symbolId | query | int64 | – | ID Simbol | |
period | query | string | – | Tempoh bar | |
fromTimestamp | query | string | – | Masa mula (ISO-8601) | |
toTimestamp | query | string | – | Masa tamat (ISO-8601) | |
count | query | int32 | 100 | Bar maksimum untuk dikembalikan |
Tempoh yang tersedia
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 Array objek Trendbar
[
{
"timestamp": 1700000000000,
"open": 112340.0,
"high": 112890.0,
"low": 111950.0,
"close": 112500.0,
"volume": 4521
}
]
Trendbar
| Medan | Jenis | Penerangan |
|---|---|---|
timestamp | int64 | Masa pembukaan bar (epoch ms) |
open | double | Harga pembukaan (pipettes) |
high | double | Harga tinggi (pipettes) |
low | double | Harga rendah (pipettes) |
close | double | Harga penutupan (pipettes) |
volume | int64 | Jumlah tick |
Pesanan ¶
POST /v1/orders Buat pesanan baharu
Membuat pesanan dagangan baharu. Mengembalikan ExecutionResponse.
Tiada parameter laluan atau pertanyaan.
| Medan | Jenis | Diperlukan | Penerangan |
|---|---|---|---|
symbolId | int64 | Simbol untuk didagangkan | |
orderType | string | MARKET, LIMIT, STOP, MARKET_RANGE, STOP_LIMIT | |
tradeSide | string | BUY atau SELL | |
volume | int64 | Volum dalam sen | |
limitPrice | double | Harga had – diperlukan untuk LIMIT, STOP_LIMIT | |
stopPrice | double | Harga pencetus henti – diperlukan untuk STOP, STOP_LIMIT | |
stopLoss | double | Harga henti rugi | |
takeProfit | double | Harga ambilan untung | |
comment | string | Komen teks bebas (maks 256 aksara) | |
label | string | Label bot (maks 100 aksara) | |
timeInForce | string | GOOD_TILL_CANCEL, GOOD_TILL_DATE, IMMEDIATE_OR_CANCEL | |
baseSlippagePrice | double | Harga asas untuk slippage – diperlukan untuk MARKET_RANGE | |
slippageInPoints | int32 | Slippage maksimum dalam mata | |
expirationTimestamp | int64 | Cap masa tamat tempoh (epoch ms) – untuk GOOD_TILL_DATE |
{
"symbolId": 1,
"orderType": "MARKET",
"tradeSide": "BUY",
"volume": 10000000,
"stopLoss": 112000,
"takeProfit": 113000
}
200 ExecutionResponse – pesanan diterima atau diisi
400 INVALID_REQUEST atau TRADING_BAD_VOLUME
422 NOT_ENOUGH_MONEY
409 MARKET_CLOSED
{
"orderId": 12345,
"positionId": 67890,
"executionType": "ORDER_FILLED",
"order": { "..." : "..." },
"position": { "..." : "..." },
"deal": { "..." : "..." }
}
GET /v1/orders Dapatkan pesanan tertangguh
Mengembalikan semua pesanan tertangguh (tidak diisi).
Tiada parameter.
200 Array objek Pesanan tertangguh
PUT /v1/orders/{orderId} Pinda pesanan tertangguh
Meminda pesanan tertangguh sedia ada. Mengembalikan ExecutionResponse.
| Nama | Terletak dalam | Jenis | Diperlukan | Penerangan |
|---|---|---|---|---|
orderId | path | int64 | Pesanan untuk dipinda |
Mana-mana subset medan berikut.
| Medan | Jenis | Penerangan |
|---|---|---|
volume | int64 | Volum baharu dalam sen |
limitPrice | double | Harga had baharu |
stopPrice | double | Harga henti baharu |
stopLoss | double | Harga henti rugi baharu |
takeProfit | double | Harga ambilan untung baharu |
expirationTimestamp | int64 | Cap masa tamat tempoh baharu (epoch ms) |
200 ExecutionResponse dengan ORDER_REPLACED
404 Pesanan tidak dijumpai
DELETE /v1/orders/{orderId} Batalkan pesanan tertangguh
Membatalkan pesanan tertangguh. Mengembalikan ExecutionResponse.
| Nama | Terletak dalam | Jenis | Diperlukan | Penerangan |
|---|---|---|---|---|
orderId | path | int64 | Pesanan untuk dibatalkan |
200 ExecutionResponse dengan ORDER_CANCELLED
404 Pesanan tidak dijumpai
GET /v1/orders/history Dapatkan sejarah pesanan
Mengembalikan pesanan bersejarah dalam julat masa.
| Nama | Terletak dalam | Jenis | Diperlukan | Penerangan |
|---|---|---|---|---|
fromTimestamp | query | string | Masa mula (ISO-8601) | |
toTimestamp | query | string | Masa tamat (ISO-8601) |
200 OrderListResponse
| Medan | Jenis | Penerangan |
|---|---|---|
orders | Order[] | Array pesanan bersejarah |
hasMore | boolean | Sama ada halaman tambahan tersedia |
Posisi ¶
GET /v1/positions Dapatkan kedudukan terbuka
Mengembalikan semua kedudukan terbuka dan pesanan tertangguh.
Tiada parameter.
200 Array objek Kedudukan
[
{
"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
}
]
Posisi
| Medan | Jenis | Penerangan |
|---|---|---|
positionId | int64 | ID posisi |
symbolId | int64 | ID Simbol |
tradeSide | string | BUY atau SELL |
volume | int64 | Volum dalam sen |
entryPrice | double | Harga kemasukan VWAP |
stopLoss | double | Harga henti rugi |
takeProfit | double | Harga ambilan untung |
unrealizedPnl | double | Untung/rugi terapung |
commission | double | Komisen yang dikenakan |
swap | double | Jumlah swap |
GET /v1/positions/{positionId} Dapatkan butiran posisi
Mengembalikan posisi dengan pesanan dan tawaran yang berkaitan.
| Nama | Terletak dalam | Jenis | Diperlukan | Penerangan |
|---|---|---|---|---|
positionId | path | int64 | ID posisi |
200 PositionDetailResponse
| Medan | Jenis | Penerangan |
|---|---|---|
position | Position | Objek posisi |
orders | Order[] | Pesanan berkaitan |
deals | Deal[] | Tawaran berkaitan |
PUT /v1/positions/{positionId} Pinda SL/TP posisi
Mengemas kini henti rugi dan/atau ambilan untung untuk posisi terbuka. Mengembalikan ExecutionResponse.
| Nama | Terletak dalam | Jenis | Diperlukan | Penerangan |
|---|---|---|---|---|
positionId | path | int64 | ID posisi |
| Medan | Jenis | Penerangan |
|---|---|---|
stopLoss | double | Harga henti rugi baharu (null untuk mengalih keluar) |
takeProfit | double | Harga ambilan untung baharu (null untuk mengalih keluar) |
trailingStopLoss | boolean | Dayakan henti rugi mengekori |
{
"stopLoss": 111500,
"takeProfit": 113500,
"trailingStopLoss": false
}
POST /v1/positions/{positionId}/close Tutup posisi
Menutup posisi terbuka sepenuhnya atau sebahagian. Gunakan nilai yang lebih kecil daripada volum penuh posisi untuk penutupan separa. Mengembalikan ExecutionResponse.
| Nama | Terletak dalam | Jenis | Diperlukan | Penerangan |
|---|---|---|---|---|
positionId | path | int64 | ID posisi |
| Medan | Jenis | Diperlukan | Penerangan |
|---|---|---|---|
volume | int64 | Volum untuk ditutup dalam sen |
{
"volume": 10000000
}
422 NOT_ENOUGH_MONEY – margin tidak mencukupi untuk penutupan separa
Dagangan ¶
GET /v1/deals Dapatkan sejarah tawaran
Mengembalikan tawaran yang dilaksanakan dalam julat masa.
| Nama | Terletak dalam | Jenis | Diperlukan | Lalai | Penerangan |
|---|---|---|---|---|---|
fromTimestamp | query | string | – | Masa mula (ISO-8601) | |
toTimestamp | query | string | – | Masa tamat (ISO-8601) | |
maxRows | query | int32 | 50 | Tawaran maksimum untuk dikembalikan |
200 Tatasusunan objek Deal
[
{
"dealId": 11111,
"orderId": 12345,
"positionId": 67890,
"symbolId": 1,
"tradeSide": "BUY",
"volume": 10000000,
"filledVolume": 10000000,
"executionPrice": 112345.0,
"executionTimestamp": 1700000000000,
"dealStatus": "FILLED",
"commission": -7.00
}
]
Deal
| Medan | Jenis | Penerangan |
|---|---|---|
dealId | int64 | ID Dagangan |
orderId | int64 | Pesanan yang mencetuskan tawaran ini |
positionId | int64 | ID posisi |
symbolId | int64 | ID Simbol |
tradeSide | string | BUY atau SELL |
volume | int64 | Volum yang diminta dalam sen |
filledVolume | int64 | Volum yang diisi dalam sen |
executionPrice | double | Harga pelaksanaan |
executionTimestamp | int64 | Masa pelaksanaan (epoch ms) |
dealStatus | string | Status – lihat nilai di bawah |
commission | double | Komisen yang dikenakan |
Nilai dealStatus
| Nilai | Maksud |
|---|---|
FILLED | Pesanan diisi sepenuhnya |
PARTIALLY_FILLED | Pesanan diisi sebahagian |
REJECTED | Ditolak oleh pelayan dagangan |
INTERNALLY_REJECTED | Ditolak secara dalaman sebelum sampai ke pelayan |
ERROR | Ralat berlaku semasa pelaksanaan |
MISSED | Pesanan terlepas (cth., jurang dalam pasaran) |
Skema { #execution-response-schema } ¶
ExecutionResponse ¶
Semua operasi peletakan pesanan, pindaan dan pembatalan mengembalikan objek ini.
| Medan | Jenis | Penerangan |
|---|---|---|
orderId | int64 | ID pesanan yang terjejas |
positionId | int64 | ID posisi yang terjejas |
executionType | string | Jenis hasil – lihat nilai di bawah |
order | Order | Butiran pesanan (jika berkenaan) |
position | Position | Butiran posisi (jika berkenaan) |
deal | Deal | Butiran tawaran (jika berkenaan) |
Nilai executionType
| Nilai | Maksud |
|---|---|
ORDER_ACCEPTED | Pesanan tertangguh diterima |
ORDER_FILLED | Pesanan diisi sepenuhnya |
ORDER_REPLACED | Pesanan dipinda |
ORDER_CANCELLED | Pesanan dibatalkan |
ORDER_EXPIRED | Pesanan tamat tempoh |
ORDER_REJECTED | Pesanan ditolak |
ORDER_CANCEL_REJECTED | Permintaan batal ditolak |
ORDER_PARTIAL_FILL | Pesanan diisi sebahagian |
SWAP | Swap posisi digunakan |
DEPOSIT | Deposit akaun |
WITHDRAW | Pengeluaran akaun |
BONUS_DEPOSIT_WITHDRAW | Deposit atau pengeluaran bonus |
Had kadar ¶
Gerbang menguatkuasakan had kadar pada pelbagai peringkat.
| Tahap | Penerangan |
|---|---|
| Setiap IP | Mengehadkan jumlah permintaan daripada satu alamat IP |
| Setiap pengguna | Mengehadkan jumlah permintaan merentasi semua akaun untuk satu token |
| Setiap akaun | Mengehadkan permintaan yang menyasarkan satu akaun dagangan |
Had kadar melebihi
Apabila had kadar melebihi, API mengembalikan 429 Too Many Requests dengan pengepala Retry-After.
Pengendalian ralat ¶
Apabila permintaan gagal, API mengembalikan respons ralat JSON.
{
"error": {
"code": "NOT_ENOUGH_MONEY",
"message": "Insufficient free margin for this order",
"httpStatus": 422,
"retryAfter": null
}
}
Kod ralat ¶
| Kod | HTTP | Penerangan |
|---|---|---|
INVALID_REQUEST | 400 | Parameter permintaan tidak sah atau tiada |
UNAUTHORIZED | 401 | Token tidak sah, tamat tempoh, atau tiada |
TRADING_BAD_VOLUME | 400 | Volum tidak sah (di bawah minimum atau melebihi kedudukan) |
NOT_ENOUGH_MONEY | 422 | Margin bebas tidak mencukupi |
SYMBOL_NOT_FOUND | 404 | ID simbol tidak wujud |
MARKET_CLOSED | 409 | Pasaran untuk simbol sedang ditutup |
MAINTENANCE | 503 | Pelayan dagangan dalam mod penyelenggaraan |
TIMEOUT | 504 | Pelayan dagangan tidak bertindak balas dalam masa |
GATEWAY_RATE_LIMIT | 429 | Had kadar melebihi – lihat pengepala Retry-After |
Pengendalian had kadar
Apabila anda menerima respons 429, pengepala Retry-After dan medan retryAfter menunjukkan berapa saat anda perlu menunggu sebelum menghantar permintaan seterusnya.