输入/搜索内容

关于传统商品期货API的更多信息,需要注意:策略程序启动运行时,需先确保与期货公司前置机服务器连接成功(账号登录验证是否成功,可通过exchange.IO("status")函数调用时的返回值进行判断),之后才可以调用行情、交易等接口与期货公司前置机服务器进行通信。

参考:exchange.IO(...)函数

javascript
function main() { while (!exchange.IO("status")) { LogStatus("正在等待与交易服务器连接, " + new Date()) Sleep(1000) } exchange.GetAccount() }
python
def main(): while not exchange.IO("status"): LogStatus("正在等待与交易服务器连接, " + _D()) Sleep(1000) exchange.GetAccount()
rust
fn main() { while !exchange.IO("status").is_ok_and(|v| v.as_i64() == Some(1)) { LogStatus!("正在等待与交易服务器连接,", _D(None)); Sleep(1000); } exchange.GetAccount().unwrap(); }
  • 期货交易中exchange.Buy(Price, Amount)、exchange.Sell(Price, Amount)、exchange.CancelOrder(Id)与现货交易的区别:
    在调用exchange.Buy(Price, Amount)或exchange.Sell(Price, Amount)之前,需要先调用exchange.SetDirection(Direction)以明确下单方向。

    javascript
    function main() { while (!exchange.IO("status")) { LogStatus("正在等待与交易服务器连接, " + new Date()) Sleep(1000) } // 设置合约 exchange.SetContractType("MA888") // 设置为开空头仓位,调用exchange.Sell(...)函数下单开空头仓位 exchange.SetDirection("sell") var id = exchange.Sell(1000, 2) exchange.CancelOrder(id) }
    python
    def main(): while not exchange.IO("status"): LogStatus("正在等待与交易服务器连接, " + _D()) Sleep(1000) exchange.SetContractType("MA888") exchange.SetDirection("sell") id = exchange.Sell(1000, 2) exchange.CancelOrder(id)
    rust
    fn main() { while !exchange.IO("status").is_ok_and(|v| v.as_i64() == Some(1)) { LogStatus!("正在等待与交易服务器连接,", _D(None)); Sleep(1000); } // 设置合约 exchange.SetContractType("MA888").unwrap(); // 设置为开空头仓位,调用exchange.Sell(...)函数下单开空头仓位 exchange.SetDirection("sell").unwrap(); let id = exchange.Sell(1000, 2).unwrap(); exchange.CancelOrder(&id).unwrap(); }
  • 商品期货支持自定义订单类型(支持实盘,回测暂不支持)。
    通过后缀方式指定,附加在_之后,例如:

    CTP协议:
    exchange.SetDirection("buy_ioc")
    交易所暂不支持此类型:exchange.SetDirection("sell_gtd-20170111")。

    CTP协议:

    后缀意义对应CTP原始值
    ioc立即完成,否则撤销THOST_FTDC_TC_IOC
    gfs本节有效THOST_FTDC_TC_GFS
    gfd当日有效THOST_FTDC_TC_GFD
    gtd指定日期前有效THOST_FTDC_TC_GTD
    gtc撤销前有效THOST_FTDC_TC_GTC
    gfa集合竞价有效THOST_FTDC_TC_GFA
    fak部分成交,撤销剩余部分THOST_FTDC_TC_IOC
    fok未能完全成交,全部撤销THOST_FTDC_TC_IOC

    易盛协议:

    后缀意义对应易盛协议原始值
    gfd当日有效TAPI_ORDER_TIMEINFORCE_GFD
    gtc撤销前有效TAPI_ORDER_TIMEINFORCE_GTC
    gtd指定日期前有效TAPI_ORDER_TIMEINFORCE_GTD
    fak部分成交,撤销剩余部分TAPI_ORDER_TIMEINFORCE_FAK
    ioc立即完成,否则撤销TAPI_ORDER_TIMEINFORCE_FAK
    fok未能完全成交,全部撤销TAPI_ORDER_TIMEINFORCE_FOK
  • 易盛协议

    • 部分接口调用时立即返回
      执行exchange.GetOrder(id)、exchange.GetOrders()、exchange.GetPositions()、exchange.GetAccount()接口时会立即返回。当交易所对象配置为易盛协议时,这些接口均为立即返回,数据由本地维护,并由期货公司前置机推送更新,不会阻塞。
  • Futures_OP报错
    期货交易所对象相关的报错信息说明如下表所示:

    值错误函数显示触发函数描述
    0Futures_OP 0exchange.SetMarginLevel调用杠杆函数时报错。商品期货不支持SetMarginLevel函数,因此不会触发Futures_OP 0错误
    1Futures_OP 1exchange.SetDirection设置期货交易方向函数时报错
    2Futures_OP 2exchange.SetContractType设置合约函数时报错
    3Futures_OP 3exchange.GetPositions获取持仓函数时报错
    4Futures_OP 4exchange.IO调用IO函数时报错