NAV
API Documentation
python javascript csharp
English 中文

概览

Welcome to the FTX US API documentation. We offer complete REST, Websocket, and FIX APIs to suit your algorithmic trading needs.

REST API

基于 HTTP 的 API,具有完整的交易和资产管理功能,包括公共委托簿和交易数据以及私人账户数据和下单管理。

REST 端点网址:https://ftx.us/api

使用 JSON 发起请求和回复。

身份验证

import time
import hmac
from requests import Request

ts = int(time.time() * 1000)
request = Request('GET', '<api_endpoint>')
prepared = request.prepare()
signature_payload = f'{ts}{prepared.method}{prepared.path_url}'.encode()
signature = hmac.new('YOUR_API_SECRET'.encode(), signature_payload, 'sha256').hexdigest()

request.headers[f'FTXUS-KEY'] = 'YOUR_API_KEY'
request.headers[f'FTXUS-SIGN'] = signature
request.headers[f'FTXUS-TS'] = str(ts)

# Only include line if you want to access a subaccount. Remember to URI-encode the subaccount name if it contains special characters!
# request.headers[f'FTXUS-SUBACCOUNT'] = 'my_subaccount_nickname'
var method = HttpMethod.Get
var endpoint = $"/api/account";
var request = new HttpRequestMessage(method, endpoint);
var _nonce = (DateTime.UtcNow - start).TotalMilliseconds;

var hashMaker = new HMACSHA256(Encoding.UTF8.GetBytes(""YOUR_API_SECRET""));
var signaturePayload = $"{_nonce}{method.ToString().ToUpper()}{endpoint}";
var hash = hashMaker.ComputeHash(Encoding.UTF8.GetBytes(signaturePayload));
var hashString = BitConverter.ToString(hash).Replace("-", string.Empty);
var signature = hashString.ToLower();

request.Headers.Add("FTXUS-KEY", "YOUR_API_KEY");
request.Headers.Add("FTXUS-SIGN", signature);
request.Headers.Add("FTXUS-TS", _nonce.ToString());

For authenticated requests, the following headers should be sent with the request:

费率限制

Please do not send more than 30 requests per second: doing so will result in HTTP 429 errors. We strongly recommend using the websocket API for faster market and account data.

子账户

To specify a subaccount, include its URI-encoded nickname in the header FTXUS-SUBACCOUNT with the request.

获取所有子帐户

请求

GET /subaccounts

回复

{
  "success": true,
  "result": [
    {
      "nickname": "sub1",
      "deletable": true,
      "editable": true,
    }
  ]
}

需要验证身份。

回复格式

姓名 类型 价值 描述
nickname string sub1 subaccount name
deletable boolean true 子帐户是否可以删除
editable boolean true 子帐户的昵称是否可以更改

创建子帐户

请求

POST /subaccounts
{
  "nickname": "sub2",
}

回复

{
  "success": true,
  "result": {
    "nickname": "sub2",
    "deletable": true,
    "editable": true,
  }
}

需要验证身份。

净荷格式

姓名 类型 价值 描述
nickname string sub2

回复格式

姓名 类型 价值 描述
nickname string sub2 subaccount name
deletable boolean true 子帐户是否可以删除
editable boolean true 子帐户的昵称是否可以更改

更改子帐户名称

请求

POST /subaccounts/update_name
{
  "nickname": "sub2",
  "newNickname": "newSub2"
}

回复

{
  "success": true,
  "result": null
}

需要验证身份。

净荷格式

姓名 类型 价值 描述
nickname string sub2 子帐户的当前昵称
newNickname string newSub2 子帐户的新昵称

删除子帐户

请求

DELETE /subaccounts
{
  "nickname": "sub2",
}

回复

{
  "success": true,
  "result": null
}

需要验证身份。

净荷格式

姓名 类型 价值 描述
nickname string sub2

获取子帐户余额

请求

GET /subaccounts/{nickname}/balances

回复


{
  "success": true,
  "result": [
    {
      "coin": "USDT",
      "free": 4321.2,
      "total": 4340.2
    }
  ]
}

需要验证身份。

回复格式

姓名 类型 价值 描述
coin string USDT coin id
free number 4321.2 free amount
total number 4340.2 total amount

在子帐户之间相互转账

请求

POST /subaccounts/transfer
{
  "coin": "XRP",
  "size": 10000,
  "source": null,
  "destination": "sub1",
}

回复

{
  "success": true,
  "result": {
    "id": 316450,
    "coin": "XRP",
    "size": 10000,
    "time": "2019-03-05T09:56:55.728933+00:00",
    "notes": "",
    "status": "complete",
  }
}

需要验证身份。

净荷格式

姓名 类型 价值 描述
coin string XRP
size number 31431.0
source string main %{account}子帐户的名称。主帐户使用null'main'
destination string sub1 %{account}子帐户的名称。主帐户使用null'main'

回复格式

姓名 类型 价值 描述
id number 316450
coin string XRP
size number 10000
time string 2019-03-05T09:56:55.728933+00:00
notes string
status string complete always 'complete'

市场

获取市场

请求

GET /markets

回复


{
  "success": true,
  "result": [
    {
      "name": "BTC/USD",
      "baseCurrency": "BTC",
      "quoteCurrency": "USD",
      "type": "spot",
      "enabled": true,
      "ask": 3949.25,
      "bid": 3949,
      "last": 10579.52,
      "priceIncrement": 0.25,
      "sizeIncrement": 0.001
    }
  ]
}

回复格式

姓名 类型 价值 描述
type string spot
name string BTC/USD
baseCurrency string BTC
quoteCurrency string USD
enabled boolean true
ask number 3949.25 最佳报价
bid number 3949.00 最佳报价
last number 3949.00 最近成交价
priceIncrement number 0.25
sizeIncrement number 0.001

获取单个市场

请求

GET /markets/{market_name}

回复

See /markets

获取委托簿

请求

GET /markets/{market_name}/orderbook?depth={depth}

回复

{
  "success": true,
  "result": {
    "asks": [
      [
        4114.25,
        6.263
      ]
    ],
    "bids": [
      [
        4112.25,
        49.29
      ]
    ]
  }
}

参数

姓名 类型 价值 描述
market_name string BTC/USD Required. Name of the market.
depth number 35 max 100, default 20

回复格式

姓名 类型 价值 描述
asks array [4114.25, 6.263] Array with price and size
bids array [4112, 49.29] Array with price and size

获取交易

请求

GET /markets/{market_name}/trades?limit={limit}&start_time={start_time}&end_time={end_time}

回复

{
  "success": true,
  "result": [
    {
      "id": 3855995,
      "price": 3857.75,
      "side": "buy",
      "size": 0.111,
      "time": "2019-03-20T18:16:23.397991+00:00"
    }
  ]
}

参数

姓名 类型 价值 描述
market_name string BTC/USD name of the market
limit number 35 optional, max 100, default 20
start_time number 1559881511 optional
end_time number 1559881711 optional

回复格式

姓名 类型 价值 描述
id number 3855995 trade id
price number 3857.75
side string buy
size number 0.111
time string 2019-03-20T18:16:23.397991+00:00

获取历史价格

请求

GET /markets/{market_name}/candles?resolution={resolution}&limit={limit}&start_time={start_time}&end_time={end_time}

回复

