C++ 开发者指南

此部分为C++核心库部分感兴趣的开发者或需要将Python的指标、策略等翻写为C++代码以追求更高速度的用户提供参考。普通用户直接使用Python客户端即可,并不需要使用到C++核心库,Python同样能够实现指标和策略的开发。

Note

为了顺利编译代码,请使用 git clone 下载代码(需要将git配置为checkout时自动转换为Windows换行符,具体做法请百度),原因是 git 上传时部分文件的换行符被置换为Linux式的换行符,将导致直接下载的部分代码在Windows下无法顺利编译。

详细的C++ API参考,参见:http://hikyuu.org/ref-doc/index.html

C++测试工程及要求参见:http://hikyuu.org/test-doc/index.html

使用 Boost.Build 编译源码(推荐)

STEP1 请确认编译环境

1、安装了 Microsoft Visual C++ 2010(需支持64位编译)

2、安装了 Python3.5 64位版本

STEP2 下载 Boost 源码并编译

1、下载 Boost 1.56 版源码 http://boost.org , 并解压至希望保存的目录。

2、启动 “VS2010 x64 本机工具命令提示符”。

3、进入 Boost 源码路径,执行命令 “bootstrap.bat”。(Boost将构建自己Build工具 b2.exe)

4、执行命令 “b2 release link=shared address-model=64” 。(编译 Boost) 如果按照了多个版本的 Visual C++,请加上 “toolset=msvc-10.0” 参数,以使用VC2010进行编译。

d:\>cd src

d:\src>cd boost

d:\src\boost>bootstrap.bat
Building Boost.Build engine
……

d:\src\boost>b2 release link=shared address-model=64 toolset=msvc-10.0

5、确使 b2.exe 可以在 CMD 中任何地方被调用。如可以将 d:\src\boost 加入 PATH 环境变量中,或把 b2.exe 拷贝至某个 PATH 环境变量包含的目录中。

STEP3 下载Hikyuu源码并编译

编译前,请设置 windows 系统环境变量 BOOST_ROOT,指明 前一步骤中 boost 源码所在路径。 如下图所示,使用 Boost.Build 编译只需要设置下图中的 BOOST_ROOT 即可,其他红框中的内容为使用 VS工程 进行编译所需。

_images/dev_001.png

1、通过 git clone 下载Hikyuu源码,源码地址:https://git.oschina.net/fasiondog/hikyuu

2、启动 “VS2010 x64 本机工具命令提示符”

3、执行 build.bat 批处理命令开始编译

d:\workspace\hikyuu>build

STEP4 将Hikyuu库加入Pythn路径

开发环境下,可将 hikyuu 源码路径下的 tools 子目录如 d:\workspace\hikyuu\tools 加入 Python 库的默认搜索路径,这样无需安装 Hikyuu ,即可使用 hikyuu 交互工具。

Windows下,可通过新建或编辑系统环境变量 PYTHONPATH 将目录加入 python 库默认搜索路径。

使用VS2010工程编译源码

VS2010工程文件位于 Hikyuu 源码子目录 “project\msvc10” 下,如 “d:\workspace\hikyuuproject\msvc10\hikyuu.sln”。

VS工程编译前,需设置 BOOST_ROOT、BOOST_LIB、HIKYUU 三个系统环境变量,如下图所示:

_images/dev_001.png
  • BOOST_ROOT :Boost 源码目录
  • BOOST_LIB : Boost 编译好的库所在目录,如自行编译boost,则通常为 “stage\lib”
  • HIKYUU : hikyuu 源码目录

同样,可将源码子目录 tools 加入Python库的默认搜索路径,编译完成后即可使用 hikyuu交互工具。

代码结构与开发工程

代码结构

_images/dev_002.png

建立代码工程

因使用命令行方式编译,对集成开发环境无要求,可自行根据自身习惯使用任意集成开发环境或文本编辑器建立代码工程。如本人使用 Eclipse 进行日常代码管理和编辑,见下图。

_images/dev_003.png