交易所特殊说明
个别交易所的配置方法,以及与通用接口行为不同的地方。没有列出的交易所按语法手册中的通用说明使用;各交易所exchange.IO()支持的切换功能见exchange.IO。
证券与期货
富途证券
支持富途牛牛的实盘交易和模拟交易,需要在托管者所在的机器上运行FutuOpenD。配置交易所对象、运行FutuOpenD等操作参看富途证券配置说明文档。
使用FutuOpenD接入模拟交易时,有些股票代码不支持,因而无法交易(富途牛牛手机App上可以模拟交易)。
-
接口调用频率
GetOrder、GetOrders、GetPositions、GetAccount默认使用缓存数据,不限制调用频率;FutuOpenD收到新数据时会自动更新缓存。
调用exchange.IO("refresh", true)可以禁用缓存,禁用后的调用频率为每30秒内最多10次查询,超过会报错。 -
股票代码
格式为代码.市场,例如600519.SH。市场后缀:- HK:港股
- US:美股
- SH:沪市
- SZ:深市
- SG:新加坡期货
- JP:日本期货
在策略中用
exchange.SetContractType()设置股票代码,例如:javascriptfunction main() { var info = exchange.SetContractType("600519.SH") // 设置为股票600519.SH(贵州茅台),账户切换到A股市场 Log(info) Log(exchange.GetAccount()) // 当前股票是茅台,GetAccount返回A股市场的账户资产 Log(exchange.GetTicker()) // 获取茅台的当前行情 }pythondef main(): info = exchange.SetContractType("600519.SH") Log(info) Log(exchange.GetAccount()) Log(exchange.GetTicker())rustfn main() { let info = exchange.SetContractType("600519.SH"); // 设置为股票600519.SH(贵州茅台),账户切换到A股市场 Log!(info); Log!(exchange.GetAccount()); // 当前股票是茅台,GetAccount返回A股市场的账户资产 Log!(exchange.GetTicker(None)); // 获取茅台的当前行情 }设置交易方向的
exchange.SetDirection、下单的exchange.Buy/exchange.Sell、撤单的exchange.CancelOrder、查询订单的exchange.GetOrder等函数,用法与期货市场相同。 -
账户信息
富途用TrdMarket区分香港市场、美国市场、大陆市场等。以下摘自Futu API文档:mylangconst ( TrdMarket_TrdMarket_Unknown TrdMarket = 0 // 未知市场 TrdMarket_TrdMarket_HK TrdMarket = 1 // 香港市场 TrdMarket_TrdMarket_US TrdMarket = 2 // 美国市场 TrdMarket_TrdMarket_CN TrdMarket = 3 // 大陆市场 TrdMarket_TrdMarket_HKCC TrdMarket = 4 // 香港A股通市场 TrdMarket_TrdMarket_Futures TrdMarket = 5 // 期货市场 )exchange.GetAccount()返回的数据:json{ "Info": [{ "Header": { ... // 省略 "TrdMarket": 1 // Info原始数据中的市场ID,表示香港市场的账户资产 }, "Funds": { // 该市场的账户资产信息 ... } }, ...], "Stocks": 0, "FrozenStocks": 0, "Balance": 1000000, // 当前市场的资产 "FrozenBalance": 0 } -
FutuOpenD按登录的IP地址区分地区,非大陆IP登录的账户获取行情时有所限制,具体查阅FutuOpenD(富途)官方文档。
盈透证券(Interactive Brokers)
-
配置交易所
需要在托管者所在的机器上运行「IB Gateway」或「TWS(Trader Workstation)」。以TWS为例:登录后点击右上角的配置按钮,选择「配置」→「API」→「设置」,不要勾选「只读API」,勾选「启用ActiveX和套接字客户端」,并记下「套接字端口」(TWS默认实盘7496、模拟盘7497;IB Gateway默认实盘4001、模拟盘4002)。
然后在平台的交易所添加页面选择盈透证券(Interactive Brokers):- 服务器地址:TWS或IB Gateway的地址和端口,例如
localhost:7496。 - 行情类型:实时数据、冻结数据、延迟数据、延迟冻结数据之一。没有订阅实时行情的账户可以选择延迟数据。运行中也可以用
exchange.IO("marketDataType", n)切换(n为1到4,顺序同上)。
- 服务器地址:TWS或IB Gateway的地址和端口,例如
-
合约代码
用exchange.SetContractType()设置,格式为代码.货币[.类型[.交易所]],类型缺省为股票STK,交易所缺省为SMART:- 美股:
AAPL.US、TSLA.US(US表示美元计价)。 - 港股:
代码.HK(HK表示港币计价)。 - 期货(
FUT):代码-到期月份[-乘数].货币.FUT.交易所,到期月份写成YYYYMM,交易所为IB的交易所代码。 - 期权(
OPT)与期货期权(FOP):代码-到期-C或P-行权价×100[-乘数].货币.OPT或FOP.交易所,行权价乘以100后写成整数。 - 纯数字:直接作为IB的合约ID(conId)。
- 美股:
-
其它说明
- 托管者以实盘ID作为连接TWS的客户端号(clientId),实盘重启后客户端号不变,仍可撤销、修改此前挂出的订单。TWS只允许订单的原始客户端号(或主客户端)修改、撤销订单。
- 持仓、订单的
Symbol是简写形式(如Z74.SGD),exchange.GetPositions()、exchange.GetOrders()传入简写或下单时用的完整代码(如Z74.SGD.STK.SGX)都可以。 - 订单被网关拒绝时,订单
Info中的Reject字段记录拒单原因。 exchange.IO("debug", true)开启后,与TWS收发的每一帧按TWS API日志的格式输出到日志,便于与网关日志对照排查。
加密货币
-
Futures_Binance
支持币安的中文交易对:javascriptfunction main() { let ticker = exchange.GetTicker("币安人生_USDT.swap") Log("ticker:", ticker) // {"Info":{...},"Symbol":"币安人生_USDT.swap","Open":0.29622,"High":0.31661, ...} }币安期货的
exchange.IO()切换功能(双向持仓、逐仓/全仓、统一账户、STP模式等)见exchange.IO。 -
Futures_HuobiDM
使用exchange.IO("base", "https://xxx.xxx.xxx")或exchange.SetBase("https://xxx.xxx.xxx")切换交易所接口的基地址。火币期货的
exchange.IO()切换功能(signHost、逐仓/全仓、单向/双向持仓、统一账户等)见exchange.IO。条件单不支持OCO类型(
ORDER_CONDITION_TYPE_OCO);多资产保证金模式下同样可以使用条件单。 -
Huobi
支持火币的中文交易对:javascriptfunction main() { let ticker = exchange.GetTicker("币安人生_USDT") Log("ticker:", ticker) // {"Info":{...},"Symbol":"币安人生_USDT","Open":0.29622,"High":0.31661, ...} } -
Bitfinex
现货市价买单的下单量是交易币数,不是金额。 -
AscendEx
现货市价买单的下单量是交易币数,不是金额。 -
Futures_Hyperliquid
参考Hyperliquid 使用指南。Hyperliquid期货的
exchange.IO()切换功能(逐仓/全仓、主网/测试网、vaultAddress、walletAddress、expiresAfter等)见exchange.IO。 -
Futures_Lighter
测试环境可以在配置交易所对象时勾选,也可以用exchange.SetBase()修改REST API端点切换到测试环境。Futures_Lighter的
exchange.IO()切换功能(逐仓/全仓、订单过期时间等)见exchange.IO。exchange.GetTickers()返回的Buy、Sell是各品种的最新成交价(交易所没有批量盘口接口);需要买一、卖一价时用exchange.GetTicker()或exchange.GetDepth()。 -
Futures_edgeX
edgeX的永续合约都以USDC计价,交易对写作BTC_USDC等,完整代码形如BTC_USDC.swap;写成BTC_USDT、BTC_USD会提示合约不存在。 -
Poloniex
现货条件单只支持止损(ORDER_CONDITION_TYPE_SL):买单在价格涨到触发价时触发,卖单在价格跌到触发价时触发。止盈(ORDER_CONDITION_TYPE_TP)和OCO条件单会直接报错,不会下单。