输入/搜索内容
欢迎使用发明者量化交易平台
编程语言
JavaScript
TypeScript
Python
Rust
C++
My语言(麦语言)
PINE语言
Blockly可视化
Workflow工作流
密钥安全性
实盘
策略库
托管者
部署托管者
一键租用托管者
手动部署托管者
托管者操作注意事项
全局指定IP地址
命令行版本托管者程序的参数
实盘数据迁移
托管者监控
交易所
策略编辑器
回测系统
策略入口函数
策略框架与API函数
模板类库
策略参数
交互控件
期权交易
Rust策略编写说明
C++策略编写说明
JavaScript策略编写说明
Web3
内置库
扩展API接口
MCP 服务
交易终端
数据探索
Alpha因子分析工具
通用协议
调试工具
远程编辑
完整策略的导入与导出
多语言支持
实盘、策略分组
实盘展示
策略分享与出租
实盘消息推送
实盘报错、异常退出的常见原因
交易所特殊说明

  • 富途证券
    支持富途牛牛实盘交易、模拟盘交易,需要下载FutuOpenD软件。
    使用FutuOpenD接入模拟交易时,部分股票代码不受支持,因此无法交易;但富途牛牛手机APP支持模拟交易。
    在发明者量化平台上配置交易所对象、运行FutuOpenD软件等操作,请参阅富途证券配置说明文档

    • 接口调用频率
      GetOrderGetOrdersGetPositionsGetAccount函数默认使用缓存数据,因此不限制调用频率。
      当有新数据时,FutuOpenD会自动更新数据,缓存数据也会随之同步更新。

      调用exchange.IO("refresh", true)函数可以禁用缓存;禁用缓存后,调用频率限制为每30秒内最多请求10次查询,超过该频率限制将会报错。

    • 股票代码
      例如:600519.SH

      • HK 港股
      • US 美股
      • SH 沪股
      • SZ 深股

      在策略代码中使用exchange.SetContractType()函数设置股票代码,例如:

      javascript
      function main() { var info = exchange.SetContractType("600519.SH") // Set to stock 600519.SH (Moutai), account switches to mainland market Log(info) Log(exchange.GetAccount()) // Current stock is Moutai, calling GetAccount function gets account assets for mainland market Log(exchange.GetTicker()) // Get current price information for Moutai stock }
      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"); // Set to stock 600519.SH (Moutai), account switches to mainland market Log!(info); Log!(exchange.GetAccount()); // Current stock is Moutai, calling GetAccount function gets account assets for mainland market Log!(exchange.GetTicker(None)); // Get current price information for Moutai stock }
      c++
      void main() { auto info = exchange.SetContractType("600519.SH"); Log(info); Log(exchange.GetAccount()); Log(exchange.GetTicker()); }

      设置交易方向的函数exchange.SetDirection、下单函数exchange.Buy/exchange.Sell
      撤单函数exchange.CancelOrder、查询订单函数exchange.GetOrder等,使用方法均与期货市场相同。

    • 账户信息数据格式:
      使用TrdMarket定义市场,用以区分香港市场美国市场大陆市场

      摘录自Futu API文档

      const ( TrdMarket_TrdMarket_Unknown TrdMarket = 0 //Unknown market TrdMarket_TrdMarket_HK TrdMarket = 1 //Hong Kong market TrdMarket_TrdMarket_US TrdMarket = 2 //US market TrdMarket_TrdMarket_CN TrdMarket = 3 //Mainland market TrdMarket_TrdMarket_HKCC TrdMarket = 4 //Hong Kong Stock Connect market TrdMarket_TrdMarket_Futures TrdMarket = 5 //Futures market )

      获取账户信息数据,exchange.GetAccount()函数返回:

      json
      { "Info": [{ "Header": { ... // Omitted "TrdMarket": 1 // Market ID in Info raw data, indicates account assets for Hong Kong market trading }, "Funds": { // Account asset information in this market ... } }, ...], "Stocks": 0, "FrozenStocks": 0, "Balance": 1000000, // Asset value in current market "FrozenBalance": 0 }
    • FutuOpenD根据登录的IP地址进行地区区分
      使用非大陆IP地址登录的账户在获取行情数据时会受到限制,具体请查阅FutuOpenD(富途)官方文档。

  • 盈透证券
    配置交易所:
    使用盈透需要在托管者所在的系统环境中运行「IB Gateway」或「TWS (Trader Workstation)」软件,此处以「TWS」软件为例。运行「TWS」并登录后,点击软件右上角的配置按钮打开软件配置界面。

    • 选择:「配置」->「API」->「设置」,不要勾选「只读API」选项,需要勾选「启用ActiveX和套接字客户端」选项,注意配置中的「套接字端口」(TWS默认端口为7496实盘/7497模拟盘)。
    • 在平台的添加交易所页面「https://www.fmz.com/m/platforms/add」选择**盈透证券(Interactive Brokers)**,并配置参数。在「服务器地址」配置项中填写「TWS」软件对应的地址(如127.0.0.1或localhost)与端口即可,例如:localhost:7496

    支持市场:

    • 目前仅支持美股市场,暂不支持期货、外汇等其它市场。
    • 美股市场股票代码格式示例:
      苹果公司(Apple Inc.)在纳斯达克(NASDAQ)交易所的股票代码:AAPL.US
      特斯拉公司(Tesla, Inc.)在纳斯达克(NASDAQ)交易所的股票代码:TSLA.US
  • 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")切换交易所接口的基础地址。

    支持火币的中文交易对:

    javascript
    function main() { let ticker = exchange.GetTicker("币安人生_USDT.swap") Log("ticker:", ticker) // {"Info":{...},"Symbol":"币安人生_USDT.swap","Open":0.29622,"High":0.31661, ...} }

    关于火币期货的exchange.IO()切换功能(signHost、逐仓/全仓、持仓单向/双向、统一账户等),请参考exchange.IO函数文档。

  • Huobi

    • 切换特殊交易对:
      支持火币现货杠杆代币,例如LINK*(-3),交易所定义的代码为link3susdt,在发明者量化交易平台上设置该交易对时写作LINK3S_USDT
      也可以在策略中切换交易对:

      javascript
      function main() { exchange.SetCurrency("LINK3S_USDT") Log(exchange.GetTicker()) }
      python
      def main(): exchange.SetCurrency("LINK3S_USDT") Log(exchange.GetTicker())
      rust
      fn main() { exchange.SetCurrency("LINK3S_USDT"); Log!(exchange.GetTicker(None)); }
      c++
      void main() { exchange.SetCurrency("LINK3S_USDT"); Log(exchange.GetTicker()); }

    支持火币的中文交易对:

    javascript
    function main() { let ticker = exchange.GetTicker("币安人生_USDT") Log("ticker:", ticker) // {"Info":{...},"Symbol":"币安人生_USDT","Open":0.29622,"High":0.31661, ...} }
  • Futures_Bibox

    • 不支持的接口:
      该交易所不提供查询当前挂单和查询市场历史成交记录的接口,因此不支持GetOrdersGetTrades函数。
  • BitMEX

    • 市价单买单
      BitMEX现货交易下单接口中,市价单买单的下单量不是金额,而是交易币数。
  • Bitfinex

    • 市价单买单
      Bitfinex现货交易下单接口中,市价单买单的下单量不是金额,而是交易币数。
  • AscendEx

    • 市价单买单
      AscendEx现货交易下单接口中,市价单买单的下单量不是金额,而是交易币数。
  • Futures_Phemex

    • K线接口
      该交易所K线接口返回的数据不包含当前Bar数据。
    • 切换逐仓/全仓:
      该交易所未提供切换全仓/逐仓的接口,需要在交易所端进行设置。
  • Futures_Aevo

    • 订单Id说明:
      该交易所订单Id由实际Id和订单时间戳组成,二者之间使用英文逗号分隔,目的是为了支持exchange.GetOrder(Id)函数查询订单。由于交易所返回数据中的订单时间戳会随订单状态变化,如果本地需要记录订单Id等信息,请分离出实际订单Id后再进行记录。
  • Futures_dYdX
    目前支持dYdX v4版本,请参考dYdX v4 使用指南

  • Futures_Hyperliquid
    请参考Hyperliquid 使用指南

    关于Hyperliquid期货的exchange.IO()切换功能(逐仓/全仓、主网/测试网、vaultAddress、walletAddress、expiresAfter等),请参考exchange.IO函数文档。

  • Futures_Lighter

    • 切换测试环境:
      测试环境可以在配置交易所对象时勾选设置,也可以使用exchange.SetBase()函数修改REST API端点以切换到测试环境。

    关于Futures_Lighter的exchange.IO()切换功能(逐仓/全仓、订单过期时间等),请参考exchange.IO函数文档。