akshare 1.16.26__tar.gz → 1.16.29__tar.gz

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 (397) hide show
  1. {akshare-1.16.26 → akshare-1.16.29}/PKG-INFO +1 -1
  2. {akshare-1.16.26 → akshare-1.16.29}/akshare/__init__.py +5 -2
  3. {akshare-1.16.26 → akshare-1.16.29}/akshare/futures/cons.py +120 -12
  4. {akshare-1.16.26 → akshare-1.16.29}/akshare/futures/futures_foreign.py +14 -8
  5. akshare-1.16.29/akshare/futures/futures_hf_em.py +248 -0
  6. {akshare-1.16.26 → akshare-1.16.29}/akshare/futures/futures_hq_sina.py +1 -1
  7. {akshare-1.16.26 → akshare-1.16.29}/akshare/futures/futures_inventory_99.py +3 -3
  8. {akshare-1.16.26 → akshare-1.16.29}/akshare/futures/futures_inventory_em.py +6 -6
  9. {akshare-1.16.26 → akshare-1.16.29}/akshare/futures_derivative/futures_cot_sina.py +3 -1
  10. {akshare-1.16.26 → akshare-1.16.29}/akshare.egg-info/PKG-INFO +1 -1
  11. akshare-1.16.26/akshare/futures/futures_hf_em.py +0 -103
  12. {akshare-1.16.26 → akshare-1.16.29}/LICENSE +0 -0
  13. {akshare-1.16.26 → akshare-1.16.29}/README.md +0 -0
  14. {akshare-1.16.26 → akshare-1.16.29}/akshare/air/__init__.py +0 -0
  15. {akshare-1.16.26 → akshare-1.16.29}/akshare/air/air_hebei.py +0 -0
  16. {akshare-1.16.26 → akshare-1.16.29}/akshare/air/air_zhenqi.py +0 -0
  17. {akshare-1.16.26 → akshare-1.16.29}/akshare/air/cons.py +0 -0
  18. {akshare-1.16.26 → akshare-1.16.29}/akshare/air/crypto.js +0 -0
  19. {akshare-1.16.26 → akshare-1.16.29}/akshare/air/outcrypto.js +0 -0
  20. {akshare-1.16.26 → akshare-1.16.29}/akshare/air/sunrise_tad.py +0 -0
  21. {akshare-1.16.26 → akshare-1.16.29}/akshare/article/__init__.py +0 -0
  22. {akshare-1.16.26 → akshare-1.16.29}/akshare/article/cons.py +0 -0
  23. {akshare-1.16.26 → akshare-1.16.29}/akshare/article/epu_index.py +0 -0
  24. {akshare-1.16.26 → akshare-1.16.29}/akshare/article/ff_factor.py +0 -0
  25. {akshare-1.16.26 → akshare-1.16.29}/akshare/article/fred_md.py +0 -0
  26. {akshare-1.16.26 → akshare-1.16.29}/akshare/article/risk_rv.py +0 -0
  27. {akshare-1.16.26 → akshare-1.16.29}/akshare/bank/__init__.py +0 -0
  28. {akshare-1.16.26 → akshare-1.16.29}/akshare/bank/bank_cbirc_2020.py +0 -0
  29. {akshare-1.16.26 → akshare-1.16.29}/akshare/bank/cons.py +0 -0
  30. {akshare-1.16.26 → akshare-1.16.29}/akshare/bond/__init__.py +0 -0
  31. {akshare-1.16.26 → akshare-1.16.29}/akshare/bond/bond_cb_sina.py +0 -0
  32. {akshare-1.16.26 → akshare-1.16.29}/akshare/bond/bond_cb_ths.py +0 -0
  33. {akshare-1.16.26 → akshare-1.16.29}/akshare/bond/bond_cbond.py +0 -0
  34. {akshare-1.16.26 → akshare-1.16.29}/akshare/bond/bond_china.py +0 -0
  35. {akshare-1.16.26 → akshare-1.16.29}/akshare/bond/bond_china_money.py +0 -0
  36. {akshare-1.16.26 → akshare-1.16.29}/akshare/bond/bond_convert.py +0 -0
  37. {akshare-1.16.26 → akshare-1.16.29}/akshare/bond/bond_em.py +0 -0
  38. {akshare-1.16.26 → akshare-1.16.29}/akshare/bond/bond_info_cm.py +0 -0
  39. {akshare-1.16.26 → akshare-1.16.29}/akshare/bond/bond_issue_cninfo.py +0 -0
  40. {akshare-1.16.26 → akshare-1.16.29}/akshare/bond/bond_nafmii.py +0 -0
  41. {akshare-1.16.26 → akshare-1.16.29}/akshare/bond/bond_summary.py +0 -0
  42. {akshare-1.16.26 → akshare-1.16.29}/akshare/bond/bond_zh_cov.py +0 -0
  43. {akshare-1.16.26 → akshare-1.16.29}/akshare/bond/bond_zh_sina.py +0 -0
  44. {akshare-1.16.26 → akshare-1.16.29}/akshare/bond/cons.py +0 -0
  45. {akshare-1.16.26 → akshare-1.16.29}/akshare/cal/__init__.py +0 -0
  46. {akshare-1.16.26 → akshare-1.16.29}/akshare/cal/rv.py +0 -0
  47. {akshare-1.16.26 → akshare-1.16.29}/akshare/cost/__init__.py +0 -0
  48. {akshare-1.16.26 → akshare-1.16.29}/akshare/cost/cost_living.py +0 -0
  49. {akshare-1.16.26 → akshare-1.16.29}/akshare/crypto/__init__.py +0 -0
  50. {akshare-1.16.26 → akshare-1.16.29}/akshare/crypto/crypto_bitcoin_cme.py +0 -0
  51. {akshare-1.16.26 → akshare-1.16.29}/akshare/crypto/crypto_hold.py +0 -0
  52. {akshare-1.16.26 → akshare-1.16.29}/akshare/currency/__init__.py +0 -0
  53. {akshare-1.16.26 → akshare-1.16.29}/akshare/currency/currency.py +0 -0
  54. {akshare-1.16.26 → akshare-1.16.29}/akshare/currency/currency_china_bank_sina.py +0 -0
  55. {akshare-1.16.26 → akshare-1.16.29}/akshare/currency/currency_safe.py +0 -0
  56. {akshare-1.16.26 → akshare-1.16.29}/akshare/data/__init__.py +0 -0
  57. {akshare-1.16.26 → akshare-1.16.29}/akshare/data/cninfo.js +0 -0
  58. {akshare-1.16.26 → akshare-1.16.29}/akshare/data/crypto_info.zip +0 -0
  59. {akshare-1.16.26 → akshare-1.16.29}/akshare/data/ths.js +0 -0
  60. {akshare-1.16.26 → akshare-1.16.29}/akshare/datasets.py +0 -0
  61. {akshare-1.16.26 → akshare-1.16.29}/akshare/economic/__init__.py +0 -0
  62. {akshare-1.16.26 → akshare-1.16.29}/akshare/economic/cons.py +0 -0
  63. {akshare-1.16.26 → akshare-1.16.29}/akshare/economic/macro_australia.py +0 -0
  64. {akshare-1.16.26 → akshare-1.16.29}/akshare/economic/macro_bank.py +0 -0
  65. {akshare-1.16.26 → akshare-1.16.29}/akshare/economic/macro_canada.py +0 -0
  66. {akshare-1.16.26 → akshare-1.16.29}/akshare/economic/macro_china.py +0 -0
  67. {akshare-1.16.26 → akshare-1.16.29}/akshare/economic/macro_china_hk.py +0 -0
  68. {akshare-1.16.26 → akshare-1.16.29}/akshare/economic/macro_china_nbs.py +0 -0
  69. {akshare-1.16.26 → akshare-1.16.29}/akshare/economic/macro_constitute.py +0 -0
  70. {akshare-1.16.26 → akshare-1.16.29}/akshare/economic/macro_euro.py +0 -0
  71. {akshare-1.16.26 → akshare-1.16.29}/akshare/economic/macro_finance_ths.py +0 -0
  72. {akshare-1.16.26 → akshare-1.16.29}/akshare/economic/macro_germany.py +0 -0
  73. {akshare-1.16.26 → akshare-1.16.29}/akshare/economic/macro_info_ws.py +0 -0
  74. {akshare-1.16.26 → akshare-1.16.29}/akshare/economic/macro_japan.py +0 -0
  75. {akshare-1.16.26 → akshare-1.16.29}/akshare/economic/macro_other.py +0 -0
  76. {akshare-1.16.26 → akshare-1.16.29}/akshare/economic/macro_swiss.py +0 -0
  77. {akshare-1.16.26 → akshare-1.16.29}/akshare/economic/macro_uk.py +0 -0
  78. {akshare-1.16.26 → akshare-1.16.29}/akshare/economic/macro_usa.py +0 -0
  79. {akshare-1.16.26 → akshare-1.16.29}/akshare/economic/marco_cnbs.py +0 -0
  80. {akshare-1.16.26 → akshare-1.16.29}/akshare/energy/__init__.py +0 -0
  81. {akshare-1.16.26 → akshare-1.16.29}/akshare/energy/energy_carbon.py +0 -0
  82. {akshare-1.16.26 → akshare-1.16.29}/akshare/energy/energy_oil_em.py +0 -0
  83. {akshare-1.16.26 → akshare-1.16.29}/akshare/event/__init__.py +0 -0
  84. {akshare-1.16.26 → akshare-1.16.29}/akshare/event/cons.py +0 -0
  85. {akshare-1.16.26 → akshare-1.16.29}/akshare/event/migration.py +0 -0
  86. {akshare-1.16.26 → akshare-1.16.29}/akshare/exceptions.py +0 -0
  87. {akshare-1.16.26 → akshare-1.16.29}/akshare/file_fold/__init__.py +0 -0
  88. {akshare-1.16.26 → akshare-1.16.29}/akshare/file_fold/calendar.json +0 -0
  89. {akshare-1.16.26 → akshare-1.16.29}/akshare/fortune/__init__.py +0 -0
  90. {akshare-1.16.26 → akshare-1.16.29}/akshare/fortune/fortune_500.py +0 -0
  91. {akshare-1.16.26 → akshare-1.16.29}/akshare/fortune/fortune_bloomberg.py +0 -0
  92. {akshare-1.16.26 → akshare-1.16.29}/akshare/fortune/fortune_forbes_500.py +0 -0
  93. {akshare-1.16.26 → akshare-1.16.29}/akshare/fortune/fortune_hurun.py +0 -0
  94. {akshare-1.16.26 → akshare-1.16.29}/akshare/fortune/fortune_xincaifu_500.py +0 -0
  95. {akshare-1.16.26 → akshare-1.16.29}/akshare/fund/__init__.py +0 -0
  96. {akshare-1.16.26 → akshare-1.16.29}/akshare/fund/fund_amac.py +0 -0
  97. {akshare-1.16.26 → akshare-1.16.29}/akshare/fund/fund_announcement.py +0 -0
  98. {akshare-1.16.26 → akshare-1.16.29}/akshare/fund/fund_aum_em.py +0 -0
  99. {akshare-1.16.26 → akshare-1.16.29}/akshare/fund/fund_em.py +0 -0
  100. {akshare-1.16.26 → akshare-1.16.29}/akshare/fund/fund_etf_em.py +0 -0
  101. {akshare-1.16.26 → akshare-1.16.29}/akshare/fund/fund_etf_sina.py +0 -0
  102. {akshare-1.16.26 → akshare-1.16.29}/akshare/fund/fund_etf_ths.py +0 -0
  103. {akshare-1.16.26 → akshare-1.16.29}/akshare/fund/fund_fee_em.py +0 -0
  104. {akshare-1.16.26 → akshare-1.16.29}/akshare/fund/fund_fhsp_em.py +0 -0
  105. {akshare-1.16.26 → akshare-1.16.29}/akshare/fund/fund_init_em.py +0 -0
  106. {akshare-1.16.26 → akshare-1.16.29}/akshare/fund/fund_lof_em.py +0 -0
  107. {akshare-1.16.26 → akshare-1.16.29}/akshare/fund/fund_manager.py +0 -0
  108. {akshare-1.16.26 → akshare-1.16.29}/akshare/fund/fund_portfolio_em.py +0 -0
  109. {akshare-1.16.26 → akshare-1.16.29}/akshare/fund/fund_position_lg.py +0 -0
  110. {akshare-1.16.26 → akshare-1.16.29}/akshare/fund/fund_rank_em.py +0 -0
  111. {akshare-1.16.26 → akshare-1.16.29}/akshare/fund/fund_rating.py +0 -0
  112. {akshare-1.16.26 → akshare-1.16.29}/akshare/fund/fund_report_cninfo.py +0 -0
  113. {akshare-1.16.26 → akshare-1.16.29}/akshare/fund/fund_scale_em.py +0 -0
  114. {akshare-1.16.26 → akshare-1.16.29}/akshare/fund/fund_scale_sina.py +0 -0
  115. {akshare-1.16.26 → akshare-1.16.29}/akshare/fund/fund_xq.py +0 -0
  116. {akshare-1.16.26 → akshare-1.16.29}/akshare/futures/__init__.py +0 -0
  117. {akshare-1.16.26 → akshare-1.16.29}/akshare/futures/cot.py +0 -0
  118. {akshare-1.16.26 → akshare-1.16.29}/akshare/futures/futures_basis.py +0 -0
  119. {akshare-1.16.26 → akshare-1.16.29}/akshare/futures/futures_comex_em.py +0 -0
  120. {akshare-1.16.26 → akshare-1.16.29}/akshare/futures/futures_comm_ctp.py +0 -0
  121. {akshare-1.16.26 → akshare-1.16.29}/akshare/futures/futures_comm_qihuo.py +0 -0
  122. {akshare-1.16.26 → akshare-1.16.29}/akshare/futures/futures_contract_detail.py +0 -0
  123. {akshare-1.16.26 → akshare-1.16.29}/akshare/futures/futures_daily_bar.py +0 -0
  124. {akshare-1.16.26 → akshare-1.16.29}/akshare/futures/futures_hist_em.py +0 -0
  125. {akshare-1.16.26 → akshare-1.16.29}/akshare/futures/futures_index_ccidx.py +0 -0
  126. {akshare-1.16.26 → akshare-1.16.29}/akshare/futures/futures_news_shmet.py +0 -0
  127. {akshare-1.16.26 → akshare-1.16.29}/akshare/futures/futures_roll_yield.py +0 -0
  128. {akshare-1.16.26 → akshare-1.16.29}/akshare/futures/futures_rule.py +0 -0
  129. {akshare-1.16.26 → akshare-1.16.29}/akshare/futures/futures_rule_em.py +0 -0
  130. {akshare-1.16.26 → akshare-1.16.29}/akshare/futures/futures_settlement_price_sgx.py +0 -0
  131. {akshare-1.16.26 → akshare-1.16.29}/akshare/futures/futures_spot_stock_em.py +0 -0
  132. {akshare-1.16.26 → akshare-1.16.29}/akshare/futures/futures_stock_js.py +0 -0
  133. {akshare-1.16.26 → akshare-1.16.29}/akshare/futures/futures_to_spot.py +0 -0
  134. {akshare-1.16.26 → akshare-1.16.29}/akshare/futures/futures_warehouse_receipt.py +0 -0
  135. {akshare-1.16.26 → akshare-1.16.29}/akshare/futures/futures_zh_sina.py +0 -0
  136. {akshare-1.16.26 → akshare-1.16.29}/akshare/futures/receipt.py +0 -0
  137. {akshare-1.16.26 → akshare-1.16.29}/akshare/futures/requests_fun.py +0 -0
  138. {akshare-1.16.26 → akshare-1.16.29}/akshare/futures/symbol_var.py +0 -0
  139. {akshare-1.16.26 → akshare-1.16.29}/akshare/futures_derivative/__init__.py +0 -0
  140. {akshare-1.16.26 → akshare-1.16.29}/akshare/futures_derivative/cons.py +0 -0
  141. {akshare-1.16.26 → akshare-1.16.29}/akshare/futures_derivative/futures_contract_info_cffex.py +0 -0
  142. {akshare-1.16.26 → akshare-1.16.29}/akshare/futures_derivative/futures_contract_info_czce.py +0 -0
  143. {akshare-1.16.26 → akshare-1.16.29}/akshare/futures_derivative/futures_contract_info_dce.py +0 -0
  144. {akshare-1.16.26 → akshare-1.16.29}/akshare/futures_derivative/futures_contract_info_gfex.py +0 -0
  145. {akshare-1.16.26 → akshare-1.16.29}/akshare/futures_derivative/futures_contract_info_ine.py +0 -0
  146. {akshare-1.16.26 → akshare-1.16.29}/akshare/futures_derivative/futures_contract_info_shfe.py +0 -0
  147. {akshare-1.16.26 → akshare-1.16.29}/akshare/futures_derivative/futures_hog.py +0 -0
  148. {akshare-1.16.26 → akshare-1.16.29}/akshare/futures_derivative/futures_index_sina.py +0 -0
  149. {akshare-1.16.26 → akshare-1.16.29}/akshare/futures_derivative/futures_spot_sys.py +0 -0
  150. {akshare-1.16.26 → akshare-1.16.29}/akshare/fx/__init__.py +0 -0
  151. {akshare-1.16.26 → akshare-1.16.29}/akshare/fx/cons.py +0 -0
  152. {akshare-1.16.26 → akshare-1.16.29}/akshare/fx/currency_investing.py +0 -0
  153. {akshare-1.16.26 → akshare-1.16.29}/akshare/fx/fx_quote.py +0 -0
  154. {akshare-1.16.26 → akshare-1.16.29}/akshare/fx/fx_quote_baidu.py +0 -0
  155. {akshare-1.16.26 → akshare-1.16.29}/akshare/hf/__init__.py +0 -0
  156. {akshare-1.16.26 → akshare-1.16.29}/akshare/hf/hf_sp500.py +0 -0
  157. {akshare-1.16.26 → akshare-1.16.29}/akshare/index/__init__.py +0 -0
  158. {akshare-1.16.26 → akshare-1.16.29}/akshare/index/cons.py +0 -0
  159. {akshare-1.16.26 → akshare-1.16.29}/akshare/index/index_cflp.py +0 -0
  160. {akshare-1.16.26 → akshare-1.16.29}/akshare/index/index_cni.py +0 -0
  161. {akshare-1.16.26 → akshare-1.16.29}/akshare/index/index_cons.py +0 -0
  162. {akshare-1.16.26 → akshare-1.16.29}/akshare/index/index_cx.py +0 -0
  163. {akshare-1.16.26 → akshare-1.16.29}/akshare/index/index_drewry.py +0 -0
  164. {akshare-1.16.26 → akshare-1.16.29}/akshare/index/index_eri.py +0 -0
  165. {akshare-1.16.26 → akshare-1.16.29}/akshare/index/index_hog.py +0 -0
  166. {akshare-1.16.26 → akshare-1.16.29}/akshare/index/index_kq_fz.py +0 -0
  167. {akshare-1.16.26 → akshare-1.16.29}/akshare/index/index_kq_ss.py +0 -0
  168. {akshare-1.16.26 → akshare-1.16.29}/akshare/index/index_option_qvix.py +0 -0
  169. {akshare-1.16.26 → akshare-1.16.29}/akshare/index/index_research_fund_sw.py +0 -0
  170. {akshare-1.16.26 → akshare-1.16.29}/akshare/index/index_research_sw.py +0 -0
  171. {akshare-1.16.26 → akshare-1.16.29}/akshare/index/index_spot.py +0 -0
  172. {akshare-1.16.26 → akshare-1.16.29}/akshare/index/index_stock_hk.py +0 -0
  173. {akshare-1.16.26 → akshare-1.16.29}/akshare/index/index_stock_us_sina.py +0 -0
  174. {akshare-1.16.26 → akshare-1.16.29}/akshare/index/index_stock_zh.py +0 -0
  175. {akshare-1.16.26 → akshare-1.16.29}/akshare/index/index_stock_zh_csindex.py +0 -0
  176. {akshare-1.16.26 → akshare-1.16.29}/akshare/index/index_sugar.py +0 -0
  177. {akshare-1.16.26 → akshare-1.16.29}/akshare/index/index_sw.py +0 -0
  178. {akshare-1.16.26 → akshare-1.16.29}/akshare/index/index_yw.py +0 -0
  179. {akshare-1.16.26 → akshare-1.16.29}/akshare/index/index_zh_a_scope.py +0 -0
  180. {akshare-1.16.26 → akshare-1.16.29}/akshare/index/index_zh_em.py +0 -0
  181. {akshare-1.16.26 → akshare-1.16.29}/akshare/interest_rate/__init__.py +0 -0
  182. {akshare-1.16.26 → akshare-1.16.29}/akshare/interest_rate/interbank_rate_em.py +0 -0
  183. {akshare-1.16.26 → akshare-1.16.29}/akshare/movie/__init__.py +0 -0
  184. {akshare-1.16.26 → akshare-1.16.29}/akshare/movie/artist_yien.py +0 -0
  185. {akshare-1.16.26 → akshare-1.16.29}/akshare/movie/jm.js +0 -0
  186. {akshare-1.16.26 → akshare-1.16.29}/akshare/movie/movie_yien.py +0 -0
  187. {akshare-1.16.26 → akshare-1.16.29}/akshare/movie/video_yien.py +0 -0
  188. {akshare-1.16.26 → akshare-1.16.29}/akshare/news/__init__.py +0 -0
  189. {akshare-1.16.26 → akshare-1.16.29}/akshare/news/news_baidu.py +0 -0
  190. {akshare-1.16.26 → akshare-1.16.29}/akshare/news/news_cctv.py +0 -0
  191. {akshare-1.16.26 → akshare-1.16.29}/akshare/news/news_stock.py +0 -0
  192. {akshare-1.16.26 → akshare-1.16.29}/akshare/nlp/__init__.py +0 -0
  193. {akshare-1.16.26 → akshare-1.16.29}/akshare/nlp/nlp_interface.py +0 -0
  194. {akshare-1.16.26 → akshare-1.16.29}/akshare/option/__init__.py +0 -0
  195. {akshare-1.16.26 → akshare-1.16.29}/akshare/option/cons.py +0 -0
  196. {akshare-1.16.26 → akshare-1.16.29}/akshare/option/option_comm_qihuo.py +0 -0
  197. {akshare-1.16.26 → akshare-1.16.29}/akshare/option/option_commodity.py +0 -0
  198. {akshare-1.16.26 → akshare-1.16.29}/akshare/option/option_commodity_sina.py +0 -0
  199. {akshare-1.16.26 → akshare-1.16.29}/akshare/option/option_czce.py +0 -0
  200. {akshare-1.16.26 → akshare-1.16.29}/akshare/option/option_daily_stats_sse_szse.py +0 -0
  201. {akshare-1.16.26 → akshare-1.16.29}/akshare/option/option_em.py +0 -0
  202. {akshare-1.16.26 → akshare-1.16.29}/akshare/option/option_finance.py +0 -0
  203. {akshare-1.16.26 → akshare-1.16.29}/akshare/option/option_finance_sina.py +0 -0
  204. {akshare-1.16.26 → akshare-1.16.29}/akshare/option/option_lhb_em.py +0 -0
  205. {akshare-1.16.26 → akshare-1.16.29}/akshare/option/option_premium_analysis_em.py +0 -0
  206. {akshare-1.16.26 → akshare-1.16.29}/akshare/option/option_risk_analysis_em.py +0 -0
  207. {akshare-1.16.26 → akshare-1.16.29}/akshare/option/option_risk_indicator_sse.py +0 -0
  208. {akshare-1.16.26 → akshare-1.16.29}/akshare/option/option_value_analysis_em.py +0 -0
  209. {akshare-1.16.26 → akshare-1.16.29}/akshare/other/__init__.py +0 -0
  210. {akshare-1.16.26 → akshare-1.16.29}/akshare/other/other_car_cpca.py +0 -0
  211. {akshare-1.16.26 → akshare-1.16.29}/akshare/other/other_car_gasgoo.py +0 -0
  212. {akshare-1.16.26 → akshare-1.16.29}/akshare/pro/__init__.py +0 -0
  213. {akshare-1.16.26 → akshare-1.16.29}/akshare/pro/client.py +0 -0
  214. {akshare-1.16.26 → akshare-1.16.29}/akshare/pro/cons.py +0 -0
  215. {akshare-1.16.26 → akshare-1.16.29}/akshare/pro/data_pro.py +0 -0
  216. {akshare-1.16.26 → akshare-1.16.29}/akshare/qdii/__init__.py +0 -0
  217. {akshare-1.16.26 → akshare-1.16.29}/akshare/qdii/qdii_jsl.py +0 -0
  218. {akshare-1.16.26 → akshare-1.16.29}/akshare/qhkc/__init__.py +0 -0
  219. {akshare-1.16.26 → akshare-1.16.29}/akshare/qhkc/qhkc_api.py +0 -0
  220. {akshare-1.16.26 → akshare-1.16.29}/akshare/qhkc_web/__init__.py +0 -0
  221. {akshare-1.16.26 → akshare-1.16.29}/akshare/qhkc_web/qhkc_fund.py +0 -0
  222. {akshare-1.16.26 → akshare-1.16.29}/akshare/qhkc_web/qhkc_index.py +0 -0
  223. {akshare-1.16.26 → akshare-1.16.29}/akshare/qhkc_web/qhkc_tool.py +0 -0
  224. {akshare-1.16.26 → akshare-1.16.29}/akshare/rate/__init__.py +0 -0
  225. {akshare-1.16.26 → akshare-1.16.29}/akshare/rate/repo_rate.py +0 -0
  226. {akshare-1.16.26 → akshare-1.16.29}/akshare/reits/__init__.py +0 -0
  227. {akshare-1.16.26 → akshare-1.16.29}/akshare/reits/reits_basic.py +0 -0
  228. {akshare-1.16.26 → akshare-1.16.29}/akshare/request.py +0 -0
  229. {akshare-1.16.26 → akshare-1.16.29}/akshare/sport/__init__.py +0 -0
  230. {akshare-1.16.26 → akshare-1.16.29}/akshare/sport/sport_olympic.py +0 -0
  231. {akshare-1.16.26 → akshare-1.16.29}/akshare/spot/__init__.py +0 -0
  232. {akshare-1.16.26 → akshare-1.16.29}/akshare/spot/spot_hog_soozhu.py +0 -0
  233. {akshare-1.16.26 → akshare-1.16.29}/akshare/spot/spot_price_qh.py +0 -0
  234. {akshare-1.16.26 → akshare-1.16.29}/akshare/spot/spot_sge.py +0 -0
  235. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock/__init__.py +0 -0
  236. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock/cons.py +0 -0
  237. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock/stock_allotment_cninfo.py +0 -0
  238. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock/stock_ask_bid_em.py +0 -0
  239. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock/stock_board_concept_em.py +0 -0
  240. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock/stock_board_industry_em.py +0 -0
  241. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock/stock_cg_equity_mortgage.py +0 -0
  242. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock/stock_cg_guarantee.py +0 -0
  243. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock/stock_cg_lawsuit.py +0 -0
  244. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock/stock_dividend_cninfo.py +0 -0
  245. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock/stock_dzjy_em.py +0 -0
  246. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock/stock_fund_em.py +0 -0
  247. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock/stock_fund_hold.py +0 -0
  248. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock/stock_gsrl_em.py +0 -0
  249. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock/stock_hk_famous.py +0 -0
  250. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock/stock_hk_fhpx_ths.py +0 -0
  251. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock/stock_hk_hot_rank_em.py +0 -0
  252. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock/stock_hk_sina.py +0 -0
  253. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock/stock_hold_control_cninfo.py +0 -0
  254. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock/stock_hold_control_em.py +0 -0
  255. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock/stock_hold_num_cninfo.py +0 -0
  256. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock/stock_hot_rank_em.py +0 -0
  257. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock/stock_hot_search_baidu.py +0 -0
  258. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock/stock_hot_up_em.py +0 -0
  259. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock/stock_hsgt_em.py +0 -0
  260. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock/stock_industry.py +0 -0
  261. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock/stock_industry_cninfo.py +0 -0
  262. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock/stock_industry_pe_cninfo.py +0 -0
  263. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock/stock_industry_sw.py +0 -0
  264. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock/stock_info.py +0 -0
  265. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock/stock_info_em.py +0 -0
  266. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock/stock_intraday_em.py +0 -0
  267. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock/stock_intraday_sina.py +0 -0
  268. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock/stock_ipo_summary_cninfo.py +0 -0
  269. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock/stock_new_cninfo.py +0 -0
  270. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock/stock_news_cx.py +0 -0
  271. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock/stock_profile_cninfo.py +0 -0
  272. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock/stock_rank_forecast.py +0 -0
  273. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock/stock_repurchase_em.py +0 -0
  274. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock/stock_share_changes_cninfo.py +0 -0
  275. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock/stock_share_hold.py +0 -0
  276. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock/stock_stop.py +0 -0
  277. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock/stock_summary.py +0 -0
  278. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock/stock_us_famous.py +0 -0
  279. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock/stock_us_js.py +0 -0
  280. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock/stock_us_pink.py +0 -0
  281. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock/stock_us_sina.py +0 -0
  282. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock/stock_weibo_nlp.py +0 -0
  283. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock/stock_xq.py +0 -0
  284. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock/stock_zh_a_sina.py +0 -0
  285. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock/stock_zh_a_special.py +0 -0
  286. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock/stock_zh_a_tick_tx.py +0 -0
  287. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock/stock_zh_ah_tx.py +0 -0
  288. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock/stock_zh_b_sina.py +0 -0
  289. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock/stock_zh_kcb_report.py +0 -0
  290. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock/stock_zh_kcb_sina.py +0 -0
  291. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/__init__.py +0 -0
  292. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/cons.py +0 -0
  293. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_a_below_net_asset_statistics.py +0 -0
  294. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_a_high_low.py +0 -0
  295. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_a_indicator.py +0 -0
  296. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_a_pe_and_pb.py +0 -0
  297. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_account_em.py +0 -0
  298. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_all_pb.py +0 -0
  299. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_analyst_em.py +0 -0
  300. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_board_concept_ths.py +0 -0
  301. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_board_industry_ths.py +0 -0
  302. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_buffett_index_lg.py +0 -0
  303. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_classify_sina.py +0 -0
  304. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_comment_em.py +0 -0
  305. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_concept_futu.py +0 -0
  306. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_congestion_lg.py +0 -0
  307. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_cyq_em.py +0 -0
  308. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_disclosure_cninfo.py +0 -0
  309. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_dxsyl_em.py +0 -0
  310. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_ebs_lg.py +0 -0
  311. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_esg_sina.py +0 -0
  312. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_fhps_em.py +0 -0
  313. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_fhps_ths.py +0 -0
  314. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_fund_flow.py +0 -0
  315. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_gddh_em.py +0 -0
  316. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_gdfx_em.py +0 -0
  317. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_gdhs.py +0 -0
  318. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_gdzjc_em.py +0 -0
  319. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_gpzy_em.py +0 -0
  320. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_gxl_lg.py +0 -0
  321. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_hist_em.py +0 -0
  322. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_hist_tx.py +0 -0
  323. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_hk_valuation_baidu.py +0 -0
  324. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_hot_xq.py +0 -0
  325. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_hsgt_em.py +0 -0
  326. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_hsgt_exchange_rate.py +0 -0
  327. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_hsgt_min_em.py +0 -0
  328. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_info.py +0 -0
  329. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_inner_trade_xq.py +0 -0
  330. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_irm_cninfo.py +0 -0
  331. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_jgdy_em.py +0 -0
  332. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_lh_yybpm.py +0 -0
  333. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_lhb_em.py +0 -0
  334. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_lhb_sina.py +0 -0
  335. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_margin_em.py +0 -0
  336. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_margin_sse.py +0 -0
  337. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_margin_szse.py +0 -0
  338. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_market_legu.py +0 -0
  339. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_pankou_em.py +0 -0
  340. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_qsjy_em.py +0 -0
  341. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_report_em.py +0 -0
  342. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_research_report_em.py +0 -0
  343. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_sns_sseinfo.py +0 -0
  344. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_sy_em.py +0 -0
  345. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_technology_ths.py +0 -0
  346. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_tfp_em.py +0 -0
  347. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_three_report_em.py +0 -0
  348. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_ttm_lyr.py +0 -0
  349. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_value_em.py +0 -0
  350. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_wencai.py +0 -0
  351. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_yjbb_em.py +0 -0
  352. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_yjyg_cninfo.py +0 -0
  353. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_yjyg_em.py +0 -0
  354. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_yzxdr_em.py +0 -0
  355. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_zdhtmx_em.py +0 -0
  356. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_zf_pg.py +0 -0
  357. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_zh_valuation_baidu.py +0 -0
  358. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_zh_vote_baidu.py +0 -0
  359. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/stock_ztb_em.py +0 -0
  360. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_feature/ths.js +0 -0
  361. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_fundamental/__init__.py +0 -0
  362. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_fundamental/stock_finance_hk_em.py +0 -0
  363. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_fundamental/stock_finance_sina.py +0 -0
  364. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_fundamental/stock_finance_ths.py +0 -0
  365. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_fundamental/stock_finance_us_em.py +0 -0
  366. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_fundamental/stock_hold.py +0 -0
  367. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_fundamental/stock_ipo_declare.py +0 -0
  368. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_fundamental/stock_kcb_detail_sse.py +0 -0
  369. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_fundamental/stock_kcb_sse.py +0 -0
  370. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_fundamental/stock_mda_ym.py +0 -0
  371. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_fundamental/stock_notice.py +0 -0
  372. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_fundamental/stock_profit_forecast_em.py +0 -0
  373. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_fundamental/stock_profit_forecast_hk_etnet.py +0 -0
  374. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_fundamental/stock_profit_forecast_ths.py +0 -0
  375. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_fundamental/stock_recommend.py +0 -0
  376. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_fundamental/stock_register_em.py +0 -0
  377. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_fundamental/stock_restricted_em.py +0 -0
  378. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_fundamental/stock_zygc.py +0 -0
  379. {akshare-1.16.26 → akshare-1.16.29}/akshare/stock_fundamental/stock_zyjs_ths.py +0 -0
  380. {akshare-1.16.26 → akshare-1.16.29}/akshare/tool/__init__.py +0 -0
  381. {akshare-1.16.26 → akshare-1.16.29}/akshare/tool/trade_date_hist.py +0 -0
  382. {akshare-1.16.26 → akshare-1.16.29}/akshare/utils/__init__.py +0 -0
  383. {akshare-1.16.26 → akshare-1.16.29}/akshare/utils/cons.py +0 -0
  384. {akshare-1.16.26 → akshare-1.16.29}/akshare/utils/context.py +0 -0
  385. {akshare-1.16.26 → akshare-1.16.29}/akshare/utils/demjson.py +0 -0
  386. {akshare-1.16.26 → akshare-1.16.29}/akshare/utils/func.py +0 -0
  387. {akshare-1.16.26 → akshare-1.16.29}/akshare/utils/token_process.py +0 -0
  388. {akshare-1.16.26 → akshare-1.16.29}/akshare/utils/tqdm.py +0 -0
  389. {akshare-1.16.26 → akshare-1.16.29}/akshare.egg-info/SOURCES.txt +0 -0
  390. {akshare-1.16.26 → akshare-1.16.29}/akshare.egg-info/dependency_links.txt +0 -0
  391. {akshare-1.16.26 → akshare-1.16.29}/akshare.egg-info/requires.txt +0 -0
  392. {akshare-1.16.26 → akshare-1.16.29}/akshare.egg-info/top_level.txt +0 -0
  393. {akshare-1.16.26 → akshare-1.16.29}/pyproject.toml +0 -0
  394. {akshare-1.16.26 → akshare-1.16.29}/setup.cfg +0 -0
  395. {akshare-1.16.26 → akshare-1.16.29}/setup.py +0 -0
  396. {akshare-1.16.26 → akshare-1.16.29}/tests/__init__.py +0 -0
  397. {akshare-1.16.26 → akshare-1.16.29}/tests/test_func.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: akshare
