Lewati ke isi

Referensi API

Konsep umum

Volume, harga, jenis order, dan time in force

Volume

Volume ditentukan dalam sen (unit 0,0000001 lot).

Lot Volume (sen)
0,01 100.000
0,1 1.000.000
1,0 10.000.000

Harga

Nilai harga dalam pipette. Untuk mengonversi: display_price = pipette_value / 10^pipDigits

Untuk EURUSD (5 digit), nilai pipette 112345 = 1,12345.

Jenis order

Jenis Deskripsi Kolom yang diperlukan
MARKET Eksekusi segera pada harga saat ini symbolId, tradeSide, volume
LIMIT Eksekusi pada harga limit atau lebih baik + limitPrice
STOP Terpicu saat pasar mencapai harga stop + stopPrice
MARKET_RANGE Eksekusi dalam rentang harga + baseSlippagePrice
STOP_LIMIT Order limit yang terpicu pada harga stop + stopPrice, limitPrice

Time in force

Kebijakan Deskripsi
GOOD_TILL_CANCEL Order tetap aktif hingga terisi atau dibatalkan
GOOD_TILL_DATE Order kedaluwarsa pada expirationTimestamp yang ditentukan
IMMEDIATE_OR_CANCEL Isi yang tersedia segera, batalkan sisanya

Info akun

GET /v1/balance Get account balance

Mengembalikan saldo akun, ekuitas, dan margin bebas.

Parameter

Tidak ada parameter.

Respons

200 Respons berhasil

Response body
{
  "balance": 10000.00,
  "equity": 10250.75,
  "freeMargin": 9800.50,
  "balanceVersion": 42,
  "moneyDigits": 2,
  "depositAssetId": 1
}
Bidang Tipe Deskripsi
balance double Saldo akun dalam mata uang deposit
equity double Saldo + P&L mengambang
freeMargin double Margin yang tersedia untuk trade baru
balanceVersion int64 Penghitung versi saldo
moneyDigits int32 Tempat desimal untuk nilai moneter
depositAssetId int64 ID aset mata uang deposit
GET /v1/symbols Dapatkan simbol yang tersedia

Mengembalikan semua simbol yang tersedia untuk trading pada akun.

Parameter

Tidak ada parameter.

Respons

200 Array objek Symbol

Response body
[
  {
    "symbolId": 1,
    "symbolName": "EURUSD",
    "enabled": true,
    "baseAssetId": 2,
    "quoteAssetId": 1,
    "description": "Euro vs US Dollar"
  }
]

Symbol

Bidang Tipe Deskripsi
symbolId int64 ID simbol (digunakan dalam panggilan API lainnya)
symbolName string Nama simbol (mis., "EURUSD")
enabled boolean Apakah simbol dapat diperdagangkan
baseAssetId int64 ID aset dasar
quoteAssetId int64 ID aset kuotasi
description string Deskripsi yang dapat dibaca manusia
GET /v1/assets Dapatkan aset yang tersedia

Mengembalikan aset yang tersedia (mata uang).

Parameter

Tidak ada parameter.

Respons

200 Array objek Asset

Response body
[
  {
    "assetId": 1,
    "name": "USD",
    "displayName": "US Dollar"
  }
]

Asset

Bidang Tipe Deskripsi
assetId int64 ID aset
name string Kode aset (mis., "USD")
displayName string Nama tampilan

Data pasar

GET /v1/prices Dapatkan harga spot

Mengembalikan harga bid/ask saat ini untuk simbol yang ditentukan. Ini adalah snapshot – API tidak mendukung streaming.

Parameter
Nama Terletak di Tipe Wajib Deskripsi
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

Bidang Tipe Deskripsi
symbolId int64 ID Simbol
bid int64 Harga bid terbaik (pipette)
ask int64 Harga ask terbaik (pipette)
high int64 Tertinggi sesi (pipette)
low int64 Terendah sesi (pipette)
sessionClose int64 Penutupan sesi sebelumnya (pipette)
timestamp int64 Timestamp kuotasi (epoch ms)
GET /v1/trendbars Dapatkan data OHLCV historis

Mengembalikan data candlestick (OHLCV) historis untuk simbol.

Parameter
Nama Terletak di Tipe Wajib Default Deskripsi
symbolId query int64 ID Simbol
period query string Periode bar
fromTimestamp query string Waktu mulai (ISO-8601)
toTimestamp query string Waktu akhir (ISO-8601)
count query int32 100 Bar maksimum untuk dikembalikan
Periode 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

Bidang Tipe Deskripsi
timestamp int64 Waktu buka bar (epoch ms)
open double Harga buka (pipettes)
high double Harga tinggi (pipettes)
low double Harga rendah (pipettes)
close double Harga tutup (pipettes)
volume int64 Volume tick

Order

POST /v1/orders Pasang order baru

Memasang order trading baru. Mengembalikan ExecutionResponse.

