commit
01ff05a016
@ -14,9 +14,13 @@
|
||||
|
||||
vn.py是一套基于Python的开源量化交易系统开发框架,于2015年1月正式发布,在开源社区5年持续不断的贡献下一步步成长为全功能量化交易平台,目前国内外金融机构用户已经超过300家,包括:私募基金、证券自营和资管、期货资管和子公司、高校研究机构、自营交易公司、交易所、Token Fund等。
|
||||
|
||||
使用过程中有任何疑问,请查看[**vn.py项目文档**](https://www.vnpy.com/docs/cn/index.html),如果无法解决请前往[**官方社区论坛**](https://www.vnpy.com/forum/)的【提问求助】板块寻求帮助,也欢迎在【经验分享】板块分享你的使用心得!
|
||||
**傻瓜式入门教程**已经在官方微信公众号[**vnpy-community**]全新上线,新手使用过程中有任何疑问看这个解决是最快的,后续会不断增加进阶经验、发布公告、活动报名等功能,请扫描下方二维码关注:
|
||||
|
||||
官方微信公众号:**vnpy-community**,接下来将在公众号中陆续上线各种关于vn.py的使用教程,欢迎关注。
|
||||
<p align="center">
|
||||
<img src ="https://vnpy.oss-cn-shanghai.aliyuncs.com/vnpy_qr.jpg"/>
|
||||
</p>
|
||||
|
||||
在使用vn.py进行二次开发(策略、模块等)的过程中有任何疑问,请查看[**vn.py项目文档**](https://www.vnpy.com/docs/cn/index.html),如果无法解决请前往[**官方社区论坛**](https://www.vnpy.com/forum/)的【提问求助】板块寻求帮助,也欢迎在【经验分享】板块分享你的使用心得!
|
||||
|
||||
2.0版本基于Python 3.7全新重构开发,如需Python 2上的版本请点击:[长期支持版本v1.9.2 LTS](https://github.com/vnpy/vnpy/tree/v1.9.2-LTS)。
|
||||
|
||||
|
@ -1 +1,33 @@
|
||||
# RPC服务
|
||||
# RPC服务
|
||||
|
||||
由于全局锁GIL的存在,单进程的Python程序只能利用CPU单核的算力,为了突破这一限制,解决方案就是多进程分布式的程序架构。但每个进程之间的数据,在操作系统内默认是独立隔离的,无法直接访问。RPC全称Remote-Procedure-Call,中文“远程过程调用”,是最常用的跨进程通讯方式之一。
|
||||
|
||||
|
||||
|
||||
|
||||
## RPC服务器
|
||||
|
||||
### 加载模块
|
||||
|
||||
### 启动运行
|
||||
|
||||
|
||||
## RPC客户端
|
||||
|
||||
### 加载接口
|
||||
|
||||
### 连接使用
|
||||
|
||||
|
||||
## 参考样例
|
||||
|
||||
位于examples/server_client目录下
|
||||
|
||||
### 服务器进程
|
||||
|
||||
GUI模式
|
||||
|
||||
无界面模式
|
||||
|
||||
### 客户端进程
|
||||
|
||||
|
@ -323,6 +323,11 @@ class CtaEngine(BaseEngine):
|
||||
for req in req_list:
|
||||
vt_orderid = self.main_engine.send_order(
|
||||
req, contract.gateway_name)
|
||||
|
||||
# Check if sending order successful
|
||||
if not vt_orderid:
|
||||
continue
|
||||
|
||||
vt_orderids.append(vt_orderid)
|
||||
|
||||
self.offset_converter.update_order_request(req, vt_orderid)
|
||||
|
@ -434,7 +434,16 @@ class IbApi(EWrapper):
|
||||
accountName,
|
||||
)
|
||||
|
||||
if not contract.exchange:
|
||||
if contract.exchange:
|
||||
exchange = EXCHANGE_IB2VT.get(contract.exchange, None)
|
||||
elif contract.primaryExchange:
|
||||
exchange = EXCHANGE_IB2VT.get(contract.primaryExchange, None)
|
||||
else:
|
||||
exchange = Exchange.SMART # Use smart routing for default
|
||||
|
||||
if not exchange:
|
||||
msg = f"存在不支持的交易所持仓{contract.conId} {contract.exchange} {contract.primaryExchange}"
|
||||
self.gateway.write_log(msg)
|
||||
return
|
||||
|
||||
ib_size = contract.multiplier
|
||||
@ -444,7 +453,7 @@ class IbApi(EWrapper):
|
||||
|
||||
pos = PositionData(
|
||||
symbol=contract.conId,
|
||||
exchange=EXCHANGE_IB2VT.get(contract.exchange, contract.exchange),
|
||||
exchange=exchange,
|
||||
direction=Direction.NET,
|
||||
volume=position,
|
||||
price=price,
|
||||
|
@ -387,28 +387,28 @@ class OkexfRestApi(RestClient):
|
||||
return
|
||||
|
||||
for pos_data in data["holding"][0]:
|
||||
if float(pos_data["long_qty"]) > 0:
|
||||
if int(pos_data["long_qty"]) > 0:
|
||||
pos = PositionData(
|
||||
symbol=pos_data["instrument_id"].upper(),
|
||||
exchange=Exchange.OKEX,
|
||||
direction=Direction.LONG,
|
||||
volume=pos_data["long_qty"],
|
||||
volume=int(pos_data["long_qty"]),
|
||||
frozen=float(pos_data["long_qty"]) - float(pos_data["long_avail_qty"]),
|
||||
price=pos_data["long_avg_cost"],
|
||||
pnl=pos_data["realised_pnl"],
|
||||
price=float(pos_data["long_avg_cost"]),
|
||||
pnl=float(pos_data["realised_pnl"]),
|
||||
gateway_name=self.gateway_name,
|
||||
)
|
||||
self.gateway.on_position(pos)
|
||||
|
||||
if float(pos_data["short_qty"]) > 0:
|
||||
if int(pos_data["short_qty"]) > 0:
|
||||
pos = PositionData(
|
||||
symbol=pos_data["instrument_id"],
|
||||
exchange=Exchange.OKEX,
|
||||
direction=Direction.SHORT,
|
||||
volume=pos_data["short_qty"],
|
||||
volume=int(pos_data["short_qty"]),
|
||||
frozen=float(pos_data["short_qty"]) - float(pos_data["short_avail_qty"]),
|
||||
price=pos_data["short_avg_cost"],
|
||||
pnl=pos_data["realised_pnl"],
|
||||
price=float(["short_avg_cost"]),
|
||||
pnl=float(["realised_pnl"]),
|
||||
gateway_name=self.gateway_name,
|
||||
)
|
||||
self.gateway.on_position(pos)
|
||||
|
Loading…
Reference in New Issue
Block a user