3
- Version: 1.16.26
3
+ Version: 1.16.29
4
4
  Summary: AKShare is an elegant and simple financial data interface library for Python, built for human beings!
5
5
  Home-page: https://github.com/akfamily/akshare
6
6
  Author: AKFamily
@@ -3035,9 +3035,12 @@ amac_manager_cancelled_info # 中国证券投资基金业协会-信息公示-诚
3035
3035
  1.16.24 fix: fix stock_financial_hk_report_em interface
3036
3036
  1.16.25 fix: fix stock_financial_abstract_ths interface
3037
3037
  1.16.26 add: add stock_hsgt_sh_hk_spot_em interface
3038
+ 1.16.27 fix: fix futures_global_em interface
3039
+ 1.16.28 fix: fix futures_global_hist_em interface
3040
+ 1.16.29 fix: fix futures_global_hist_em interface
3038
3041
  """
3039
3042
 
3040
- __version__ = "1.16.26"
3043
+ __version__ = "1.16.29"
3041
3044
  __author__ = "AKFamily"
3042
3045
 
3043
3046
  import sys
@@ -3212,7 +3215,7 @@ from akshare.stock_feature.stock_hsgt_min_em import stock_hsgt_fund_min_em
3212
3215
  """
3213
3216
  东方财富网-行情中心-期货市场-国际期货
