程序员的量化世界

发明者量化的CTP终端升级了完整API支持

2019-05-09  本文已影响3人  发明者量化FMZ

原帖地址:https://www.fmz.com/bbs-topic-new/3756

发明者量化的CTP(商品期货)终端提供了完整的全API实现, 当发明者平台的API满足不了你需要的功能时
可以用 exchange.IO 函数进行更深层的系统调用, 完全兼容官方的Api名称, 以几个简单的例子做为介绍

查询投资者信息

Log(exchange.IO("api", "ReqQryInvestor"))

修改密码

exchange.IO("api", "ReqUserPasswordUpdate", {BrokerID: "9999", UserID: "11111", OldPassword: "oldpass", NewPassword: "newpass"})

复杂的例子:

function main() {
    // 如果再加一个参数值为false表示不等待返回值, 只发送请求
    // 第三个参数只需要填充需要的字段, 也可省略此参数, 如果类型为char,传长度为1的字符串即可
    var r = exchange.IO("api", "ReqQryProduct", {ProductID: "MA"}); 
    if (!r) { // CTP 未登陆的时候会失败
        return
    }
    _.each(r, function(item) { // IO请求可能返回多个数据包, 所以以数组的形式返回
        _.each(item, function(f) { // 便历数据包的所有数据类型, 一个数据包可能包含多个具体数据
            // 具体数据类型的名称, 请参数CTP官方文档 http://www.sfit.com.cn/5_2_DocumentDown.htm
            if (f.Name == 'CThostFtdcProductField') { // 取出来需要的数据, Name 为此数据的类型, Value 为此数据的值
                f.Value.ProductName = StrDecode(f.Value.ProductName) // CTP中的汉字是GBK编码可用此函数解码
                Log(f.Value) // 打印查询的的甲醇的信息
            }
        })
    });
}

查询结算单

function main() {
    var r = exchange.IO("api", "ReqQrySettlementInfo", {TradingDay: "20190506"}); // 也可不指定日期
    var s = ''
    _.each(r, function(item) {
        _.each(item, function(f) {
            if (f.Name == 'CThostFtdcSettlementInfoField') {
                s += f.Value.Content
            }
        })
    });
    Log(StrDecode(s));
}

CTP 资料

CTP Api Reference

上一篇 下一篇

猜你喜欢

热点阅读