{
  "success": true,
  "result": [
    {
      "close":11055.25,
      "high":11089.0,
      "low":11043.5,
      "open":11059.25,
      "startTime":"2019-06-24T17:15:00+00:00",
      "volume":464193.95725
    }
  ]
}

参数

姓名 类型 价值 描述
market_name string BTC/USD name of the market
resolution number 300 窗口时长(秒为)。 选项:15, 60, 300, 900, 3600, 14400, 86400
limit number 35 optional
start_time number 1559881511 optional
end_time number 1559881711 optional

回复格式

姓名 类型 价值 描述
startTime string 2019-06-24T17:15:00+00:00 窗口开始时间
open number 11059.25 开始时间的标记价格
close number 11055.25 窗口结束时的标记价格:startTime(开始时间)+ 时间单位
high number 11089.0 窗口最高标记价格
low number 11059.25 窗口最低标记价格
volume number 464193.95725 窗口内交易量

钱包

获取币

请求

GET /wallet/coins

回复


{
  "success": true,
  "result": [
    {
      "bep2Asset": null,
      "canConvert": true,
      "canDeposit": true,
      "canWithdraw": true,
      "collateral": true,
      "collateralWeight": 0.975,
      "creditTo": null,
      "erc20Contract": "0xdAC17F958D2ee523a2206206994597C13D831ec7",
      "fiat": false,
      "hasTag": false,
      "id": "USDT",
      "isToken": false,
      "methods": ["omni", "erc20", "trx"],
      "spotMargin": false,
      "name": "USD Tether",
      "trc20Contract": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",
      "usdFungible": false
    }
  ]
}

需要验证身份。

回复格式

姓名 类型 价值 描述
canDeposit boolean true
canWithdraw boolean true
hasTag boolean false true if addresses for this coin have a tag
id string USDT
name string USD Tether
bep2Asset string null
canConvert boolean true
collateral boolean true
collateralWeight number 0.975
creditTo string null
erc20Contract string 0xdAC17F958D2ee523a2206206994597C13D831ec7
fiat boolean false
isToken boolean false
methods array ["omni", "erc20", "trx"]
spotMargin boolean false
trc20Contract string TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t
usdFungible boolean false

获取余额

请求

GET /wallet/balances

回复


{
  "success": true,
  "result": [
    {
      "coin": "USDT",
      "free": 2320.2,
      "total": 2340.2
    }
  ]
}

需要验证身份。

回复格式

姓名 类型 价值 描述
coin string USDT coin id
free number 2320.2 free amount
total number 2340.2 total amount

获取所有帐户的余额

请求

GET /wallet/all_balances

回复


{
  "success": true,
  "result": {
    "main": [
      {
        "coin": "USDT",
        "free": 2320.2,
        "total": 2340.2
      },
      {
        "coin": "BTC",
        "free": 2.0,
        "total": 3.2
      }
    ],
    "Battle Royale": [
      {
        "coin": "USD",
        "free": 2000.0,
        "total": 2200.0
      }
    ]
  }
}

需要验证身份。

响应将包含一个对象,其私钥是子帐户名称。主帐户将显示在私钥“主”下。

回复格式

姓名 类型 价值 描述
coin string USDT coin id
free number 2320.2 free amount
total number 2340.2 total amount

获取存款地址

请求

GET /wallet/deposit_address/{coin}?method={method}

回复

{
  "success": true,
  "result": {
    "address": "0x83a127952d266A6eA306c40Ac62A4a70668FE3BE",
    "tag": "null"
  }
}

需要验证身份。

请求参数

姓名 类型 价值 描述
coin string USDT
method string erc20 optional; for coins available on different blockchains (e.g USDT)

回复格式

姓名 类型 价值 描述
address string 0x83a127952d266A6eA306c40Ac62A4a70668FE3BE
tag string null optional

获取存入记录

请求

GET /wallet/deposits

回复

{
  "success": true,
  "result": {
    "coin": "TUSD",
    "confirmations": 64,
    "confirmedTime": "2019-03-05T09:56:55.728933+00:00",
    "fee": 0,
    "id": 1,
    "sentTime": "2019-03-05T09:56:55.735929+00:00",
    "size": "99.0",
    "status": "confirmed",
    "time": "2019-03-05T09:56:55.728933+00:00",
    "txid": "0x8078356ae4b06a036d64747546c274af19581f1c78c510b60505798a7ffcaf1"
  }
}

需要验证身份。

请求参数

姓名 类型 价值 描述
limit number 20 optional; number of items to return
start_time number 1564146934 optional; minimum time of items to return, in Unix time (seconds since 1970-01-01)
end_time number 1564233334 optional; maximum time of items to return, in Unix time (seconds since 1970-01-01)

回复格式

姓名 类型 价值 描述
coin string TUSD coin id
confirmations number 64 number of blockchain confirmations
confirmedTime string 2019-03-05T09:56:55.728933+00:00
fee number 0.0 fee, not included in size
id number 1 deposit id
sentTime string 2019-03-05T09:56:55.735929+00:00
size string 99.0
status string confirmed one of "confirmed", "unconfirmed", or "cancelled"
time string 2019-03-05T09:56:55.728933+00:00
txid string 0x8078356ae4b06a036d64747546c274af19581f1c78c510b60505798a7ffcaf1 optional
notes string Transfer from main account to my_subaccount optional

获取提现历史记录

请求

GET /wallet/withdrawals

回复

{
  "success": true,
  "result": {
    "coin": "TUSD",
    "address": "0x83a127952d266A6eA306c40Ac62A4a70668FE3BE",
    "tag": "null",
    "fee": 0,
    "id": 1,
    "size": "99.0",
    "status": "complete",
    "time": "2019-03-05T09:56:55.728933+00:00",
    "txid": "0x8078356ae4b06a036d64747546c274af19581f1c78c510b60505798a7ffcaf1"
  }
}

需要验证身份。

请求参数

姓名 类型 价值 描述
limit number 20 optional; number of items to return
start_time number 1564146934 optional; minimum time of items to return, in Unix time (seconds since 1970-01-01)
end_time number 1564233334 optional; maximum time of items to return, in Unix time (seconds since 1970-01-01)

回复格式

姓名 类型 价值 描述
coin string TUSD coin id
address string 0x83a127952d266A6eA306c40Ac62A4a70668FE3BE deposit address the withdrawal was sent to
tag string null
fee number 0.0 fee, not included in size
id number 1 withdrawal id
size string 99.0
status string complete one of "requested", "processing", "complete", or "cancelled"
time string 2019-03-05T09:56:55.728933+00:00
txid string 0x8078356ae4b06a036d64747546c274af19581f1c78c510b60505798a7ffcaf1 optional
notes string Transfer from main account to my_subaccount optional

请求提现

请求

POST /wallet/withdrawals
{
  "coin": "USDT",
  "size": 20.2,
  "address": "0x83a127952d266A6eA306c40Ac62A4a70668FE3BE",
  "tag": null,
  "password": "my_withdrawal_password",
  "code": "152823
}

回复

{
  "success": true,
  "result": {
    "coin": "USDT",
    "address": "0x83a127952d266A6eA306c40Ac62A4a70668FE3BE",
    "tag": "null",
    "fee": 0,
    "id": 1,
    "size": "20.2",
    "status": "requested",
    "time": "2019-03-05T09:56:55.728933+00:00",
    "txid": "null"
  }
}

需要验证身份。

净荷格式