3214
3217
  """
3215
- from akshare.futures.futures_hf_em import futures_global_em
3218
+ from akshare.futures.futures_hf_em import futures_global_spot_em, futures_global_hist_em
3216
3219
 
3217
3220
  """
3218
3221
  雪球行情数据
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2023/1/12 16:58
4
+ Date: 2025/3/5 18:00
5
5
  Desc: 期货配置文件
6
6
  """
7
7
 
@@ -11,8 +11,92 @@ import os
11
11
  import pickle
12
12
  import re
13
13
 
14
+
15
+ futures_inventory_em_symbol_dict = {
16
+ "a": "A", # 豆一
17
+ "ag": "AG", # 沪银
18
+ "al": "AL", # 沪铝
19
+ "ao": "AO", # 氧化铝
20
+ "AP": "AP", # 苹果
21
+ "au": "AU", # 沪金
22
+ "b": "B", # 豆二
23
+ "bb": None, # 胶合板 (new中没有对应)
24
+ "bc": None, # 国际铜 (new中没有对应)
25
+ "br": "BR", # BR橡胶
26
+ "bu": "BU", # 沥青
27
+ "c": "C", # 玉米
28
+ "CF": "CF", # 棉花/郑棉
29
+ "CJ": "CJ", # 红枣
30
+ "cs": "CS", # 淀粉/玉米淀粉
31
+ "cu": "CU", # 沪铜
32
+ "CY": "CY", # 棉纱
33
+ "eb": "EB", # 苯乙烯
34
+ "ec": "ec", # 集运欧线/集运指数(欧线)
35
+ "eg": "EG", # 乙二醇
36
+ "fb": None, # 纤维板 (new中没有对应)
37
+ "FG": "FG", # 玻璃
38
+ "fu": "FU", # 燃料油/燃油
39
+ "hc": "HC", # 热卷
40
+ "i": "I", # 铁矿石
41
+ "IC": "IC", # 中证500
42
+ "IF": "IF", # 沪深300
43
+ "IH": "IH", # 上证50
44
+ "IM": "IM", # 中证1000
45
+ "j": "J", # 焦炭
46
+ "jd": "JD", # 鸡蛋
47
+ "jm": "JM", # 焦煤
48
+ "JR": None, # 粳稻 (new中没有对应)
49
+ "l": "L", # 塑料
50
+ "lc": "lc", # 碳酸锂
51
+ "lh": "LH", # 生猪
52
+ "LR": None, # 晚籼稻 (new中没有对应)
53
+ "lu": "lu", # LU燃油/低硫燃料油
54
+ "m": "M", # 豆粕
55
+ "MA": "MA", # 甲醇
56
+ "ni": "NI", # 沪镍/镍
57
+ "nr": "nr", # 20号胶
58
+ "OI": "OI", # 菜籽油/菜油
59
+ "p": "P", # 棕榈油/棕榈
60
+ "pb": "PB", # 沪铅
61
+ "PF": "PF", # 短纤
62
+ "pg": "PG", # 液化气/液化石油气
63
+ "PK": "PK", # 花生
64
+ "PM": None, # 普麦 (new中没有对应)
65
+ "pp": "PP", # 聚丙烯
66
+ "PX": "PX", # 对二甲苯
67
+ "rb": "RB", # 螺纹钢
68
+ "RI": None, # 早籼稻 (new中没有对应)
69
+ "RM": "RM", # 菜籽粕/菜粕
70
+ "rr": None, # 粳米 (new中没有对应)
71
+ "RS": "RS", # 油菜籽/菜籽
72
+ "ru": "RU", # 橡胶
73
+ "SA": "SA", # 纯碱
74
+ "sc": None, # 原油 (new中没有对应)
75
+ "SF": "SF", # 硅铁
76
+ "SH": "SH", # 烧碱
77
+ "si": "si", # 工业硅
78
+ "SM": "SM", # 锰硅
79
+ "sn": "SN", # 沪锡/锡
80
+ "sp": "SP", # 纸浆
81
+ "SR": "SR", # 白糖
82
+ "ss": "SS", # 不锈钢
83
+ "T": "T", # 十年国债/10年期国债
84
+ "TA": "TA", # PTA
85
+ "TF": "TF", # 五年国债/5年期国债
86
+ "TL": "TL", # 三十年国债/30年期国债期货
87
+ "TS": "TS", # 二年国债/2年期国债
88
+ "UR": "UR", # 尿素
89
+ "v": "V", # PVC
90
+ "WH": None, # 强麦 (new中没有对应)
91
+ "wr": None, # 线材 (new中没有对应)
92
+ "y": "Y", # 豆油
93
+ "ZC": None, # 动力煤 (new中没有对应)
94
+ "zn": "ZN", # 沪锌
95
+ }
96
+
14
97
  hq_sina_spot_headers = {
15
- "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3",
98
+ "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,"
99
+ "image/apng,*/*;q=0.8,application/signed-exchange;v=b3",
16
100
  "Accept-Encoding": "gzip, deflate",
17
101
  "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8",
18
102
  "Cache-Control": "no-cache",
@@ -21,14 +105,18 @@ hq_sina_spot_headers = {
21
105
  "Pragma": "no-cache",
22
106
  "Referer": "https://finance.sina.com.cn/futuremarket/",
23
107
  "Upgrade-Insecure-Requests": "1",
24
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36",
108
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 "
109
+ "(KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36",
25
110
  }
26
111
 
27
112
  # zh_sina_spot
28
113
  zh_subscribe_exchange_symbol_url = (
29
114
  "http://vip.stock.finance.sina.com.cn/quotes_service/view/js/qihuohangqing.js"
30
115
  )
31
- zh_match_main_contract_url = "http://vip.stock.finance.sina.com.cn/quotes_service/api/json_v2.php/Market_Center.getHQFuturesData"
116
+ zh_match_main_contract_url = (
117
+ "http://vip.stock.finance.sina.com.cn/quotes_service/"
118
+ "api/json_v2.php/Market_Center.getHQFuturesData"
119
+ )
32
120
  zh_match_main_contract_payload = {
33
121
  "page": "1",
34
122
  "num": "5",
@@ -48,7 +136,8 @@ zh_sina_spot_headers = {
48
136
  "Referer": "https://finance.sina.com.cn/futuremarket/",
49
137
  "Sec-Fetch-Mode": "no-cors",
50
138
  "Sec-Fetch-Site": "cross-site",
51
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36",
139
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
140
+ "Chrome/78.0.3904.97 Safari/537.36",
52
141
  }
53
142
 
54
143
  # 99 期货
@@ -58,10 +147,18 @@ inventory_temp_headers = {
58
147
  "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8",
59
148
  "Connection": "keep-alive",
60
149
  "Content-Type": "application/x-www-form-urlencoded",
61
- "Cookie": "UM_distinctid=16c378978de5cc-02cfeac5f7869b-c343162-1fa400-16c378978df8d7; __utmz=181566328.1570520149.3.2.utmcsr=baidu|utmccn=(organic)|utmcmd=organic; ASP.NET_SessionId=wj5gxuzl3fvvr25503tquq55; __utmc=181566328; _fxaid=1D9A634AB9F5D0265856F7E85E7BC196%1D%2BOOl1inxPE7181fmKs5HCs%2BdLO%2Fq%2FbSvf46UVjo%2BE7w%3D%1DPYphpUa9OlzWUzatrOQTXLPOVillbwMhTIJas%2ByfkyVL2Hd5XA1GOSslksqDkMTccXvQ2duLNsc0CHT4789JrYNbakJrpzrxLnwtBC5GCTssKHGEpor6EwAZfWJgBUlCs4JYFcGUnh3jIO69A4LsOlRMOGf4c9cd%2FbohSjTx3VA%3D; __utma=181566328.1348268634.1564299852.1571066568.1571068391.7; tgw_l7_route=eb1311426274fc07631b2135a6431f7d; __utmt=1; __utmb=181566328.7.10.1571068391",
150
+ "Cookie": "UM_distinctid=16c378978de5cc-02cfeac5f7869b-c343162-1fa400-16c378978df8d7; "
151
+ "__utmz=181566328.1570520149.3.2.utmcsr=baidu|utmccn=(organic)|utmcmd=organic; "
152
+ "ASP.NET_SessionId=wj5gxuzl3fvvr25503tquq55; __utmc=181566328; _fxaid=1D9A634AB9F5D026585"
153
+ "6F7E85E7BC196%1D%2BOOl1inxPE7181fmKs5HCs%2BdLO%2Fq%2FbSvf46UVjo%2BE7w%3D%1DPYphpUa9OlzW"
154
+ "UzatrOQTXLPOVillbwMhTIJas%2ByfkyVL2Hd5XA1GOSslksqDkMTccXvQ2duLNsc0CHT4789JrYNbakJrpzrxL"
155
+ "nwtBC5GCTssKHGEpor6EwAZfWJgBUlCs4JYFcGUnh3jIO69A4LsOlRMOGf4c9cd%2FbohSjTx3VA%3D; __utma"
156
+ "=181566328.1348268634.1564299852.1571066568.1571068391.7; tgw_l7_route=eb1311426274fc07"
157
+ "631b2135a6431f7d; __utmt=1; __utmb=181566328.7.10.1571068391",
62
158
  "Host": "service.99qh.com",
63
159
  "Referer": "http://service.99qh.com/Storage/Storage.aspx?page=99qh",
64
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
160
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 "
161
+ "(KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
65
162
  }
66
163
 
67
164
  # 奇货可查
@@ -177,7 +274,8 @@ headers = {
177
274
  "Cache-Control": "max-age=0",
178
275
  "Accept": "text/html, */*; q=0.01",
179
276
  "X-Requested-With": "XMLHttpRequest",
180
- "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36",
277
+ "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) "
278
+ "Chrome/56.0.2924.87 Safari/537.36",
181
279
  "DNT": "1",
182
280
  "Referer": "http://www.super-ping.com/?ping=www.google.com&locale=sc",
183
281
  "Accept-Encoding": "gzip, deflate, sdch",
@@ -187,7 +285,8 @@ headers = {
187
285
  shfe_headers = {"User-Agent": "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)"}
188
286
 
189
287
  dce_headers = {
190
- "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3",
288
+ "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,"
289
+ "*/*;q=0.8,application/signed-exchange;v=b3",
191
290
  "Accept-Encoding": "gzip, deflate",
192
291
  "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8",
193
292
  "Cache-Control": "max-age=0",
@@ -198,7 +297,8 @@ dce_headers = {
198
297
  "Proxy-Connection": "keep-alive",
199
298
  "Referer": "http://www.dce.com.cn/publicweb/quotesdata/weekQuotesCh.html",
200
299
  "Upgrade-Insecure-Requests": "1",
201
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
300
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
301
+ "Chrome/77.0.3865.90 Safari/537.36",
202
302
  }
203
303
 
204
304
  SYS_SPOT_PRICE_URL = "http://www.100ppi.com/sf/day-{}.html"
@@ -206,8 +306,16 @@ SYS_SPOT_PRICE_LATEST_URL = "http://www.100ppi.com/sf/"
206
306
 
207
307
  SHFE_VOL_RANK_URL = "https://tsite.shfe.com.cn/data/dailydata/kx/pm%s.dat"
208
308
  CFFEX_VOL_RANK_URL = "http://www.cffex.com.cn/sj/ccpm/%s/%s/%s_1.csv"
209
- DCE_VOL_RANK_URL_1 = "http://www.dce.com.cn/publicweb/quotesdata/exportMemberDealPosiQuotesData.html?memberDealPosiQuotes.variety=%s&memberDealPosiQuotes.trade_type=0&contract.contract_id=%s&contract.variety_id=%s&year=%s&month=%s&day=%s&exportFlag=txt"
210
- DCE_VOL_RANK_URL_2 = "http://www.dce.com.cn/publicweb/quotesdata/memberDealPosiQuotes.html?memberDealPosiQuotes.variety=%s&memberDealPosiQuotes.trade_type=0&contract.contract_id=all&contract.variety_id=%s&year=%s&month=%s&day=%s"
309
+ DCE_VOL_RANK_URL_1 = (
310
+ "http://www.dce.com.cn/publicweb/quotesdata/exportMemberDealPosiQuotesData.html?"
311
+ "memberDealPosiQuotes.variety=%s&memberDealPosiQuotes.trade_type=0&contract.cont"
312
+ "ract_id=%s&contract.variety_id=%s&year=%s&month=%s&day=%s&exportFlag=txt"
313
+ )
314
+ DCE_VOL_RANK_URL_2 = (
315
+ "http://www.dce.com.cn/publicweb/quotesdata/memberDealPosiQuotes.html?memberDeal"
316
+ "PosiQuotes.variety=%s&memberDealPosiQuotes.trade_type=0&contract.contract_id="
317
+ "all&contract.variety_id=%s&year=%s&month=%s&day=%s"
318
+ )
211
319
  CZCE_VOL_RANK_URL_1 = "http://www.czce.com.cn/cn/exchange/jyxx/pm/pm%s.html"
212
320
  CZCE_VOL_RANK_URL_2 = "http://www.czce.com.cn/cn/exchange/%s/datatradeholding/%s.htm"
213
321
  CZCE_VOL_RANK_URL_3 = (
@@ -1,30 +1,36 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2024/1/19 23:10
4
+ Date: 2025/3/5 18:00
5
5
  Desc: 外盘期货-历史行情数据-日频率
6
6
  https://finance.sina.com.cn/money/future/hf.html
7
7
  """
