Skip to content

Commit 3e82632

Browse files
文档增加开发说明
1 parent e1751ef commit 3e82632

File tree

11 files changed

+213
-0
lines changed

11 files changed

+213
-0
lines changed

doc/dev/async_tool.rst

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
.. _dev_async_tool:
2+
3+
异步工具
4+
====================================================
5+
@todo: 待写

doc/dev/backtest.rst

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
.. _dev_backtest:
2+
3+
策略回测框架
4+
=================================================
5+
@todo: 待写

doc/dev/dataflow.drawio

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<mxfile host="Chrome" modified="2019-12-02T08:35:44.992Z" agent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36" etag="g3zXiBVuKXy1cINCEAx_" version="12.3.2" type="device" pages="3"><diagram id="dtV-rkcKMc5YYa02Nnzc" name="实盘运行数据流">7VlNc5swEP01PiZjwGD76I80nU6TZiaZSdNLRoY1aCIQFXLA+fWVjMCAaO26ceLa8cXiSazQ2327i92xJmF2yVAcXFEPSMfselnHmnZM0+iZhviSyDJHho6ZAz7Dnlq0Bm7xCyiwq9AF9iCpLeSUEo7jOujSKAKX1zDEGE3ry+aU1HeNkQ8acOsioqP32ONBjg7M/hr/DNgPip0NZ5jPhKhYrE6SBMijaQWyLjrWhFHK81GYTYBI8gpe8vs+/Wa2fDAGEd/mhtFXtJx/oT+uM+ex17++6nErPVNWnhFZqAPfwyyh7hNwAU8IlsZNh4gdxjMmRr4c3VEx+S2G6I4hDy4RhxQt1Sn5sqCO0UXkgdy9K+5JA8zhNkaunE1FsAgs4CERV4YY6qcpHg0Yh6wCqdNdAg2BM7FtV82aXcW0CjWjYD5dO65cE1Sc1lMYUrHil6bXdIqBYvQv2DX/jd0r71Co7Q0OjVpHo/bu58h1BS/83dlqBmLJQoWtktE3YauvsaWRJNJTLIdzAtlIJk7BBUSeGk5dgpIEu1tyBV4tq+pMVZiwW4goMAYEcfxcz8Vt7KgdbiiW/i8cYZkNRwwaBCd0wVxQd1Vz5wZDltMwxBHzgWuGVs4qj727/waa/1CMHxm4z49ugCLNmSJQed1ViGA/kn4UrgImABnOWNS5kZoIsefJ28cMEvyCZitTUi+xPNTqmPa4Y0+l260xQTMgY+Q++StxTSihbLW1NV99WoPjj6HZVFdZ0tWj1Kpmm+rOuufmoOalIv/uGkXFEjqfJ7AXvxrWfoQpKGfL79KB5/2BXQAP1dlppvybXy2rVzfAsDiajJMVeOg6t50N8txW501DWsLYs86NXqvQE+Hv/17oZayfptLttoYlxgfXrJTaebdmxdB7u5PoVkpGiyZ71yzWNKS5at9ZTG83uXcc3UoZm6eZxPQ+9KNd2eG1pNllNPW59WuJsyFj7FvowzahH0e3UoT6SQq9eN09tRJsG8Nz+3WKsG7qrcuwqf+4Gx5JGS7j8zTVaX6U4VcQu2NtVOi2YtdNvXUpNvVfksIjKcVluB+Z2MXl+t+/fPn6P1Tr4hc=</diagram><diagram name="模拟运行" id="bOtUBa7IjBUxaNMDyaVp">7Vhdb9owFP01PBaRhAR4LNB1m1StE9XaPVUmviRenTh1DAR+/ezE+cJI0A+2tR0vOMfOdXzOPTdX6TiTKLvkKAmvGAbasXs46zjTjm1bfduSfwrZFMjIswsg4ATrRTUwI1vQYE+jS4IhbS0UjFFBkjboszgGX7QwxDlbt5ctGG3vmqAADGDmI2qitwSLsECH9qDGPwMJwnJnyxsVMxEqF+uTpCHCbN2AnIuOM+GMiWIUZROgirySly8Z+L8S7wf/+n2z7V89PHqD0VkR7NNTbqmOwCEWrxvaKUKvEF1qvm5hnjL/AYSEJ5SoHW2Pym3Hcy5HgRrdMDn5LYH4Cl8iAWu00QyJTUk7Z8sYg9q6J29Yh0TALEG+ml3LRJNYKCIqryw5PPJ8mocVcAFZQ1193ktgEQgun6WnZ/tDLZ3OXauUcl1ngt3TWNjIgr7GkE6+oApdEywHmuMn8N03+L55nJHo36SvokbTV9HSoK+i+I/Q5xr0GcxJlyZquKCQnav6IQmCGOvh1KcoTYn/EgIBtyqOSV+DHncPOyXGgSJBVu06tY8yvcM1I8qMpTqOvaPOcIf1lC25D/quZmE4EMjxdgIJxAMQRqBcwerYzxfVM0RFCbnn4K/u/RDFhsIye0VbP0RJECtxpX7AJaBynMh3wLmeiAjG6vYxh5Rs0TwPpZyVqEPlx3THHXeqcsEZUzQHOkb+Q5DbcMIo4/nWziL/HZ8xZb7uWq563elHab1R9lnxrNe1hy2VzuyXZVG5hC0WKZxE18FpzCoZ55s7pV93MHRL4GdzdpppeYurTfPqGjiRJ1NpkoNv0vuud8Cyx3p/N5BRRE7s/eFe76cyB96898v0/5DeH+3pc84T8jb6nMpNf63Pscw+8eM2Oq416rotgaxnlzsjlKHhiQueZbawEX4fzU6VtB+y4llmG/u/3XmlCuA5B217bAUwQxnF5NQVwOyLZQV4Fy1P5YF3VgHkZf2Zr1hefyx1Ln4D</diagram><diagram name="回测" id="Lelhd7oFnOBUus14Kyz_">7Vlbd6IwEP41PrZHQLw8emndh+3lVLftPnkijJDTQGiIt/76TSQgGHpqXW2rrS8mk2RivpnvY4gVqxss+gxF/hV1gVTMqruoWL2KaRo10xBf0rJMLK26mRg8hl01aW0Y4BdQxqqyTrELcWEip5RwHBWNDg1DcHjBhhij8+K0CSXFXSPkgWYYOIjo1gfscj+xNs3G2v4LsOenOxv1VjISoHSyOknsI5fOcybromJ1GaU8aQWLLhAJXorLnfF8jZ3gcnBzYQ7ju7jT+BOfJc4u37MkOwKDkO/XtYrlDJGpwusBxjF1noALc5dguaNZJ2LbzpiJlidbQyoGbyIIr9w+4jBHS4UQX6awMzoNXZBbV8WCuY85DCLkyNG5SDRh83lARM8QzS3Pp3CYAeOwyEVXnbcPNADOxG+pqtFaTYVO5a5RV/35OhPMqrL5uSxI1yGVfF7meg2waCiM34G3peE9fB7g4GvCl8G1TFHR4as1PxK+mgafhpxgaSSbEwKLttQPARCErmr2HILiGDv/AyC4BcXR4cvBY5egk9oYEMTxrKhTZZCpHW4plmRMo2M2N6KziXpMp8wBtSovDG84ss0NRxwxD7jmaBXB7Ni7B9XWgooiPGLgzEaOj0ItwiJ7eTF+iGAvlMEV8QMmDDLHsXgGtNVAgF1XLu8wiPELGq9cSWZF8lCrY9qdit2TuWB1CBoD6SDnyVvRsEsJZautrcnqs33GpPm6Sbnscad+SuGJUkbFs+q52SxEKZXuXbMonUInkxgOEtf6YcgqEGfLRxm/80bTTg1/86O9hQpv0lvme7fAsDiZTJOV8Si5n1H0Ncpuy/1NR5qIHJj7jVLuxyIHjp77afp/S+43S+qcdoSPo87JSPFpdU7rp85ZF/GN1rldiE9Wsr9X7UpcNT9W79K34lxkA/c0ap00Z7+l3hmGFtefYmdfxU7rTdZuXe7orja15NACoN+4CAE4iYLHeO3Be2oK4FjXt9ePnh09Wb/v7zv99tXN6EwX9uGzhJVDzPdR9pSguh2Pty57MlZ9RNlTiuGBRLRUzXaH73Oud6xdX/G0e6LDKV5pUHXBGytaHEXds7WaFRPq9fw+KdXT77O/btlzZAKgXc3s+taz6UhTkgMLgH5pnwnAMdQ9+xQA64gEQHTX/20m09f/EFsX/wA=</diagram></mxfile>

