ctpbee-opt-api 0.1.0__cp310-cp310-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (414) hide show
  1. ctpbee_api/__init__.py +17 -0
  2. ctpbee_api/ctp/__init__.py +3 -0
  3. ctpbee_api/ctp/ctp_constant.py +1253 -0
  4. ctpbee_api/ctp/generator/concat.py +93 -0
  5. ctpbee_api/ctp/generator/const.py +325 -0
  6. ctpbee_api/ctp/generator/ctp_constant.py +1274 -0
  7. ctpbee_api/ctp/generator/ctp_md_header_define.h +13 -0
  8. ctpbee_api/ctp/generator/ctp_md_header_function.h +6 -0
  9. ctpbee_api/ctp/generator/ctp_md_header_on.h +26 -0
  10. ctpbee_api/ctp/generator/ctp_md_header_process.h +26 -0
  11. ctpbee_api/ctp/generator/ctp_md_source_function.cpp +42 -0
  12. ctpbee_api/ctp/generator/ctp_md_source_module.cpp +18 -0
  13. ctpbee_api/ctp/generator/ctp_md_source_on.cpp +156 -0
  14. ctpbee_api/ctp/generator/ctp_md_source_process.cpp +282 -0
  15. ctpbee_api/ctp/generator/ctp_md_source_switch.cpp +78 -0
  16. ctpbee_api/ctp/generator/ctp_md_source_task.cpp +211 -0
  17. ctpbee_api/ctp/generator/ctp_struct.py +5640 -0
  18. ctpbee_api/ctp/generator/ctp_td_header_define.h +130 -0
  19. ctpbee_api/ctp/generator/ctp_td_header_function.h +174 -0
  20. ctpbee_api/ctp/generator/ctp_td_header_on.h +260 -0
  21. ctpbee_api/ctp/generator/ctp_td_header_process.h +260 -0
  22. ctpbee_api/ctp/generator/ctp_td_source_function.cpp +1456 -0
  23. ctpbee_api/ctp/generator/ctp_td_source_module.cpp +222 -0
  24. ctpbee_api/ctp/generator/ctp_td_source_on.cpp +1572 -0
  25. ctpbee_api/ctp/generator/ctp_td_source_process.cpp +5472 -0
  26. ctpbee_api/ctp/generator/ctp_td_source_switch.cpp +780 -0
  27. ctpbee_api/ctp/generator/ctp_td_source_task.cpp +2444 -0
  28. ctpbee_api/ctp/generator/ctp_typedef.py +800 -0
  29. ctpbee_api/ctp/generator/generate_api_functions.py +345 -0
  30. ctpbee_api/ctp/generator/generate_data_type.py +76 -0
  31. ctpbee_api/ctp/generator/generate_struct.py +84 -0
  32. ctpbee_api/ctp/include/mac/ctp/ThostFtdcMdApi.h +168 -0
  33. ctpbee_api/ctp/include/mac/ctp/ThostFtdcTraderApi.h +770 -0
  34. ctpbee_api/ctp/include/mac/ctp/ThostFtdcUserApiDataType.h +6878 -0
  35. ctpbee_api/ctp/include/mac/ctp/ThostFtdcUserApiStruct.h +10915 -0
  36. ctpbee_api/ctp/include/mac/pybind11/attr.h +690 -0
  37. ctpbee_api/ctp/include/mac/pybind11/buffer_info.h +208 -0
  38. ctpbee_api/ctp/include/mac/pybind11/cast.h +1704 -0
  39. ctpbee_api/ctp/include/mac/pybind11/chrono.h +225 -0
  40. ctpbee_api/ctp/include/mac/pybind11/common.h +2 -0
  41. ctpbee_api/ctp/include/mac/pybind11/complex.h +74 -0
  42. ctpbee_api/ctp/include/mac/pybind11/detail/class.h +743 -0
  43. ctpbee_api/ctp/include/mac/pybind11/detail/common.h +1255 -0
  44. ctpbee_api/ctp/include/mac/pybind11/detail/descr.h +171 -0
  45. ctpbee_api/ctp/include/mac/pybind11/detail/init.h +434 -0
  46. ctpbee_api/ctp/include/mac/pybind11/detail/internals.h +656 -0
  47. ctpbee_api/ctp/include/mac/pybind11/detail/type_caster_base.h +1177 -0
  48. ctpbee_api/ctp/include/mac/pybind11/detail/typeid.h +65 -0
  49. ctpbee_api/ctp/include/mac/pybind11/eigen/common.h +9 -0
  50. ctpbee_api/ctp/include/mac/pybind11/eigen/matrix.h +714 -0
  51. ctpbee_api/ctp/include/mac/pybind11/eigen/tensor.h +516 -0
  52. ctpbee_api/ctp/include/mac/pybind11/eigen.h +12 -0
  53. ctpbee_api/ctp/include/mac/pybind11/embed.h +316 -0
  54. ctpbee_api/ctp/include/mac/pybind11/eval.h +156 -0
  55. ctpbee_api/ctp/include/mac/pybind11/functional.h +137 -0
  56. ctpbee_api/ctp/include/mac/pybind11/gil.h +239 -0
  57. ctpbee_api/ctp/include/mac/pybind11/iostream.h +265 -0
  58. ctpbee_api/ctp/include/mac/pybind11/numpy.h +1998 -0
  59. ctpbee_api/ctp/include/mac/pybind11/operators.h +202 -0
  60. ctpbee_api/ctp/include/mac/pybind11/options.h +92 -0
  61. ctpbee_api/ctp/include/mac/pybind11/pybind11.h +2890 -0
  62. ctpbee_api/ctp/include/mac/pybind11/pytypes.h +2557 -0
  63. ctpbee_api/ctp/include/mac/pybind11/stl/filesystem.h +116 -0
  64. ctpbee_api/ctp/include/mac/pybind11/stl.h +447 -0
  65. ctpbee_api/ctp/include/mac/pybind11/stl_bind.h +851 -0
  66. ctpbee_api/ctp/include/mac/pybind11/type_caster_pyobject_ptr.h +61 -0
  67. ctpbee_api/ctp/include/new/ctp/ThostFtdcMdApi.h +168 -0
  68. ctpbee_api/ctp/include/new/ctp/ThostFtdcTraderApi.h +770 -0
  69. ctpbee_api/ctp/include/new/ctp/ThostFtdcUserApiDataType.h +6878 -0
  70. ctpbee_api/ctp/include/new/ctp/ThostFtdcUserApiStruct.h +10915 -0
  71. ctpbee_api/ctp/include/new/pybind11/attr.h +690 -0
  72. ctpbee_api/ctp/include/new/pybind11/buffer_info.h +208 -0
  73. ctpbee_api/ctp/include/new/pybind11/cast.h +1704 -0
  74. ctpbee_api/ctp/include/new/pybind11/chrono.h +225 -0
  75. ctpbee_api/ctp/include/new/pybind11/common.h +2 -0
  76. ctpbee_api/ctp/include/new/pybind11/complex.h +74 -0
  77. ctpbee_api/ctp/include/new/pybind11/detail/class.h +743 -0
  78. ctpbee_api/ctp/include/new/pybind11/detail/common.h +1255 -0
  79. ctpbee_api/ctp/include/new/pybind11/detail/descr.h +171 -0
  80. ctpbee_api/ctp/include/new/pybind11/detail/init.h +434 -0
  81. ctpbee_api/ctp/include/new/pybind11/detail/internals.h +656 -0
  82. ctpbee_api/ctp/include/new/pybind11/detail/type_caster_base.h +1177 -0
  83. ctpbee_api/ctp/include/new/pybind11/detail/typeid.h +65 -0
  84. ctpbee_api/ctp/include/new/pybind11/eigen/common.h +9 -0
  85. ctpbee_api/ctp/include/new/pybind11/eigen/matrix.h +714 -0
  86. ctpbee_api/ctp/include/new/pybind11/eigen/tensor.h +516 -0
  87. ctpbee_api/ctp/include/new/pybind11/eigen.h +12 -0
  88. ctpbee_api/ctp/include/new/pybind11/embed.h +316 -0
  89. ctpbee_api/ctp/include/new/pybind11/eval.h +156 -0
  90. ctpbee_api/ctp/include/new/pybind11/functional.h +137 -0
  91. ctpbee_api/ctp/include/new/pybind11/gil.h +239 -0
  92. ctpbee_api/ctp/include/new/pybind11/iostream.h +265 -0
  93. ctpbee_api/ctp/include/new/pybind11/numpy.h +1998 -0
  94. ctpbee_api/ctp/include/new/pybind11/operators.h +202 -0
  95. ctpbee_api/ctp/include/new/pybind11/options.h +92 -0
  96. ctpbee_api/ctp/include/new/pybind11/pybind11.h +2890 -0
  97. ctpbee_api/ctp/include/new/pybind11/pytypes.h +2557 -0
  98. ctpbee_api/ctp/include/new/pybind11/stl/filesystem.h +116 -0
  99. ctpbee_api/ctp/include/new/pybind11/stl.h +447 -0
  100. ctpbee_api/ctp/include/new/pybind11/stl_bind.h +851 -0
  101. ctpbee_api/ctp/include/new/pybind11/type_caster_pyobject_ptr.h +61 -0
  102. ctpbee_api/ctp/include/previous/ctp/ThostFtdcMdApi.h +168 -0
  103. ctpbee_api/ctp/include/previous/ctp/ThostFtdcTraderApi.h +770 -0
  104. ctpbee_api/ctp/include/previous/ctp/ThostFtdcUserApiDataType.h +6878 -0
  105. ctpbee_api/ctp/include/previous/ctp/ThostFtdcUserApiStruct.h +10915 -0
  106. ctpbee_api/ctp/include/previous/pybind11/attr.h +489 -0
  107. ctpbee_api/ctp/include/previous/pybind11/buffer_info.h +108 -0
  108. ctpbee_api/ctp/include/previous/pybind11/cast.h +2067 -0
  109. ctpbee_api/ctp/include/previous/pybind11/chrono.h +162 -0
  110. ctpbee_api/ctp/include/previous/pybind11/common.h +2 -0
  111. ctpbee_api/ctp/include/previous/pybind11/complex.h +61 -0
  112. ctpbee_api/ctp/include/previous/pybind11/detail/class.h +626 -0
  113. ctpbee_api/ctp/include/previous/pybind11/detail/common.h +803 -0
  114. ctpbee_api/ctp/include/previous/pybind11/detail/descr.h +185 -0
  115. ctpbee_api/ctp/include/previous/pybind11/detail/init.h +335 -0
  116. ctpbee_api/ctp/include/previous/pybind11/detail/internals.h +285 -0
  117. ctpbee_api/ctp/include/previous/pybind11/detail/typeid.h +53 -0
  118. ctpbee_api/ctp/include/previous/pybind11/eigen.h +604 -0
  119. ctpbee_api/ctp/include/previous/pybind11/embed.h +194 -0
  120. ctpbee_api/ctp/include/previous/pybind11/eval.h +117 -0
  121. ctpbee_api/ctp/include/previous/pybind11/functional.h +85 -0
  122. ctpbee_api/ctp/include/previous/pybind11/iostream.h +200 -0
  123. ctpbee_api/ctp/include/previous/pybind11/numpy.h +1601 -0
  124. ctpbee_api/ctp/include/previous/pybind11/operators.h +168 -0
  125. ctpbee_api/ctp/include/previous/pybind11/options.h +65 -0
  126. ctpbee_api/ctp/include/previous/pybind11/pybind11.h +1965 -0
  127. ctpbee_api/ctp/include/previous/pybind11/pytypes.h +1332 -0
  128. ctpbee_api/ctp/include/previous/pybind11/stl.h +376 -0
  129. ctpbee_api/ctp/include/previous/pybind11/stl_bind.h +599 -0
  130. ctpbee_api/ctp/libs/libcomunicationkey.a +0 -0
  131. ctpbee_api/ctp/libs/libcrypto.a +0 -0
  132. ctpbee_api/ctp/libs/libssl.a +0 -0
  133. ctpbee_api/ctp/libs/thostmduserapi_se.lib +0 -0
  134. ctpbee_api/ctp/libs/thosttraderapi_se.lib +0 -0
  135. ctpbee_api/ctp/libthostmduserapi_se.so +0 -0
  136. ctpbee_api/ctp/libthosttraderapi_se.so +0 -0
  137. ctpbee_api/ctp/thostmduserapi_se.dll +0 -0
  138. ctpbee_api/ctp/thosttraderapi_se.dll +0 -0
  139. ctpbee_api/ctp/vnctp/vnctp.h +189 -0
  140. ctpbee_api/ctp/vnctp/vnctp.sln +41 -0
  141. ctpbee_api/ctp/vnctp/vnctpmd/dllmain.cpp +19 -0
  142. ctpbee_api/ctp/vnctp/vnctpmd/stdafx.cpp +1 -0
  143. ctpbee_api/ctp/vnctp/vnctpmd/stdafx.h +17 -0
  144. ctpbee_api/ctp/vnctp/vnctpmd/targetver.h +8 -0
  145. ctpbee_api/ctp/vnctp/vnctpmd/vnctpmd.cpp +953 -0
  146. ctpbee_api/ctp/vnctp/vnctpmd/vnctpmd.h +209 -0
  147. ctpbee_api/ctp/vnctp/vnctpmd/vnctpmd.vcxproj +200 -0
  148. ctpbee_api/ctp/vnctp/vnctpmd/vnctpmd.vcxproj.filters +54 -0
  149. ctpbee_api/ctp/vnctp/vnctpmd/vnctpmd.vcxproj.user +4 -0
  150. ctpbee_api/ctp/vnctp/vnctptd/dllmain.cpp +19 -0
  151. ctpbee_api/ctp/vnctp/vnctptd/stdafx.cpp +1 -0
  152. ctpbee_api/ctp/vnctp/vnctptd/stdafx.h +16 -0
  153. ctpbee_api/ctp/vnctp/vnctptd/targetver.h +8 -0
  154. ctpbee_api/ctp/vnctp/vnctptd/vnctptd.cpp +12148 -0
  155. ctpbee_api/ctp/vnctp/vnctptd/vnctptd.h +1329 -0
  156. ctpbee_api/ctp/vnctp/vnctptd/vnctptd.vcxproj +198 -0
  157. ctpbee_api/ctp/vnctp/vnctptd/vnctptd.vcxproj.filters +54 -0
  158. ctpbee_api/ctp/vnctp/vnctptd/vnctptd.vcxproj.user +4 -0
  159. ctpbee_api/ctp/vnctpmd.cp310-win_amd64.pyd +0 -0
  160. ctpbee_api/ctp/vnctptd.cp310-win_amd64.pyd +0 -0
  161. ctpbee_api/ctp_mini/__init__.py +3 -0
  162. ctpbee_api/ctp_mini/generator/generate_api_functions.py +343 -0
  163. ctpbee_api/ctp_mini/generator/generate_data_type.py +76 -0
  164. ctpbee_api/ctp_mini/generator/generate_struct.py +85 -0
  165. ctpbee_api/ctp_mini/generator/mini_constant.py +1186 -0
  166. ctpbee_api/ctp_mini/generator/mini_md_header_define.h +13 -0
  167. ctpbee_api/ctp_mini/generator/mini_md_header_function.h +4 -0
  168. ctpbee_api/ctp_mini/generator/mini_md_header_on.h +26 -0
  169. ctpbee_api/ctp_mini/generator/mini_md_header_process.h +26 -0
  170. ctpbee_api/ctp_mini/generator/mini_md_source_function.cpp +29 -0
  171. ctpbee_api/ctp_mini/generator/mini_md_source_module.cpp +17 -0
  172. ctpbee_api/ctp_mini/generator/mini_md_source_on.cpp +156 -0
  173. ctpbee_api/ctp_mini/generator/mini_md_source_process.cpp +264 -0
  174. ctpbee_api/ctp_mini/generator/mini_md_source_switch.cpp +78 -0
  175. ctpbee_api/ctp_mini/generator/mini_md_source_task.cpp +203 -0
  176. ctpbee_api/ctp_mini/generator/mini_struct.py +4599 -0
  177. ctpbee_api/ctp_mini/generator/mini_td_header_define.h +63 -0
  178. ctpbee_api/ctp_mini/generator/mini_td_header_function.h +84 -0
  179. ctpbee_api/ctp_mini/generator/mini_td_header_on.h +126 -0
  180. ctpbee_api/ctp_mini/generator/mini_td_header_process.h +126 -0
  181. ctpbee_api/ctp_mini/generator/mini_td_source_function.cpp +663 -0
  182. ctpbee_api/ctp_mini/generator/mini_td_source_module.cpp +107 -0
  183. ctpbee_api/ctp_mini/generator/mini_td_source_on.cpp +756 -0
  184. ctpbee_api/ctp_mini/generator/mini_td_source_process.cpp +2492 -0
  185. ctpbee_api/ctp_mini/generator/mini_td_source_switch.cpp +378 -0
  186. ctpbee_api/ctp_mini/generator/mini_td_source_task.cpp +1193 -0
  187. ctpbee_api/ctp_mini/generator/mini_typedef.py +755 -0
  188. ctpbee_api/ctp_mini/generator/package/vnminimd.cpp +886 -0
  189. ctpbee_api/ctp_mini/generator/package/vnminimd.h +205 -0
  190. ctpbee_api/ctp_mini/include/new/mini/ThostFtdcMdApi.h +148 -0
  191. ctpbee_api/ctp_mini/include/new/mini/ThostFtdcTraderApi.h +419 -0
  192. ctpbee_api/ctp_mini/include/new/mini/ThostFtdcUserApiDataType.h +6458 -0
  193. ctpbee_api/ctp_mini/include/new/mini/ThostFtdcUserApiStruct.h +8890 -0
  194. ctpbee_api/ctp_mini/include/new/pybind11/attr.h +690 -0
  195. ctpbee_api/ctp_mini/include/new/pybind11/buffer_info.h +208 -0
  196. ctpbee_api/ctp_mini/include/new/pybind11/cast.h +1704 -0
  197. ctpbee_api/ctp_mini/include/new/pybind11/chrono.h +225 -0
  198. ctpbee_api/ctp_mini/include/new/pybind11/common.h +2 -0
  199. ctpbee_api/ctp_mini/include/new/pybind11/complex.h +74 -0
  200. ctpbee_api/ctp_mini/include/new/pybind11/detail/class.h +743 -0
  201. ctpbee_api/ctp_mini/include/new/pybind11/detail/common.h +1255 -0
  202. ctpbee_api/ctp_mini/include/new/pybind11/detail/descr.h +171 -0
  203. ctpbee_api/ctp_mini/include/new/pybind11/detail/init.h +434 -0
  204. ctpbee_api/ctp_mini/include/new/pybind11/detail/internals.h +656 -0
  205. ctpbee_api/ctp_mini/include/new/pybind11/detail/type_caster_base.h +1177 -0
  206. ctpbee_api/ctp_mini/include/new/pybind11/detail/typeid.h +65 -0
  207. ctpbee_api/ctp_mini/include/new/pybind11/eigen/common.h +9 -0
  208. ctpbee_api/ctp_mini/include/new/pybind11/eigen/matrix.h +714 -0
  209. ctpbee_api/ctp_mini/include/new/pybind11/eigen/tensor.h +516 -0
  210. ctpbee_api/ctp_mini/include/new/pybind11/eigen.h +12 -0
  211. ctpbee_api/ctp_mini/include/new/pybind11/embed.h +316 -0
  212. ctpbee_api/ctp_mini/include/new/pybind11/eval.h +156 -0
  213. ctpbee_api/ctp_mini/include/new/pybind11/functional.h +137 -0
  214. ctpbee_api/ctp_mini/include/new/pybind11/gil.h +239 -0
  215. ctpbee_api/ctp_mini/include/new/pybind11/iostream.h +265 -0
  216. ctpbee_api/ctp_mini/include/new/pybind11/numpy.h +1998 -0
  217. ctpbee_api/ctp_mini/include/new/pybind11/operators.h +202 -0
  218. ctpbee_api/ctp_mini/include/new/pybind11/options.h +92 -0
  219. ctpbee_api/ctp_mini/include/new/pybind11/pybind11.h +2890 -0
  220. ctpbee_api/ctp_mini/include/new/pybind11/pytypes.h +2557 -0
  221. ctpbee_api/ctp_mini/include/new/pybind11/stl/filesystem.h +116 -0
  222. ctpbee_api/ctp_mini/include/new/pybind11/stl.h +447 -0
  223. ctpbee_api/ctp_mini/include/new/pybind11/stl_bind.h +851 -0
  224. ctpbee_api/ctp_mini/include/new/pybind11/type_caster_pyobject_ptr.h +61 -0
  225. ctpbee_api/ctp_mini/include/previous/mini/ThostFtdcMdApi.h +148 -0
  226. ctpbee_api/ctp_mini/include/previous/mini/ThostFtdcTraderApi.h +419 -0
  227. ctpbee_api/ctp_mini/include/previous/mini/ThostFtdcUserApiDataType.h +6458 -0
  228. ctpbee_api/ctp_mini/include/previous/mini/ThostFtdcUserApiStruct.h +8890 -0
  229. ctpbee_api/ctp_mini/include/previous/pybind11/attr.h +489 -0
  230. ctpbee_api/ctp_mini/include/previous/pybind11/buffer_info.h +108 -0
  231. ctpbee_api/ctp_mini/include/previous/pybind11/cast.h +2067 -0
  232. ctpbee_api/ctp_mini/include/previous/pybind11/chrono.h +162 -0
  233. ctpbee_api/ctp_mini/include/previous/pybind11/common.h +2 -0
  234. ctpbee_api/ctp_mini/include/previous/pybind11/complex.h +61 -0
  235. ctpbee_api/ctp_mini/include/previous/pybind11/detail/class.h +626 -0
  236. ctpbee_api/ctp_mini/include/previous/pybind11/detail/common.h +803 -0
  237. ctpbee_api/ctp_mini/include/previous/pybind11/detail/descr.h +185 -0
  238. ctpbee_api/ctp_mini/include/previous/pybind11/detail/init.h +335 -0
  239. ctpbee_api/ctp_mini/include/previous/pybind11/detail/internals.h +285 -0
  240. ctpbee_api/ctp_mini/include/previous/pybind11/detail/typeid.h +53 -0
  241. ctpbee_api/ctp_mini/include/previous/pybind11/eigen.h +604 -0
  242. ctpbee_api/ctp_mini/include/previous/pybind11/embed.h +194 -0
  243. ctpbee_api/ctp_mini/include/previous/pybind11/eval.h +117 -0
  244. ctpbee_api/ctp_mini/include/previous/pybind11/functional.h +85 -0
  245. ctpbee_api/ctp_mini/include/previous/pybind11/iostream.h +200 -0
  246. ctpbee_api/ctp_mini/include/previous/pybind11/numpy.h +1601 -0
  247. ctpbee_api/ctp_mini/include/previous/pybind11/operators.h +168 -0
  248. ctpbee_api/ctp_mini/include/previous/pybind11/options.h +65 -0
  249. ctpbee_api/ctp_mini/include/previous/pybind11/pybind11.h +1965 -0
  250. ctpbee_api/ctp_mini/include/previous/pybind11/pytypes.h +1332 -0
  251. ctpbee_api/ctp_mini/include/previous/pybind11/stl.h +376 -0
  252. ctpbee_api/ctp_mini/include/previous/pybind11/stl_bind.h +599 -0
  253. ctpbee_api/ctp_mini/libs/thostmduserapi.lib +0 -0
  254. ctpbee_api/ctp_mini/libs/thosttraderapi.lib +0 -0
  255. ctpbee_api/ctp_mini/libthostmduserapi.so +0 -0
  256. ctpbee_api/ctp_mini/libthosttraderapi.so +0 -0
  257. ctpbee_api/ctp_mini/mini_constant.py +1186 -0
  258. ctpbee_api/ctp_mini/thostmduserapi.dll +0 -0
  259. ctpbee_api/ctp_mini/thosttraderapi.dll +0 -0
  260. ctpbee_api/ctp_mini/vnctp_mini/vnctp_mini.h +146 -0
  261. ctpbee_api/ctp_mini/vnctp_mini/vnctp_mini.sln +41 -0
  262. ctpbee_api/ctp_mini/vnctp_mini/vnctp_minimd/dllmain.cpp +0 -0
  263. ctpbee_api/ctp_mini/vnctp_mini/vnctp_minimd/stdafx.cpp +0 -0
  264. ctpbee_api/ctp_mini/vnctp_mini/vnctp_minimd/stdafx.h +0 -0
  265. ctpbee_api/ctp_mini/vnctp_mini/vnctp_minimd/targetver.h +0 -0
  266. ctpbee_api/ctp_mini/vnctp_mini/vnctp_minimd/vnctp_minimd.cpp +886 -0
  267. ctpbee_api/ctp_mini/vnctp_mini/vnctp_minimd/vnctp_minimd.h +203 -0
  268. ctpbee_api/ctp_mini/vnctp_mini/vnctp_minimd/vnctp_minimd.vcxproj +183 -0
  269. ctpbee_api/ctp_mini/vnctp_mini/vnctp_minimd/vnctp_minimd.vcxproj.filters +54 -0
  270. ctpbee_api/ctp_mini/vnctp_mini/vnctp_minimd/vnctp_minimd.vcxproj.user +4 -0
  271. ctpbee_api/ctp_mini/vnctp_mini/vnctp_minitd/dllmain.cpp +0 -0
  272. ctpbee_api/ctp_mini/vnctp_mini/vnctp_minitd/stdafx.cpp +0 -0
  273. ctpbee_api/ctp_mini/vnctp_mini/vnctp_minitd/stdafx.h +0 -0
  274. ctpbee_api/ctp_mini/vnctp_mini/vnctp_minitd/targetver.h +0 -0
  275. ctpbee_api/ctp_mini/vnctp_mini/vnctp_minitd/vnctp_minitd.cpp +5716 -0
  276. ctpbee_api/ctp_mini/vnctp_mini/vnctp_minitd/vnctp_minitd.h +680 -0
  277. ctpbee_api/ctp_mini/vnctp_mini/vnctp_minitd/vnctp_minitd.vcxproj +180 -0
  278. ctpbee_api/ctp_mini/vnctp_mini/vnctp_minitd/vnctp_minitd.vcxproj.filters +54 -0
  279. ctpbee_api/ctp_mini/vnctp_mini/vnctp_minitd/vnctp_minitd.vcxproj.user +4 -0
  280. ctpbee_api/ctp_mini/vnctp_minimd.cp310-win_amd64.pyd +0 -0
  281. ctpbee_api/ctp_mini/vnctp_minitd.cp310-win_amd64.pyd +0 -0
  282. ctpbee_api/ctp_mini/vnctp_minitd.lib +0 -0
  283. ctpbee_api/rohon/RohonBaseV64.dll +0 -0
  284. ctpbee_api/rohon/WinDataCollect.dll +0 -0
  285. ctpbee_api/rohon/__init__.py +3 -0
  286. ctpbee_api/rohon/generator/generate_api_functions.py +348 -0
  287. ctpbee_api/rohon/generator/generate_data_type.py +76 -0
  288. ctpbee_api/rohon/generator/generate_struct.py +84 -0
  289. ctpbee_api/rohon/generator/rohon_constant.py +1242 -0
  290. ctpbee_api/rohon/generator/rohon_md_header_define.h +13 -0
  291. ctpbee_api/rohon/generator/rohon_md_header_function.h +6 -0
  292. ctpbee_api/rohon/generator/rohon_md_header_on.h +26 -0
  293. ctpbee_api/rohon/generator/rohon_md_header_process.h +26 -0
  294. ctpbee_api/rohon/generator/rohon_md_source_function.cpp +40 -0
  295. ctpbee_api/rohon/generator/rohon_md_source_module.cpp +18 -0
  296. ctpbee_api/rohon/generator/rohon_md_source_on.cpp +156 -0
  297. ctpbee_api/rohon/generator/rohon_md_source_process.cpp +271 -0
  298. ctpbee_api/rohon/generator/rohon_md_source_switch.cpp +78 -0
  299. ctpbee_api/rohon/generator/rohon_md_source_task.cpp +211 -0
  300. ctpbee_api/rohon/generator/rohon_struct.py +4958 -0
  301. ctpbee_api/rohon/generator/rohon_td_header_define.h +125 -0
  302. ctpbee_api/rohon/generator/rohon_td_header_function.h +164 -0
  303. ctpbee_api/rohon/generator/rohon_td_header_on.h +250 -0
  304. ctpbee_api/rohon/generator/rohon_td_header_process.h +250 -0
  305. ctpbee_api/rohon/generator/rohon_td_source_function.cpp +1338 -0
  306. ctpbee_api/rohon/generator/rohon_td_source_module.cpp +209 -0
  307. ctpbee_api/rohon/generator/rohon_td_source_on.cpp +1500 -0
  308. ctpbee_api/rohon/generator/rohon_td_source_process.cpp +5125 -0
  309. ctpbee_api/rohon/generator/rohon_td_source_switch.cpp +750 -0
  310. ctpbee_api/rohon/generator/rohon_td_source_task.cpp +2339 -0
  311. ctpbee_api/rohon/generator/rohon_typedef.py +781 -0
  312. ctpbee_api/rohon/include/new/pybind11/attr.h +690 -0
  313. ctpbee_api/rohon/include/new/pybind11/buffer_info.h +208 -0
  314. ctpbee_api/rohon/include/new/pybind11/cast.h +1704 -0
  315. ctpbee_api/rohon/include/new/pybind11/chrono.h +225 -0
  316. ctpbee_api/rohon/include/new/pybind11/common.h +2 -0
  317. ctpbee_api/rohon/include/new/pybind11/complex.h +74 -0
  318. ctpbee_api/rohon/include/new/pybind11/detail/class.h +743 -0
  319. ctpbee_api/rohon/include/new/pybind11/detail/common.h +1255 -0
  320. ctpbee_api/rohon/include/new/pybind11/detail/descr.h +171 -0
  321. ctpbee_api/rohon/include/new/pybind11/detail/init.h +434 -0
  322. ctpbee_api/rohon/include/new/pybind11/detail/internals.h +656 -0
  323. ctpbee_api/rohon/include/new/pybind11/detail/type_caster_base.h +1177 -0
  324. ctpbee_api/rohon/include/new/pybind11/detail/typeid.h +65 -0
  325. ctpbee_api/rohon/include/new/pybind11/eigen/common.h +9 -0
  326. ctpbee_api/rohon/include/new/pybind11/eigen/matrix.h +714 -0
  327. ctpbee_api/rohon/include/new/pybind11/eigen/tensor.h +516 -0
  328. ctpbee_api/rohon/include/new/pybind11/eigen.h +12 -0
  329. ctpbee_api/rohon/include/new/pybind11/embed.h +316 -0
  330. ctpbee_api/rohon/include/new/pybind11/eval.h +156 -0
  331. ctpbee_api/rohon/include/new/pybind11/functional.h +137 -0
  332. ctpbee_api/rohon/include/new/pybind11/gil.h +239 -0
  333. ctpbee_api/rohon/include/new/pybind11/iostream.h +265 -0
  334. ctpbee_api/rohon/include/new/pybind11/numpy.h +1998 -0
  335. ctpbee_api/rohon/include/new/pybind11/operators.h +202 -0
  336. ctpbee_api/rohon/include/new/pybind11/options.h +92 -0
  337. ctpbee_api/rohon/include/new/pybind11/pybind11.h +2890 -0
  338. ctpbee_api/rohon/include/new/pybind11/pytypes.h +2557 -0
  339. ctpbee_api/rohon/include/new/pybind11/stl/filesystem.h +116 -0
  340. ctpbee_api/rohon/include/new/pybind11/stl.h +447 -0
  341. ctpbee_api/rohon/include/new/pybind11/stl_bind.h +851 -0
  342. ctpbee_api/rohon/include/new/pybind11/type_caster_pyobject_ptr.h +61 -0
  343. ctpbee_api/rohon/include/new/rohon/ThostFtdcMdApi.h +168 -0
  344. ctpbee_api/rohon/include/new/rohon/ThostFtdcTraderApi.h +739 -0
  345. ctpbee_api/rohon/include/new/rohon/ThostFtdcUserApiDataType.h +6708 -0
  346. ctpbee_api/rohon/include/new/rohon/ThostFtdcUserApiStruct.h +9580 -0
  347. ctpbee_api/rohon/include/previous/pybind11/attr.h +489 -0
  348. ctpbee_api/rohon/include/previous/pybind11/buffer_info.h +108 -0
  349. ctpbee_api/rohon/include/previous/pybind11/cast.h +2067 -0
  350. ctpbee_api/rohon/include/previous/pybind11/chrono.h +162 -0
  351. ctpbee_api/rohon/include/previous/pybind11/common.h +2 -0
  352. ctpbee_api/rohon/include/previous/pybind11/complex.h +61 -0
  353. ctpbee_api/rohon/include/previous/pybind11/detail/class.h +626 -0
  354. ctpbee_api/rohon/include/previous/pybind11/detail/common.h +803 -0
  355. ctpbee_api/rohon/include/previous/pybind11/detail/descr.h +185 -0
  356. ctpbee_api/rohon/include/previous/pybind11/detail/init.h +335 -0
  357. ctpbee_api/rohon/include/previous/pybind11/detail/internals.h +285 -0
  358. ctpbee_api/rohon/include/previous/pybind11/detail/typeid.h +53 -0
  359. ctpbee_api/rohon/include/previous/pybind11/eigen.h +604 -0
  360. ctpbee_api/rohon/include/previous/pybind11/embed.h +194 -0
  361. ctpbee_api/rohon/include/previous/pybind11/eval.h +117 -0
  362. ctpbee_api/rohon/include/previous/pybind11/functional.h +85 -0
  363. ctpbee_api/rohon/include/previous/pybind11/iostream.h +200 -0
  364. ctpbee_api/rohon/include/previous/pybind11/numpy.h +1601 -0
  365. ctpbee_api/rohon/include/previous/pybind11/operators.h +168 -0
  366. ctpbee_api/rohon/include/previous/pybind11/options.h +65 -0
  367. ctpbee_api/rohon/include/previous/pybind11/pybind11.h +1965 -0
  368. ctpbee_api/rohon/include/previous/pybind11/pytypes.h +1332 -0
  369. ctpbee_api/rohon/include/previous/pybind11/stl.h +376 -0
  370. ctpbee_api/rohon/include/previous/pybind11/stl_bind.h +599 -0
  371. ctpbee_api/rohon/include/previous/rohon/ThostFtdcMdApi.h +168 -0
  372. ctpbee_api/rohon/include/previous/rohon/ThostFtdcTraderApi.h +739 -0
  373. ctpbee_api/rohon/include/previous/rohon/ThostFtdcUserApiDataType.h +6708 -0
  374. ctpbee_api/rohon/include/previous/rohon/ThostFtdcUserApiStruct.h +9580 -0
  375. ctpbee_api/rohon/libLinuxDataCollect.so +0 -0
  376. ctpbee_api/rohon/librohonbase.so +0 -0
  377. ctpbee_api/rohon/librohonbase.so.1.1 +0 -0
  378. ctpbee_api/rohon/librohonbase.so.1.1.0.1 +0 -0
  379. ctpbee_api/rohon/libs/thostmduserapi_se.lib +0 -0
  380. ctpbee_api/rohon/libs/thosttraderapi_se.lib +0 -0
  381. ctpbee_api/rohon/libthostmduserapi_se.so +0 -0
  382. ctpbee_api/rohon/libthosttraderapi_se.so +0 -0
  383. ctpbee_api/rohon/rohon_constant.py +1242 -0
  384. ctpbee_api/rohon/thostmduserapi_se.dll +0 -0
  385. ctpbee_api/rohon/thosttraderapi_se.dll +0 -0
  386. ctpbee_api/rohon/vnrohon/.vs/vnrohon/v15/.suo +0 -0
  387. ctpbee_api/rohon/vnrohon/.vs/vnrohon/v15/Browse.VC.db +0 -0
  388. ctpbee_api/rohon/vnrohon/.vs/vnrohon/v15/Solution.VC.db +0 -0
  389. ctpbee_api/rohon/vnrohon/vnrohon.h +147 -0
  390. ctpbee_api/rohon/vnrohon/vnrohon.sln +41 -0
  391. ctpbee_api/rohon/vnrohon/vnrohonmd/dllmain.cpp +19 -0
  392. ctpbee_api/rohon/vnrohon/vnrohonmd/framework.h +5 -0
  393. ctpbee_api/rohon/vnrohon/vnrohonmd/pch.cpp +5 -0
  394. ctpbee_api/rohon/vnrohon/vnrohonmd/pch.h +13 -0
  395. ctpbee_api/rohon/vnrohon/vnrohonmd/vnrohonmd.cpp +931 -0
  396. ctpbee_api/rohon/vnrohon/vnrohonmd/vnrohonmd.h +207 -0
  397. ctpbee_api/rohon/vnrohon/vnrohonmd/vnrohonmd.vcxproj +188 -0
  398. ctpbee_api/rohon/vnrohon/vnrohonmd/vnrohonmd.vcxproj.filters +54 -0
  399. ctpbee_api/rohon/vnrohon/vnrohonmd/vnrohonmd.vcxproj.user +4 -0
  400. ctpbee_api/rohon/vnrohon/vnrohontd/dllmain.cpp +19 -0
  401. ctpbee_api/rohon/vnrohon/vnrohontd/framework.h +5 -0
  402. ctpbee_api/rohon/vnrohon/vnrohontd/pch.cpp +5 -0
  403. ctpbee_api/rohon/vnrohon/vnrohontd/pch.h +13 -0
  404. ctpbee_api/rohon/vnrohon/vnrohontd/vnrohontd.cpp +11395 -0
  405. ctpbee_api/rohon/vnrohon/vnrohontd/vnrohontd.h +1259 -0
  406. ctpbee_api/rohon/vnrohon/vnrohontd/vnrohontd.vcxproj +188 -0
  407. ctpbee_api/rohon/vnrohon/vnrohontd/vnrohontd.vcxproj.filters +54 -0
  408. ctpbee_api/rohon/vnrohon/vnrohontd/vnrohontd.vcxproj.user +4 -0
  409. ctpbee_api/rohon/vnrohonmd.cp310-win_amd64.pyd +0 -0
  410. ctpbee_api/rohon/vnrohontd.cp310-win_amd64.pyd +0 -0
  411. ctpbee_opt_api-0.1.0.dist-info/METADATA +46 -0
  412. ctpbee_opt_api-0.1.0.dist-info/RECORD +414 -0
  413. ctpbee_opt_api-0.1.0.dist-info/WHEEL +5 -0
  414. ctpbee_opt_api-0.1.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,886 @@
