30 KiB
HTTP API 参考
本文档根据 api/QMT_API.py 的 Handler 与 make_app() 路由逐条整理。架构、鉴权、启动方式见 README.md。
公共约定
- Base URL:
http://<host>:10086(PORT=10086,绑定0.0.0.0) - 鉴权:所有已注册接口均需请求头
X-Token: <TOKEN>(源码当前值为QMTbyYanweidong) - POST Body:JSON 对象。未特别说明的字段均可省略并走源码默认值
- 多值字符串:逗号分隔,例如
"000001.SZ,600000.SH" - 失败响应:
{"error": "<reason>", "status_code": <int>} - 「对应 QMT」列标明封装的原函数或属性;账户类调用会自动填入
self.acc()(即init时的ACCOUNT_ID)
文中 curl 的 $TOKEN 请自行替换。
目录
1. 兼容层 / v2
旧客户端路径与 /api/v2/* 共用同一 Handler。查询类 POST 即使只用默认值,也需要传 {}。
1.1 持仓列表
- POST
/api/holding - POST
/api/v2/positions - 对应 QMT:
get_trade_detail_data(accountId, account, 'position')
请求
| 字段 | 类型 | 默认 | 说明 |
|---|---|---|---|
account |
string | "stock" |
账户类型,传入 QMT |
响应:对象,key 为 InstrumentID.ExchangeID。
{
"600000.SH": {
"StockCode": "600000.SH",
"StockName": "...",
"Direction": "...",
"Volume": 0,
"OpenPrice": 0,
"FloatProfit": 0,
"MarketValue": 0,
"StockHolder": "...",
"FrozenVolume": 0,
"CanUseVolume": 0,
"OnRoadVolume": 0,
"YesterdayVolume": 0,
"LastPrice": 0,
"ProfitRate": 0,
"FutureTradeType": "...",
"ExpireDate": "..."
}
}
无持仓时为 {}。QMT 调用失败时 safe_call 返回 None,按空列表处理。
curl -s -X POST -H "X-Token: $TOKEN" -H "Content-Type: application/json" \
-d "{\"account\":\"stock\"}" http://127.0.0.1:10086/api/v2/positions
1.2 资产(总资产 + 可用)
- POST
/api/v2/assets - 对应 QMT:
get_trade_detail_data(..., 'account'),取第一条
请求:account 默认 "stock"。
响应
{"total": 0.0, "available": 0.0}
金额来自 m_dBalance / m_dAvailable,四舍五入到 2 位。无数据时 500 资金数据获取失败。
1.3 总资产
- POST
/api/money/total
响应:{"total_money": 0.0}。无数据 500。
1.4 可用资金
- POST
/api/money/available
响应:{"available_money": 0.0}。无数据 500。
1.5 简化买入
- POST
/api/order/buy - 对应 QMT:
passorder(23, 1101, acc, stock, prType, price, volume, 'qmt', 2, ctx)
请求
| 字段 | 类型 | 必填 | 默认 | 说明 |
|---|---|---|---|---|
stock |
string | 是 | 代码,如 600000.SH |
|
price |
number | 是 | 价格 | |
volume |
int | 是 | 数量 | |
prType |
int | 否 | 11 |
报价类型 |
响应
{"status": "success", "action": "buy", "stock": "600000.SH", "order_ref": "..."}
order_ref 在 QMT 返回空时为 "unknown"。异常 400 下单失败: ...。
1.6 简化卖出
- POST
/api/order/sell - 对应 QMT:
passorder(24, 1101, ...),其余同买入
响应 action 为 "sell"。
1.7 委托状态列表
- POST
/api/order/status - 对应 QMT:
get_trade_detail_data(..., 'order', 'qmt')
请求:account 默认 "stock"。
响应
{
"orders": [
{
"order_sys_id": "...",
"status": 0,
"volume_left": 0,
"volume_traded": 0
}
]
}
字段分别对应 m_strOrderSysID、m_nOrderStatus、m_nVolumeTotal、m_nVolumeTraded。
1.8 全部撤单
- POST
/api/order/cancel_all - 对应 QMT:遍历委托,
can_cancel_order为真则cancel
请求:account 默认 "stock"。
响应
{
"status": "success",
"message": "已发出 N 笔撤单请求",
"canceled_orders": [
{"order_sys_id": "...", "stock": "...", "volume_left": 0}
]
}
stock 仅 m_strInstrumentID(不含市场后缀)。异常 500。
1.9 按股票 + 数量规则撤单
- POST
/api/order/cancel_order
请求
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
stock |
string | 是 | 必须为 代码.市场,与持仓 key 相同 |
volume |
int | 是 | 必须 > 0;匹配条件为 VolumeTotal + VolumeTraded == volume |
account |
string | 否 | 默认 "stock" |
匹配到 0 笔时仍 HTTP 200:
{"status": "failed", "message": "未找到符合条件的活跃订单"}
成功:
{
"status": "success",
"message": "匹配到 N 笔订单并发出撤单请求",
"canceled_sys_ids": ["..."]
}
缺参 400 参数错误:必须提供 stock 且 volume > 0。
1.10 成交明细
- POST
/api/order/deal - 对应 QMT:
get_trade_detail_data(..., 'deal', 'qmt')
响应:{"deals": [ {对象全部非下划线、非可调用属性,值一律 str()} ] }。
2. 策略上下文 /api/context
全部 GET,无请求体。数据来自 self.application.ContextInfo。
| 方法 | 路径 | 对应 QMT | 响应 |
|---|---|---|---|
| GET | /api/context/period |
.period |
{"period": ...} |
| GET | /api/context/barpos |
.barpos |
{"barpos": ...} |
| GET | /api/context/time_tick_size |
.time_tick_size |
{"time_tick_size": ...} |
| GET | /api/context/stockcode |
.stockcode |
{"stockcode": ...} |
| GET | /api/context/dividend_type |
.dividend_type |
{"dividend_type": ...} |
| GET | /api/context/market |
.market |
{"market": ...} |
| GET | /api/context/do_back_test |
.do_back_test |
{"do_back_test": ...} |
| GET | /api/context/benchmark |
.benchmark |
{"benchmark": ...} |
| GET | /api/context/capital |
.capital |
{"capital": ...} |
| GET | /api/context/universe |
.get_universe() |
{"universe": [...]} |
curl -s -H "X-Token: $TOKEN" http://127.0.0.1:10086/api/context/universe
3. 数据查询 /api/data
除特别标明的 GET 外均为 POST。safe_call 失败时,部分接口返回字段为 null,部分返回 {"error": "..."} 或 500,以各条为准。
3.1 证券名称
- POST
/api/data/stock_name→ContextInfo.get_stock_name(stockcode)
| 字段 | 默认 | 说明 |
|---|---|---|
stockcode |
"" |
证券代码 |
{"stockcode": "600000.SH", "name": "..."}
3.2 上市日期
- POST
/api/data/open_date→ 全局get_open_date(stockcode)
{"stockcode": "600000.SH", "open_date": "..."}
3.3 最新流通股本
- POST
/api/data/last_volume→get_last_volume
失败(None)时 500 获取流通股本失败。
{"stockcode": "600000.SH", "last_volume": ...}
3.4 K 线时间戳
- POST
/api/data/bar_timetag→get_bar_timetag(index)
| 字段 | 默认 |
|---|---|
index |
-1 |
{"index": -1, "timetag": ...}
3.5 最新分笔时间戳
- GET
/api/data/tick_timetag→get_tick_timetag()
{"timetag": ...}
3.6 指数成份股
- POST
/api/data/sector→get_sector(sector, realtime)
| 字段 | 必填 | 默认 | 说明 |
|---|---|---|---|
sector |
是 | 空则 400 need args sector |
|
realtime |
否 | "0" |
"0" 时第二参为 0,否则 int(realtime) |
{"sector": "000300.SH", "stocks": []}
stocks 在调用失败时为 []。
3.7 行业成份股
- POST
/api/data/industry→get_industry(industry)
industry 为空则 400 need args industry。
{"industry": "...", "stocks": []}
3.8 板块成份股
- POST
/api/data/stock_list_in_sector→get_stock_list_in_sector(sectorname)
sectorname 为空则 400 need args sectorname。
{"sectorname": "沪深A股", "stocks": []}
3.9 指数权重
- POST
/api/data/weight_in_index→get_weight_in_index(indexcode, stockcode)
{"indexcode": "000300.SH", "stockcode": "600000.SH", "weight": ...}
3.10 合约乘数
- POST
/api/data/contract_multiplier→get_contract_multiplier(contractcode)
{"contractcode": "...", "multiplier": ...}
3.11 无风险利率
- POST
/api/data/risk_free_rate→get_risk_free_rate(index)
| 字段 | 默认 |
|---|---|
index |
-1 |
{"index": -1, "risk_free_rate": ...}
3.12 日期对应 K 线索引
- POST
/api/data/date_location→get_date_location(strdate)
{"strdate": "20240101", "location": ...}
3.13 历史行情(多品种字典)
- POST
/api/data/history_data→get_history_data(len, period, field, dividend_type, skip_paused)
| 字段 | 默认 | 说明 |
|---|---|---|
len |
10 |
根数 |
period |
"1d" |
周期 |
field |
"close" |
字段 |
dividend_type |
0 |
整数 |
skip_paused |
"true" |
小写等于 "true" 则为 Python True |
成功:{"data": ...}。safe_call 得到假值时:{"error": "获取历史数据失败"}(仍可能是 HTTP 200)。
3.14 行情 DataFrame
- POST
/api/data/market_data→get_market_data(fields, stocks, start, end, True, period, dividend_type, count)
注意第五参在封装里 写死为 True(QMT 该位置一般为 skip_paused 一类开关,以官方签名为准)。
| 字段 | 默认 | 说明 |
|---|---|---|
fields |
"" |
逗号分隔;空则 [] |
stock_code |
"" |
逗号分隔代码 |
start_time |
"" |
|
end_time |
"" |
|
period |
"1d" |
|
dividend_type |
"none" |
|
count |
-1 |
有 to_dict 则转 dict。失败 500 获取行情数据失败。
{"data": {}}
3.15 扩展行情(Level2)
- POST
/api/data/market_data_ex→get_market_data_ex(...)
| 字段 | 默认 |
|---|---|
fields |
"" |
stock_code |
"" |
period |
"follow" |
start_time |
"" |
end_time |
"" |
count |
-1 |
dividend_type |
"follow" |
返回字典:每个 value 优先 to_dict(),否则 str()。失败 500 获取扩展行情失败。
3.16 分笔 / 全推行情
- POST
/api/data/full_tick→get_full_tick(code_list)
| 字段 | 必填 |
|---|---|
stocks |
是,逗号分隔;空则 400 need args stocks |
成功时响应体 就是 QMT 返回对象本身(不是 {data: ...} 包裹)。失败 500 获取分笔行情失败。
3.17 除权除息 / 复权因子
- POST
/api/data/divid_factors
{"stockcode": "...", "factors": {}}
失败时 factors 为 {}。
3.18 期货主力合约
- POST
/api/data/main_contract
{"codemarket": "...", "main_contract": ...}
3.19 毫秒时间戳转日期
- POST
/api/data/timetag_to_datetime→ 全局timetag_to_datetime(timetag, format)
| 字段 | 默认 |
|---|---|
timetag |
0 |
format |
"%Y-%m-%d %H:%M:%S" |
{"timetag": 0, "datetime": "..."}
3.20 总股本
- POST
/api/data/total_share
{"stockcode": "...", "total_share": ...}
3.21 交易日列表
- POST
/api/data/trading_dates→get_trading_dates(stockcode, start_date, end_date, count, period)
| 字段 | 默认 |
|---|---|
stockcode |
"" |
start_date |
"" |
end_date |
"" |
count |
空字符串 → 内部 -1 |
period |
"1d" |
{"dates": []}
3.22 内盘 / 外盘成交量
- POST
/api/data/svol→get_svol→{"stockcode", "svol"} - POST
/api/data/bvol→get_bvol→{"stockcode", "bvol"}
3.23 龙虎榜
- POST
/api/data/longhubang→get_longhubang(stock_list, startTime, endTime)
| 字段 | 默认 |
|---|---|
stock_list |
"" 逗号分隔 |
startTime |
"" |
endTime |
"" |
成功 {"data": ...}(DataFrame 会 to_dict)。假值时 {"error": "获取龙虎榜数据失败"}。
3.24 十大股东
- POST
/api/data/top10_share_holder→ 全局get_top10_share_holder
| 字段 | 默认 |
|---|---|
stock_list |
"" |
data_name |
"holder" |
start_time |
"" |
end_time |
"" |
失败文案:获取十大股东数据失败。
3.25 期权详情
- POST
/api/data/option_detail
{"optioncode": "...", "detail": {}}
3.26 换手率
- POST
/api/data/turnover_rate→get_turnover_rate(stock_list, startTime, endTime)
字段同龙虎榜风格(stock_list / startTime / endTime)。失败:获取换手率失败。
3.27 ETF 申赎清单
- POST
/api/data/etf_info→get_etf_info(stockcode)
{"stockcode": "...", "info": {}}
3.28 ETF IOPV
- POST
/api/data/etf_iopv→get_etf_iopv(stockcode)
{"stockcode": "...", "iopv": ...}
3.29 合约详细信息
- POST
/api/data/instrumentdetail→get_instrumentdetail
{"stockcode": "...", "detail": {}}
3.30 期货到期日
- POST
/api/data/contract_expire_date
{"codemarket": "...", "expire_date": ...}
3.31 期权标的 → 期权列表
- POST
/api/data/option_undl_data
| 字段 | 说明 |
|---|---|
undl_code_ref |
标的代码 |
{"data": []}
3.32 财务数据(两种调用约定)
- POST
/api/data/financial_data→ContextInfo.get_financial_data
约定 A(单字段):tabname、colname、market、code 全部非空 时调用:
get_financial_data(tabname, colname, market, code, report_type, barpos)
| 字段 | 默认 |
|---|---|
report_type |
"report_time" |
barpos |
-1 |
约定 B(否则走批量):
get_financial_data(fieldList, stockList, startDate, endDate, report_type)
| 字段 | 默认 | 说明 |
|---|---|---|
fieldList |
"" |
逗号分隔 |
stockList |
"" |
逗号分隔 |
startDate |
"" |
|
endDate |
"" |
|
report_type |
"announce_time" |
注意与约定 A 默认值不同 |
ret is None 时:{"error": "获取财务数据失败"};否则 {"data": ...}。
3.33 多因子数据
- POST
/api/data/factor_data→get_factor_data
| 字段 | 说明 |
|---|---|
fieldList |
逗号分隔字段 |
stockCode |
若非空:按 单个代码 调用 |
stockList |
否则按代码列表调用 |
startDate / endDate |
区间 |
失败:{"error": "获取因子数据失败"}。
3.34 历史 ST
- POST
/api/data/his_st_data
{"stockCode": "...", "data": {}}
注意请求字段是 stockCode(驼峰),与多数接口的 stockcode 不同。
3.35 历史指数
- POST
/api/data/his_index_data
{"index": "...", "data": {}}
3.36 当前全部行情订阅
- GET
/api/data/all_subscription→get_all_subscription()
{"subscriptions": {}}
3.37 指定期权列表
- POST
/api/data/option_list
| 字段 | 默认 |
|---|---|
undl_code |
"" |
dedate |
"" |
opttype |
"" |
isavailable |
"true"(小写 "true" 为 True) |
{"option_list": []}
3.38 过期合约列表
- POST
/api/data/his_contract_list
{"market": "...", "contracts": []}
3.39 期权隐含波动率(实时)
- POST
/api/data/option_iv
{"optioncode": "...", "iv": ...}
3.40 BS 理论价格
- POST
/api/data/bsm_price→bsm_price(optionType, objectPrices, strikePrice, riskFree, sigma, days, dividend)
| 字段 | 默认 | 说明 |
|---|---|---|
optionType |
"C" |
|
objectPrices |
"" |
能 float() 则标量;否则按逗号拆成 float 列表 |
strikePrice |
0 |
|
riskFree |
0 |
|
sigma |
0 |
|
days |
0 |
|
dividend |
0 |
{"price": ...}
3.41 BS 隐含波动率
- POST
/api/data/bsm_iv
| 字段 | 默认 |
|---|---|
optionType |
"C" |
objectPrices |
0(float,与 bsm_price 不同) |
strikePrice |
0 |
optionPrice |
0 |
riskFree |
0 |
days |
0 |
dividend |
0 |
{"iv": ...}
3.42 本地行情
- POST
/api/data/local_data→get_local_data(stock_code, start_time, end_time, period, divid_type, count)
| 字段 | 默认 |
|---|---|
stock_code |
"" |
start_time |
"" |
end_time |
"" |
period |
"1d" |
divid_type |
"none" |
count |
-1 |
失败 500 获取本地行情失败。成功 {"data": ...}。
3.43 订阅行情
- POST
/api/data/subscribe_quote→subscribe_quote(stock_code, period, dividend_type)
| 字段 | 默认 |
|---|---|
stock_code |
"" |
period |
"follow" |
dividend_type |
"follow" |
{"status": "success" | "failed", "sub_id": ...}
status 取决于返回值是否为 None。
3.44 反订阅
- POST
/api/data/unsubscribe_quote→unsubscribe_quote(sub_id)
| 字段 | 默认 |
|---|---|
sub_id |
0 |
无论底层是否成功,都返回:
{"status": "success", "sub_id": 0}
4. 判定 /api/check
4.1 是否最后一根 K 线
- GET
/api/check/is_last_bar→is_last_bar()
{"is_last_bar": ...}
4.2 是否新 K 线
- GET
/api/check/is_new_bar
{"is_new_bar": ...}
4.3 是否停牌
- POST
/api/check/is_suspended_stock
{"stockcode": "...", "is_suspended": ...}
4.4 是否在指定板块
- POST
/api/check/is_sector_stock→ 全局is_sector_stock(sectorname, market, stockcode)
{"sectorname": "...", "stockcode": "...", "is_in_sector": ...}
响应未带回 market。
4.5 是否属于某类别
- POST
/api/check/is_typed_stock→is_typed_stock(stocktypenum, market, stockcode)
| 字段 | 默认 |
|---|---|
stocktypenum |
0 |
market |
"" |
stockcode |
"" |
{"stocktypenum": 0, "stockcode": "...", "result": ...}
4.6 行业分类名称
- POST
/api/check/get_industry_name_of_stock→get_industry_name_of_stock(industryType, stockcode)
{"industryType": "...", "stockcode": "...", "industry_name": ...}
5. 交易 /api/trade
下单类在 try/except 中捕获异常后 400,并 logger.exception。
style 类接口默认 "LATEST",accId 默认当前 ACCOUNT_ID。
价格/数量等枚举含义以迅投 passorder 官方文档为准。本封装实际传入值如下。
5.1 综合下单 passorder
- POST
/api/trade/passorder
调用:
passorder(opType, orderType, acc, stock, prType, price, volume, 'qmt', quickTrade, ctx)
策略名第三段写死为 'qmt'。
| 字段 | 必填 | 默认 | 说明 |
|---|---|---|---|
opType |
是 | 操作类型;兼容层买=23、卖=24 | |
stock |
是 | ||
price |
是 | ||
volume |
是 | ||
orderType |
否 | 1101 |
|
prType |
否 | 11 |
JSON 字段名为 prType |
quickTrade |
否 | 2 |
响应
{"status": "success", "opType": 23, "stock": "600000.SH", "order_ref": "..."}
5.2 算法下单
- POST
/api/trade/algo_passorder→algo_passorder(...)
| 字段 | 必填 | 默认 |
|---|---|---|
opType |
是 | |
stock |
是 | |
price |
是 | |
volume |
是 | |
orderType |
否 | 1101 |
prType |
否 | -1(与 passorder 默认 11 不同) |
strategyName |
否 | "" |
quickTrade |
否 | 2 |
userOrderId |
否 | "" |
userOrderParam |
否 | {} |
{"status": "success", "order_ref": "..."}
5.3 智能算法下单
- POST
/api/trade/smart_algo_passorder
| 字段 | 必填 | 默认 |
|---|---|---|
opType / stock / price / volume |
是 | |
smartAlgoType |
是 | |
orderType |
否 | 1101 |
prType |
否 | -1 |
limitOverRate |
否 | 0 |
minAmountPerOrder |
否 | 0 |
startTime |
否 | "" |
endTime |
否 | "" |
5.4 指定手数 / 价值 / 比例 / 目标 / 股数
下列接口模式相同:成功返回 {"status":"success","action":"<函数名>","stock":"..."}。
| 路径 | QMT | 关键字段 | 其它默认 |
|---|---|---|---|
POST /api/trade/order_lots |
order_lots |
lots int |
style=LATEST, price=0, accId |
POST /api/trade/order_value |
order_value |
value float |
同上 |
POST /api/trade/order_percent |
order_percent |
percent float |
同上 |
POST /api/trade/order_target_value |
order_target_value |
tar_value float |
同上 |
POST /api/trade/order_target_percent |
order_target_percent |
tar_percent float |
同上 |
POST /api/trade/order_shares |
order_shares |
shares int |
同上 |
均需 stock。
curl -s -X POST -H "X-Token: $TOKEN" -H "Content-Type: application/json" \
-d "{\"stock\":\"600000.SH\",\"shares\":100,\"style\":\"LATEST\",\"price\":0}" \
http://127.0.0.1:10086/api/trade/order_shares
5.5 期货开平仓
均需 stock、amount(手数,int)。可选 style、price、accId。
| 路径 | QMT 函数 | action |
|---|---|---|
POST /api/trade/futures/buy_open |
buy_open |
buy_open |
POST /api/trade/futures/buy_close_tdayfirst |
buy_close_tdayfirst |
buy_close_tdayfirst |
POST /api/trade/futures/buy_close_ydayfirst |
buy_close_ydayfirst |
buy_close_ydayfirst |
POST /api/trade/futures/sell_open |
sell_open |
sell_open |
POST /api/trade/futures/sell_close_tdayfirst |
sell_close_tdayfirst |
sell_close_tdayfirst |
POST /api/trade/futures/sell_close_ydayfirst |
sell_close_ydayfirst |
sell_close_ydayfirst |
成功体例:
{"status": "success", "action": "buy_open", "stock": "IF2509.IF"}
5.6 任务:撤销 / 暂停 / 继续
| 路径 | QMT |
|---|---|
POST /api/trade/cancel_task |
cancel_task(taskId, acc, accountType, ctx) |
POST /api/trade/pause_task |
pause_task |
POST /api/trade/resume_task |
resume_task |
| 字段 | 必填 | 默认 |
|---|---|---|
taskId |
是 | |
accountType |
否 | "stock" |
{"status": "success" | "failed", "taskId": "..."}
status 由 QMT 返回值的真假决定。
5.7 触发前一根 bar 信号
- POST
/api/trade/do_order→do_order(ctx)
无需解析 Body(空 Body 也可)。
{"status": "success", "message": "信号已触发"}
5.8 交易明细(原始对象属性)
- POST
/api/trade/trade_detail_data→get_trade_detail_data(acc, account, datatype, 'qmt')
| 字段 | 默认 | 说明 |
|---|---|---|
account |
"stock" |
账户类型 |
datatype |
"position" |
如 position / order / deal / account(以 QMT 为准) |
每个元素展开为「非 _ 开头且不可调用」的属性,值 str()。
{"data": [{ "...": "..." }]}
调用失败时 data 为 []。
5.9 按委托号取委托/成交
- POST
/api/trade/value_by_order_id→get_value_by_order_id(orderId, acc, accountType, datatype)
| 字段 | 默认 |
|---|---|
orderId |
"" |
accountType |
"stock" |
datatype |
"ORDER" |
{"orderId": "...", "data": {}}
5.10 最新委托号
- POST
/api/trade/last_order_id→get_last_order_id(acc, account, datatype, 'qmt')
| 字段 | 默认 |
|---|---|
account |
"stock" |
datatype |
"ORDER" |
{"last_order_id": ...}
5.11 委托是否可撤
- POST
/api/trade/can_cancel_order
{"orderId": "...", "can_cancel": ...}
accountType 默认 "stock"。
5.12 两融:负债 / 担保 / 可融券
均 POST,可选 accId(默认当前账号)。返回对象列表,属性展开方式同 5.8。
| 路径 | QMT | 响应 |
|---|---|---|
/api/trade/debt_contract |
get_debt_contract(accId) |
{"data": [...]} |
/api/trade/assure_contract |
get_assure_contract |
同上 |
/api/trade/enable_short_contract |
get_enable_short_contract |
同上 |
5.13 当日新股新债
- POST
/api/trade/ipo_data→get_ipo_data(type)
| 字段 | 默认 |
|---|---|
type |
"" |
{"data": {}}
5.14 新股申购额度
- POST
/api/trade/new_purchase_limit→get_new_purchase_limit(accid)
| 字段 | 默认 |
|---|---|
accid |
当前账号 |
{"data": {}}
6. 扩展引用 /api/ext
四个接口结构相同:name + stockcode + deviation(默认 0),并传入 ContextInfo。
| 路径 | QMT | 响应对 |
|---|---|---|
POST /api/ext/ext_data |
ext_data(extdataname, stockcode, deviation, ctx) |
extdataname + value |
POST /api/ext/ext_data_rank |
ext_data_rank |
rank |
POST /api/ext/get_factor_value |
get_factor_value(factorname, ...) |
factorname + value |
POST /api/ext/get_factor_rank |
get_factor_rank |
rank |
示例:
{"factorname": "...", "stockcode": "600000.SH", "value": ...}
7. 系统 /api/sys
这两支同样需要 X-Token。
7.1 Python 版本
- GET
/api/sys/python_version
{
"python_version": "...",
"python_version_info": {
"major": 3,
"minor": 0,
"micro": 0,
"releaselevel": "final",
"serial": 0
}
}
用于确认 QMT 内嵌解释器版本。
7.2 关闭 HTTP 服务
- POST
/api/sys/shutdown
先写入响应再 finish(),然后 IOLoop.stop()。策略进程内的 HTTP 循环结束;是否退出整个 QMT 策略取决于宿主行为。
{"status": "success", "message": "服务器正在关闭..."}
curl -s -X POST -H "X-Token: $TOKEN" http://127.0.0.1:10086/api/sys/shutdown
8. 快速对照表
| 方法 | 路径 |
|---|---|
| POST | /api/v2/positions |
| POST | /api/v2/assets |
| POST | /api/holding |
| POST | /api/money/total |
| POST | /api/money/available |
| POST | /api/order/buy |
| POST | /api/order/sell |
| POST | /api/order/status |
| POST | /api/order/cancel_all |
| POST | /api/order/cancel_order |
| POST | /api/order/deal |
| GET | /api/context/period |
| GET | /api/context/barpos |
| GET | /api/context/time_tick_size |
| GET | /api/context/stockcode |
| GET | /api/context/dividend_type |
| GET | /api/context/market |
| GET | /api/context/do_back_test |
| GET | /api/context/benchmark |
| GET | /api/context/capital |
| GET | /api/context/universe |
| POST | /api/data/stock_name |
| POST | /api/data/open_date |
| POST | /api/data/last_volume |
| POST | /api/data/bar_timetag |
| GET | /api/data/tick_timetag |
| POST | /api/data/sector |
| POST | /api/data/industry |
| POST | /api/data/stock_list_in_sector |
| POST | /api/data/weight_in_index |
| POST | /api/data/contract_multiplier |
| POST | /api/data/risk_free_rate |
| POST | /api/data/date_location |
| POST | /api/data/history_data |
| POST | /api/data/market_data |
| POST | /api/data/market_data_ex |
| POST | /api/data/full_tick |
| POST | /api/data/divid_factors |
| POST | /api/data/main_contract |
| POST | /api/data/timetag_to_datetime |
| POST | /api/data/total_share |
| POST | /api/data/trading_dates |
| POST | /api/data/svol |
| POST | /api/data/bvol |
| POST | /api/data/longhubang |
| POST | /api/data/top10_share_holder |
| POST | /api/data/option_detail |
| POST | /api/data/turnover_rate |
| POST | /api/data/etf_info |
| POST | /api/data/etf_iopv |
| POST | /api/data/instrumentdetail |
| POST | /api/data/contract_expire_date |
| POST | /api/data/option_undl_data |
| POST | /api/data/financial_data |
| POST | /api/data/factor_data |
| POST | /api/data/his_st_data |
| POST | /api/data/his_index_data |
| GET | /api/data/all_subscription |
| POST | /api/data/option_list |
| POST | /api/data/his_contract_list |
| POST | /api/data/option_iv |
| POST | /api/data/bsm_price |
| POST | /api/data/bsm_iv |
| POST | /api/data/local_data |
| POST | /api/data/subscribe_quote |
| POST | /api/data/unsubscribe_quote |
| GET | /api/check/is_last_bar |
| GET | /api/check/is_new_bar |
| POST | /api/check/is_suspended_stock |
| POST | /api/check/is_sector_stock |
| POST | /api/check/is_typed_stock |
| POST | /api/check/get_industry_name_of_stock |
| POST | /api/trade/passorder |
| POST | /api/trade/algo_passorder |
| POST | /api/trade/smart_algo_passorder |
| POST | /api/trade/order_lots |
| POST | /api/trade/order_value |
| POST | /api/trade/order_percent |
| POST | /api/trade/order_target_value |
| POST | /api/trade/order_target_percent |
| POST | /api/trade/order_shares |
| POST | /api/trade/futures/buy_open |
| POST | /api/trade/futures/buy_close_tdayfirst |
| POST | /api/trade/futures/buy_close_ydayfirst |
| POST | /api/trade/futures/sell_open |
| POST | /api/trade/futures/sell_close_tdayfirst |
| POST | /api/trade/futures/sell_close_ydayfirst |
| POST | /api/trade/cancel_task |
| POST | /api/trade/pause_task |
| POST | /api/trade/resume_task |
| POST | /api/trade/do_order |
| POST | /api/trade/trade_detail_data |
| POST | /api/trade/value_by_order_id |
| POST | /api/trade/last_order_id |
| POST | /api/trade/can_cancel_order |
| POST | /api/trade/debt_contract |
| POST | /api/trade/assure_contract |
| POST | /api/trade/enable_short_contract |
| POST | /api/trade/ipo_data |
| POST | /api/trade/new_purchase_limit |
| POST | /api/ext/ext_data |
| POST | /api/ext/ext_data_rank |
| POST | /api/ext/get_factor_value |
| POST | /api/ext/get_factor_rank |
| GET | /api/sys/python_version |
| POST | /api/sys/shutdown |
合计 104 条路由(/api/holding 与 /api/v2/positions、/api/v2/assets 与资金类为不同路径、部分共用 Handler)。