通联数据库
❶ 百分通联的会员通具体是一种怎样的服务,求解!
会员通是百分通联提供的广告服务的一种。会员通-为企业提供会员通服务,协助企业通过短彩信使用平台与用户实现一对一或一对多的实时、便捷沟通,并广泛应用于银行、证券、教育、电力、农业、物流、政府等行业领域。你可以登录其官网了解详情。
❷ 如何使用vnpy
前言:
在探索 vnpy 的过程中,我最初参考了该项目在GitHub上的官方指南进行安装、配置和阅读Wiki文档。然而,对于python初学者而言,直接从源码开始学习确实有些挑战,尤其是遇到视力问题时,长时间盯着显示器看代码确实让人感到不适。但坚持下来后,我开始尝试从源码中深度理解框架的细节。虽然对初学者来说,阅读源代码可能是个艰巨的任务,但我发现,这种学习方式能让我更深入地理解框架的工作原理和结构。我将自己的一些理解和思考分享出来,一方面希望得到更多人的交流与反馈,另一方面也是为了帮助其他同样不是计算机专业出身但对量化交易感兴趣的初学者,节省学习时间,更好地利用vnpy进行策略回测与实盘操作。
通过阅读源码,我编写了这篇详细指南,希望能为初学者提供一个清晰的路径,以节省时间并更高效地使用vnpy。当然,文章内容还在持续更新中,我期待着与大家进行更多的交流,不论是遇到的具体问题还是任何建议,我都欢迎各位不吝赐教。
感谢@用python的交易员,vnpy是一个非常棒的项目,非常适合学习和实践量化交易。
让我们开始吧!
从回测开始探索:
在面对复杂系统时,从何开始学习是一个关键问题。我曾尝试按照文件目录顺序阅读,企图一次性吸收整个系统的知识,但发现效率低下,代码间难以串联。后来,我发现从vnpy的\examples\CtaBacktesting文件夹着手,尤其是loadCsv.py、runBacktesting.py和runOptimization.py等文件,可以帮助我理解vnpy的回测流程。
通过图表,我们可以清晰地看到loadCsv.py导入了哪些模块,但这里忽略系统模块和第三方模块。
让我们一步步解析这些关键文件。
vtFunction.py
该文件包含5个常用的开发函数,如safeUnicode()、todayDate()、loadIconPath()、getTempPath()和getJsonPath()。vtGlobal.py导入了getJsonPath()方法,用于获取JSON配置文件的路径。通常,您可以在\vnpy\trader文件夹下找到VT_setting.json文件,打开后可以看到其中包含了设置项,这些设置将在后续使用中体现。
vtGlobal.py
该文件将VT_setting.json中的配置转换为Python可读取和使用的字典形式,并将其命名为globalSetting,作为全局配置的字典。
__init__.py、constant.py和text.py
\vnpy\trader\language文件夹中有chinese和english两个文件夹以及__init__.py文件,默认设置为chinese。如需使用english,可以在VT_setting.json中进行修改。constant.py包含了近百个常量定义,主要与交易相关,常用于后续操作。text.py则定义了许多常量,多用于显示相关功能。
vtConstant.py
从constant.py导入常量并添加到vtConstant.py的局部字典中。
ctaBase.py
定义了多个常量以及StopOrder类,其中包含MINUTE_DB_NAME = 'VnTrader_1Min_Db'常量,这是在数据库导入数据时会遇到的。StopOrder类定义了一个本地停止单。
vndatayes.py
定义了DatayesApi类,用于从通联数据下载数据。
vtObject.py
定义了几种数据类,这些将在后续使用中频繁出现。
ctaHistoryData.py
定义了CTA模块用的历史数据引擎,该引擎从定义的方法可以看出,主要负责下载历史数据并从CSV文件导入数据库。
__init__()方法从vtGlobal.py导入globalSetting,默认为localhost,创建了本地数据库链接。另一个关键功能是通联数据下载API,需要传入token参数。
我们重点关注loadMcCsv()方法,需要传入三个参数:filename(历史数据文件名)、dbName(与ctaBase.py中定义的常量相关,如MINUTE_DB_NAME用于1分钟bar数据)、symbol(标的代码,如IF0000)。
整个代码流程是将CSV历史数据导入数据库。
接下来,让我们通过图表进一步解析runBacktesting.py文件导入的模块。
eventEngine.py
定义了三个类:EventEngine、EventEngine2、Event和一个测试函数。EventEngine类是事件驱动引擎的核心,理解这个引擎对于理解vnpy工作原理至关重要。导入的Queue模块和threading模块解释请参见相关文档。
__init__()方法中实例化事件队列、设置事件引擎开关、创建事件处理线程和计时器,并绑定事件处理函数。
事件处理线程自启动,通过调用队列的get()方法从队头获取事件,调用__process()方法进行事件处理,而计时器每秒触发一次__onTimer()方法,创建计时器事件并将其放入队列。
stop()方法用于停止引擎,关闭事件处理线程和计时器。
另外,还有用于注册注销事件和通用事件处理函数监听的方法。
eventType.py
此文件仅用于存放事件类型的常量定义。
vtEvent.py
基于vnpy.event.eventType,添加了更多字段。
vtGateway.py
定义了VtGateway类作为交易接口,类方法主要用于事件的推送。
注意到在onTick(self, tick)函数中,参数tick传递的是VtTickData类的实例,这与从vnpy.trader.vtGateway导入的VtOrderData和VtTradeData不同。
ctaTemplate.py
这是编写策略的关键部分,包含四个类:CtaTemplate、TargetPosTemplate、BarManager和ArrayManager。我们暂时只关注其他三个类。
CtaTemplate
CTA策略模板,策略开发时需要继承CtaTemplate类。
BarManager
K线合成器,用于将tick数据合成1分钟bar。
ArrayManager
K线序列管理工具,负责维护时间序列和常用技术指标的计算。
strategyKingKeltner.py
以具体策略为例,演示如何利用上述模板。
策略实例化,设置参数和变量,并将其添加到列表中。
__init__()方法中,类KkStrategy继承自CtaTemplate,初始化时调用CtaTemplate的__init__()方法。
BarManager和ArrayManager的实例化取决于策略需求,示例策略没有直接调用这两个类的类方法,而是根据策略逻辑自行编写k线处理方法。
策略初始化、执行和回测的流程在backtesting中体现,包括设置回测参数、载入历史数据、执行策略逻辑、计算结果等。
在代码的每个部分,都可以发现vnpy为量化交易开发者提供了详尽的文档支持和模块化的设计,这使得策略开发和回测变得更加高效和直观。
让我们进一步探索更多vnpy的功能,以实现更高级的策略开发和回测。
未完待续...