Parameter

Tidak ada parameter path atau query.

Request body application/json
Bidang Tipe Wajib Deskripsi
symbolId int64 Simbol untuk trading
orderType string MARKET, LIMIT, STOP, MARKET_RANGE, STOP_LIMIT
tradeSide string BUY atau SELL
volume int64 Volume dalam sen
limitPrice double Harga limit – diperlukan untuk LIMIT, STOP_LIMIT
stopPrice double Harga pemicu stop – diperlukan untuk STOP, STOP_LIMIT
stopLoss double Harga Stop Loss
takeProfit double Harga Take Profit
comment string Komentar teks bebas (maks 256 karakter)
label string Label bot (maks 100 karakter)
timeInForce string GOOD_TILL_CANCEL, GOOD_TILL_DATE, IMMEDIATE_OR_CANCEL
baseSlippagePrice double Harga dasar untuk slippage – diperlukan untuk MARKET_RANGE
slippageInPoints int32 Slippage maksimal dalam poin
expirationTimestamp int64 Timestamp kedaluwarsa (epoch ms) – untuk GOOD_TILL_DATE
Example request body
{
  "symbolId": 1,
  "orderType": "MARKET",
  "tradeSide": "BUY",
  "volume": 10000000,
  "stopLoss": 112000,
  "takeProfit": 113000
}
Respons

200 ExecutionResponse – order diterima atau terisi

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 order pending

Mengembalikan semua order pending (belum terisi).

Parameter

Tidak ada parameter.

Respons

200 Array objek Order pending

PUT /v1/orders/{orderId} Ubah order pending

Mengubah order pending yang ada. Mengembalikan ExecutionResponse.

Parameter
Nama Terletak di Tipe Wajib Deskripsi
orderId path int64 Order yang akan diubah
Request body application/json

Subset apa pun dari field berikut.

Bidang Tipe Deskripsi
volume int64 Volume baru dalam sen
limitPrice double Harga limit baru
stopPrice double Harga stop baru
stopLoss double Harga Stop Loss baru
takeProfit double Harga Take Profit baru
expirationTimestamp int64 Timestamp kedaluwarsa baru (epoch ms)
Respons

200 ExecutionResponse dengan ORDER_REPLACED

404 Order tidak ditemukan

DELETE /v1/orders/{orderId} Batalkan order pending

Membatalkan order pending. Mengembalikan ExecutionResponse.

Parameter
Nama Terletak di Tipe Wajib Deskripsi
orderId path int64 Order yang akan dibatalkan
Respons

200 ExecutionResponse dengan ORDER_CANCELLED

404 Order tidak ditemukan

GET /v1/orders/history Dapatkan riwayat order

Mengembalikan order historis dalam rentang waktu.

Parameter
Nama Terletak di Tipe Wajib Deskripsi
fromTimestamp query string Waktu mulai (ISO-8601)
toTimestamp query string Waktu akhir (ISO-8601)
Respons

200 OrderListResponse

Bidang Tipe Deskripsi
orders Order[] Array order historis
hasMore boolean Apakah halaman tambahan tersedia

Posisi

GET /v1/positions Dapatkan posisi terbuka

Mengembalikan semua posisi terbuka dan order pending.

Parameter

Tidak ada parameter.

Respons

200 Array objek Position

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

Bidang Tipe Deskripsi
positionId int64 ID Posisi
symbolId int64 ID Simbol
tradeSide string BUY atau SELL
volume int64 Volume dalam sen
entryPrice double Harga masuk VWAP
stopLoss double Harga Stop Loss
takeProfit double Harga Take Profit
unrealizedPnl double Profit/loss mengambang
commission double Komisi yang dikenakan
swap double Jumlah Swap
GET /v1/positions/{positionId} Dapatkan detail posisi

Mengembalikan posisi dengan order dan deal terkait.

Parameter
Nama Terletak di Tipe Wajib Deskripsi
positionId path int64 ID posisi
Respons

200 PositionDetailResponse

Bidang Tipe Deskripsi
position Position Objek posisi
orders Order[] Order terkait
deals Deal[] Deal terkait
PUT /v1/positions/{positionId} Ubah SL/TP posisi

Memperbarui Stop Loss dan/atau Take Profit untuk posisi terbuka. Mengembalikan ExecutionResponse.

Parameter
Nama Terletak di Tipe Wajib Deskripsi
positionId path int64 ID posisi
Request body application/json
Bidang Tipe Deskripsi
stopLoss double Harga Stop Loss baru (null untuk menghapus)
takeProfit double Harga Take Profit baru (null untuk menghapus)
trailingStopLoss boolean Aktifkan trailing Stop Loss
Example request body
{
  "stopLoss": 111500,
  "takeProfit": 113500,
  "trailingStopLoss": false
}
Respons
POST /v1/positions/{positionId}/close Tutup posisi

