Langkau tajuk talian

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.

Parameter

Tiada parameter.

Respons

200 Respons berjaya

Response body
{
  "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.

Parameter

Tiada parameter.

Respons

200 Array objek Symbol

Response body
[
  {
    "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).

Parameter

Tiada parameter.

Respons

200 Array objek Asset

Response body
[
  {
    "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.

Parameter
Nama Terletak dalam Jenis Diperlukan Penerangan
symbolId query int64[] ID simbol yang dipisahkan koma
Respons

200 Array objek SpotPrice

Response body
[
  {
    "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.

Parameter
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

Respons

200 Array objek Trendbar

Response body
[
  {
    "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.

Parameter

Tiada parameter laluan atau pertanyaan.

Badan permintaan application/json
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
Example request body
{
  "symbolId": 1,
  "orderType": "MARKET",
  "tradeSide": "BUY",
  "volume": 10000000,
  "stopLoss": 112000,
  "takeProfit": 113000
}
Respons

200 ExecutionResponse – pesanan diterima atau diisi

400 INVALID_REQUEST atau TRADING_BAD_VOLUME

422 NOT_ENOUGH_MONEY

409 MARKET_CLOSED

Example success response
{
  "orderId": 12345,
  "positionId": 67890,
  "executionType": "ORDER_FILLED",
  "order": { "..." : "..." },
  "position": { "..." : "..." },
  "deal": { "..." : "..." }
}
GET /v1/orders Dapatkan pesanan tertangguh

Mengembalikan semua pesanan tertangguh (tidak diisi).

Parameter

Tiada parameter.

Respons

200 Array objek Pesanan tertangguh

PUT /v1/orders/{orderId} Pinda pesanan tertangguh

Meminda pesanan tertangguh sedia ada. Mengembalikan ExecutionResponse.

Parameter
Nama Terletak dalam Jenis Diperlukan Penerangan
orderId path int64 Pesanan untuk dipinda
Badan permintaan application/json

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)
Respons

200 ExecutionResponse dengan ORDER_REPLACED

404 Pesanan tidak dijumpai

DELETE /v1/orders/{orderId} Batalkan pesanan tertangguh

Membatalkan pesanan tertangguh. Mengembalikan ExecutionResponse.

Parameter
Nama Terletak dalam Jenis Diperlukan Penerangan
orderId path int64 Pesanan untuk dibatalkan
Respons

200 ExecutionResponse dengan ORDER_CANCELLED

404 Pesanan tidak dijumpai

GET /v1/orders/history Dapatkan sejarah pesanan

Mengembalikan pesanan bersejarah dalam julat masa.

Parameter
Nama Terletak dalam Jenis Diperlukan Penerangan
fromTimestamp query string Masa mula (ISO-8601)
toTimestamp query string Masa tamat (ISO-8601)
Respons

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.

Parameter

Tiada parameter.

Respons

200 Array objek Kedudukan

Response body
[
  {
    "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.

Parameter
Nama Terletak dalam Jenis Diperlukan Penerangan
positionId path int64 ID posisi
Respons

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.

Parameter
Nama Terletak dalam Jenis Diperlukan Penerangan
positionId path int64 ID posisi
Badan permintaan application/json
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
Example request body
{
  "stopLoss": 111500,
  "takeProfit": 113500,
  "trailingStopLoss": false
}
Respons
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.

Parameter
Nama Terletak dalam Jenis Diperlukan Penerangan
positionId path int64 ID posisi
Badan permintaan application/json
Medan Jenis Diperlukan Penerangan
volume int64 Volum untuk ditutup dalam sen
Example – full close (1 lot)
{
  "volume": 10000000
}
Respons

422 NOT_ENOUGH_MONEY – margin tidak mencukupi untuk penutupan separa


Dagangan

GET /v1/deals Dapatkan sejarah tawaran

Mengembalikan tawaran yang dilaksanakan dalam julat masa.

Parameter
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
Respons

200 Tatasusunan objek Deal

Response body
[
  {
    "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 response format
{
  "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.