doc/dev/diff.drawio

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<mxfile host="Chrome" modified="2019-12-02T03:26:01.491Z" agent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36" etag="BAfD_PEciG39cCvnYuRS" version="12.3.2" type="device" pages="2"><diagram id="dtV-rkcKMc5YYa02Nnzc" name="snapshot">7ZpJc9owFMc/DcdkbHnBHFNCmmaSTFMOpb1kNFix1QiLyjJLPn1lLONFwLhhkZPhBPpLsq333k97x+pPFl8ZnIYP1EekAwx/0bGuOwCYNjDFT6osM6XngkwIGPZloUIY4jckRUOqCfZRXCnIKSUcT6vimEYRGvOKBhmj82qxF0qqb53CACnCcAyJqv7EPg8z1QPdQr9FOAjzN5tuL8uZwLywbEkcQp/OS5I16Fh9RinP/k0WfURS4+V2yerdbMldfxhDEW9SATw9zvBblHwL+N1Tf4SDix/XF9IZMV/mDUa+aL9MUsZDGtAIkkGhfmE0iXyUPtUQqaLMPaVTIZpC/IM4X0pnwoRTIYV8QmQuWmA+SqtfOjL1q5RzvZBPXiWWeSLyr1J3imREI5QpN5gQmZ+1I/34reaRUkwTNpalru7h8uWO/n5cuM929/HB5tb8wlw7R0Q1ohPE2VLUY4hAjmfV50MZXsG63Lrqd4rFm4GRo5DHwTIPcMOoPoNDFiAuqxWOFH9K31FIK/dudvX2ZgFjBkki25C+ou7+qnPnIeZoOIUre80F4VVHbrXxDDGOFiVJNafM9WpWya00L8EmpbDEmW1st3/FcDustBEISysQJRwKOE4JxEabnAaIdUd5eB42t6r7cfo+0dJROVEKkDRZVFuldIWIGJpXLttRzt4zlPZiW+0B/yaUi9nFATpBpcfbYMetnaBZ6wWBobkXNL0zGwdjw27IhqOTDVthY3h7M7gcJ2bPMJVgODUg9WkCcDUD4ijmIjDmz1OGhRF0W8uqWctqOKmqD8CH605651mVYhT3KLMqqzarso63ytjeqgoYM0qSSQuhaNiFHA2K9b7AB4AiH2OLYXU9MrdjjPUajrH7LmX28ri3Y4xVN2J0j7G27kkoUOcdZ0DeC0hPBeQom197ebynAPJKcNTCBZrt6WZD78bt52IjP2toNxz5V5bo4Hj82j44HFs3HB9oE7f9cGzY2mshHOreHmfQ17/sqMPhap9V2Wc4DgcHUOHYEZ/a6AAKHUmMWPv29Vzd+3rAOdNxODqspnQArXRYCh1TGmOOaaR/clXfturqPiAH7pmQwxHS9Gwoi1FthLT7dMiuM6J9da73asEnY8RpyojeywXqkaAYRZ4JjQLtgDg1QLyGK/TjnX3ovV/wX4CcLtCPcyLo1E4EvVPfs1KPBFMw4lB4sH1kNBw63kGGSBaXfTPjFlemrcE/</diagram><diagram name="merge" id="bOtUBa7IjBUxaNMDyaVp">7ZpLc5swEIB/jY/JIIHBHBvHaZJpZppxH+kpozEqKAVEhIjt/PoKI8xDaYJDCTDjk63VA7S732q1w0SfB5vPDEXeDXWwP4Gas5no5xMIgQGB+Ekl20ximzATuIw4clAhWJJnLIWalCbEwXFlIKfU5ySqClc0DPGKV2SIMbquDvtN/epTI+RiRbBcIV+V/iQO96QUmHbRcYmJ68lHz6CVdQQoHyx3EnvIoeuSSF9M9DmjlGf/gs0c+6nycr1cbfDqITJ/sOvb7bNx8+fRtOyTbLGLQ6bst8BwyN+99FlIbgMzugwX8+uT+Na+uvn+7STfGt/m+sKOUJ9sUsY96tIQ+YtCesZoEjo4XVUTrWLMF0ojIQRC+IA530pfQAmnQuTxwJe9eEP4XTr9dCpbv0o95xu58q6xzRuh8yn1BtEMaYgzyQXxfdmf7SN9+ZrZ39CZHBfThK3wK4oCe4MLUjANMGdbMY9hH3HyVH0oki7r7sftp36lRLwO1CReM6l/yZZlatUVOGIu5nJSYVvxp/QWhWhn8QOsL9/3CfmJ3EH6iLpHVO299gjHywjttLUWMaNqW7kiZhxv3mEJVcNyFaOqqVxx6wLpXOSVYDa0f1ukosxDNQd75aZETcHQMLkxPoIbMPtYbvTxRE2x0btyo+QzabOYtmsNymtEorAz4yvjzJbe1SoGGEr0fEwoF7nOIAMoqEVQYPYcQqdHiLqFyGwIkdUnRKYC0fLyYnG6SoCtAcVDBkFSPRfZXxD6IslSdOijmN9HjAjNDFKFel2FDfM52JUKZ8d8rllQsTvJ5+oJHfzgi5CtEPRE/SQYCT16wwDUGT2g3zLCQfjkZ3lxfO8zgAGf5SAvnb11mLe9b7XzA7WgUJzm6pV5EDDVT3O977wYmEeYOobJaghT26JfOz9Q0zrOkDPQM6l+vTT6TorBiFK6kWJkN8Wo1xsmUJO7JMZsJJdLo/dK9zG365gj2DS3A20vX+0cQU3uIhoTTmg40JJn/Z40NfpmSc2Bjyz9X5b0hizBXnO7/DXHVPY0ajSZWt80GUeaOqZp2pQmvVeapi+dTPc+Dd1hojSto9Sw5tBZAQ+OqObQMxJt7zIvF8CNWgHcrEfNjgvgUC02pAjFnjDrOBiyGh5H72BINIuv/DKNF99K6ou/</diagram></mxfile>

