目前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接口连接中信期货仿真环境,顺利连接,没有问题。
我按照脚本策略里的教程,按如下代码连接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策略的模板,似乎都是一个策略对应一个品种,实盘运行前还得订阅一个品种,有没有像聚宽、米筐等这些平台一样筛选品种,然后多品种交易的策略模板