输入/搜索内容
入门
欢迎使用发明者量化交易平台
快速开始
密钥安全性
平台基础
账号与计费
实盘计费与充值
子账号
交易所
通用协议
本地凭据文件
交易所特殊说明
证券与期货
加密货币
托管者
策略库
实盘
编写策略
开发工具
回测系统
进阶专题
数据与研究
对外接口

个别交易所的配置方法,以及与通用接口行为不同的地方。没有列出的交易所按语法手册中的通用说明使用;各交易所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()设置股票代码,例如:

    javascript
    function main() { var info = exchange.SetContractType("600519.SH") // 设置为股票600519.SH(贵州茅台),账户切换到A股市场 Log(info) Log(exchange.GetAccount()) // 当前股票是茅台,GetAccount返回A股市场的账户资产 Log(exchange.GetTicker()) // 获取茅台的当前行情 }
    python
    def main(): info = exchange.SetContractType("600519.SH") Log(info) Log(exchange.GetAccount()) Log(exchange.GetTicker())
    rust
    fn 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文档:

    mylang
    const ( 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,顺序同上)。
  • 合约代码
    用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
    支持币安的中文交易对:

    javascript
    function 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
    支持火币的中文交易对:

    javascript
    function 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条件单会直接报错,不会下单。