8
+
8
9
  from datetime import datetime
9
10
  from io import StringIO
10
11
 
11
12
  import pandas as pd
12
13
  import requests
13
14
 
14
- from akshare.futures.futures_hq_sina import futures_foreign_commodity_subscribe_exchange_symbol
15
+ from akshare.futures.futures_hq_sina import (
16
+ futures_foreign_commodity_subscribe_exchange_symbol,
17
+ )
15
18
 
16
19
 
17
20
  def futures_foreign_hist(symbol: str = "ZSD") -> pd.DataFrame:
18
21
  """
19
22
  外盘期货-历史行情数据-日频率
20
23
  https://finance.sina.com.cn/money/future/hf.html
21
- :param symbol: futures symbol, you can get it from futures_foreign_commodity_subscribe_exchange_symbol
24
+ :param symbol: 外盘期货代码, 可以通过 ak.futures_foreign_commodity_subscribe_exchange_symbol() 来获取所有品种代码
22
25
  :type symbol: str
23
- :return: historical data from 2010
26
+ :return: 历史行情数据-日频率
24
27
  :rtype: pandas.DataFrame
25
28
  """
26
- today = f'{datetime.today().year}_{datetime.today().month}_{datetime.today().day}'
27
- url = f"https://stock2.finance.sina.com.cn/futures/api/jsonp.php/var%20_S{today}=/GlobalFuturesService.getGlobalFuturesDailyKLine"
29
+ today = f"{datetime.today().year}_{datetime.today().month}_{datetime.today().day}"
30
+ url = (
31
+ f"https://stock2.finance.sina.com.cn/futures/api/jsonp.php/var%20_S{today}=/"
32
+ f"GlobalFuturesService.getGlobalFuturesDailyKLine"
33
+ )
28
34
  params = {
29
35
  "symbol": symbol,
30
36
  "_": today,
@@ -32,7 +38,7 @@ def futures_foreign_hist(symbol: str = "ZSD") -> pd.DataFrame:
32
38
  }
