VeighNa量化社区
你的开源社区量化交易平台
Member
avatar
加入于:
帖子: 26
声望: 3

老师好!
我现在是可以访问到: CtpTdApi 中自建的属性,但仍然无法读取合约的保证金数据:
1、我可以访问CtpTdApi中的:reqQryInstrumentMarginRate, reqQryInstrument;

    def query_margin_ratio(self):
        """查询保证金数据"""
        print(f"打印合约数据aaaabbbb")
        margin_ratio_req = {}
        margin_ratio_req['BrokerID'] = self.brokerid
        margin_ratio_req['InvestorID'] = self.userid
        margin_ratio_req['InstrumentID'] = "rb2210.SHFE"
        margin_ratio_req['HedgeFlag'] = THOST_FTDC_HF_Speculation
        self.reqid += 1
        # 请求查询保证金率
        self.reqQryInstrumentMarginRate(margin_ratio_req, self.reqid)
        self.reqQryInstrument(margin_ratio_req, self.reqid)
   2、但CtpTdApi 中,并没有相应的接受函数,甚至然错误处理也没有,这是要我们自己手动添加吗?添加后需要重新编译吗?
   3、我自己手动添加以后,并不能接受到相应的应答消息:
    def onRspError(self, error: dict, reqid: int, last: bool) -> None:
        """请求报错回报"""
        self.gateway.write_error("行情接口报错", error)
        print("行情接口报错", error)

    def onReqError(self, error: dict, reqid: int, last: bool) -> None:
        """请求报错回报"""
        self.gateway.write_error("行情接口报错", error)
        print("行情接口报错", error)

    def OnRspQryInstrumentMarginRate(self, data: dict, error: dict, reqid: int, last: bool) -> None:
        """合约查询回报"""
        print("aaaaa")

这里的: onRspError, onReqError, OnRspQryInstrumentMarginRate 都没有响应。

请问:
1、CtpTdApi 为什么没有相关的错误提示函数?
2、或者:我如何知道访问 reqQryInstrumentMarginRate 到底是参数问题,还是语法问题?目前可以访问,但不报错,也没有任何消息提示;
3、我该如何读取到合约的保证金率数据?

Super Moderator
avatar
加入于:
帖子: 658
声望: 50

大写的On是c++的回调函数,python里用小写的

Member
avatar
加入于:
帖子: 3357
声望: 226

需要自己手动添加,无需重新编译。
可以通过reqxxx函数的返回值判断是否成功
onxxx函数的CThostFtdcRspInfoField里面有错误信息
论坛有获取保证金相关的精品帖,可以自己参考一下

© 2015-2022 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号

沪公网安备 31011502017034号

【用户协议】
【隐私政策】
【免责条款】