姓名 类型 价值 描述
coin string USDT coin to withdraw
size number 20.2 amount to withdraw
address string 0x83a127952d266A6eA306c40Ac62A4a70668FE3BE address to send to
tag string null optional
password string null optional; withdrawal password if it is required for your account
code string null optiona; 2fa code if it is required for your account

回复格式

姓名 类型 价值 描述
coin string USDT coin id
address string 0x83a127952d266A6eA306c40Ac62A4a70668FE3BE deposit address the withdrawal was sent to
tag string null
fee number 0.0 fee, not included in size
id number 1 withdrawal id
size string 20.2
status string requested one of "requested", "processing", "complete", or "cancelled"
time string 2019-03-05T09:56:55.728933+00:00
txid string null

Get saved addresses

This endpoint provides you with your saved addresses

请求

GET /wallet/saved_addresses

回复

{
  "success": true,
  "result": [
    {
      "address": "0xb2EA1CC386A260c9Ae3ebda2cb7AEd212b034Ab4",
      "coin": "ETH",
      "fiat": false,
      "id": 31189,
      "isPrimetrust": false,
      "lastUsedAt": "2020-09-21T15:38:11.795763+00:00",
      "name": "MetaMask 1",
      "tag": null,
      "whitelisted": true,
      "whitelistedAfter": "2020-08-26T09:41:53.959256+00:00"
    },
    {
      "address": "0xE4Ba8791E0fdbdc50024898A384FecFD90e69553",
      "coin": "ETH",
      "fiat": false,
      "id": 46725,
      "isPrimetrust": false,
      "lastUsedAt": "2020-09-21T09:16:46.918175+00:00",
      "name": "Ledger Nano S",
      "tag": null,
      "whitelisted": true,
      "whitelistedAfter": "2020-09-21T09:16:16.829467+00:00"
    }
  ]
}

需要验证身份。

请求参数

姓名 类型 价值 描述
coin string ETH optional, filters saved addresses by coin;

回复格式

姓名 类型 价值 描述
address string "0xb2EA1CC386A260c9Ae3ebda2cb7AEd212b034Ab4"
coin string ETH coin id
fiat boolean false
id int 31189
isPrimetrust boolean false
lastUsedAt string "2020-09-21T15:38:11.795763+00:00"
tag string null
whitelisted boolean true true if the address is whitelisted, null if the address has never been whitelisted or has been unwhitelisted
whitelistedAfter string "2020-09-21T09:16:16.829467+00:00" Date after which the address has been whitelisted, null if the address has never been whitelisted or has been unwhitelisted

Create saved addresses

请求

POST /wallet/saved_addresses

回复

{
  "success": true,
  "result": {
    "address": "0xb2EA1CC386A260c9Ae3ebda2cb7AEd212b034Ab4",
    "coin": "ETH",
    "fiat": false,
    "id": 52382,
    "isPrimetrust": false,
    "lastUsedAt": "2020-10-08T06:11:03.072427+00:00",
    "name": "MetaMask",
    "tag": null,
    "whitelisted": null,
    "whitelistedAfter": null
  }
}

需要验证身份。

请求参数

姓名 类型 价值 描述
coin string ETH coin id
address string "0xb2EA1CC386A260c9Ae3ebda2cb7AEd212b034Ab4"
addressName string MetaMask
isPrimetrust boolean false
tag string null optional, tag of the address;

回复格式

姓名 类型 价值 描述
address string "0xb2EA1CC386A260c9Ae3ebda2cb7AEd212b034Ab4"
coin string ETH coin id
fiat boolean false
id int 52382
isPrimetrust boolean false
lastUsedAt string "2020-10-08T06:11:03.072427+00:00"
name string "MetaMask"
tag string null
whitelisted boolean null true if the address is whitelisted, null if the address has never been whitelisted or has been unwhitelisted
whitelistedAfter boolean null Date after which the address has been whitelisted, null if the address has never been whitelisted or has been unwhitelisted

Delete saved addresses

请求

DELETE /wallet/saved_addresses/{saved_address_id}

回复

{
  "success": true,
  "result": "Address deleted"
}

需要验证身份。

请求参数

姓名 类型 价值 描述
saved_address_id int 52382

买卖盘

获取未执行的挂单

请求

GET /orders?market={market}

回复

{
  "success": true,
  "result": [
    {
      "createdAt": "2019-03-05T09:56:55.728933+00:00",
      "filledSize": 10,
      "id": 9596912,
      "market": "BTC/USD",
      "price": 0.306525,
      "avgFillPrice": 0.306526,
      "remainingSize": 31421,
      "side": "sell",
      "size": 31431,
      "status": "open",
      "type": "limit",
      "reduceOnly": false,
      "ioc": false,
      "postOnly": false,
      "clientId": null
    }
  ]
}

需要验证身份。

请求参数

姓名 类型 价值 描述
market string BTC/USD optional; market to limit orders

回复格式

姓名 类型 价值 描述
id number 9596912
market string BTC/USD
type string limit
side string sell
price number 0.306525
size number 31431.0
filledSize number 10.0
remainingSize number 31421.0
avgFillPrice number 0.306526
status string new (accepted but not processed yet), open, or closed (filled or cancelled)
createdAt string 2019-03-05T09:56:55.728933+00:00
reduceOnly boolean false
ioc boolean false
postOnly boolean false
clientId string optional; client order id

获取订单历史记录

请求

GET /orders/history?market={market}

回复

{
  "success": true,
  "result": [
    {
      "avgFillPrice": 10135.25,
      "clientId": null,
      "createdAt": "2019-06-27T15:24:03.101197+00:00",
      "filledSize": 0.001,
      "id": 257132591,
      "ioc": false,
      "market": "BTC/USD",
      "postOnly": false,
      "price": 10135.25,
      "reduceOnly": false,
      "remainingSize": 0.0,
      "side": "buy",
      "size": 0.001,
      "status": "closed",
      "type": "limit"
    },
  ],
  "hasMoreData": false,
}

需要验证身份。

请求参数

姓名 类型 价值 描述
market string BTC/USD optional; market to limit orders
start_time number 1559881511 optional; only fetch orders created after this time
end_time number 1559901511 optional; only fetch orders created before this time
limit number 100 optional; default 100, maximum 100

回复格式

姓名 类型 价值 描述
id number 257132591
market string BTC/USD
type string limit
side string buy
price number 10135.25
size number 0.001
filledSize number 0.001
remainingSize number 0.0
avgFillPrice number 10135.25
status string new (accepted but not processed yet), open, or closed (filled or cancelled)
createdAt string 2019-06-27T15:24:03.101197+00:00
reduceOnly boolean false
ioc boolean false
postOnly boolean false
clientId string optional; client order id

获取未完成触发挂单

请求

GET /conditional_orders?market={market}

回复