doc/dev/framework.rst

Lines changed: 103 additions & 0 deletions
Large diffs are not rendered by default.

doc/dev/general.rst

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
.. _dev_general:
2+
3+
原则与规范
4+
====================================================
5+
6+
TqSdk设计原则
7+
----------------------------------------------------
8+
9+
不预设用户策略模型
10+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
11+
我们深刻认识到, 量化交易是一个充满竞争与创新的领域,成功的用户总是在不断构思和尝试全新的理念与模型. 在这方面, 用户比我们知道得更多, 走得也更快. 因此, 我们在设计TqSdk时, 总是尽力避免对用户的模型结构做限定, 而是专注于为用户提供通用性的资源和能力.
12+
13+
我们的以下设计决策遵循了此原则:
14+
15+
* 不提供策略类模板, 只以示例程序方式展示各类策略应用
16+
* 一个策略程序中可以任意获取数据和发出指令
17+
* 允许用户在一个程序中使用任意多个TqApi实例
18+
19+
20+
保持用户代码简单
21+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
22+
我们对TqSdk的一个设计目标是尽量让用户的代码与需求方案保持一致(顺序相同, 篇幅相当).
23+
24+
我们的以下设计决策遵循了此原则:
25+
26+
* 不使用多线程, 避免用户处理线程同步问题
27+
* 不使用回调模型, 避免用户维护状态机状态变量
28+
* 提供专门的调仓工具
29+
* 实盘/模拟/回测/复盘 几种不同运行模式切换, 只需要在代码中做单点修改
30+
31+
32+
行为可验证
33+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
34+
作为TqSdk库质量管控的关键措施, 我们要求 TqSdk 在运行时可以记录完整的输入信息, 以确保发生问题时可以稳定重现问题和定位原因. 我们做了这些决定:
35+
36+
* 以数据流衔接库中的各组件
37+
* TqSdk 的日志文件完整记录收到的全部数据包
38+
* 专门构建了一个单元测试框架, 可以直接用日志作为测试用例输入
39+
40+
41+
相关知识与技能
42+
----------------------------------------------------
43+
TqSdk 的开发涉及以下知识点,您可能需要先学习它们,才能更好的理解和改进TqSdk的代码
44+
45+
* 金融相关业务知识
46+
47+
TqSdk是用于金融交易领域的专用软件包。我们假定用户和开发者都已经具备相应的基础知识,在TqSdk的文档中不再详加解释。
48+
49+
* python asyncio
50+
51+
TqSdk 的代码大量依赖 python asyncio 机制. asyncio 的编程模型与传统 python 程序差异很大. 我们对于TqSdk的使用者尽量隐藏了 asyncio 相关概念, 允许用户在不了解 asyncio 的情况下实现绝大多数业务需求. 但是对于开发者, 若不了解 asyncio, 在理解 TqSdk 内部代码实现时会非常困难。
52+
53+
* Diff协议
54+
55+
TqSdk 并不是一个 all-in-one 的包, 它的能力有赖于一系列后台服务的支持. DIFF协议是 TqSdk 与后台服务间通讯的主要协议, 开发者需对 DIFF 有所理解, 才能掌握 TqSdk 的内部实现
56+
57+
* Pandas/Numpy
58+
59+
Pandas/Numpy 是非常优秀的 python 数值计算库. TqSdk 利用这些库完成K线序列数据的存储和操作.
60+
61+
62+
代码风格
63+
----------------------------------------------------
64+
TqSdk的代码风格遵循 PEP8 规范.
65+
66+
67+
日志规范
68+
----------------------------------------------------
69+
@todo: 待写
70+
71+

