zvtvz / zvt

modular quant framework.
https://zvt.readthedocs.io/en/latest/
MIT License
3.13k stars 856 forks source link

[data]沪深港股通持股明细 #87

Closed wisfern closed 3 years ago

wisfern commented 4 years ago

类似tushare中的数据定义 图片

scanfyu commented 4 years ago

A new plugin for zvt, see https://github.com/scanfyu/zvt-tushare.

foolcage commented 4 years ago

@scanfyu 建议实现步骤 1)复用Stock entity,只是添加tushare provider 加上这句:

register_schema(providers=['joinquant', 'eastmoney', 'exchange', 'sina','tushare'], db_name='stock_meta',
                schema_base=StockMetaBase)

这样其他人安装zvt-tushare,获得tushare数据的能力,其他模块直接复用 2)其他数据属于entity event 参考 https://zvtvz.github.io/zvt/#/data_extending https://github.com/zvtvz/zvt-ccxt

然后就是重复以下步骤

foolcage commented 4 years ago

@scanfyu

这里我是在domain下边新建一个meta并继承stock_meta还是说直接在domain下建立stock_meta并继承啊?

两种方案 1) 请使用zvt0.8.5以上版本,参考代码 https://github.com/zvtvz/zvt/blob/master/tests/contract/test_add_provider_plugin.py

可以不重新建meta,只是在domain的init里面执行如下语句:

    from zvt.contract.register import register_schema
    from zvt.domain.meta.stock_meta import StockMetaBase

    register_schema(providers=['tushare'], db_name='stock_meta',
                    schema_base=StockMetaBase)

这样便注册了tushare provider,并创建了相应的数据库

2)自己新定义一种entity,比如TushareStock

这样Factor,StockTrader,get_kdata等如果要使用Tushare的entity数据,entity schema需要重新指定,问题不大。

推荐使用方法一,尽可能复用现在的代码。 Entity只是提供标的的列表功能和一些组合,主要还是其他数据。