vn.py量化社区
By Traders, For Traders.
Member
avatar
加入于:
帖子: 14
声望: 5

接触vnpy一个多月 本着贡献社区的原则 做出一些小贡献吧
程序员喜欢啥 肯定是喜欢对象和API啊 . 无策略可说 想弄的自己去弄
对了感谢板蓝根大佬的细心指导 对我帮助真的超级大 ! (那个改Python3的帖子就是他写的 传送门 )

各位程序员大佬们你们看到vnpy的时候肯定很懵对吧(反正我懵了)我就想弄个行情或者交易的API 的能够操作这个api做些什么事情 可是你在自主运行怎么办 
我能怎么办 有人能告诉我 在线等 ......好了不皮了 , 改呗 
首先看群主的核心驱动 , 滴滴滴 也就是事件引擎 EventEngine ,这个老牛批了 被称为老司机引擎 的确很老司机.
他里面实现了一个队列 来处理事件 ,应该是考虑到程序化交易随时tick过来触发条件立即去下单,但是在我需求中没那么大 我就想下下单 看看行情 立即获取啥的 ,不想那么复杂 ,那ok 改为事件立即过来立即处理(这里是用于用户操作 足够了 用户的操作频率较低) 对于单个对象 是够用了,代码就不贴了 后面我会在github上开源行情获取的,交易的实现请自行修改

说正事
一个对象要能操作 那么一定他不是阻塞的 也是自由的 他应该有能够存储数据 ,也能够暴露对外的API,那就暂定这个类叫 Marke好吧 , 接下来 他需要去能够和服务器进行交互 的工具 那行 定义一下属性叫mdApi, 然后他需要一个事件引擎 ,来注册事件和数据存取位置 , 那行 叫event_engine, 好了 ,等等还缺什么 我缺交互的API? 没事 群主的mdApi已经提供了 我们只需要在上面加上一层壳就行.

现在整理一下思路 mdApi来进行和服务器的交互 , market 是操作对象 里面存储了数据 和数据存取操作 , event_engine用来驱动行情数据的处理
(群主的思路是 一个mdApi, 一个dataEngine 对象(存储数据) , 一个event_engine引擎, 一个操作对象) 我就不那么专业了
应该没啥问题对吧
(ps :群主的addApp是真的叼 但是我不是需要那么多功能就是了, 迫不得已进行修改的)

数据记录是redis的 用于实时获取 , 毕竟 mongodb数据一多查询数据速度就直降 无法实现大量并发查询 我仅做了ctp的修改实现 其他接口你们按照这个原理也是一样的

使用 :from module.catch import MarketEngine

怎么操作 就不用我说了吧 代码一读 就知道了 ....
github 地址 : github传送门
最后申明一下 这个不适用于高频交易(我把队列删掉了 逃~~~) 可能我的客户需求仅针对于用户操作 如果感觉对你有帮助给我个小小的star哦

交易按照此类改就行了 我相信你能行的~~~
对了 , 订阅是需要手动订阅
后面寒假会抽空做个抽象 越来越觉得群主牛逼 恩就这么多了 希望能帮到你

Member
avatar
加入于:
帖子: 14
声望: 5

构建自 vnpy 1.9.1版本

Administrator
avatar
加入于:
帖子: 1711
声望: 80

占了Star的沙发,哈哈。

你这个基于Redis的实现,基本就是个OMS引擎的雏形了,在大型交易系统中用来缓存来自各种不同接口的行情、合约、委托、持仓等数据,为其他上层的应用组件提供查询功能,更进一步的还能提供事前风控功能(也就是加入了交易指令的发送和过滤)。

现在2.0的engine.py里剥离了独立的OmsEngine组件,有兴趣可以看看,跟你的实现原理差不多,只不过是Python进程内的。

可能也可以考虑实现个RedisEngine,会更加方便数据的共享一些?

Member
avatar
加入于:
帖子: 14
声望: 5

有考虑过寒假做个抽象的 现在终于能回馈点社区 了 有点小感动

Administrator
avatar
加入于:
帖子: 1711
声望: 80

支持啊,有任何进度更新欢迎发在这里。

Member
avatar
加入于:
帖子: 14
声望: 5

emmmmm 多个k线的
菜鸡版本。还有问题没解决 求指教
github 地址 : 传送门

Member
avatar
加入于:
帖子: 93
声望: 2

介绍一下使用方法吧,
小白不知怎么用。

Member
avatar
加入于:
帖子: 14
声望: 5

那个已经被我干掉了 基于2.0重写了 , 要是有兴趣可以去了解一下哦
然后此次更新, emmmmm怎么说 ,我稍微重构了一下下。 如果你们无聊的话可以去看看。可能还有bug。 第一次感觉不太成熟。
功夫直接用vnpy里面了 , 但是好像可以满足基本的行情入库使用或者下单什么(当做datarecordingh来用?)。 没有vnpy体量那么大。当然很多代码 为了省功夫直接用vnpy里面的^^。 然后这个项目提供on_bar层和on_tick层来让你 自定义如何进行处理 例如入库? emmmmm 。各位大佬数据库用的贼溜我就不用写了 个个长得又帅,钱还赚的贼多,而且代码写的还贼溜 。 示例模板可以看examples下面的app文件 。 当前只支持单账户(我用了fronzenset() 逃 ~~~)。暂时还不支持本地持仓, 也就是你只能....查查查? emmmm。
介绍下结构 。 项目是采用单例模式,唯一实例化为一个app = CtpBee(name) 对象。 然后 里面分为recorder和extensions,recoder是数据记录在本地 ,也就是用到vnpy的oms_engine。 然后extensions是插件层 。 具体怎么搞我还没想清楚。。。想仿造flask实现。 原谅我这个弟弟。
然后底层采用了td_api 和 md_api。 因为和vnpy不同的是不用照顾那么多接口 也就不用太在乎那么多层 。 整体用起来比较轻松。 几行代码即可快速接入, 还给了你编程的余地~~ 。 当前只开放了on_tick和on_bar两个层 。 个人感觉还是比较适合ctp比较小一点的项目, 比如我曾经做过的 , 用我当前的ctpbee(暂时不成熟)重构的话, 难度会小很多小很多 。 基本就是直接调用就好了 。 不像我当时从vnpy中拆来拆去。。。。。

好吧说了这么多 可以去看下代码 , 当然对你学习vnpy也是有好处的 。地址是 github传送门 。。。 如果你感觉还行 ,能帮助到你 可以给我star哦, 不胜感激, 以后找到好工作 全靠吹这个了 !!! ,当然如果你对这个小项目感兴趣, 觉得可以优化, 想提供代码 欢迎fork 后 提交pull requests哦

Member
avatar
加入于:
帖子: 93
声望: 2

支持,

star 已经送上。。

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