VeighNa量化社区
你的开源社区量化交易平台
zlengine's Avatar
Member
离线
27 帖子
声望: 1

目前vnpy返回的持仓数据字段只有一个持仓均价,就是昨日的结算价。
有什么办法获取开仓均价呢?

挨个交易日去查询交易记录不太有效率啊,难道一个仓位如果我已经持仓3个月,要查到3月前的成交记录才能计算获得开仓均价?CTP返回的持仓数据中是否包含这一数据呢?

有没有大神了解的,谢谢

深市300 etf期权的代码格式为90001*格式,而在sopt端口中,深市300 etf期权合约代码格式却是91006**,vnpy是怎么命名的,有什么规律么,以方便转为正确格式,有没有人遇到同样的问题。谢谢

使用脚本模式,结算信息确认成功后,一直也未输出“合约信息查询成功”,也没有任何提示。发送交易订单也没有任何输出。
偶尔会出现这种情况,我想加一个判断,如果未查询成功就断开重连一次,否则没有任何提示也不知道出问题了。

请问各位大神这个怎么处理呢?
我在CTPgateway中找到了输出合约信息查询成功的onRspQryInstrument()回报函数,但是在vnpy文件夹下没有找到任何这个函数的调用,不知道从何加起,
希望有大神指点一下。

   def onRspQryInstrument(self, data: dict, error: dict, reqid: int, last: bool):
        """
        Callback of instrument query.
        """
        product = PRODUCT_CTP2VT.get(data["ProductClass"], None)
        if product:
            contract = ContractData(
                symbol=data["InstrumentID"],
                exchange=EXCHANGE_CTP2VT[data["ExchangeID"]],
                name=data["InstrumentName"],
                product=product,
                size=data["VolumeMultiple"],
                pricetick=data["PriceTick"],
                gateway_name=self.gateway_name,
                long_margin_ratio = data["LongMarginRatio"],
                short_margin_ratio = data["ShortMarginRatio"],
            )

            # For option only
            if contract.product == Product.OPTION:
                # Remove C/P suffix of CZCE option product name
                if contract.exchange == Exchange.CZCE:
                    contract.option_portfolio = data["ProductID"][:-1]
                else:
                    contract.option_portfolio = data["ProductID"]

                contract.option_underlying = data["UnderlyingInstrID"]
                contract.option_type = OPTIONTYPE_CTP2VT.get(data["OptionsType"], None)
                contract.option_strike = data["StrikePrice"]
                contract.option_index = str(data["StrikePrice"])
                contract.option_expiry = datetime.strptime(data["ExpireDate"], "%Y%m%d")

            self.gateway.on_contract(contract)

            symbol_exchange_map[contract.symbol] = contract.exchange
            symbol_name_map[contract.symbol] = contract.name
            symbol_size_map[contract.symbol] = contract.size

        if last:
            self.gateway.write_log("合约信息查询成功")

            for data in self.order_data:
                self.onRtnOrder(data)
            self.order_data.clear()

            for data in self.trade_data:
                self.onRtnTrade(data)
            self.trade_data.clear()

不知道是否封装了全部的函数,在对应CTP的api来调用一些函数时,发现无法调用,比如GetApiVersion()
不知道文档说明,能够知道那些封装了,在vnpy中是可以直接调用的?
谢谢大神

比如同一个期货公司,两个账号。
一个账号A做了穿透式认证,另一个账号B用同样的程序可以直接登录么,

还是说另一个账号B也得做穿透式认证,之前程序的认证和之前的账号A绑定的,只对之前的账号A有效?

vt_symbol = "rb2009.SHFE"
engine.subscribe(vt_symbol)

contract = engine.get_contract(vt_symbol)
print(contract)
tick = engine.get_tick(vt_symbol=vt_symbol,use_df=True)
print(tick)

如上,登录CTP成功后,获取tick数据,一直都是None。获取不到tick,是不支持么,在文档中的脚本模式下看到可以成功获取,有大神遇到过类似的问题么

如题,我发现engine.close()并不能起到关闭引擎的作用。
而用gateway.close()关闭接口后,整个主进程也会随之关闭。这样每天都要再重新运行一次。

各位大神,
有什么办法可以在收盘后断开ctp,而不关闭主进程,
这样主进程循环到特定时间会重新登录CTP,
省去了每日重新手动再次运行登录CTP的烦恼。
难道只有每次新开一个进程才行么,这样感觉效率较低。

VNPY2.0.9中信实盘,平燃油合约显示平昨仓位不足。
在论坛里看到类似问题很多,但是还是没有解决方案,大家有人找到解决办法了么,谢谢

想问一下大神脚本模式进行CTPtest接入认证

engine = init_cli_trading([CtptestGateway])

setting = {
    "用户名": "xxx",
    "密码": "xxx",
    "经纪商代码": "66666",
    "交易服务器":"tcp://116.246.25.180:51205",
    "行情服务器":"tcp://116.246.25.180:51213",
    "产品名称":"client_vnpy_1.0",
    "授权编码":"9I03XXXXXXX",
    "产品信息": "TEST"
}
engine.connect_gateway(setting,"CTPTEST")

没有提示任何信息,也没有报错。ctptest接口的gateway_name是"CTPTEST"么?我测试了几个名字都提示找不到底层接口。这个名字没有报错。但是没有登录输出也无法挂单。

我在图形界面登录,日志界面也是没有任何报错信息和登录信息提示。

连接的是中信期货的评测环境。我之前试过用CTP接口连接中信期货仿真环境,顺利连接,没有问题。

INVALID PORT 论坛: CTP

我按照脚本策略里的教程,按如下代码连接CTP,此处隐去账号ID,但是一直报错invalid port

from vnpy.app.script_trader import init_cli_trading
from vnpy.gateway.ctp import CtpGateway
engine = init_cli_trading([CtpGateway])

setting = {
    "用户名": "xxxx",
    "密码": "123456",
    "经纪商代码": "9999",
    "交易服务器":"tcp://180.168.146.187:10101",
    "行情服务器":"tcp://180.168.146.187:10111",
    "产品名称":"simnow_client_test",
    "授权编码":"0000000000000000",
    "产品信息": ""
}
engine.connect_gateway(setting,"CTP")

报错如下
Invalid portInvalid port: : No errorNo error
请问是怎么回事啊,我是在阿里云服务器上跑的,用的VSCODE

如题,看CTA策略的模板,似乎都是一个策略对应一个品种,实盘运行前还得订阅一个品种,有没有像聚宽、米筐等这些平台一样筛选品种,然后多品种交易的策略模板

如题,看CTA策略的模板,似乎都是一个策略对应一个品种,实盘运行前还得订阅一个品种,有没有像聚宽、米筐等这些平台一样筛选品种,然后多品种交易的策略模板

© 2015-2022 微信 18391752892
备案服务号:沪ICP备18006526号

沪公网安备 31011502017034号

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