资源加载中... loading...

商品期货

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

function main() {
    while (!exchange.IO("status")) {
        LogStatus("正在等待与交易服务器连接, " + new Date())
        Sleep(1000)
    }
    
    exchange.GetAccount()
}
def main():
    while not exchange.IO("status"):
        LogStatus("正在等待与交易服务器连接, " + _D())
        Sleep(1000)

    exchange.GetAccount()
void main() {
    while(exchange.IO("status") == 0) {
        LogStatus("正在等待与交易服务器连接, " + _D());
        Sleep(1000);
    }

    exchange.GetAccount();
}
  • 期货交易中exchange.Buy(Price, Amount)exchange.Sell(Price, Amount)exchange.CancelOrder(Id)和现货交易的区别:

    exchange.Buy(Price, Amount)exchange.Sell(Price, Amount)调用之前需要调用exchange.SetDirection(Direction)明确下单方向。

    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)
    }
    
    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)
    
    void main() {
        while(exchange.IO("status") == 0) {
            LogStatus("正在等待与交易服务器连接, " + _D());
            Sleep(1000);
        }
        exchange.SetContractType("MA888");
        exchange.SetDirection("sell");
        auto id = exchange.Sell(1000, 2);
        exchange.CancelOrder(id);
    }
    
  • 商品期货支持自定义订单类型(支持实盘,回测暂不支持)。 以后缀方式指定,附加在_后面例如:

    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报错 期货交易所对象相关的报错信息说明如下表:

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