ctpbee-opt-api 0.1.0__cp311-cp311-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.cp311-win_amd64.pyd +0 -0
  160. ctpbee_api/ctp/vnctptd.cp311-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.cp311-win_amd64.pyd +0 -0
  281. ctpbee_api/ctp_mini/vnctp_minitd.cp311-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.cp311-win_amd64.pyd +0 -0
  410. ctpbee_api/rohon/vnrohontd.cp311-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,931 @@
1
+ // vnctpmd.cpp : ���� DLL Ӧ�ó���ĵ���������
2
+ //
3
+
4
+ #include "vnrohonmd.h"
5
+
6
+
7
+ ///-------------------------------------------------------------------------------------
8
+ ///C++�Ļص����������ݱ��浽������
9
+ ///-------------------------------------------------------------------------------------
10
+
11
+ void MdApi::OnFrontConnected()
12
+ {
13
+ Task task = Task();
14
+ task.task_name = ONFRONTCONNECTED;
15
+ this->task_queue.push(task);
16
+ };
17
+
18
+ void MdApi::OnFrontDisconnected(int nReason)
19
+ {
20
+ Task task = Task();
21
+ task.task_name = ONFRONTDISCONNECTED;
22
+ task.task_id = nReason;
23
+ this->task_queue.push(task);
24
+ };
25
+
26
+ void MdApi::OnHeartBeatWarning(int nTimeLapse)
27
+ {
28
+ Task task = Task();
29
+ task.task_name = ONHEARTBEATWARNING;
30
+ task.task_id = nTimeLapse;
31
+ this->task_queue.push(task);
32
+ };
33
+
34
+ void MdApi::OnRspUserLogin(CThostFtdcRspUserLoginField *pRspUserLogin, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
35
+ {
36
+ Task task = Task();
37
+ task.task_name = ONRSPUSERLOGIN;
38
+ if (pRspUserLogin)
39
+ {
40
+ CThostFtdcRspUserLoginField *task_data = new CThostFtdcRspUserLoginField();
41
+ *task_data = *pRspUserLogin;
42
+ task.task_data = task_data;
43
+ }
44
+ if (pRspInfo)
45
+ {
46
+ CThostFtdcRspInfoField *task_error = new CThostFtdcRspInfoField();
47
+ *task_error = *pRspInfo;
48
+ task.task_error = task_error;
49
+ }
50
+ task.task_id = nRequestID;
51
+ task.task_last = bIsLast;
52
+ this->task_queue.push(task);
53
+ };
54
+
55
+ void MdApi::OnRspUserLogout(CThostFtdcUserLogoutField *pUserLogout, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
56
+ {
57
+ Task task = Task();
58
+ task.task_name = ONRSPUSERLOGOUT;
59
+ if (pUserLogout)
60
+ {
61
+ CThostFtdcUserLogoutField *task_data = new CThostFtdcUserLogoutField();
62
+ *task_data = *pUserLogout;
63
+ task.task_data = task_data;
64
+ }
65
+ if (pRspInfo)
66
+ {
67
+ CThostFtdcRspInfoField *task_error = new CThostFtdcRspInfoField();
68
+ *task_error = *pRspInfo;
69
+ task.task_error = task_error;
70
+ }
71
+ task.task_id = nRequestID;
72
+ task.task_last = bIsLast;
73
+ this->task_queue.push(task);
74
+ };
75
+
76
+ void MdApi::OnRspQryMulticastInstrument(CThostFtdcMulticastInstrumentField *pMulticastInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
77
+ {
78
+ Task task = Task();
79
+ task.task_name = ONRSPQRYMULTICASTINSTRUMENT;
80
+ if (pMulticastInstrument)
81
+ {
82
+ CThostFtdcMulticastInstrumentField *task_data = new CThostFtdcMulticastInstrumentField();
83
+ *task_data = *pMulticastInstrument;
84
+ task.task_data = task_data;
85
+ }
86
+ if (pRspInfo)
87
+ {
88
+ CThostFtdcRspInfoField *task_error = new CThostFtdcRspInfoField();
89
+ *task_error = *pRspInfo;
90
+ task.task_error = task_error;
91
+ }
92
+ task.task_id = nRequestID;
93
+ task.task_last = bIsLast;
94
+ this->task_queue.push(task);
95
+ };
96
+
97
+ void MdApi::OnRspError(CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
98
+ {
99
+ Task task = Task();
100
+ task.task_name = ONRSPERROR;
101
+ if (pRspInfo)
102
+ {
103
+ CThostFtdcRspInfoField *task_error = new CThostFtdcRspInfoField();
104
+ *task_error = *pRspInfo;
105
+ task.task_error = task_error;
106
+ }
107
+ task.task_id = nRequestID;
108
+ task.task_last = bIsLast;
109
+ this->task_queue.push(task);
110
+ };
111
+
112
+ void MdApi::OnRspSubMarketData(CThostFtdcSpecificInstrumentField *pSpecificInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
113
+ {
114
+ Task task = Task();
115
+ task.task_name = ONRSPSUBMARKETDATA;
116
+ if (pSpecificInstrument)
117
+ {
118
+ CThostFtdcSpecificInstrumentField *task_data = new CThostFtdcSpecificInstrumentField();
119
+ *task_data = *pSpecificInstrument;
120
+ task.task_data = task_data;
121
+ }
122
+ if (pRspInfo)
123
+ {
124
+ CThostFtdcRspInfoField *task_error = new CThostFtdcRspInfoField();
125
+ *task_error = *pRspInfo;
126
+ task.task_error = task_error;
127
+ }
128
+ task.task_id = nRequestID;
129
+ task.task_last = bIsLast;
130
+ this->task_queue.push(task);
131
+ };
132
+
133
+ void MdApi::OnRspUnSubMarketData(CThostFtdcSpecificInstrumentField *pSpecificInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
134
+ {
135
+ Task task = Task();
136
+ task.task_name = ONRSPUNSUBMARKETDATA;
137
+ if (pSpecificInstrument)
138
+ {
139
+ CThostFtdcSpecificInstrumentField *task_data = new CThostFtdcSpecificInstrumentField();
140
+ *task_data = *pSpecificInstrument;
141
+ task.task_data = task_data;
142
+ }
143
+ if (pRspInfo)
144
+ {
145
+ CThostFtdcRspInfoField *task_error = new CThostFtdcRspInfoField();
146
+ *task_error = *pRspInfo;
147
+ task.task_error = task_error;
148
+ }
149
+ task.task_id = nRequestID;
150
+ task.task_last = bIsLast;
151
+ this->task_queue.push(task);
152
+ };
153
+
154
+ void MdApi::OnRspSubForQuoteRsp(CThostFtdcSpecificInstrumentField *pSpecificInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
155
+ {
156
+ Task task = Task();
157
+ task.task_name = ONRSPSUBFORQUOTERSP;
158
+ if (pSpecificInstrument)
159
+ {
160
+ CThostFtdcSpecificInstrumentField *task_data = new CThostFtdcSpecificInstrumentField();
161
+ *task_data = *pSpecificInstrument;
162
+ task.task_data = task_data;
163
+ }
164
+ if (pRspInfo)
165
+ {
166
+ CThostFtdcRspInfoField *task_error = new CThostFtdcRspInfoField();
167
+ *task_error = *pRspInfo;
168
+ task.task_error = task_error;
169
+ }
170
+ task.task_id = nRequestID;
171
+ task.task_last = bIsLast;
172
+ this->task_queue.push(task);
173
+ };
174
+
175
+ void MdApi::OnRspUnSubForQuoteRsp(CThostFtdcSpecificInstrumentField *pSpecificInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
176
+ {
177
+ Task task = Task();
178
+ task.task_name = ONRSPUNSUBFORQUOTERSP;
179
+ if (pSpecificInstrument)
180
+ {
181
+ CThostFtdcSpecificInstrumentField *task_data = new CThostFtdcSpecificInstrumentField();
182
+ *task_data = *pSpecificInstrument;
183
+ task.task_data = task_data;
184
+ }
185
+ if (pRspInfo)
186
+ {
187
+ CThostFtdcRspInfoField *task_error = new CThostFtdcRspInfoField();
188
+ *task_error = *pRspInfo;
189
+ task.task_error = task_error;
190
+ }
191
+ task.task_id = nRequestID;
192
+ task.task_last = bIsLast;
193
+ this->task_queue.push(task);
194
+ };
195
+
196
+ void MdApi::OnRtnDepthMarketData(CThostFtdcDepthMarketDataField *pDepthMarketData)
197
+ {
198
+ Task task = Task();
199
+ task.task_name = ONRTNDEPTHMARKETDATA;
200
+ if (pDepthMarketData)
201
+ {
202
+ CThostFtdcDepthMarketDataField *task_data = new CThostFtdcDepthMarketDataField();
203
+ *task_data = *pDepthMarketData;
204
+ task.task_data = task_data;
205
+ }
206
+ this->task_queue.push(task);
207
+ };
208
+
209
+ void MdApi::OnRtnForQuoteRsp(CThostFtdcForQuoteRspField *pForQuoteRsp)
210
+ {
211
+ Task task = Task();
212
+ task.task_name = ONRTNFORQUOTERSP;
213
+ if (pForQuoteRsp)
214
+ {
215
+ CThostFtdcForQuoteRspField *task_data = new CThostFtdcForQuoteRspField();
216
+ *task_data = *pForQuoteRsp;
217
+ task.task_data = task_data;
218
+ }
219
+ this->task_queue.push(task);
220
+ };
221
+
222
+
223
+
224
+
225
+ ///-------------------------------------------------------------------------------------
226
+ ///�����̴߳Ӷ�����ȡ�����ݣ�ת��Ϊpython����󣬽�������
227
+ ///-------------------------------------------------------------------------------------
228
+
229
+ void MdApi::processTask()
230
+ {
231
+ try
232
+ {
233
+ while (this->active)
234
+ {
235
+ Task task = this->task_queue.pop();
236
+
237
+ switch (task.task_name)
238
+ {
239
+ case ONFRONTCONNECTED:
240
+ {
241
+ this->processFrontConnected(&task);
242
+ break;
243
+ }
244
+
245
+ case ONFRONTDISCONNECTED:
246
+ {
247
+ this->processFrontDisconnected(&task);
248
+ break;
249
+ }
250
+
251
+ case ONHEARTBEATWARNING:
252
+ {
253
+ this->processHeartBeatWarning(&task);
254
+ break;
255
+ }
256
+
257
+ case ONRSPUSERLOGIN:
258
+ {
259
+ this->processRspUserLogin(&task);
260
+ break;
261
+ }
262
+
263
+ case ONRSPUSERLOGOUT:
264
+ {
265
+ this->processRspUserLogout(&task);
266
+ break;
267
+ }
268
+
269
+ case ONRSPQRYMULTICASTINSTRUMENT:
270
+ {
271
+ this->processRspQryMulticastInstrument(&task);
272
+ break;
273
+ }
274
+
275
+ case ONRSPERROR:
276
+ {
277
+ this->processRspError(&task);
278
+ break;
279
+ }
280
+
281
+ case ONRSPSUBMARKETDATA:
282
+ {
283
+ this->processRspSubMarketData(&task);
284
+ break;
285
+ }
286
+
287
+ case ONRSPUNSUBMARKETDATA:
288
+ {
289
+ this->processRspUnSubMarketData(&task);
290
+ break;
291
+ }
292
+
293
+ case ONRSPSUBFORQUOTERSP:
294
+ {
295
+ this->processRspSubForQuoteRsp(&task);
296
+ break;
297
+ }
298
+
299
+ case ONRSPUNSUBFORQUOTERSP:
300
+ {
301
+ this->processRspUnSubForQuoteRsp(&task);
302
+ break;
303
+ }
304
+
305
+ case ONRTNDEPTHMARKETDATA:
306
+ {
307
+ this->processRtnDepthMarketData(&task);
308
+ break;
309
+ }
310
+
311
+ case ONRTNFORQUOTERSP:
312
+ {
313
+ this->processRtnForQuoteRsp(&task);
314
+ break;
315
+ }
316
+
317
+
318
+ };
319
+ }
320
+ }
321
+ catch (const TerminatedError&)
322
+ {
323
+ }
324
+ };
325
+
326
+ void MdApi::processFrontConnected(Task *task)
327
+ {
328
+ gil_scoped_acquire acquire;
329
+ this->onFrontConnected();
330
+ };
331
+
332
+ void MdApi::processFrontDisconnected(Task *task)
333
+ {
334
+ gil_scoped_acquire acquire;
335
+ this->onFrontDisconnected(task->task_id);
336
+ };
337
+
338
+ void MdApi::processHeartBeatWarning(Task *task)
339
+ {
340
+ gil_scoped_acquire acquire;
341
+ this->onHeartBeatWarning(task->task_id);
342
+ };
343
+
344
+ void MdApi::processRspUserLogin(Task *task)
345
+ {
346
+ gil_scoped_acquire acquire;
347
+ dict data;
348
+ if (task->task_data)
349
+ {
350
+ CThostFtdcRspUserLoginField *task_data = (CThostFtdcRspUserLoginField*)task->task_data;
351
+ data["TradingDay"] = toUtf(task_data->TradingDay);
352
+ data["LoginTime"] = toUtf(task_data->LoginTime);
353
+ data["BrokerID"] = toUtf(task_data->BrokerID);
354
+ data["UserID"] = toUtf(task_data->UserID);
355
+ data["SystemName"] = toUtf(task_data->SystemName);
356
+ data["FrontID"] = task_data->FrontID;
357
+ data["SessionID"] = task_data->SessionID;
358
+ data["MaxOrderRef"] = toUtf(task_data->MaxOrderRef);
359
+ data["SHFETime"] = toUtf(task_data->SHFETime);
360
+ data["DCETime"] = toUtf(task_data->DCETime);
361
+ data["CZCETime"] = toUtf(task_data->CZCETime);
362
+ data["FFEXTime"] = toUtf(task_data->FFEXTime);
363
+ data["INETime"] = toUtf(task_data->INETime);
364
+ delete task_data;
365
+ }
366
+ dict error;
367
+ if (task->task_error)
368
+ {
369
+ CThostFtdcRspInfoField *task_error = (CThostFtdcRspInfoField*)task->task_error;
370
+ error["ErrorID"] = task_error->ErrorID;
371
+ error["ErrorMsg"] = toUtf(task_error->ErrorMsg);
372
+ delete task_error;
373
+ }
374
+ this->onRspUserLogin(data, error, task->task_id, task->task_last);
375
+ };
376
+
377
+ void MdApi::processRspUserLogout(Task *task)
378
+ {
379
+ gil_scoped_acquire acquire;
380
+ dict data;
381
+ if (task->task_data)
382
+ {
383
+ CThostFtdcUserLogoutField *task_data = (CThostFtdcUserLogoutField*)task->task_data;
384
+ data["BrokerID"] = toUtf(task_data->BrokerID);
385
+ data["UserID"] = toUtf(task_data->UserID);
386
+ delete task_data;
387
+ }
388
+ dict error;
389
+ if (task->task_error)
390
+ {
391
+ CThostFtdcRspInfoField *task_error = (CThostFtdcRspInfoField*)task->task_error;
392
+ error["ErrorID"] = task_error->ErrorID;
393
+ error["ErrorMsg"] = toUtf(task_error->ErrorMsg);
394
+ delete task_error;
395
+ }
396
+ this->onRspUserLogout(data, error, task->task_id, task->task_last);
397
+ };
398
+
399
+ void MdApi::processRspQryMulticastInstrument(Task *task)
400
+ {
401
+ gil_scoped_acquire acquire;
402
+ dict data;
403
+ if (task->task_data)
404
+ {
405
+ CThostFtdcMulticastInstrumentField *task_data = (CThostFtdcMulticastInstrumentField*)task->task_data;
406
+ data["TopicID"] = task_data->TopicID;
407
+ data["InstrumentID"] = toUtf(task_data->InstrumentID);
408
+ data["InstrumentNo"] = task_data->InstrumentNo;
409
+ data["CodePrice"] = task_data->CodePrice;
410
+ data["VolumeMultiple"] = task_data->VolumeMultiple;
411
+ data["PriceTick"] = task_data->PriceTick;
412
+ delete task_data;
413
+ }
414
+ dict error;
415
+ if (task->task_error)
416
+ {
417
+ CThostFtdcRspInfoField *task_error = (CThostFtdcRspInfoField*)task->task_error;
418
+ error["ErrorID"] = task_error->ErrorID;
419
+ error["ErrorMsg"] = toUtf(task_error->ErrorMsg);
420
+ delete task_error;
421
+ }
422
+ this->onRspQryMulticastInstrument(data, error, task->task_id, task->task_last);
423
+ };
424
+
425
+ void MdApi::processRspError(Task *task)
426
+ {
427
+ gil_scoped_acquire acquire;
428
+ dict error;
429
+ if (task->task_error)
430
+ {
431
+ CThostFtdcRspInfoField *task_error = (CThostFtdcRspInfoField*)task->task_error;
432
+ error["ErrorID"] = task_error->ErrorID;
433
+ error["ErrorMsg"] = toUtf(task_error->ErrorMsg);
434
+ delete task_error;
435
+ }
436
+ this->onRspError(error, task->task_id, task->task_last);
437
+ };
438
+
439
+ void MdApi::processRspSubMarketData(Task *task)
440
+ {
441
+ gil_scoped_acquire acquire;
442
+ dict data;
443
+ if (task->task_data)
444
+ {
445
+ CThostFtdcSpecificInstrumentField *task_data = (CThostFtdcSpecificInstrumentField*)task->task_data;
446
+ data["InstrumentID"] = toUtf(task_data->InstrumentID);
447
+ delete task_data;
448
+ }
449
+ dict error;
450
+ if (task->task_error)
451
+ {
452
+ CThostFtdcRspInfoField *task_error = (CThostFtdcRspInfoField*)task->task_error;
453
+ error["ErrorID"] = task_error->ErrorID;
454
+ error["ErrorMsg"] = toUtf(task_error->ErrorMsg);
455
+ delete task_error;
456
+ }
457
+ this->onRspSubMarketData(data, error, task->task_id, task->task_last);
458
+ };
459
+
460
+ void MdApi::processRspUnSubMarketData(Task *task)
461
+ {
462
+ gil_scoped_acquire acquire;
463
+ dict data;
464
+ if (task->task_data)
465
+ {
466
+ CThostFtdcSpecificInstrumentField *task_data = (CThostFtdcSpecificInstrumentField*)task->task_data;
467
+ data["InstrumentID"] = toUtf(task_data->InstrumentID);
468
+ delete task_data;
469
+ }
470
+ dict error;
471
+ if (task->task_error)
472
+ {
473
+ CThostFtdcRspInfoField *task_error = (CThostFtdcRspInfoField*)task->task_error;
474
+ error["ErrorID"] = task_error->ErrorID;
475
+ error["ErrorMsg"] = toUtf(task_error->ErrorMsg);
476
+ delete task_error;
477
+ }
478
+ this->onRspUnSubMarketData(data, error, task->task_id, task->task_last);
479
+ };
480
+
481
+ void MdApi::processRspSubForQuoteRsp(Task *task)
482
+ {
483
+ gil_scoped_acquire acquire;
484
+ dict data;
485
+ if (task->task_data)
486
+ {
487
+ CThostFtdcSpecificInstrumentField *task_data = (CThostFtdcSpecificInstrumentField*)task->task_data;
488
+ data["InstrumentID"] = toUtf(task_data->InstrumentID);
489
+ delete task_data;
490
+ }
491
+ dict error;
492
+ if (task->task_error)
493
+ {
494
+ CThostFtdcRspInfoField *task_error = (CThostFtdcRspInfoField*)task->task_error;
495
+ error["ErrorID"] = task_error->ErrorID;
496
+ error["ErrorMsg"] = toUtf(task_error->ErrorMsg);
497
+ delete task_error;
498
+ }
499
+ this->onRspSubForQuoteRsp(data, error, task->task_id, task->task_last);
500
+ };
501
+
502
+ void MdApi::processRspUnSubForQuoteRsp(Task *task)
503
+ {
504
+ gil_scoped_acquire acquire;
505
+ dict data;
506
+ if (task->task_data)
507
+ {
508
+ CThostFtdcSpecificInstrumentField *task_data = (CThostFtdcSpecificInstrumentField*)task->task_data;
509
+ data["InstrumentID"] = toUtf(task_data->InstrumentID);
510
+ delete task_data;
511
+ }
512
+ dict error;
513
+ if (task->task_error)
514
+ {
515
+ CThostFtdcRspInfoField *task_error = (CThostFtdcRspInfoField*)task->task_error;
516
+ error["ErrorID"] = task_error->ErrorID;
517
+ error["ErrorMsg"] = toUtf(task_error->ErrorMsg);
518
+ delete task_error;
519
+ }
520
+ this->onRspUnSubForQuoteRsp(data, error, task->task_id, task->task_last);
521
+ };
522
+
523
+ void MdApi::processRtnDepthMarketData(Task *task)
524
+ {
525
+ gil_scoped_acquire acquire;
526
+ dict data;
527
+ if (task->task_data)
528
+ {
529
+ CThostFtdcDepthMarketDataField *task_data = (CThostFtdcDepthMarketDataField*)task->task_data;
530
+ data["TradingDay"] = toUtf(task_data->TradingDay);
531
+ data["InstrumentID"] = toUtf(task_data->InstrumentID);
532
+ data["ExchangeID"] = toUtf(task_data->ExchangeID);
533
+ data["ExchangeInstID"] = toUtf(task_data->ExchangeInstID);
534
+ data["LastPrice"] = task_data->LastPrice;
535
+ data["PreSettlementPrice"] = task_data->PreSettlementPrice;
536
+ data["PreClosePrice"] = task_data->PreClosePrice;
537
+ data["PreOpenInterest"] = task_data->PreOpenInterest;
538
+ data["OpenPrice"] = task_data->OpenPrice;
539
+ data["HighestPrice"] = task_data->HighestPrice;
540
+ data["LowestPrice"] = task_data->LowestPrice;
541
+ data["Volume"] = task_data->Volume;
542
+ data["Turnover"] = task_data->Turnover;
543
+ data["OpenInterest"] = task_data->OpenInterest;
544
+ data["ClosePrice"] = task_data->ClosePrice;
545
+ data["SettlementPrice"] = task_data->SettlementPrice;
546
+ data["UpperLimitPrice"] = task_data->UpperLimitPrice;
547
+ data["LowerLimitPrice"] = task_data->LowerLimitPrice;
548
+ data["PreDelta"] = task_data->PreDelta;
549
+ data["CurrDelta"] = task_data->CurrDelta;
550
+ data["UpdateTime"] = toUtf(task_data->UpdateTime);
551
+ data["UpdateMillisec"] = task_data->UpdateMillisec;
552
+ data["BidPrice1"] = task_data->BidPrice1;
553
+ data["BidVolume1"] = task_data->BidVolume1;
554
+ data["AskPrice1"] = task_data->AskPrice1;
555
+ data["AskVolume1"] = task_data->AskVolume1;
556
+ data["BidPrice2"] = task_data->BidPrice2;
557
+ data["BidVolume2"] = task_data->BidVolume2;
558
+ data["AskPrice2"] = task_data->AskPrice2;
559
+ data["AskVolume2"] = task_data->AskVolume2;
560
+ data["BidPrice3"] = task_data->BidPrice3;
561
+ data["BidVolume3"] = task_data->BidVolume3;
562
+ data["AskPrice3"] = task_data->AskPrice3;
563
+ data["AskVolume3"] = task_data->AskVolume3;
564
+ data["BidPrice4"] = task_data->BidPrice4;
565
+ data["BidVolume4"] = task_data->BidVolume4;
566
+ data["AskPrice4"] = task_data->AskPrice4;
567
+ data["AskVolume4"] = task_data->AskVolume4;
568
+ data["BidPrice5"] = task_data->BidPrice5;
569
+ data["BidVolume5"] = task_data->BidVolume5;
570
+ data["AskPrice5"] = task_data->AskPrice5;
571
+ data["AskVolume5"] = task_data->AskVolume5;
572
+ data["AveragePrice"] = task_data->AveragePrice;
573
+ data["ActionDay"] = toUtf(task_data->ActionDay);
574
+ delete task_data;
575
+ }
576
+ this->onRtnDepthMarketData(data);
577
+ };
578
+
579
+ void MdApi::processRtnForQuoteRsp(Task *task)
580
+ {
581
+ gil_scoped_acquire acquire;
582
+ dict data;
583
+ if (task->task_data)
584
+ {
585
+ CThostFtdcForQuoteRspField *task_data = (CThostFtdcForQuoteRspField*)task->task_data;
586
+ data["TradingDay"] = toUtf(task_data->TradingDay);
587
+ data["InstrumentID"] = toUtf(task_data->InstrumentID);
588
+ data["ForQuoteSysID"] = toUtf(task_data->ForQuoteSysID);
589
+ data["ForQuoteTime"] = toUtf(task_data->ForQuoteTime);
590
+ data["ActionDay"] = toUtf(task_data->ActionDay);
591
+ data["ExchangeID"] = toUtf(task_data->ExchangeID);
592
+ delete task_data;
593
+ }
594
+ this->onRtnForQuoteRsp(data);
595
+ };
596
+
597
+
598
+
599
+ ///-------------------------------------------------------------------------------------
600
+ ///��������
601
+ ///-------------------------------------------------------------------------------------
602
+
603
+ void MdApi::createFtdcMdApi(string pszFlowPath)
604
+ {
605
+ this->api = CThostFtdcMdApi::CreateFtdcMdApi(pszFlowPath.c_str());
606
+ this->api->RegisterSpi(this);
607
+ };
608
+
609
+ void MdApi::release()
610
+ {
611
+ this->api->Release();
612
+ };
613
+
614
+ void MdApi::init()
615
+ {
616
+ this->active = true;
617
+ this->task_thread = thread(&MdApi::processTask, this);
618
+
619
+ this->api->Init();
620
+ };
621
+
622
+ int MdApi::join()
623
+ {
624
+ int i = this->api->Join();
625
+ return i;
626
+ };
627
+
628
+ int MdApi::exit()
629
+ {
630
+ this->active = false;
631
+ this->task_queue.terminate();
632
+ this->task_thread.join();
633
+
634
+ this->api->RegisterSpi(NULL);
635
+ this->api->Release();
636
+ this->api = NULL;
637
+ return 1;
638
+ };
639
+
640
+ string MdApi::getTradingDay()
641
+ {
642
+ string day = this->api->GetTradingDay();
643
+ return day;
644
+ };
645
+
646
+ void MdApi::registerFront(string pszFrontAddress)
647
+ {
648
+ this->api->RegisterFront((char*)pszFrontAddress.c_str());
649
+ };
650
+
651
+ int MdApi::subscribeMarketData(string instrumentID)
652
+ {
653
+ char* buffer = (char*) instrumentID.c_str();
654
+ char* myreq[1] = { buffer };
655
+ int i = this->api->SubscribeMarketData(myreq, 1);
656
+ return i;
657
+ };
658
+
659
+ int MdApi::unSubscribeMarketData(string instrumentID)
660
+ {
661
+ char* buffer = (char*)instrumentID.c_str();
662
+ char* myreq[1] = { buffer };;
663
+ int i = this->api->UnSubscribeMarketData(myreq, 1);
664
+ return i;
665
+ };
666
+
667
+ int MdApi::subscribeForQuoteRsp(string instrumentID)
668
+ {
669
+ char* buffer = (char*)instrumentID.c_str();
670
+ char* myreq[1] = { buffer };
671
+ int i = this->api->SubscribeForQuoteRsp(myreq, 1);
672
+ return i;
673
+ };
674
+
675
+ int MdApi::unSubscribeForQuoteRsp(string instrumentID)
676
+ {
677
+ char* buffer = (char*)instrumentID.c_str();
678
+ char* myreq[1] = { buffer };;
679
+ int i = this->api->UnSubscribeForQuoteRsp(myreq, 1);
680
+ return i;
681
+ };
682
+
683
+ int MdApi::reqUserLogin(const dict &req, int reqid)
684
+ {
685
+ CThostFtdcReqUserLoginField myreq = CThostFtdcReqUserLoginField();
686
+ memset(&myreq, 0, sizeof(myreq));
687
+ getString(req, "TradingDay", myreq.TradingDay);
688
+ getString(req, "BrokerID", myreq.BrokerID);
689
+ getString(req, "UserID", myreq.UserID);
690
+ getString(req, "Password", myreq.Password);
691
+ getString(req, "UserProductInfo", myreq.UserProductInfo);
692
+ getString(req, "InterfaceProductInfo", myreq.InterfaceProductInfo);
693
+ getString(req, "ProtocolInfo", myreq.ProtocolInfo);
694
+ getString(req, "MacAddress", myreq.MacAddress);
695
+ getString(req, "OneTimePassword", myreq.OneTimePassword);
696
+ getString(req, "ClientIPAddress", myreq.ClientIPAddress);
697
+ getString(req, "LoginRemark", myreq.LoginRemark);
698
+ getInt(req, "ClientIPPort", &myreq.ClientIPPort);
699
+ int i = this->api->ReqUserLogin(&myreq, reqid);
700
+ return i;
701
+ };
702
+
703
+ int MdApi::reqUserLogout(const dict &req, int reqid)
704
+ {
705
+ CThostFtdcUserLogoutField myreq = CThostFtdcUserLogoutField();
706
+ memset(&myreq, 0, sizeof(myreq));
707
+ getString(req, "BrokerID", myreq.BrokerID);
708
+ getString(req, "UserID", myreq.UserID);
709
+ int i = this->api->ReqUserLogout(&myreq, reqid);
710
+ return i;
711
+ };
712
+
713
+ int MdApi::reqQryMulticastInstrument(const dict &req, int reqid)
714
+ {
715
+ CThostFtdcQryMulticastInstrumentField myreq = CThostFtdcQryMulticastInstrumentField();
716
+ memset(&myreq, 0, sizeof(myreq));
717
+ getInt(req, "TopicID", &myreq.TopicID);
718
+ getString(req, "InstrumentID", myreq.InstrumentID);
719
+ int i = this->api->ReqQryMulticastInstrument(&myreq, reqid);
720
+ return i;
721
+ };
722
+
723
+
724
+
725
+
726
+
727
+ ///-------------------------------------------------------------------------------------
728
+ ///Boost.Python��װ
729
+ ///-------------------------------------------------------------------------------------
730
+
731
+ class PyMdApi: public MdApi
732
+ {
733
+ public:
734
+ using MdApi::MdApi;
735
+
736
+ void onFrontConnected() override
737
+ {
738
+ try
739
+ {
740
+ PYBIND11_OVERLOAD(void, MdApi, onFrontConnected);
741
+ }
742
+ catch (const error_already_set &e)
743
+ {
744
+ cout << e.what() << endl;
745
+ }
746
+ };
747
+
748
+ void onFrontDisconnected(int reqid) override
749
+ {
750
+ try
751
+ {
752
+ PYBIND11_OVERLOAD(void, MdApi, onFrontDisconnected, reqid);
753
+ }
754
+ catch (const error_already_set &e)
755
+ {
756
+ cout << e.what() << endl;
757
+ }
758
+ };
759
+
760
+ void onHeartBeatWarning(int reqid) override
761
+ {
762
+ try
763
+ {
764
+ PYBIND11_OVERLOAD(void, MdApi, onHeartBeatWarning, reqid);
765
+ }
766
+ catch (const error_already_set &e)
767
+ {
768
+ cout << e.what() << endl;
769
+ }
770
+ };
771
+
772
+ void onRspUserLogin(const dict &data, const dict &error, int reqid, bool last) override
773
+ {
774
+ try
775
+ {
776
+ PYBIND11_OVERLOAD(void, MdApi, onRspUserLogin, data, error, reqid, last);
777
+ }
778
+ catch (const error_already_set &e)
779
+ {
780
+ cout << e.what() << endl;
781
+ }
782
+ };
783
+
784
+ void onRspUserLogout(const dict &data, const dict &error, int reqid, bool last) override
785
+ {
786
+ try
787
+ {
788
+ PYBIND11_OVERLOAD(void, MdApi, onRspUserLogout, data, error, reqid, last);
789
+ }
790
+ catch (const error_already_set &e)
791
+ {
792
+ cout << e.what() << endl;
793
+ }
794
+ };
795
+
796
+ void onRspQryMulticastInstrument(const dict &data, const dict &error, int reqid, bool last) override
797
+ {
798
+ try
799
+ {
800
+ PYBIND11_OVERLOAD(void, MdApi, onRspQryMulticastInstrument, data, error, reqid, last);
801
+ }
802
+ catch (const error_already_set &e)
803
+ {
804
+ cout << e.what() << endl;
805
+ }
806
+ };
807
+
808
+ void onRspError(const dict &error, int reqid, bool last) override
809
+ {
810
+ try
811
+ {
812
+ PYBIND11_OVERLOAD(void, MdApi, onRspError, error, reqid, last);
813
+ }
814
+ catch (const error_already_set &e)
815
+ {
816
+ cout << e.what() << endl;
817
+ }
818
+ };
819
+
820
+ void onRspSubMarketData(const dict &data, const dict &error, int reqid, bool last) override
821
+ {
822
+ try
823
+ {
824
+ PYBIND11_OVERLOAD(void, MdApi, onRspSubMarketData, data, error, reqid, last);
825
+ }
826
+ catch (const error_already_set &e)
827
+ {
828
+ cout << e.what() << endl;
829
+ }
830
+ };
831
+
832
+ void onRspUnSubMarketData(const dict &data, const dict &error, int reqid, bool last) override
833
+ {
834
+ try
835
+ {
836
+ PYBIND11_OVERLOAD(void, MdApi, onRspUnSubMarketData, data, error, reqid, last);
837
+ }
838
+ catch (const error_already_set &e)
839
+ {
840
+ cout << e.what() << endl;
841
+ }
842
+ };
843
+
844
+ void onRspSubForQuoteRsp(const dict &data, const dict &error, int reqid, bool last) override
845
+ {
846
+ try
847
+ {
848
+ PYBIND11_OVERLOAD(void, MdApi, onRspSubForQuoteRsp, data, error, reqid, last);
849
+ }
850
+ catch (const error_already_set &e)
851
+ {
852
+ cout << e.what() << endl;
853
+ }
854
+ };
855
+
856
+ void onRspUnSubForQuoteRsp(const dict &data, const dict &error, int reqid, bool last) override
857
+ {
858
+ try
859
+ {
860
+ PYBIND11_OVERLOAD(void, MdApi, onRspUnSubForQuoteRsp, data, error, reqid, last);
861
+ }
862
+ catch (const error_already_set &e)
863
+ {
864
+ cout << e.what() << endl;
865
+ }
866
+ };
867
+
868
+ void onRtnDepthMarketData(const dict &data) override
869
+ {
870
+ try
871
+ {
872
+ PYBIND11_OVERLOAD(void, MdApi, onRtnDepthMarketData, data);
873
+ }
874
+ catch (const error_already_set &e)
875
+ {
876
+ cout << e.what() << endl;
877
+ }
878
+ };
879
+
880
+ void onRtnForQuoteRsp(const dict &data) override
881
+ {
882
+ try
883
+ {
884
+ PYBIND11_OVERLOAD(void, MdApi, onRtnForQuoteRsp, data);
885
+ }
886
+ catch (const error_already_set &e)
887
+ {
888
+ cout << e.what() << endl;
889
+ }
890
+ };
891
+
892
+
893
+ };
894
+
895
+
896
+ PYBIND11_MODULE(vnrohonmd, m)
897
+ {
898
+ class_<MdApi, PyMdApi> mdapi(m, "MdApi", module_local());
899
+ mdapi
900
+ .def(init<>())
901
+ .def("createFtdcMdApi", &MdApi::createFtdcMdApi)
902
+ .def("release", &MdApi::release)
903
+ .def("init", &MdApi::init)
904
+ .def("join", &MdApi::join)
905
+ .def("exit", &MdApi::exit)
906
+ .def("getTradingDay", &MdApi::getTradingDay)
907
+ .def("registerFront", &MdApi::registerFront)
908
+ .def("subscribeMarketData", &MdApi::subscribeMarketData)
909
+ .def("unSubscribeMarketData", &MdApi::unSubscribeMarketData)
910
+ .def("subscribeForQuoteRsp", &MdApi::subscribeForQuoteRsp)
911
+ .def("unSubscribeForQuoteRsp", &MdApi::unSubscribeForQuoteRsp)
912
+ .def("reqUserLogin", &MdApi::reqUserLogin)
913
+ .def("reqUserLogout", &MdApi::reqUserLogout)
914
+ .def("reqQryMulticastInstrument", &MdApi::reqQryMulticastInstrument)
915
+
916
+ .def("onFrontConnected", &MdApi::onFrontConnected)
917
+ .def("onFrontDisconnected", &MdApi::onFrontDisconnected)
918
+ .def("onHeartBeatWarning", &MdApi::onHeartBeatWarning)
919
+ .def("onRspUserLogin", &MdApi::onRspUserLogin)
920
+ .def("onRspUserLogout", &MdApi::onRspUserLogout)
921
+ .def("onRspQryMulticastInstrument", &MdApi::onRspQryMulticastInstrument)
922
+ .def("onRspError", &MdApi::onRspError)
923
+ .def("onRspSubMarketData", &MdApi::onRspSubMarketData)
924
+ .def("onRspUnSubMarketData", &MdApi::onRspUnSubMarketData)
925
+ .def("onRspSubForQuoteRsp", &MdApi::onRspSubForQuoteRsp)
926
+ .def("onRspUnSubForQuoteRsp", &MdApi::onRspUnSubForQuoteRsp)
927
+ .def("onRtnDepthMarketData", &MdApi::onRtnDepthMarketData)
928
+ .def("onRtnForQuoteRsp", &MdApi::onRtnForQuoteRsp)
929
+ ;
930
+
931
+ }