startGetHistData.py 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. from threading import Thread
  2. import asyncio
  3. from EmQuantAPI import *
  4. import traceback
  5. from SotckHistData import SotckHistData
  6. # from StockHkHistData import StockHkHistData
  7. # from StockUsaHistData import StockUsaHistData
  8. from BondHistData import BondHistData
  9. def mainCallback(quantdata):
  10. print ("mainCallback",str(quantdata))
  11. #登录掉线或者 登陆数达到上线(即登录被踢下线) 这时所有的服务都会停止
  12. if str(quantdata.ErrorCode) == "10001011" or str(quantdata.ErrorCode) == "10001009":
  13. print ("Your account is disconnect. You can force login automatically here if you need.")
  14. #行情登录验证失败(每次连接行情服务器时需要登录验证)或者行情流量验证失败时,会取消所有订阅,用户需根据具体情况处理
  15. elif str(quantdata.ErrorCode) == "10001021" or str(quantdata.ErrorCode) == "10001022":
  16. print ("Your all csq subscribe have stopped.")
  17. #行情服务器断线自动重连连续6次失败(1分钟左右)不过重连尝试还会继续进行直到成功为止,遇到这种情况需要确认两边的网络状况
  18. elif str(quantdata.ErrorCode) == "10002009":
  19. print ("Your all csq subscribe have stopped, reconnect 6 times fail.")
  20. # 行情订阅遇到一些错误(这些错误会导致重连,错误原因通过日志输出,统一转换成EQERR_QUOTE_RECONNECT在这里通知),正自动重连并重新订阅,可以做个监控
  21. elif str(quantdata.ErrorCode) == "10002012":
  22. print ("csq subscribe break on some error, reconnect and request automatically.")
  23. # 资讯服务器断线自动重连连续6次失败(1分钟左右)不过重连尝试还会继续进行直到成功为止,遇到这种情况需要确认两边的网络状况
  24. elif str(quantdata.ErrorCode) == "10002014":
  25. print ("Your all cnq subscribe have stopped, reconnect 6 times fail.")
  26. # 资讯订阅遇到一些错误(这些错误会导致重连,错误原因通过日志输出,统一转换成EQERR_INFO_RECONNECT在这里通知),正自动重连并重新订阅,可以做个监控
  27. elif str(quantdata.ErrorCode) == "10002013":
  28. print ("cnq subscribe break on some error, reconnect and request automatically.")
  29. # 资讯登录验证失败(每次连接资讯服务器时需要登录验证)或者资讯流量验证失败时,会取消所有订阅,用户需根据具体情况处理
  30. elif str(quantdata.ErrorCode) == "10001024" or str(quantdata.ErrorCode) == "10001025":
  31. print("Your all cnq subscribe have stopped.")
  32. else:
  33. pass
  34. # 获取股票历史数据
  35. async def getStockHist():
  36. sotckHistData = SotckHistData()
  37. sotckHistData.toGet()
  38. # # 获取港股历史数据
  39. # async def getStockHkHist():
  40. # stockHkHistData = StockHkHistData()
  41. # stockHkHistData.toGet()
  42. # # 获取美股历史数据
  43. # async def getStockUsaHist():
  44. # stockUsaHistData = StockUsaHistData()
  45. # stockUsaHistData.toGet()
  46. # 获取债券历史数据
  47. async def getBondHist():
  48. bondHistData = BondHistData()
  49. bondHistData.toGet()
  50. # 获取指数历史数据
  51. async def getIndexHist():
  52. print(2)
  53. async def main():
  54. await asyncio.gather(
  55. getStockHist(),
  56. # getStockHkHist(),
  57. # getStockUsaHist(),
  58. getBondHist(),
  59. )
  60. # 每天执行一次 运行时间在每天停盘之后到第二天开盘之前就行
  61. try:
  62. #调用登录函数(激活后使用,不需要用户名密码)
  63. loginResult = c.start("ForceLogin=1", '', mainCallback)
  64. if(loginResult.ErrorCode != 0):
  65. print("login in fail")
  66. exit()
  67. asyncio.run(main())
  68. except Exception as ee:
  69. print("error >>>",ee)
  70. #退出
  71. data = logoutResult = c.stop()
  72. traceback.print_exc()
  73. else:
  74. print("demo end")