{
  "success": true,
  "result": [
    {
      "createdAt": "2019-03-05T09:56:55.728933+00:00",
      "id": 50001,
      "market": "BTC/USD",
      "orderPrice": null,
      "reduceOnly": false,
      "side": "buy",
      "size": 0.003,
      "status": "open",
      "trailStart": null,
      "trailValue": null,
      "triggerPrice": 0.49,
      "triggeredAt": null,
      "type": "stop"
      "orderType": "market",
      "filledSize": 0,
      "avgFillPrice": null,
      "retryUntilFilled": false
  ]
}

需要验证身份。

请求参数

姓名 类型 价值 描述
market string BTC/USD optional; market to limit orders
type string stop optional; type of trigger order (stop, trailing_stop, or take_profit)

回复格式

姓名 类型 价值 描述
createdAt string 2019-03-05T09:56:55.728933+00:00
id number 50001
market string BTC/USD
orderPrice number 0.50 Limit price for stop limit and take profit limit orders; otherwise null
reduceOnly boolean false
side string buy
size number 31431.0
status string open Always open for this endpoint
trailStart number null trigger price - trail value; only for trailing stop orders
trailValue number null only for trailing stop orders
triggerPrice number 0.49 market price at which this order will trigger
triggeredAt string null time of first trigger. null if never triggered
type string stop Values are stop, trailing_stop, and take_profit
orderType string market Values are market, limit
filledSize number 0
avgFillPrice number null
retryUntilFilled boolean false Whether or not to keep re-triggering until filled

获取计划委托的触发价格/条件

请求

GET /conditional_orders/<conditional_order_id>/triggers

回复

{
  "success": true,
  "result": [
    {
      "error": null,
      "filledSize": 4.0,
      "orderSize": 10.0,
      "orderId": 38066650,
      "time": "2020-01-19T09:23:36.570904+00:00"
    }
  ]
}

需要验证身份。

回复格式

姓名 类型 价值 描述
time string 2019-03-05T09:56:55.728933+00:00
orderSize number 31431.0 null if order failed to place
filledSize number 0 null if order failed to place
orderId number null if order failed to place
error string null reason for order failing to be placed, null if successful

获取触发挂单历史记录

请求

GET /conditional_orders/history?market={market}

回复

{
  "success": true,
  "result": [
    {
      "createdAt": "2019-03-05T09:56:55.728933+00:00",
      "id": 50000,
      "market": "BTC/USD",
      "orderPrice": null,
      "reduceOnly": false,
      "side": "buy",
      "size": 31431,
      "status": "triggered",
      "trailStart": null,
      "trailValue": null,
      "triggerPrice": 0.37,
      "triggeredAt": 2019-03-06T03:26:53.268723+00:00,
      "type": "stop",
      "orderType": "market",
      "filledSize": 31431,
      "avgFillPrice": 0.3701,
      "orderType": "market",
      "filledSize": 0,
      "avgFillPrice": null,
      "retryUntilFilled": false,
    },
  ],
  "hasMoreData": false,
}

需要验证身份。

请求参数

姓名 类型 价值 描述
market string BTC/USD optional; market to limit orders
start_time number 1559881511 optional; only fetch orders created after this time
end_time number 1559881511 optional; only fetch orders created before this time
side string buy optional; valid values are buy and sell.
type string trailing_stop optional; valid values are stop, trailing_stop, and take_profit.
orderType string limit optional; valid values are market and limit.
limit number 100 optional; default 100, maximum 100

回复格式

姓名 类型 价值 描述
createdAt string 2019-03-05T09:56:55.728933+00:00
id number 50001
market string BTC/USD
orderPrice number 0.50 Limit price for stop limit and take profit limit orders; otherwise null
reduceOnly boolean false
side string buy
size number 31431.0
status string open Values are open, cancelled, and triggered
trailStart number null trigger price - trail value; only for trailing stop orders
trailValue number null only for trailing stop orders
triggerPrice number 0.49 market price at which this order will trigger
triggeredAt string null time of first trigger. null if never triggered
type string stop Values are stop, trailing_stop, and take_profit
orderType string market Values are market and limit
filledSize number 31431
avgFillPrice number 0.3701
orderType string market Values are market, limit
filledSize number 0
avgFillPrice number null
retryUntilFilled boolean false Whether or not to keep re-triggering until filled

下单

请求

POST /orders
{
  "market": "BTC/USD",
  "side": "sell",
  "price": 0.306525,
  "type": "limit",
  "size": 31431.0,
  "reduceOnly": false,
  "ioc": false,
  "postOnly": false,
  "clientId": null,
}

回复

{
  "success": true,
  "result": {
    "createdAt": "2019-03-05T09:56:55.728933+00:00",
    "filledSize": 0,
    "id": 9596912,
    "market": "BTC/USD",
    "price": 0.306525,
    "remainingSize": 31431,
    "side": "sell",
    "size": 31431,
    "status": "open",
    "type": "limit",
    "reduceOnly": false,
    "ioc": false,
    "postOnly": false,
    "clientId": null,
  }
}

需要验证身份。

净荷格式

姓名 类型 价值 描述
market string BTC/USD
side string sell "buy" or "sell"
price number 0.306525 Send null for market orders.
type string limit "limit" or "market"
size number 31431.0
reduceOnly boolean false optional; default is false
ioc boolean false optional; default is false
postOnly boolean false optional; default is false
clientId string null optional; client order id

回复格式

姓名 类型 价值 描述
createdAt string 2019-03-05T09:56:55.728933+00:00
filledSize number 0.0
id number 9596912
market string BTC/USD
price number 0.306525
remainingSize number 31431.0
side string sell
size number 31431.0
status string new (accepted but not processed yet), open, or closed (filled or cancelled)
type string limit
reduceOnly boolean false
ioc boolean false
postOnly boolean false
clientId string optional; client order id, if supplied

设置计划委托

计划委托包括了止损,移动止损以及止盈等委托。

请求

POST /conditional_orders
  • 止损
{
  "market": "BTC/USD",
  "side": "sell",
  "triggerPrice": 0.306525,
  "size": 31431.0,
  "type": "stop",
  "reduceOnly": false,
}
  • 移动止损
{
  "market": "BTC/USD",
  "side": "sell",
  "trailValue": -0.05,
  "size": 31431.0,
  "type": "trailingStop",
  "reduceOnly": false,
}
  • 止盈
{
  "market": "BTC/USD",
  "side": "buy",
  "triggerPrice": 0.367895,
  "size": 31431.0,
  "type": "takeProfit",
  "reduceOnly": false,
}

回复

{
  "success": true,
  "result": {
    "createdAt": "2019-03-05T09:56:55.728933+00:00",
    "id": 9596912,
    "market": "BTC/USD",
    "triggerPrice": 0.306525,
    "side": "sell",
    "size": 31431,
    "status": "open",
    "type": "stop",
    "orderPrice": null,
    "triggeredAt": null,
    "reduceOnly": false,
    "orderType": "market",
    "retryUntilFilled": false,
  }
}

需要验证身份。

净荷格式

姓名 类型 价值 描述
market string BTC/USD
side string sell "buy" or "sell"
size number 31431.0
type string stop "stop", "trailingStop", "takeProfit"; default is stop
reduceOnly boolean false optional; default is false
retryUntilFilled boolean false Whether or not to keep re-triggering until filled. optional, default true for market orders

为止损委托增加的参数

姓名 类型 价值 描述
triggerPrice number 0.306525
orderPrice number 0.3063 optional; order type is limit if this is specified; otherwise market

为移动止损委托增加的参数

姓名 类型 价值 描述
trailValue number -0.05 negative for "sell"; positive for "buy"

为止盈委托增加的参数

姓名 类型 价值 描述
triggerPrice number 0.306525
orderPrice number 0.3067 optional; order type is limit if this is specified; otherwise market

回复格式

姓名 类型 价值 描述
createdAt string 2019-03-05T09:56:55.728933+00:00
id number 9596912
market string BTC/USD
triggerPrice number 0.306525
side string sell
size number 31431.0
status string Values are open, cancelled, and triggered
type string stop
orderPrice number null price of the order sent when this stop loss triggered
triggeredAt string null time at which this stop loss order triggered
reduceOnly boolean false
orderType string market Values are market, limit
retryUntilFilled boolean false Whether or not to keep re-triggering until filled

修改订单

请求

POST /orders/{order_id}/modify
{
  "size": 31431,
  "price": 0.326525,
}

回复

{
  "success": true,
  "result": {
    "createdAt": "2019-03-05T11:56:55.728933+00:00",
    "filledSize": 0,
    "id": 9596932,
    "market": "BTC/USD",
    "price": 0.326525,
    "remainingSize": 31431,
    "side": "sell",
    "size": 31431,
    "status": "open",
    "type": "limit",
    "reduceOnly": false,
    "ioc": false,
    "postOnly": false,
    "clientId": null,
  }
}

Please note that the order's queue priority will be reset, and the order ID of the modified order will be different from that of the original order. Also note: this is implemented as cancelling and replacing your order. There's a chance that the order meant to be cancelled gets filled and its replacement still gets placed.

需要验证身份。

净荷格式

姓名 类型 价值 描述
price number 0.306525 optional; either price or size must be specified
size number 31431.0 optional; either price or size must be specified
clientId string order1 optional; client ID for the modified order

回复格式

姓名 类型 价值 描述
createdAt string 2019-03-05T11:56:55.728933+00:00
filledSize number 0.0
id number 9596932
market string BTC/USD
price number 0.326525
remainingSize number 31431.0
side string sell
size number 31431.0
status string new (accepted but not processed yet), open, or closed (filled or cancelled)
type string limit
reduceOnly boolean false
ioc boolean false
postOnly boolean false
clientId string optional; client order id, if supplied

根据Client ID修改订单

请求

POST /orders/by_client_id/{client_order_id}/modify
{
  "size": 31431,
  "price": 0.326525,
}

回复

{
  "success": true,
  "result": {
    "createdAt": "2019-03-05T11:56:55.728933+00:00",
    "filledSize": 0,
    "id": 9596932,
    "market": "BTC/USD",
    "price": 0.326525,
    "remainingSize": 31431,
    "side": "sell",
    "size": 31431,
    "status": "open",
    "type": "limit",
    "reduceOnly": false,
    "ioc": false,
    "postOnly": false,
    "clientId": null,
  }
}

Please note that the order's queue priority will be reset, and the order ID of the modified order will be different from that of the original order. Also note: this is implemented as cancelling and replacing your order. There's a chance that the order meant to be cancelled gets filled and its replacement still gets placed.

需要验证身份。

净荷格式

姓名 类型 价值 描述
price number 0.306525 optional; either price or size must be specified
size number 31431.0 optional; either price or size must be specified
clientId string order1 optional; client ID for the modified order

回复格式

姓名 类型 价值 描述
createdAt string 2019-03-05T11:56:55.728933+00:00
filledSize number 0.0
id number 9596932
market string BTC/USD
price number 0.326525
remainingSize number 31431.0
side string sell
size number 31431.0
status string new (accepted but not processed yet), open, or closed (filled or cancelled)
type string limit
reduceOnly boolean false
ioc boolean false
postOnly boolean false
clientId string optional; client order id, if supplied

修改触发订单

计划委托包括了止损,移动止损以及止盈等委托。

请求

POST /conditional_orders/{order_id}/modify
  • 止损
{
  "triggerPrice": 0.306225,
  "size": 31431.0,
}
  • 移动止损
{
  "trailValue": -0.06,
  "size": 31432.0,
}
  • 止盈
{
  "triggerPrice": 0.367885,
  "size": 31433.0,

}

回复

{
  "success": true,
  "result": {
    "createdAt": "2019-03-05T09:56:55.728933+00:00",
    "id": 9596912,
    "market": "BTC/USD",
    "triggerPrice": 0.306225,
    "side": "sell",
    "size": 31431,
    "status": "open",
    "type": "stop",
    "orderPrice": null,
    "triggeredAt": null,
    "reduceOnly": false,
    "orderType": "market",
    "filledSize": 0,
    "avgFillPrice": null,
    "retryUntilFilled": false
  }
}

需要验证身份。

净荷格式

请注意,修改后的订单的订单ID将与原始订单的ID不同。

止损订单参数

姓名 类型 价值 描述
size number 31431.0
triggerPrice number 0.306525
orderPrice number 0.3063 only for stop limit orders

追踪止损单参数

姓名 类型 价值 描述
size number 31431.0
trailValue number -0.05 negative for sell orders; positive for buy orders

止盈订单参数

姓名 类型 价值 描述
size number 31431.0
triggerPrice number 0.306525
orderPrice number 0.3067 only for take profit limit orders

回复格式

姓名 类型 价值 描述
createdAt string 2019-03-05T12:56:55.728933+00:00
id number 9596912
market string BTC/USD
triggerPrice number 0.306525
side string sell
size number 31431.0
status string Values are open, cancelled, and triggered
type string stop
orderPrice number null price of the order sent when this stop loss triggered
triggeredAt string null time at which this stop loss first triggered
reduceOnly boolean false
orderType string market Values are market, limit
retryUntilFilled boolean false Whether or not to keep re-triggering until filled

获取订单状态

请求

GET /orders/{order_id}

回复

{
  "success": true,
  "result": {
    "createdAt": "2019-03-05T09:56:55.728933+00:00",
    "filledSize": 10,
    "id": 9596912,
    "market": "BTC/USD",
    "price": 0.306525,
    "avgFillPrice": 0.306526,
    "remainingSize": 31421,
    "side": "sell",
    "size": 31431,
    "status": "open",
    "type": "limit",
    "reduceOnly": false,
    "ioc": false,
    "postOnly": false,
    "clientId": null
  }
}

通过客户编号获取订单状态

请求

GET /orders/by_client_id/{client_order_id}

回复

{
  "success": true,
  "result": {
    "createdAt": "2019-03-05T09:56:55.728933+00:00",
    "filledSize": 10,
    "id": 9596912,
    "market": "BTC/USD",
    "price": 0.306525,
    "avgFillPrice": 0.306526,
    "remainingSize": 31421,
    "side": "sell",
    "size": 31431,
    "status": "open",
    "type": "limit",
    "reduceOnly": false,
    "ioc": false,
    "postOnly": false,
    "clientId": "your_client_order_id"
  }
}

需要验证身份。

回复格式

姓名 类型 价值 描述
id number 9596912
market string BTC/USD
type string limit
side string sell
price number 0.306525
size number 31431.0
filledSize number 10.0
remainingSize number 31421.0
avgFillPrice number 0.306526
status string new (accepted but not processed yet), open, or closed (filled or cancelled)
createdAt string 2019-03-05T09:56:55.728933+00:00
reduceOnly boolean false
ioc boolean false
postOnly boolean false
clientId string client order id

撤单

请求

DELETE /orders/{order_id}

回复

{
  "success": true,
  "result": "Order queued for cancelation"
}

需要验证身份。

通过客户编号取消订单

请求

DELETE /orders/by_client_id/{client_order_id}

回复

{
  "success": true,
  "result": "Order queued for cancellation"
}

需要验证身份。

取消未完成触发挂单

请求

DELETE /conditional_orders/{id}

回复

{
  "success": true,
  "result": "Order cancelled"
}

需要验证身份。

取消所有挂单

此操作会取消您设置的条件委托(止损委托和跟踪止损委托)。

请求

DELETE /orders
{
  "market": "BTC/USD",
}

回复

{
  "success": true,
  "result": "Orders queued for cancelation"
}

需要验证身份。

净荷格式

姓名 类型 价值 描述
market string BTC/USD optional; restrict to cancelling orders only on this market
conditionalOrdersOnly boolean false optional; restrict to cancelling conditional orders only
limitOrdersOnly boolean false optional; restrict to cancelling existing limit orders (non-conditional orders) only

Convert

请求报价

请求

POST /otc/quotes
{
  "fromCoin": "BTC",
  "toCoin": "USD",
  "size": 0.05
}

回复

{
  "success": true,
  "result": {
    "quoteId": 1031
  }
}

需要验证身份。

净荷格式

姓名 类型 价值 描述
fromCoin string BTC
toCoin string USD
size number 0.05 denominated in units of fromCoin

回复格式

姓名 类型 价值 描述
quoteId number 1031

Get quote status

请求

GET /otc/quotes/{quoteId}

回复

{
  "success": true,
  "result": [
    {
      "baseCoin": "BTC"
      "cost": 0.05
      "expired": false,
      "filled": false,
      "fromCoin": "BTC",
      "id": 1031,
      "price": 7695.4,
      "proceeds": 384.77,
      "quoteCoin": "USD",
      "side": "sell",
      "toCoin": "USD"
    }
  ]
}

需要验证身份。

请求参数

姓名 类型 价值 描述
market string BTC/USD optional; market to limit orders

回复格式

姓名 类型 价值 描述
baseCoin string BTC
cost number 0.05 cost of accepting the quote in units of fromCoin
expired bool false if the quote is expired (if so, cannot accep tit)
filled bool false if the quote is already accepted
id number 1031
price number 7695.4 price in units of quoteCoin
proceeds number 384.77 proceeds of accepting the quote in units of toCoin
quoteCoin string USD
side string "sell" "sell" if fromCoin is baseCoin, otherwise "buy"
toCoin string USD

Accept quote

请求

POST /otc/quotes/{quote_id}/accept

回复

{
  "success": true,
  "result": null
}

需要验证身份。

净荷格式

姓名 类型 价值 描述
quoteId number 1031

执行

请求

GET /fills?market={market}

回复

{
  "success": true,
  "result": [
    {
      "fee": 20.1374935,
      "feeCurrency": "BTC",
      "feeRate": 0.0005,
      "id": 11215,
      "liquidity": "taker",
      "market": "BTC/USD",
      "baseCurrency": null,
      "quoteCurrency": null,
      "orderId": 8436981,
      "tradeId": 1013912,
      "price": 4.201,
      "side": "buy",
      "size": 9587,
      "time": "2019-03-27T19:15:10.204619+00:00",
      "type": "order"
    }
  ]
}

需要验证身份。

请求参数

姓名 类型 价值 描述
market string BTC/USD optional; market to limit fills
limit number 20 optional; number of fills to return
start_time number 1564146934 optional; minimum time of fills to return, in Unix time (seconds since 1970-01-01)
end_time number 1564233334 optional; maximum time of fills to return, in Unix time (seconds since 1970-01-01)
order string null optional; default is descending, supply 'asc' to receive fills in ascending order of time
orderId number null

回复格式

姓名 类型 价值 描述
fee number 20.1374935
feeCurrency string BTC
feeRate number 0.0005
id number 11215 fill id
liquidity string taker "taker" or "maker"
market string BTC/USD
baseCurrency string BTC
quoteCurrency string USD
orderId number 8436981
tradeId number 1013912 null for trades before 2019-02-19 10:00:00
price number 4.201
side string buy
size number 9587.0
time string 2019-03-27T19:15:10.204619+00:00
type string order
姓名 类型 价值 描述
id number 5
size number 1.0
price number 3.0
option option object; see List Quote Requests section
time string "2020-01-08T02:59:57.270744+00:00"
liquidity string taker "taker" or "maker"
fee number 1.782852614186007
feeRate number 0.0001729
side string buy

Websocket API

Streaming API,包含最新的市场和账户挂单数据。 使用此 API,您可以将消息发送到服务器并收到以事件为基础的回复,无需轮询服务器获得回复。

Websocket 端点网址:wss://ftx.us/ws/

使用 JSON 发起请求和回复。

您可以在此找到示例代码:https://github.com/ftexchange/ftx

请求流程

Websocket connections go through the following lifecycle:

请求格式

Messages sent to the server should contain the following dictionary items:

回复格式

-“频道” -“市场” -“类型”:消息的类型 -“错误”:发生错误时显示。 当“类型”为“错误”时,还会有“代码”和“消息”字段。 “代码”采用标准 HTTP 错误代码值。 -“已订阅”:表示成功订阅了频道和市场。 -“已取消订阅”:表示成功取消频道和市场订阅。 -“信息”:用于向用户传达信息。 附带“代码”和“消息”字段。 - 服务器重新启动时,您可能会看到一条代码为“20001”的“信息”消息。 如果您看到此消息,请重新连接。 -“部分”:包含当前市场数据的快照。 数据快照可以在随附的“数据”字段中找到。 -“更新”:包含有关当前市场数据的更新。 更新可在随附的“数据”字段中找到。 -“代码”(可选) -“消息”(可选) -“数据”(可选)

公有市场行情接口

代号

The ticker channel provides the latest best bid and offer market data. All messages are updates (update), and the data field contains: - bid: Best bid price if a bid exists, else null - ask: Best ask price if an ask exists, else null - last: Last trade price if it exists, else null - time: Timestamp

市场

The markets channel provides information on the full set of tradable markets and their specifications. After subscription and once per minute, you will receive a partial message with information on all markets. If there are updates to markets (listings, delistings, or changes to specs), you will be notified through update messages. The data field both types of messages will contain a list of market information dictionaries, each of which contains:

交易

The trades channel provides data on all trades in the market. All messages are updates of new trades (update) and the data field contains: - price: Price of the trade - size: Size of the trade - side: Side of the taker in the trade - liquidation: true if the trade involved a liquidation order, else false - time: Timestamp

委托簿

“盘口”查询提供盘口双边最优的100报价的数据。

初始快照

订阅后,您将收到委托簿(“部分”)的快照,其中包含“数据”字段,其中包含:

-“操作”:“部分“ -“买入” -“卖出” -“校验和”:见下方 -“时间”:时间戳

“买入”和“卖出”的格式如下:“[[最佳价格,该价格数额大小],[下一个最佳价格,该价格数额大小],...]”

更新

收到您的快照后,将会向您流式传输更新(消息“类型”为“更新”),“数据”字段带有:

-“操作”:“更新” -“买入” -“卖出” -“校验和”:见下方 -“时间”:时间戳

“买入”和“卖出”字段包含对委托簿的更新。

校验和

每条消息都包含来自委托簿的已签名 32 位整数校验和。 您可以在客户端上得到相同的校验和

私有接口

身份验证

您可以通过发送类似 %{code} 的消息登录

{
  "args": {
    "key": "<api_key>",
    "sign": "<signature>",
    "time": "<ts>"
  },
  "op": "login"
}

As an example, if:

sign would be d10b5a67a1a941ae9463a60b285ae845cdeac1b11edc7da9977bef0228b96de9

一个 websocket 连接最多可登录一名用户。 如果连接已通过身份验证,再次尝试登录会导致 400 错误。

执行

您很快将收到消息:

{
  "channel": "fills",
  "data": {
    "fee": 78.05799225,
    "feeRate": 0.0014,
    "id": 7828307,
    "liquidity": "taker",
    "market": "BTC/USD",
    "orderId": 38065410,
    "tradeId": 19129310,
    "price": 3723.75,
    "side": "buy",
    "size": 14.973,
    "time": "2019-05-07T16:40:58.358438+00:00",
    "type": "order"
  },
  "type": "update"
}

该频道将向所有市场流式传输您的执行价 您可以在经过身份验证的连接上发送 {'op': 'subscribe', 'channel': 'fills'} 进行订阅。

买卖盘

您很快将收到消息:

{
  "channel": "orders",
  "data": {
    "id": 24852229,
    "clientId": null,
    "market": "BTC/USD",
    "type": "limit",
    "side": "buy",
    "size": 42353.0,
    "price": 0.2977,
    "reduceOnly": false,
    "ioc": false,
    "postOnly": false,
    "status": "closed",
    "filledSize": 0.0,
    "remainingSize": 0.0,
    "avgFillPrice": 0.2978
  },
  "type": "update"
}

此频道可为您在所有市场中的挂单流式传输更新。 您可以在经过身份验证的连接上发送 {'op': 'subscribe', 'channel': 'orders'} 进行订阅。

FIX API

FIX (Financial Information eXchange) is a standard electronic messaging protocol which can be used to place orders, receive order updates and executions, and cancel orders. Our FIX api is based on the FIX 4.2 specification and modeled after FIX implementations of other popular cryptocurrency exchanges.

You can find sample client code here: https://github.com/ftexchange/ftx

FIX endpoint URL: tcp+ssl://fix.ftx.us:4363

Clients should connect to the endpoint using SSL.

Sequence numbers are reset for each connection. Resend request and sequence reset messages are not supported.

消息

8=FIX.4.2|9=162|35=A|49=zyfvB4QPg0A3kkVgqUE9V1fOA-Y6jhdG3seqIIZx|56=FTXUS

所有信息都应该包含以下header: 这个文档使用“|”表示FIX的修改字段分隔符(byte 0x01)。真实的信息中,它可以被 0x01替换。

标签 姓名 示例 描述
8 BeginString FIX.4.2 Must be set to "FIX.4.2"
9 BodyLength 162 Length of the message body in bytes
35 MsgType 8 Message type
49 SenderCompID zyfvB4QPg0A3kkVgqUE9V1fOA-Y6jhdG3seqIIZx Client API key (for messages from the client)
56 TargetCompID FTXUS Must be set to "FTXUS" (for messages from the client)
34=1|52=20190525-07:17:48

消息还应包括序列号 MsgSeqNum (34) 和时间戳 SendingTime (52)。 序列号从 1 开始,必须随每条消息递增。 序列号重复或 不正确的邮件将被拒收。 序列号会在新连接重置。

Logon (A)

由客户端发送用于发起 FIX 会话。 必须在连接 建立后首先发送该消息。 每个连接只能建立一个会话;其他登录消息会 被拒收。

请求

8=FIX.4.2|9=162|35=A|49=zyfvB4QPg0A3kkVgqUE9V1fOA-Y6jhdG3seqIIZx|56=FTXUS|34=1|52=20190525-07:51:51|98=0|108=30|96=8f7e7d37f8033ad249c1833687c230b6f4663f0dd72752899776bab9aa064783|10=237|
标签 姓名 示例 描述
35 MsgType A
98 EncryptMethod 0 Must be set to "0" (None)
108 HeartBInt 30 Must be set to "30"
96 RawData 8f7e...4783 Signature (see below)
8013 CancelOrdersOnDisconnect Y "Y": all account orders will be cancelled at the end of the session. "S": all orders placed during the session will be cancelled at the end of the session. Default: no orders will be cancelled.
1 Account "my_subaccount" Optional subaccount name; can be omitted if authenticating for main account

签名

from datetime import datetime
import hmac

api_key = 'YOUR_API_KEY'
api_secret = 'YOUR_API_SECRET'

sending_time = datetime.now().strftime('%Y%m%d-%H:%M:%S')

sign_target = '\x01'.join([
    sending_time,  # SendingTime
    'A',  # MsgType
    '1',  # MsgSeqNum
    api_key,  # SenderCompID
    'FTXUS',  # TargetCompID
])

signature = hmac.new(api_secret.encode(), sign_target.encode(), 'sha256').hexdigest()

let crypto = require('crypto');

let apiKey = 'YOUR_API_KEY';
let apiSecret = 'YOUR_API_SECRET';

let sendingTime = '20190525-07:51:51';

let signTarget = [
    sendingTime,  // SendingTime
    'A',  // MsgType
    '1',  // MsgSeqNum
    apiKey,  // SenderCompID
    'FTXUS',  // TargetCompID
].join('\x01');

let hmac = crypto.createHmac('sha256', apiSecret);
let signature = hmac.update(signTarget).digest('hex');

为了安全起见,登录消息必须由客户端签名。 要计算签名,请连接 以下字段,由 FIX 字段分隔符(字节 0x01)连接,并计算 SHA256 HMAC 使用 API 密钥:

生成的哈希应该为十六进制编码。








回复

8=FIX.4.2|9=98|35=A|49=FTXUS|56=zyfvB4QPg0A3kkVgqUE9V1fOA-Y6jhdG3seqIIZx|34=1|98=0|108=30|52=20190525-07:51:51.838|10=099
Tag Name Value
35 MsgType A
98 EncryptMethod 0
108 HeartBInt 30

Heartbeat (0)

如果过去 30 秒内未收到消息,则由任一方发送。 也应发送 用于回复 TestRequest (1)(测试请求)。

8=FIX.4.2|9=86|35=1|49=zyfvB4QPg0A3kkVgqUE9V1fOA-Y6jhdG3seqIIZx|56=FTXUS|34=2|52=20190525-07:52:24.029|10=049|
Tag Name Value Description
35 MsgType 0
112 TestReqID 123 If this heartbeat is in response to a TestRequest, copied from the TestRequest.

测试请求 (1)

可由任何一方随时发送。

8=FIX.4.2|9=112|35=1|49=zyfvB4QPg0A3kkVgqUE9V1fOA-Y6jhdG3seqIIZx|56=FTXUS|34=3|112=20190525-08:26:38.989|52=20190525-08:26:38.989|10=140|
Tag Name Value Description
35 MsgType 1
112 TestReqID 123 Arbitrary string, to be echoed back by a Heartbeat.

Logout (5)

由任何一方发送用于终止会话。 另一方应再发送一条“退出” 消息以确认会话终止。 连接将随后关闭。

Tag Name Value
35 MsgType 5

New Order Single (D)

客户发送以提交新订单。 FIX API当前仅支持限价单。

Tag Name Value Description
35 MsgType D
21 HandlInst 1 Must be set to "1" (AutomatedExecutionNoIntervention)
11 ClOrdID order123 Arbituary client-selected string to identify the order; must be unique
55 Symbol BTC/USD Symbol name
40 OrdType 2 Must be set to "2" (Limit)
38 OrderQty 1.1 Order size in base units
44 Price 8000 Limit price
54 Side 1 "1": buy; "2": sell
59 TimeInForce 1 Must be set to "1" (Good Till Cancel) or "3" (Immediate or Cancel)
18 ExecInst E This paramter is optional. "E": reduce only, "6": post only, not supplied: standard

If the order is accepted, an ExecutionReport (8) with ExecType=A (Pending New) will be returned. Otherwise, an ExecutionReport with ExecType=8 (Rejected) will be returned.

Order Cancel Request (F)

由客户发送用于请求撤单。

Tag Name Value Description
35 MsgType F
37 OrderID 123456 System-assigned order ID of the order
41 OrigClOrdID order123 Client-assigned order ID of the order

Only one of OrderID (37) and OrigClOrdID (41) should be provided.

If the order is successfully cancelled, an ExecutionReport (8) with ExecType=6 (Pending Cancel) will be returned. Otherwise, an OrderCancelReject (9) will be returned.

Order Cancel Reject (9)

服务器向客户端通知 OrderCancelRequest (F),即撤单请求失败。

Tag Name Value Description
35 MsgType 9
11 ClOrdID cancel123 Copied from OrderCancelRequest
37 OrderID 123456 Copied from OrderCancelRequest
41 OrigClOrdID order123 Copied from OrderCancelRequest
39 OrdStatus 4 "4" (Canceled) if the order was already cancelled
102 CxlRejReason 1 "0": order already cancelled, "1": unknown order
434 CxlRejResponseTo 1 Always set to "1"

Mass Order Cancel Request (q)

Sent by the server in response to a Mass Order Cancel Request (q)

Tag Name Value Description
35 MsgType q
530 MassCancelRequestType 7 7 for cancelling all orders on all markets, 1 for cancelling all orders on a specific market
11 ClOrdID order123 optional; client-assigned ID for mass order cancellation request
55 Symbol BTC/USD optional; symbol name. This field is is required if MassCancelRequestType is set to 1, and ignored otherwise

A Mass Order Cancel Report (r) will be returned to the client.

Mass Order Cancel Report (r)

Sent by the server in response to a Mass Order Cancel Request (q)

Tag Name Value Description
35 MsgType r
530 MassCancelRequestType 7 the MassCancelRequestType of the corresponding Mass Order Cancel Request
11 ClOrdID order123 optional; the ClOrdID of the corresponding Mass Order Cancel Request. Omitted if no ClOrdID was supplied.
531 MassCancelResponse 0 if the request was rejected, otherwise set to the MassCancelRequestType of the corresponding Mass Order Cancel Request
532 MssCancelRejectReason optional; 0 if the market specified in the Mass Order Cancel Request was unknown

Order Status Request (H)

由客户发送用于请求挂单状态。

Tag Name Value Description
35 MsgType H
37 OrderID 123456 OrderID of the order to request, or "*" to request all pending orders
41 OrigClOrdID order123 Client-assigned order ID of the order
20000 IncludeFillInfo N If Y, server will include fill info

The server will respond with an ExecutionReport (8) with ExecType=I (OrderStatus) with the requested order or orders. Only one of OrderID (37) and OrigClOrdID (41) should be provided. When there are no open orders, the server will include Text (58) of "No open orders".

IncludeFillInfo包含的其他字段(20000 = Y):

Tag Name Value Description
1362 NoFills 1 Number of fills for this order

以下字段包含零次或多次,每次填充一次:

Tag Name Value Description
1363 FillExecID 23436 Fill ID
1364 FillPx 10.1 Fill price
1365 FillQty 6.32 Fill quantity
1366 FillTradeID 101293 Fill trade ID. This will be shared by the fill corresponding to the other side of the trade.
1367 FillTime 20200219-08:33:26.513 Fill time
1443 FillLiquidityInd 2 1 for maker, 2 for taker
20100 FeeRate 0.0007 Fees paid on the fill, in percent
20101 Fee 0.0446824 Fees paid on the fill, in USD

Execution Report (8)

由服务器在下列情况发送:挂单已执行、挂单变更或 回复来自客户端的 NewOrderSingle (D)(新下单)、OrderCancelRequest (F)(撤单请求)、或 OrderStatusRequest (H)(挂单状态请求) 消息。

Tag Name Value Description
35 MsgType 8
11 ClOrdID order123 Client-selected order ID.
37 OrderID 123456 Server-assigned order ID
17 ExecID d840c87b-ad98-47b1-95d3-4d41950fa776 unique execution ID. Equal to Fill ID if this message was the result of a fill
55 Symbol BTC/SD Symbol name
54 Side 1 "1": buy; "2": sell
38 OrderQty 1.2 Original order quantity
44 Price 8000 Original order price
150 ExecType 1 Reason for this message (see below)
39 OrdStatus 0 Order status (see below)
14 CumQty 0.4 Quantity of order that has already been filled
151 LeavesQty 0.8 Quantity of order that is still open
84 CxlQty 0.0 Quantity cancelled by self-trade prevention. Only present if the cancelled quantity is greater than zero
60 TransactTime 20190525-08:26:38.989 Time of the order update. Only present on order updates
31 LastPx 7999.25 Fill price. Only present if this message was the result of a fill
32 LastQty 0.4 Fill quantity. Only present if this message was the result of a fill
1057 AggressorIndicator Y "Y": taker fill; "N": maker fill. Only present if this message was the result of a fill
1366 FillTradeID 101293 Fill trade ID. Only present if this message was the result of a fill
12 Commission 0.0067307233000000 Fee for trade in USD. Only present if this message was the result of a fill
13 CommType 3 Always 3 (absolute)
103 OrdRejReason 3 Reason the order was rejected (see below). Only present on rejected NewOrderSingle (D) requests
58 Text 58 Description of the reason the order was rejected (e.g., Too many requests). Only present on rejected NewOrderSingle (D) requests

ExecType values

ExecType (150)(执行类型)字段表明发送此 ExecutionReport(执行报告)的原因。

ExecType Description
0 New order
1 New fill for order
3 Order done (fully filled)
4 Order cancelled
5 Order resized (possible for reduce-only orders)
A Response to a successful NewOrderSingle (D) request
8 Response to a rejected NewOrderSingle (D) request
6 Response to a successful OrderCancelRequest (F) request
I Response to a OrderStatusRequest (H) request

Note that every fill will generate a new ExecType=1 message. If a fill causes an order to be fully filled, both a ExecType=1 message and a ExecType=3 message will be generated. Similarly, a newly placed order that is immediately matched against an opposing order will generate both a ExecType=0 message and a ExecType=1 message.

OrdStatus values

OrdStatus Description
0 New order
1 Partially filled order
3 Fully filled order
4 Cancelled order
5 Resized order
6 Pending cancel

OrdRejReason values

OrdRejReason Description
3 Risk limits exceeded
99 Too many requests
0 Other errors

Reject (3)

由服务器发送用于回复无效消息。

Tag Name Value Description
35 MsgType 3
45 RefSeqNum 2 Sequence number of the rejected message
371 RefTagID 38 Tag number of the rejected field
372 RefMsgType D Message type of the rejected message
58 Text Missing quantity Human-readable description of the reason for the rejection
373 SessionRejectReason 1 Code to identify the rejection reason (see below)

Rejection reason codes

SessionRejectReason Description
1 Required tag missing
5 Value incorrect for this tag
6 Incorrect data format for value
11 Invalid MsgType