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