doc/dev/gui.rst

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
.. _dev_gui:
2+
3+
Web Gui
4+
====================================================
5+
@todo: 待写

doc/dev/index.rst

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
.. _dev:
2+
3+
参与TqSdk开发
4+
========================================
5+
6+
.. toctree::
7+
:maxdepth: 2
8+
9+
general.rst
10+
framework.rst
11+
async_tool.rst
12+
gui.rst
13+
backtest.rst
14+
unittest.rst
15+

doc/dev/unittest.rst

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
.. _dev_unittest:
2+
3+
单元测试
4+
====================================================
5+
@todo: 待写

doc/dev/workflow.drawio

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<mxfile host="Chrome" modified="2019-12-02T06:34:14.085Z" agent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36" version="12.3.2" etag="DSTSv_QkBJpjC90piLgb" type="device" pages="1"><diagram id="vNeVuKvG3PC83-T539eJ" name="第 1 页">7VrLcpswFP0aLZsBiecSEtIu0k6n6UybVUcxqqHGyBFybPfrK4EwYMUOSZvI6Xhl3asXOrpHOhcD0Pl8/Z7hRfaRpqQA0ErXAF0ACG0H2uJHejaNJ/Rg45iyPFWNOsd1/psop6W8yzwl1aAhp7Tg+WLonNCyJBM+8GHG6GrY7CcthrMu8JRojusJLnTvtzzlWeMNoN/5P5B8mrUz217Y1Mxx21itpMpwSlc9F0oAOmeU8qY0X5+TQoLX4tL0u9xTu30wRko+psPyS3X/6Wqd3pINms+yG9e34ne2Gqbim3bFJBUAKJMyntEpLXGRdN6Y0WWZEjmsJayuzRWlC+G0hfMX4XyjdhMvORWujM8LVUvWOf8uu5+5yrrp1Vys1ci1sWmNkrNNr5M0b/p1Xbfaavs165OL2otbiwFdsgk5BJaKP8ymhB9oB7e7K2hB6JyI5xH9GCkwz++Hz4FVfE637botFAW1i0/Z0Wbce1ws1Uwg8UHogCgAiQeCAMQ+SBwQxyBCsiqyQKBHwXCPV1nOyfUC1/CsBNOH+6mmJIyT9WGUdVRUh0CxZDM0Vx3n7JZIWY9vjvVSMMITMUYTA44kBjJJDKgRAy/ysxXO+Y/lIsWcHBsHbM84CdCJBKNJgEaSwDFJAvRf3A7biDfHDP/EjNHMcEYyw3ZNUsN5a/cDgqZZ4GqQrchtRSczsc0iJStyuTDoFeI54lsmSlNZAokLgksQ2iAJQdCcLyI4qplxgJG3c84Yv4G9ZyIsjvIERK4siMM99o4VYWSZRtgfdSO6shDWoSuuxjiq20QgcOoqVyIsClECAnScOBtPqAIN56931+nsALT8rkqPEEnj2iPUI1bTImUayZdfwippKbVHiqusRs3ekRSdPLCEqOkLhDPLdx8RCbX1mbBcrIywJyuHRxXBHkHQg959APnWN1o3qBk+01yepu3OQ2vPfdsO0Qgf1av/5m13IHfnWvF3Bmpw0Aaqo2O77L8Qq9Y/jRglQu02YMbJUGE8P1DGSUxTgbKjy5zwmXGye9Q4dvC6ceLoYXFKag4mK2OyGu/h2Hyl18G6Rn+LGb9jXCdCHZMTOQ7H/BhyhEbJoadXR57zO8Z1fHsnnXgwhgfhSB70/hE2wYMHUoo3eEm4xl/XQF1pH/mB4r1gOivM7vOGRqR2H4mg5A8=</diagram></mxfile>

0 commit comments

Comments
 (0)