33
39
  r = requests.get(url, params=params)
34
40
  data_text = r.text
35
- data_df = pd.read_json(StringIO(data_text[data_text.find("["):-2]))
41
+ data_df = pd.read_json(StringIO(data_text[data_text.find("[") : -2]))
36
42
  return data_df
37
43
 
38
44
 
@@ -52,7 +58,7 @@ def futures_foreign_detail(symbol: str = "ZSD") -> pd.DataFrame:
52
58
  return data_df
53
59
 
54
60
 
55
- if __name__ == '__main__':
61
+ if __name__ == "__main__":
56
62
  futures_foreign_hist_df = futures_foreign_hist(symbol="ZSD")
57
63
  print(futures_foreign_hist_df)
58
64
 
@@ -0,0 +1,248 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding:utf-8 -*-
3
+ """
4
+ Date: 2025/3/5 19:00
5
+ Desc: 东方财富网-行情中心-期货市场-国际期货
6
+ https://quote.eastmoney.com/center/gridlist.html#futures_global
7
+ """
8
+
9
+ import math
10
+ from typing import Optional
11
+
12
+ import pandas as pd
13
+ import requests
14
+
15
+ from akshare.utils.tqdm import get_tqdm
16
+
17
+
18
+ def __futures_global_hist_market_code(symbol: str = "HG00Y") -> Optional[int]:
19
+ """
20
+ 东方财富网-行情中心-期货市场-国际期货-品种市场对照表
21
+ https://quote.eastmoney.com/center/gridlist.html#futures_global
22
+ :param symbol: HG00Y, 品种代码;可以通过 ak.futures_global_spot_em() 来获取所有可获取历史行情数据的品种代码
23
+ :type symbol: str
24
+ :return: 品种所属于的市场
25
+ :rtype: str
26
+ """
27
+ # 提取品种代码(去掉年份和月份部分)
28
+ base_symbol = ""
29
+ i = 0
30
+ while i < len(symbol) and not symbol[i].isdigit():
31
+ base_symbol += symbol[i]
32
+ i += 1
33
+ # 如果代码中没有数字(异常情况),则返回整个代码作为基础品种代码
34
+ if not base_symbol and i == len(symbol):
35
+ base_symbol = symbol
36
+ # 金属和贵金属品种 - 101
37
+ if base_symbol in ["HG", "GC", "SI", "QI", "QO", "MGC", "LTH"]:
38
+ return 101
39
+ # 能源品种 - 102
40
+ if base_symbol in ["CL", "NG", "RB", "HO", "PA", "PL", "QM"]:
41
+ return 102
42
+ # 农产品和金融品种 - 103
43
+ if base_symbol in [
44
+ "ZW",
45
+ "ZM",
46
+ "ZS",
47
+ "ZC",
48
+ "XC",
49
+ "XK",
50
+ "XW",
51
+ "YM",
52
+ "TY",
53
+ "US",
54
+ "EH",
55
+ "ZL",
56
+ "ZR",
57
+ "ZO",
58
+ "FV",
59
+ "TU",
60
+ "UL",
61
+ "NQ",
62
+ "ES",
63
+ ]:
64
+ return 103
65
+ # 中国市场特有品种 - 104
66
+ if base_symbol in ["TF", "RT", "CN"]:
67
+ return 104
68
+ # 软商品期货 - 108
69
+ if base_symbol in ["SB", "CT", "SF"]:
70
+ return 108
71
+ # 特殊L开头品种 - 109
72
+ if base_symbol in ["LCPT", "LZNT", "LALT", "LTNT", "LLDT", "LNKT"]:
73
+ return 109
74
+ # MPM开头品种 - 110
75
+ if base_symbol == "MPM":
76
+ return 110
77
+ # 日本市场品种 - 111
78
+ if base_symbol.startswith("J"):
79
+ return 111
80
+ # 单字母代码品种 - 112
81
+ if base_symbol in ["M", "B", "G"]:
82
+ return 112
83
+ # 如果没有匹配到任何规则,返回一个默认值或者错误
84
+ return None
85
+
86
+
87
+ def futures_global_spot_em() -> pd.DataFrame:
88
+ """
89
+ 东方财富网-行情中心-期货市场-国际期货
90
+ https://quote.eastmoney.com/center/gridlist.html#futures_global
91
+ :return: 行情数据
92
+ :rtype: pandas.DataFrame
93
+ """
94
+ url = "https://futsseapi.eastmoney.com/list/COMEX,NYMEX,COBOT,SGX,NYBOT,LME,MDEX,TOCOM,IPE"
95
+ params = {
96
+ "orderBy": "zdf",
97
+ "sort": "desc",
98
+ "pageSize": "20",
99
+ "pageIndex": "0",
100
+ "token": "58b2fa8f54638b60b87d69b31969089c",
101
+ "field": "dm,sc,name,p,zsjd,zde,zdf,f152,o,h,l,zjsj,vol,wp,np,ccl",
102
+ "blockName": "callback",
103
+ }
104
+ r = requests.get(url, params=params)
105
+ data_json = r.json()
106
+ total_num = data_json["total"]
107
+ total_page = math.ceil(total_num / 20) - 1
108
+ tqdm = get_tqdm()
109
+ big_df = pd.DataFrame()
110
+ for page in tqdm(range(total_page), leave=False):
111
+ params.update({"pageIndex": page})
112
+ r = requests.get(url, params=params)
113
+ data_json = r.json()
114
+ temp_df = pd.DataFrame(data_json["list"])
115
+ big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
116
+ big_df.reset_index(inplace=True)
117
+ big_df["index"] = big_df["index"] + 1
118
+ big_df.rename(
119
+ columns={
120
+ "index": "序号",
121
+ "np": "卖盘",
122
+ "h": "最高",
123
+ "dm": "代码",
124
+ "zsjd": "-",
125
+ "l": "最低",
126
+ "ccl": "持仓量",
127
+ "o": "今开",
128
+ "p": "最新价",
129
+ "sc": "-",
130
+ "vol": "成交量",
131
+ "name": "名称",
132
+ "wp": "买盘",
133
+ "zde": "涨跌额",
134
+ "zdf": "涨跌幅",
135
+ "zjsj": "昨结",
136
+ },
137
+ inplace=True,
138
+ )
139
+ big_df = big_df[
140
+ [
141
+ "序号",
142
+ "代码",
143
+ "名称",
144
+ "最新价",
145
+ "涨跌额",
146
+ "涨跌幅",
147
+ "今开",
148
+ "最高",
149
+ "最低",
150
+ "昨结",
151
+ "成交量",
152
+ "买盘",
153
+ "卖盘",
154
+ "持仓量",
155
+ ]
156
+ ]
157
+ big_df["最新价"] = pd.to_numeric(big_df["最新价"], errors="coerce")
158
+ big_df["涨跌额"] = pd.to_numeric(big_df["涨跌额"], errors="coerce")
159
+ big_df["涨跌幅"] = pd.to_numeric(big_df["涨跌幅"], errors="coerce")
160
+ big_df["今开"] = pd.to_numeric(big_df["今开"], errors="coerce")
161
+ big_df["最高"] = pd.to_numeric(big_df["最高"], errors="coerce")
162
+ big_df["最低"] = pd.to_numeric(big_df["最低"], errors="coerce")
163
+ big_df["昨结"] = pd.to_numeric(big_df["昨结"], errors="coerce")
164
+ big_df["成交量"] = pd.to_numeric(big_df["成交量"], errors="coerce")
165
+ big_df["买盘"] = pd.to_numeric(big_df["买盘"], errors="coerce")
166
+ big_df["卖盘"] = pd.to_numeric(big_df["卖盘"], errors="coerce")
167
+ big_df["持仓量"] = pd.to_numeric(big_df["持仓量"], errors="coerce")
168
+ return big_df
169
+
170
+
171
+ def futures_global_hist_em(symbol: str = "HG00Y") -> pd.DataFrame:
172
+ """
173
+ 东方财富网-行情中心-期货市场-国际期货-历史行情数据
174
+ https://quote.eastmoney.com/globalfuture/HG25J.html
175
+ :param symbol: 品种代码;可以通过 ak.futures_global_spot_em() 来获取所有可获取历史行情数据的品种代码
176
+ :type symbol: str
177
+ :return: 历史行情数据
178
+ :rtype: pandas.DataFrame
179
+ """
180
+ url = "https://push2his.eastmoney.com/api/qt/stock/kline/get"
181
+ market_code = __futures_global_hist_market_code(symbol)
182
+ params = {
183
+ "secid": f"{market_code}.{symbol}",
184
+ "klt": "101",
185
+ "fqt": "1",
186
+ "lmt": "6600",
187
+ "end": "20500000",
188
+ "iscca": "1",
189
+ "fields1": "f1,f2,f3,f4,f5,f6,f7,f8",
190
+ "fields2": "f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61,f62,f63,f64",
191
+ "ut": "f057cbcbce2a86e2866ab8877db1d059",
192
+ "forcect": "1",
193
+ }
194
+ r = requests.get(url, params=params)
195
+ data_json = r.json()
196
+ temp_df = pd.DataFrame([item.split(",") for item in data_json["data"]["klines"]])
197
+ temp_df["code"] = data_json["data"]["code"]
198
+ temp_df["name"] = data_json["data"]["name"]
199
+ temp_df.columns = [
200
+ "日期",
201
+ "开盘",
202
+ "最新价",
203
+ "最高",
204
+ "最低",
205
+ "总量",
206
+ "-",
207
+ "-",
208
+ "涨幅",
209
+ "-",
210
+ "-",
211
+ "-",
212
+ "持仓",
213
+ "日增",
214
+ "代码",
215
+ "名称",
216
+ ]
217
+ temp_df = temp_df[
218
+ [
219
+ "日期",
220
+ "代码",
221
+ "名称",
222
+ "开盘",
223
+ "最新价",
224
+ "最高",
225
+ "最低",
226
+ "总量",
227
+ "涨幅",
228
+ "持仓",
229
+ "日增",
230
+ ]
231
+ ]
232
+ temp_df["日期"] = pd.to_datetime(temp_df["日期"], errors="coerce").dt.date
233
+ temp_df["开盘"] = pd.to_numeric(temp_df["开盘"], errors="coerce")
234
+ temp_df["最新价"] = pd.to_numeric(temp_df["最新价"], errors="coerce")
235
+ temp_df["最高"] = pd.to_numeric(temp_df["最高"], errors="coerce")
236
+ temp_df["最低"] = pd.to_numeric(temp_df["最低"], errors="coerce")
237
+ temp_df["总量"] = pd.to_numeric(temp_df["总量"], errors="coerce")
238
+ temp_df["涨幅"] = pd.to_numeric(temp_df["涨幅"], errors="coerce")
239
+ temp_df["日增"] = pd.to_numeric(temp_df["日增"], errors="coerce")
240
+ return temp_df
241
+
242
+
243
+ if __name__ == "__main__":
244
+ futures_global_spot_em_df = futures_global_spot_em()
245
+ print(futures_global_spot_em_df)
246
+
247
+ futures_global_hist_em_df = futures_global_hist_em(symbol="HG00Y")
248
+ print(futures_global_hist_em_df)
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2024/8/31 17:30
4
+ Date: 2025/3/5 18:00
5
5
  Desc: 新浪财经-外盘期货