1
+ // vnminimd.cpp : ���� DLL Ӧ�ó���ĵ���������
2
+ //
3
+ #include "vnctp_minimd.h"
4
+
5
+ ///-------------------------------------------------------------------------------------
6
+ ///C++�Ļص����������ݱ��浽������
7
+ ///-------------------------------------------------------------------------------------
8
+ void MdApi::OnFrontConnected()
9
+ {
10
+ Task task = Task();
11
+ task.task_name = ONFRONTCONNECTED;
12
+ this->task_queue.push(task);
13
+ };
14
+
15
+ void MdApi::OnFrontDisconnected(int nReason)
16
+ {
17
+ Task task = Task();
18
+ task.task_name = ONFRONTDISCONNECTED;
19
+ task.task_id = nReason;
20
+ this->task_queue.push(task);
21
+ };
22
+
23
+ void MdApi::OnHeartBeatWarning(int nTimeLapse)
24
+ {
25
+ Task task = Task();
26
+ task.task_name = ONHEARTBEATWARNING;
27
+ task.task_id = nTimeLapse;
28
+ this->task_queue.push(task);
29
+ };
30
+
31
+ void MdApi::OnRspUserLogin(CThostFtdcRspUserLoginField *pRspUserLogin, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
32
+ {
33
+ Task task = Task();
34
+ task.task_name = ONRSPUSERLOGIN;
35
+ if (pRspUserLogin)
36
+ {
37
+ CThostFtdcRspUserLoginField *task_data = new CThostFtdcRspUserLoginField();
38
+ *task_data = *pRspUserLogin;
39
+ task.task_data = task_data;
40
+ }
41
+ if (pRspInfo)
42
+ {
43
+ CThostFtdcRspInfoField *task_error = new CThostFtdcRspInfoField();
44
+ *task_error = *pRspInfo;
45
+ task.task_error = task_error;
46
+ }
47
+ task.task_id = nRequestID;
48
+ task.task_last = bIsLast;
49
+ this->task_queue.push(task);
50
+ };
51
+
52
+ void MdApi::OnRspUserLogout(CThostFtdcUserLogoutField *pUserLogout, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
53
+ {
54
+ Task task = Task();
55
+ task.task_name = ONRSPUSERLOGOUT;
56
+ if (pUserLogout)
57
+ {
58
+ CThostFtdcUserLogoutField *task_data = new CThostFtdcUserLogoutField();
59
+ *task_data = *pUserLogout;
60
+ task.task_data = task_data;
61
+ }
62
+ if (pRspInfo)
63
+ {
64
+ CThostFtdcRspInfoField *task_error = new CThostFtdcRspInfoField();
65
+ *task_error = *pRspInfo;
66
+ task.task_error = task_error;
67
+ }
68
+ task.task_id = nRequestID;
69
+ task.task_last = bIsLast;
70
+ this->task_queue.push(task);
71
+ };
72
+
73
+ void MdApi::OnRspError(CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
74
+ {
75
+ Task task = Task();
76
+ task.task_name = ONRSPERROR;
77
+ if (pRspInfo)
78
+ {
79
+ CThostFtdcRspInfoField *task_error = new CThostFtdcRspInfoField();
80
+ *task_error = *pRspInfo;
81
+ task.task_error = task_error;
82
+ }
83
+ task.task_id = nRequestID;
84
+ task.task_last = bIsLast;
85
+ this->task_queue.push(task);
86
+ };
87
+
88
+ void MdApi::OnRspSubMarketData(CThostFtdcSpecificInstrumentField *pSpecificInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
89
+ {
90
+ Task task = Task();
91
+ task.task_name = ONRSPSUBMARKETDATA;
92
+ if (pSpecificInstrument)
93
+ {
94
+ CThostFtdcSpecificInstrumentField *task_data = new CThostFtdcSpecificInstrumentField();
95
+ *task_data = *pSpecificInstrument;
96
+ task.task_data = task_data;
97
+ }
98
+ if (pRspInfo)
99
+ {
100
+ CThostFtdcRspInfoField *task_error = new CThostFtdcRspInfoField();
101
+ *task_error = *pRspInfo;
102
+ task.task_error = task_error;
103
+ }
104
+ task.task_id = nRequestID;
105
+ task.task_last = bIsLast;
106
+ this->task_queue.push(task);
107
+ };
108
+
109
+ void MdApi::OnRspUnSubMarketData(CThostFtdcSpecificInstrumentField *pSpecificInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
110
+ {
111
+ Task task = Task();
112
+ task.task_name = ONRSPUNSUBMARKETDATA;
113
+ if (pSpecificInstrument)
114
+ {
115
+ CThostFtdcSpecificInstrumentField *task_data = new CThostFtdcSpecificInstrumentField();
116
+ *task_data = *pSpecificInstrument;
117
+ task.task_data = task_data;
118
+ }
119
+ if (pRspInfo)
120
+ {
121
+ CThostFtdcRspInfoField *task_error = new CThostFtdcRspInfoField();
122
+ *task_error = *pRspInfo;
123
+ task.task_error = task_error;
124
+ }
125
+ task.task_id = nRequestID;
126
+ task.task_last = bIsLast;
127
+ this->task_queue.push(task);
128
+ };
129
+
130
+ void MdApi::OnRspSubForQuoteRsp(CThostFtdcSpecificInstrumentField *pSpecificInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
131
+ {
132
+ Task task = Task();
133
+ task.task_name = ONRSPSUBFORQUOTERSP;
134
+ if (pSpecificInstrument)
135
+ {
136
+ CThostFtdcSpecificInstrumentField *task_data = new CThostFtdcSpecificInstrumentField();
137
+ *task_data = *pSpecificInstrument;
138
+ task.task_data = task_data;
139
+ }
140
+ if (pRspInfo)
141
+ {
142
+ CThostFtdcRspInfoField *task_error = new CThostFtdcRspInfoField();
143
+ *task_error = *pRspInfo;
144
+ task.task_error = task_error;
145
+ }
146
+ task.task_id = nRequestID;
147
+ task.task_last = bIsLast;
148
+ this->task_queue.push(task);
149
+ };
150
+
151
+ void MdApi::OnRspUnSubForQuoteRsp(CThostFtdcSpecificInstrumentField *pSpecificInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
152
+ {
153
+ Task task = Task();
154
+ task.task_name = ONRSPUNSUBFORQUOTERSP;
155
+ if (pSpecificInstrument)
156
+ {
157
+ CThostFtdcSpecificInstrumentField *task_data = new CThostFtdcSpecificInstrumentField();
158
+ *task_data = *pSpecificInstrument;
159
+ task.task_data = task_data;
160
+ }
161
+ if (pRspInfo)
162
+ {
163
+ CThostFtdcRspInfoField *task_error = new CThostFtdcRspInfoField();
164
+ *task_error = *pRspInfo;
165
+ task.task_error = task_error;
166
+ }
167
+ task.task_id = nRequestID;
168
+ task.task_last = bIsLast;
169
+ this->task_queue.push(task);
170
+ };
171
+
172
+ void MdApi::OnRtnDepthMarketData(CThostFtdcDepthMarketDataField *pDepthMarketData)
173
+ {
174
+ Task task = Task();
175
+ task.task_name = ONRTNDEPTHMARKETDATA;
176
+ if (pDepthMarketData)
177
+ {
178
+ CThostFtdcDepthMarketDataField *task_data = new CThostFtdcDepthMarketDataField();
179
+ *task_data = *pDepthMarketData;
180
+ task.task_data = task_data;
181
+ }
182
+ this->task_queue.push(task);
183
+ };
184
+
185
+ void MdApi::OnRtnMBLMarketData(CThostFtdcMBLMarketDataField *pMBLMarketData)
186
+ {
187
+ Task task = Task();
188
+ task.task_name = ONRTNMBLMARKETDATA;
189
+ if (pMBLMarketData)
190
+ {
191
+ CThostFtdcMBLMarketDataField *task_data = new CThostFtdcMBLMarketDataField();
192
+ *task_data = *pMBLMarketData;
193
+ task.task_data = task_data;
194
+ }
195
+ this->task_queue.push(task);
196
+ };
197
+
198
+ void MdApi::OnRtnForQuoteRsp(CThostFtdcForQuoteRspField *pForQuoteRsp)
199
+ {
200
+ Task task = Task();
201
+ task.task_name = ONRTNFORQUOTERSP;
202
+ if (pForQuoteRsp)
203
+ {
204
+ CThostFtdcForQuoteRspField *task_data = new CThostFtdcForQuoteRspField();
205
+ *task_data = *pForQuoteRsp;
206
+ task.task_data = task_data;
207
+ }
208
+ this->task_queue.push(task);
209
+ };
210
+
211
+ ///-------------------------------------------------------------------------------------
212
+ ///�����̴߳Ӷ�����ȡ�����ݣ�ת��Ϊpython����󣬽�������
213
+ ///-------------------------------------------------------------------------------------
214
+
215
+ void MdApi::processTask()
216
+ {
217
+ try
218
+ {
219
+ while (this->active){
220
+ Task task = this->task_queue.pop();
221
+ switch (task.task_name)
222
+ {
223
+ case ONFRONTCONNECTED:
224
+ {
225
+ this->processFrontConnected(&task);
226
+ break;
227
+ }
228
+
229
+ case ONFRONTDISCONNECTED:
230
+ {
231
+ this->processFrontDisconnected(&task);
232
+ break;
233
+ }
234
+
235
+ case ONHEARTBEATWARNING:
236
+ {
237
+ this->processHeartBeatWarning(&task);
238
+ break;
239
+ }
240
+
241
+ case ONRSPUSERLOGIN:
242
+ {
243
+ this->processRspUserLogin(&task);
244
+ break;
245
+ }
246
+
247
+ case ONRSPUSERLOGOUT:
248
+ {
249
+ this->processRspUserLogout(&task);
250
+ break;
251
+ }
252
+
253
+ case ONRSPERROR:
254
+ {
255
+ this->processRspError(&task);
256
+ break;
257
+ }
258
+
259
+ case ONRSPSUBMARKETDATA:
260
+ {
261
+ this->processRspSubMarketData(&task);
262
+ break;
263
+ }
264
+
265
+ case ONRSPUNSUBMARKETDATA:
266
+ {
267
+ this->processRspUnSubMarketData(&task);
268
+ break;
269
+ }
270
+
271
+ case ONRSPSUBFORQUOTERSP:
272
+ {
273
+ this->processRspSubForQuoteRsp(&task);
274
+ break;
275
+ }
276
+
277
+ case ONRSPUNSUBFORQUOTERSP:
278
+ {
279
+ this->processRspUnSubForQuoteRsp(&task);
280
+ break;
281
+ }
282
+
283
+ case ONRTNDEPTHMARKETDATA:
284
+ {
285
+ this->processRtnDepthMarketData(&task);
286
+ break;
287
+ }
288
+
289
+ case ONRTNMBLMARKETDATA:
290
+ {
291
+ this->processRtnMBLMarketData(&task);
292
+ break;
293
+ }
294
+
295
+ case ONRTNFORQUOTERSP:
296
+ {
297
+ this->processRtnForQuoteRsp(&task);
298
+ break;
299
+ }
300
+ }
301
+ }
302
+ }
303
+ catch (const TerminatedError&)
304
+ {
305
+ }
306
+ };
307
+ void MdApi::processFrontConnected(Task *task)
308
+ {
309
+ gil_scoped_acquire acquire;
310
+ this->onFrontConnected();
311
+ };
312
+
313
+ void MdApi::processFrontDisconnected(Task *task)
314
+ {
315
+ gil_scoped_acquire acquire;
316
+ this->onFrontDisconnected(task->task_id);
317
+ };
318
+
319
+ void MdApi::processHeartBeatWarning(Task *task)
320
+ {
321
+ gil_scoped_acquire acquire;
322
+ this->onHeartBeatWarning(task->task_id);
323
+ };
324
+
325
+ void MdApi::processRspUserLogin(Task *task)
326
+ {
327
+ gil_scoped_acquire acquire;
328
+ dict data;
329
+ if (task->task_data)
330
+ {
331
+ CThostFtdcRspUserLoginField *task_data = (CThostFtdcRspUserLoginField*)task->task_data;
332
+ data["TradingDay"] = toUtf(task_data->TradingDay);
333
+ data["LoginTime"] = toUtf(task_data->LoginTime);
334
+ data["BrokerID"] = toUtf(task_data->BrokerID);
335
+ data["UserID"] = toUtf(task_data->UserID);
336
+ data["SystemName"] = toUtf(task_data->SystemName);
337
+ data["FrontID"] = task_data->FrontID;
338
+ data["SessionID"] = task_data->SessionID;
339
+ data["MaxOrderRef"] = toUtf(task_data->MaxOrderRef);
340
+ data["SHFETime"] = toUtf(task_data->SHFETime);
341
+ data["DCETime"] = toUtf(task_data->DCETime);
342
+ data["CZCETime"] = toUtf(task_data->CZCETime);
343
+ data["FFEXTime"] = toUtf(task_data->FFEXTime);
344
+ data["INETime"] = toUtf(task_data->INETime);
345
+ delete task_data;
346
+ }
347
+ dict error;
348
+ if (task->task_error)
349
+ {
350
+ CThostFtdcRspInfoField *task_error = (CThostFtdcRspInfoField*)task->task_error;
351
+ error["ErrorID"] = task_error->ErrorID;
352
+ error["ErrorMsg"] = toUtf(task_error->ErrorMsg);
353
+ delete task_error;
354
+ }
355
+ this->onRspUserLogin(data, error, task->task_id, task->task_last);
356
+ };
357
+
358
+ void MdApi::processRspUserLogout(Task *task)
359
+ {
360
+ gil_scoped_acquire acquire;
361
+ dict data;
362
+ if (task->task_data)
363
+ {
364
+ CThostFtdcUserLogoutField *task_data = (CThostFtdcUserLogoutField*)task->task_data;
365
+ data["BrokerID"] = toUtf(task_data->BrokerID);
366
+ data["UserID"] = toUtf(task_data->UserID);
367
+ delete task_data;
368
+ }
369
+ dict error;
370
+ if (task->task_error)
371
+ {
372
+ CThostFtdcRspInfoField *task_error = (CThostFtdcRspInfoField*)task->task_error;
373
+ error["ErrorID"] = task_error->ErrorID;
374
+ error["ErrorMsg"] = toUtf(task_error->ErrorMsg);
375
+ delete task_error;
376
+ }
377
+ this->onRspUserLogout(data, error, task->task_id, task->task_last);
378
+ };
379
+
380
+ void MdApi::processRspError(Task *task)
381
+ {
382
+ gil_scoped_acquire acquire;
383
+ dict error;
384
+ if (task->task_error)
385
+ {
386
+ CThostFtdcRspInfoField *task_error = (CThostFtdcRspInfoField*)task->task_error;
387
+ error["ErrorID"] = task_error->ErrorID;
388
+ error["ErrorMsg"] = toUtf(task_error->ErrorMsg);
389
+ delete task_error;
390
+ }
391
+ this->onRspError(error, task->task_id, task->task_last);
392
+ };
393
+
394
+ void MdApi::processRspSubMarketData(Task *task)
395
+ {
396
+ gil_scoped_acquire acquire;
397
+ dict data;
398
+ if (task->task_data)
399
+ {
400
+ CThostFtdcSpecificInstrumentField *task_data = (CThostFtdcSpecificInstrumentField*)task->task_data;
401
+ data["InstrumentID"] = toUtf(task_data->InstrumentID);
402
+ delete task_data;
403
+ }
404
+ dict error;
405
+ if (task->task_error)
406
+ {
407
+ CThostFtdcRspInfoField *task_error = (CThostFtdcRspInfoField*)task->task_error;
408
+ error["ErrorID"] = task_error->ErrorID;
409
+ error["ErrorMsg"] = toUtf(task_error->ErrorMsg);
410
+ delete task_error;
411
+ }
412
+ this->onRspSubMarketData(data, error, task->task_id, task->task_last);
413
+ };
414
+
415
+ void MdApi::processRspUnSubMarketData(Task *task)
416
+ {
417
+ gil_scoped_acquire acquire;
418
+ dict data;
419
+ if (task->task_data)
420
+ {
421
+ CThostFtdcSpecificInstrumentField *task_data = (CThostFtdcSpecificInstrumentField*)task->task_data;
422
+ data["InstrumentID"] = toUtf(task_data->InstrumentID);
423
+ delete task_data;
424
+ }
425
+ dict error;
426
+ if (task->task_error)
427
+ {
428
+ CThostFtdcRspInfoField *task_error = (CThostFtdcRspInfoField*)task->task_error;
429
+ error["ErrorID"] = task_error->ErrorID;
430
+ error["ErrorMsg"] = toUtf(task_error->ErrorMsg);
431
+ delete task_error;
432
+ }
433
+ this->onRspUnSubMarketData(data, error, task->task_id, task->task_last);
434
+ };
435
+
436
+ void MdApi::processRspSubForQuoteRsp(Task *task)
437
+ {
438
+ gil_scoped_acquire acquire;
439
+ dict data;
440
+ if (task->task_data)
441
+ {
442
+ CThostFtdcSpecificInstrumentField *task_data = (CThostFtdcSpecificInstrumentField*)task->task_data;
443
+ data["InstrumentID"] = toUtf(task_data->InstrumentID);
444
+ delete task_data;
445
+ }
446
+ dict error;
447
+ if (task->task_error)
448
+ {
449
+ CThostFtdcRspInfoField *task_error = (CThostFtdcRspInfoField*)task->task_error;
450
+ error["ErrorID"] = task_error->ErrorID;
451
+ error["ErrorMsg"] = toUtf(task_error->ErrorMsg);
452
+ delete task_error;
453
+ }
454
+ this->onRspSubForQuoteRsp(data, error, task->task_id, task->task_last);
455
+ };
456
+
457
+ void MdApi::processRspUnSubForQuoteRsp(Task *task)
458
+ {
459
+ gil_scoped_acquire acquire;
460
+ dict data;
461
+ if (task->task_data)
462
+ {
463
+ CThostFtdcSpecificInstrumentField *task_data = (CThostFtdcSpecificInstrumentField*)task->task_data;
464
+ data["InstrumentID"] = toUtf(task_data->InstrumentID);
465
+ delete task_data;
466
+ }
467
+ dict error;
468
+ if (task->task_error)
469
+ {
470
+ CThostFtdcRspInfoField *task_error = (CThostFtdcRspInfoField*)task->task_error;
471
+ error["ErrorID"] = task_error->ErrorID;
472
+ error["ErrorMsg"] = toUtf(task_error->ErrorMsg);
473
+ delete task_error;
474
+ }
475
+ this->onRspUnSubForQuoteRsp(data, error, task->task_id, task->task_last);
476
+ };
477
+
478
+ void MdApi::processRtnDepthMarketData(Task *task)
479
+ {
480
+ gil_scoped_acquire acquire;
481
+ dict data;
482
+ if (task->task_data)
483
+ {
484
+ CThostFtdcDepthMarketDataField *task_data = (CThostFtdcDepthMarketDataField*)task->task_data;
485
+ data["TradingDay"] = toUtf(task_data->TradingDay);
486
+ data["InstrumentID"] = toUtf(task_data->InstrumentID);
487
+ data["ExchangeID"] = toUtf(task_data->ExchangeID);
488
+ data["ExchangeInstID"] = toUtf(task_data->ExchangeInstID);
489
+ data["LastPrice"] = task_data->LastPrice;
490
+ data["PreSettlementPrice"] = task_data->PreSettlementPrice;
491
+ data["PreClosePrice"] = task_data->PreClosePrice;
492
+ data["PreOpenInterest"] = task_data->PreOpenInterest;
493
+ data["OpenPrice"] = task_data->OpenPrice;
494
+ data["HighestPrice"] = task_data->HighestPrice;
495
+ data["LowestPrice"] = task_data->LowestPrice;
496
+ data["Volume"] = task_data->Volume;
497
+ data["Turnover"] = task_data->Turnover;
498
+ data["OpenInterest"] = task_data->OpenInterest;
499
+ data["ClosePrice"] = task_data->ClosePrice;
500
+ data["SettlementPrice"] = task_data->SettlementPrice;
501
+ data["UpperLimitPrice"] = task_data->UpperLimitPrice;
502
+ data["LowerLimitPrice"] = task_data->LowerLimitPrice;
503
+ data["PreDelta"] = task_data->PreDelta;
504
+ data["CurrDelta"] = task_data->CurrDelta;
505
+ data["UpdateTime"] = toUtf(task_data->UpdateTime);
506
+ data["UpdateMillisec"] = task_data->UpdateMillisec;
507
+ data["BidPrice1"] = task_data->BidPrice1;
508
+ data["BidVolume1"] = task_data->BidVolume1;
509
+ data["AskPrice1"] = task_data->AskPrice1;
510
+ data["AskVolume1"] = task_data->AskVolume1;
511
+ data["BidPrice2"] = task_data->BidPrice2;
512
+ data["BidVolume2"] = task_data->BidVolume2;
513
+ data["AskPrice2"] = task_data->AskPrice2;
514
+ data["AskVolume2"] = task_data->AskVolume2;
515
+ data["BidPrice3"] = task_data->BidPrice3;
516
+ data["BidVolume3"] = task_data->BidVolume3;
517
+ data["AskPrice3"] = task_data->AskPrice3;
518
+ data["AskVolume3"] = task_data->AskVolume3;
519
+ data["BidPrice4"] = task_data->BidPrice4;
520
+ data["BidVolume4"] = task_data->BidVolume4;
521
+ data["AskPrice4"] = task_data->AskPrice4;
522
+ data["AskVolume4"] = task_data->AskVolume4;
523
+ data["BidPrice5"] = task_data->BidPrice5;
524
+ data["BidVolume5"] = task_data->BidVolume5;
525
+ data["AskPrice5"] = task_data->AskPrice5;
526
+ data["AskVolume5"] = task_data->AskVolume5;
527
+ data["AveragePrice"] = task_data->AveragePrice;
528
+ data["ActionDay"] = toUtf(task_data->ActionDay);
529
+ data["BandingUpperPrice"] = task_data->BandingUpperPrice;
530
+ data["BandingLowerPrice"] = task_data->BandingLowerPrice;
531
+ delete task_data;
532
+ }
533
+ this->onRtnDepthMarketData(data);
534
+ };
535
+
536
+ void MdApi::processRtnMBLMarketData(Task *task)
537
+ {
538
+ gil_scoped_acquire acquire;
539
+ dict data;
540
+ if (task->task_data)
541
+ {
542
+ CThostFtdcMBLMarketDataField *task_data = (CThostFtdcMBLMarketDataField*)task->task_data;
543
+ data["InstrumentID"] = toUtf(task_data->InstrumentID);
544
+ data["ExchangeID"] = toUtf(task_data->ExchangeID);
545
+ data["Direction"] = task_data->Direction;
546
+ data["Price"] = task_data->Price;
547
+ data["Volume"] = task_data->Volume;
548
+ delete task_data;
549
+ }
550
+ this->onRtnMBLMarketData(data);
551
+ };
552
+
553
+ void MdApi::processRtnForQuoteRsp(Task *task)
554
+ {
555
+ gil_scoped_acquire acquire;
556
+ dict data;
557
+ if (task->task_data)
558
+ {
559
+ CThostFtdcForQuoteRspField *task_data = (CThostFtdcForQuoteRspField*)task->task_data;
560
+ data["TradingDay"] = toUtf(task_data->TradingDay);
561
+ data["InstrumentID"] = toUtf(task_data->InstrumentID);
562
+ data["ForQuoteSysID"] = toUtf(task_data->ForQuoteSysID);
563
+ data["ForQuoteTime"] = toUtf(task_data->ForQuoteTime);
564
+ data["ActionDay"] = toUtf(task_data->ActionDay);
565
+ data["ExchangeID"] = toUtf(task_data->ExchangeID);
566
+ delete task_data;
567
+ }
568
+ this->onRtnForQuoteRsp(data);
569
+ };
570
+
571
+
572
+ ///-------------------------------------------------------------------------------------
573
+ ///��������
574
+ ///-------------------------------------------------------------------------------------
575
+
576
+ void MdApi::createFtdcMdApi(string pszFlowPath)
577
+ {
578
+ this->api = CThostFtdcMdApi::CreateFtdcMdApi(pszFlowPath.c_str());
579
+ this->api->RegisterSpi(this);
580
+ };
581
+
582
+ void MdApi::release()
583
+ {
584
+ this->api->Release();
585
+ };
586
+
587
+ void MdApi::init()
588
+ {
589
+ this->active = true;
590
+ this->task_thread = thread(&MdApi::processTask, this);
591
+
592
+ this->api->Init();
593
+ };
594
+
595
+ int MdApi::join()
596
+ {
597
+ int i = this->api->Join();
598
+ return i;
599
+ };
600
+
601
+ int MdApi::exit()
602
+ {
603
+ this->active = false;
604
+ this->task_queue.terminate();
605
+ this->task_thread.join();
606
+
607
+ this->api->RegisterSpi(NULL);
608
+ this->api->Release();
609
+ this->api = NULL;
610
+ return 1;
611
+ };
612
+
613
+ string MdApi::getTradingDay()
614
+ {
615
+ string day = this->api->GetTradingDay();
616
+ return day;
617
+ };
618
+
619
+ void MdApi::registerFront(string pszFrontAddress)
620
+ {
621
+ this->api->RegisterFront((char*)pszFrontAddress.c_str());
622
+ };
623
+
624
+ int MdApi::subscribeMarketData(string instrumentID)
625
+ {
626
+ char* buffer = (char*) instrumentID.c_str();
627
+ char* myreq[1] = { buffer };
628
+ int i = this->api->SubscribeMarketData(myreq, 1);
629
+ return i;
630
+ };
631
+
632
+ int MdApi::unSubscribeMarketData(string instrumentID)
633
+ {
634
+ char* buffer = (char*)instrumentID.c_str();
635
+ char* myreq[1] = { buffer };;
636
+ int i = this->api->UnSubscribeMarketData(myreq, 1);
637
+ return i;
638
+ };
639
+
640
+ int MdApi::subscribeForQuoteRsp(string instrumentID)
641
+ {
642
+ char* buffer = (char*)instrumentID.c_str();
643
+ char* myreq[1] = { buffer };
644
+ int i = this->api->SubscribeForQuoteRsp(myreq, 1);
645
+ return i;
646
+ };
647
+
648
+ int MdApi::unSubscribeForQuoteRsp(string instrumentID)
649
+ {
650
+ char* buffer = (char*)instrumentID.c_str();
651
+ char* myreq[1] = { buffer };;
652
+ int i = this->api->UnSubscribeForQuoteRsp(myreq, 1);
653
+ return i;
654
+ };
655
+ int MdApi::reqUserLogin(const dict &req, int reqid)
656
+ {
657
+ CThostFtdcReqUserLoginField myreq = CThostFtdcReqUserLoginField();
658
+ memset(&myreq, 0, sizeof(myreq));
659
+ getString(req, "TradingDay", myreq.TradingDay);
660
+ getString(req, "BrokerID", myreq.BrokerID);
661
+ getString(req, "UserID", myreq.UserID);
662
+ getString(req, "Password", myreq.Password);
663
+ getString(req, "UserProductInfo", myreq.UserProductInfo);
664
+ getString(req, "InterfaceProductInfo", myreq.InterfaceProductInfo);
665
+ getString(req, "ProtocolInfo", myreq.ProtocolInfo);
666
+ getString(req, "MacAddress", myreq.MacAddress);
667
+ getString(req, "OneTimePassword", myreq.OneTimePassword);
668
+ getString(req, "ClientIPAddress", myreq.ClientIPAddress);
669
+ getString(req, "LoginRemark", myreq.LoginRemark);
670
+ int i = this->api->ReqUserLogin(&myreq, reqid);
671
+ return i;
672
+ };
673
+
674
+ int MdApi::reqUserLogout(const dict &req, int reqid)
675
+ {
676
+ CThostFtdcUserLogoutField myreq = CThostFtdcUserLogoutField();
677
+ memset(&myreq, 0, sizeof(myreq));
678
+ getString(req, "BrokerID", myreq.BrokerID);
679
+ getString(req, "UserID", myreq.UserID);
680
+ int i = this->api->ReqUserLogout(&myreq, reqid);
681
+ return i;
682
+ };
683
+
684
+ ///-------------------------------------------------------------------------------------
685
+ ///Boost.Python��װ
686
+ ///-------------------------------------------------------------------------------------
687
+
688
+ class PyMdApi: public MdApi
689
+ {
690
+ public:
691
+ using MdApi::MdApi;
692
+
693
+ void onFrontConnected() override
694
+ {
695
+ try
696
+ {
697
+ PYBIND11_OVERLOAD(void, MdApi, onFrontConnected);
698
+ }
699
+ catch (const error_already_set &e)
700
+ {
701
+ cout << e.what() << endl;
702
+ }
703
+ };
704
+
705
+ void onFrontDisconnected(int reqid) override
706
+ {
707
+ try
708
+ {
709
+ PYBIND11_OVERLOAD(void, MdApi, onFrontDisconnected, reqid);
710
+ }
711
+ catch (const error_already_set &e)
712
+ {
713
+ cout << e.what() << endl;
714
+ }
715
+ };
716
+
717
+ void onHeartBeatWarning(int reqid) override
718
+ {
719
+ try
720
+ {
721
+ PYBIND11_OVERLOAD(void, MdApi, onHeartBeatWarning, reqid);
722
+ }
723
+ catch (const error_already_set &e)
724
+ {
725
+ cout << e.what() << endl;
726
+ }
727
+ };
728
+
729
+ void onRspUserLogin(const dict &data, const dict &error, int reqid, bool last) override
730
+ {
731
+ try
732
+ {
733
+ PYBIND11_OVERLOAD(void, MdApi, onRspUserLogin, data, error, reqid, last);
734
+ }
735
+ catch (const error_already_set &e)
736
+ {
737
+ cout << e.what() << endl;
738
+ }
739
+ };
740
+
741
+ void onRspUserLogout(const dict &data, const dict &error, int reqid, bool last) override
742
+ {
743
+ try
744
+ {
745
+ PYBIND11_OVERLOAD(void, MdApi, onRspUserLogout, data, error, reqid, last);
746
+ }
747
+ catch (const error_already_set &e)
748
+ {
749
+ cout << e.what() << endl;
750
+ }
751
+ };
752
+
753
+ void onRspError(const dict &error, int reqid, bool last) override
754
+ {
755
+ try
756
+ {
757
+ PYBIND11_OVERLOAD(void, MdApi, onRspError, error, reqid, last);
758
+ }
759
+ catch (const error_already_set &e)
760
+ {
761
+ cout << e.what() << endl;
762
+ }
763
+ };
764
+
765
+ void onRspSubMarketData(const dict &data, const dict &error, int reqid, bool last) override
766
+ {
767
+ try
768
+ {
769
+ PYBIND11_OVERLOAD(void, MdApi, onRspSubMarketData, data, error, reqid, last);
770
+ }
771
+ catch (const error_already_set &e)
772
+ {
773
+ cout << e.what() << endl;
774
+ }
775
+ };
776
+
777
+ void onRspUnSubMarketData(const dict &data, const dict &error, int reqid, bool last) override
778
+ {
779
+ try
780
+ {
781
+ PYBIND11_OVERLOAD(void, MdApi, onRspUnSubMarketData, data, error, reqid, last);
782
+ }
783
+ catch (const error_already_set &e)
784
+ {
785
+ cout << e.what() << endl;
786
+ }
787
+ };
788
+
789
+ void onRspSubForQuoteRsp(const dict &data, const dict &error, int reqid, bool last) override
790
+ {
791
+ try
792
+ {
793
+ PYBIND11_OVERLOAD(void, MdApi, onRspSubForQuoteRsp, data, error, reqid, last);
794
+ }
795
+ catch (const error_already_set &e)
796
+ {
797
+ cout << e.what() << endl;
798
+ }
799
+ };
800
+
801
+ void onRspUnSubForQuoteRsp(const dict &data, const dict &error, int reqid, bool last) override
802
+ {
803
+ try
804
+ {
805
+ PYBIND11_OVERLOAD(void, MdApi, onRspUnSubForQuoteRsp, data, error, reqid, last);
806
+ }
807
+ catch (const error_already_set &e)
808
+ {
809
+ cout << e.what() << endl;
810
+ }
811
+ };
812
+
813
+ void onRtnDepthMarketData(const dict &data) override
814
+ {
815
+ try
816
+ {
817
+ PYBIND11_OVERLOAD(void, MdApi, onRtnDepthMarketData, data);
818
+ }
819
+ catch (const error_already_set &e)
820
+ {
821
+ cout << e.what() << endl;
822
+ }
823
+ };
824
+
825
+ void onRtnMBLMarketData(const dict &data) override
826
+ {
827
+ try
828
+ {
829
+ PYBIND11_OVERLOAD(void, MdApi, onRtnMBLMarketData, data);
830
+ }
831
+ catch (const error_already_set &e)
832
+ {
833
+ cout << e.what() << endl;
834
+ }
835
+ };
836
+
837
+ void onRtnForQuoteRsp(const dict &data) override
838
+ {
839
+ try
840
+ {
841
+ PYBIND11_OVERLOAD(void, MdApi, onRtnForQuoteRsp, data);
842
+ }
843
+ catch (const error_already_set &e)
844
+ {
845
+ cout << e.what() << endl;
846
+ }
847
+ };
848
+
849
+
850
+ };
851
+
852
+ PYBIND11_MODULE(vnctp_minimd, m)
853
+ {
854
+ class_<MdApi, PyMdApi> mdapi(m, "MdApi", module_local());
855
+ mdapi
856
+ .def(init<>())
857
+ .def("createFtdcMdApi", &MdApi::createFtdcMdApi)
858
+ .def("release", &MdApi::release)
859
+ .def("init", &MdApi::init)
860
+ .def("join", &MdApi::join)
861
+ .def("exit", &MdApi::exit)
862
+ .def("getTradingDay", &MdApi::getTradingDay)
863
+ .def("registerFront", &MdApi::registerFront)
864
+ .def("subscribeMarketData", &MdApi::subscribeMarketData)
865
+ .def("unSubscribeMarketData", &MdApi::unSubscribeMarketData)
866
+ .def("subscribeForQuoteRsp", &MdApi::subscribeForQuoteRsp)
867
+ .def("unSubscribeForQuoteRsp", &MdApi::unSubscribeForQuoteRsp)
868
+ .def("reqUserLogin", &MdApi::reqUserLogin)
869
+ .def("reqUserLogout", &MdApi::reqUserLogout)
870
+
871
+ .def("onFrontConnected", &MdApi::onFrontConnected)
872
+ .def("onFrontDisconnected", &MdApi::onFrontDisconnected)
873
+ .def("onHeartBeatWarning", &MdApi::onHeartBeatWarning)
874
+ .def("onRspUserLogin", &MdApi::onRspUserLogin)
875
+ .def("onRspUserLogout", &MdApi::onRspUserLogout)
876
+ .def("onRspError", &MdApi::onRspError)
877
+ .def("onRspSubMarketData", &MdApi::onRspSubMarketData)
878
+ .def("onRspUnSubMarketData", &MdApi::onRspUnSubMarketData)
879
+ .def("onRspSubForQuoteRsp", &MdApi::onRspSubForQuoteRsp)
880
+ .def("onRspUnSubForQuoteRsp", &MdApi::onRspUnSubForQuoteRsp)
881
+ .def("onRtnDepthMarketData", &MdApi::onRtnDepthMarketData)
882
+ .def("onRtnMBLMarketData", &MdApi::onRtnMBLMarketData)
883
+ .def("onRtnForQuoteRsp", &MdApi::onRtnForQuoteRsp)
884
+ ;
885
+
886
+ }