Menutup posisi terbuka secara penuh atau sebagian. Gunakan nilai yang lebih kecil dari volume penuh posisi untuk penutupan sebagian. Mengembalikan ExecutionResponse.

Parameter
Nama Terletak di Tipe Wajib Deskripsi
positionId path int64 ID posisi
Request body application/json
Bidang Tipe Wajib Deskripsi
volume int64 Volume yang akan ditutup dalam sen
Example – full close (1 lot)
{
  "volume": 10000000
}
Respons

422 NOT_ENOUGH_MONEY – margin tidak mencukupi untuk penutupan sebagian


Deals

GET /v1/deals Dapatkan riwayat deal

Mengembalikan deal yang dieksekusi dalam rentang waktu.

Parameter
Nama Terletak di Tipe Wajib Default Deskripsi
fromTimestamp query string Waktu mulai (ISO-8601)
toTimestamp query string Waktu akhir (ISO-8601)
maxRows query int32 50 Jumlah deal maksimal yang dikembalikan
Respons

200 Array 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

Bidang Tipe Deskripsi
dealId int64 ID Deal
orderId int64 Order yang memicu deal ini
positionId int64 ID Posisi
symbolId int64 ID Simbol
tradeSide string BUY atau SELL
volume int64 Volume yang diminta dalam sen
filledVolume int64 Volume yang dieksekusi dalam sen
executionPrice double Harga eksekusi
executionTimestamp int64 Waktu eksekusi (epoch ms)
dealStatus string Status – lihat nilai di bawah
commission double Komisi yang dikenakan

Nilai dealStatus

Nilai Artinya
FILLED Order sepenuhnya dieksekusi
PARTIALLY_FILLED Order tereksekusi parsial
REJECTED Ditolak oleh server trading
INTERNALLY_REJECTED Ditolak secara internal sebelum mencapai server
ERROR Terjadi kesalahan selama eksekusi
MISSED Order terlewat (misalnya, gap di pasar)

Skema { #execution-response-schema }

ExecutionResponse

Semua operasi penempatan, perubahan, dan pembatalan order mengembalikan objek ini.

Bidang Tipe Deskripsi
orderId int64 ID order yang terpengaruh
positionId int64 ID posisi yang terpengaruh
executionType string Jenis hasil – lihat nilai di bawah
order Order Detail order (jika berlaku)
position Position Detail posisi (jika berlaku)
deal Deal Detail deal (jika berlaku)

Nilai executionType

Nilai Artinya
ORDER_ACCEPTED Order pending diterima
ORDER_FILLED Order sepenuhnya dieksekusi
ORDER_REPLACED Order diubah
ORDER_CANCELLED Order dibatalkan
ORDER_EXPIRED Order kedaluwarsa
ORDER_REJECTED Order ditolak
ORDER_CANCEL_REJECTED Permintaan pembatalan ditolak
ORDER_PARTIAL_FILL Order tereksekusi parsial
SWAP Swap posisi diterapkan
DEPOSIT Deposit akun
WITHDRAW Penarikan dana akun
BONUS_DEPOSIT_WITHDRAW Deposit atau penarikan dana bonus

Batas laju

Gateway memberlakukan batas laju di berbagai tingkat.

Level Deskripsi
Per IP Membatasi total permintaan dari satu alamat IP
Per pengguna Membatasi total permintaan di semua akun untuk satu token
Per akun Membatasi permintaan yang menargetkan satu akun trading

Batas laju terlampaui

Ketika batas laju terlampaui, API mengembalikan 429 Too Many Requests dengan header Retry-After.


Penanganan galat

Ketika permintaan gagal, API mengembalikan respons kesalahan JSON.

Error response format
{
  "error": {
    "code": "NOT_ENOUGH_MONEY",
    "message": "Insufficient free margin for this order",
    "httpStatus": 422,
    "retryAfter": null
  }
}

Kode kesalahan

Kode HTTP Deskripsi
INVALID_REQUEST 400 Parameter permintaan tidak valid atau hilang
UNAUTHORIZED 401 Token tidak valid, kedaluwarsa, atau hilang
TRADING_BAD_VOLUME 400 Volume tidak valid (di bawah minimum atau melebihi posisi)
NOT_ENOUGH_MONEY 422 Margin bebas tidak mencukupi
SYMBOL_NOT_FOUND 404 ID simbol tidak ada
MARKET_CLOSED 409 Pasar untuk simbol saat ini ditutup
MAINTENANCE 503 Server trading dalam mode pemeliharaan
TIMEOUT 504 Server trading tidak merespons tepat waktu
GATEWAY_RATE_LIMIT 429 Batas laju terlampaui – lihat header Retry-After

Penanganan batas laju

Ketika Anda menerima respons 429, header Retry-After dan bidang retryAfter menunjukkan berapa detik Anda harus menunggu sebelum mengirim permintaan berikutnya.