6
6
  https://finance.sina.com.cn/money/future/hf.html
7
7
  """
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2025/2/24 23:00
4
+ Date: 2025/3/5 17:30
5
5
  Desc: 99 期货网-大宗商品库存数据
6
6
  https://www.99qh.com/
7
7
  """
@@ -73,7 +73,7 @@ def futures_inventory_99(symbol: str = "豆一") -> pd.DataFrame:
73
73
  "productId": product_id,
74
74
  "type": "1",
75
75
  "pageNo": "1",
76
- "pageSize": "4000",
76
+ "pageSize": "5000",
77
77
  "startDate": "",
78
78
  "endDate": f"{datetime.now().date().isoformat()}",
79
79
  "appCategory": "web",
@@ -90,5 +90,5 @@ def futures_inventory_99(symbol: str = "豆一") -> pd.DataFrame:
90
90
 
91
91
 
92
92
  if __name__ == "__main__":
93
- futures_inventory_99_df = futures_inventory_99(symbol="pg")
93
+ futures_inventory_99_df = futures_inventory_99(symbol="a")
94
94
  print(futures_inventory_99_df)
@@ -1,16 +1,17 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2025/2/27 17:00
4
+ Date: 2025/3/5 17:30
5
5
  Desc: 东方财富网-数据中心-期货库存数据
6
6
  https://data.eastmoney.com/ifdata/kcsj.html
7
7
  """
8
8
 
9
9
  import pandas as pd
10
10
  import requests
11
+ from akshare.futures.cons import futures_inventory_em_symbol_dict
11
12
 
12
13
 
13
- def futures_inventory_em(symbol: str = "A") -> pd.DataFrame:
14
+ def futures_inventory_em(symbol: str = "a") -> pd.DataFrame:
14
15
  """
15
16
  东方财富网-数据中心-期货库存数据
16
17
  https://data.eastmoney.com/ifdata/kcsj.html
@@ -36,11 +37,10 @@ def futures_inventory_em(symbol: str = "A") -> pd.DataFrame:
36
37
  symbol_dict = dict(zip(temp_df["TRADE_TYPE"], temp_df["TRADE_CODE"]))
37
38
  if symbol in symbol_dict.keys():
38
39
  product_id = symbol_dict[symbol]
39
- elif symbol in symbol_dict.values(): # 如果输入的是代码
40
- product_id = symbol
40
+ elif symbol in futures_inventory_em_symbol_dict.keys(): # 如果输入的是代码
41
+ product_id = futures_inventory_em_symbol_dict[symbol]
41
42
  else:
42
43
  raise ValueError(f"请输入正确的 symbol, 可选项为: {symbol_dict}")
43
- url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
44
44
  params = {
45
45
  "reportName": "RPT_FUTU_STOCKDATA",
46
46
  "columns": "SECURITY_CODE,TRADE_DATE,ON_WARRANT_NUM,ADDCHANGE",
@@ -67,5 +67,5 @@ def futures_inventory_em(symbol: str = "A") -> pd.DataFrame:
67
67
 
68
68
 
69
69
  if __name__ == "__main__":
70
- futures_inventory_em_df = futures_inventory_em(symbol="A")
70
+ futures_inventory_em_df = futures_inventory_em(symbol="a")
71
71
  print(futures_inventory_em_df)
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2024/12/27 21:00
4
+ Date: 2025/3/5 18:00
5
5
  Desc: 新浪财经-期货-成交持仓
6
6
  https://vip.stock.finance.sina.com.cn/q/view/vFutures_Positions_cjcc.php
7
7
  """
@@ -55,6 +55,8 @@ def futures_hold_pos_sina(
55
55
  temp_df["比上交易增减"], errors="coerce"
56
56
  )
57
57
  return temp_df
58
+ else:
59
+ raise ValueError("请输入正确的 symbol 参数")
58
60
 
59
61
 
60
62
  if __name__ == "__main__":
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: akshare
3
- Version: 1.16.26
3
+ Version: 1.16.29
4
4
  Summary: AKShare is an elegant and simple financial data interface library for Python, built for human beings!
5
5
  Home-page: https://github.com/akfamily/akshare
6
6
  Author: AKFamily