getLimitUpNewsData.py 3.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. # -*- coding:utf-8 -*-
  2. __author__ = 'weijie'
  3. from EmQuantAPI import *
  4. from datetime import timedelta, datetime
  5. import time as _time
  6. import traceback
  7. print("开始了")
  8. def mainCallback(quantdata):
  9. """
  10. mainCallback 是主回调函数,可捕捉如下错误
  11. 在start函数第三个参数位传入,该函数只有一个为c.EmQuantData类型的参数quantdata
  12. :param quantdata:c.EmQuantData
  13. :return:
  14. """
  15. print ("mainCallback",str(quantdata))
  16. print("开始了2222")
  17. #登录掉线或者 登陆数达到上线(即登录被踢下线) 这时所有的服务都会停止
  18. if str(quantdata.ErrorCode) == "10001011" or str(quantdata.ErrorCode) == "10001009":
  19. print ("Your account is disconnect. You can force login automatically here if you need.")
  20. #行情登录验证失败(每次连接行情服务器时需要登录验证)或者行情流量验证失败时,会取消所有订阅,用户需根据具体情况处理
  21. elif str(quantdata.ErrorCode) == "10001021" or str(quantdata.ErrorCode) == "10001022":
  22. print ("Your all csq subscribe have stopped.")
  23. #行情服务器断线自动重连连续6次失败(1分钟左右)不过重连尝试还会继续进行直到成功为止,遇到这种情况需要确认两边的网络状况
  24. elif str(quantdata.ErrorCode) == "10002009":
  25. print ("Your all csq subscribe have stopped, reconnect 6 times fail.")
  26. # 行情订阅遇到一些错误(这些错误会导致重连,错误原因通过日志输出,统一转换成EQERR_QUOTE_RECONNECT在这里通知),正自动重连并重新订阅,可以做个监控
  27. elif str(quantdata.ErrorCode) == "10002012":
  28. print ("csq subscribe break on some error, reconnect and request automatically.")
  29. # 资讯服务器断线自动重连连续6次失败(1分钟左右)不过重连尝试还会继续进行直到成功为止,遇到这种情况需要确认两边的网络状况
  30. elif str(quantdata.ErrorCode) == "10002014":
  31. print ("Your all cnq subscribe have stopped, reconnect 6 times fail.")
  32. # 资讯订阅遇到一些错误(这些错误会导致重连,错误原因通过日志输出,统一转换成EQERR_INFO_RECONNECT在这里通知),正自动重连并重新订阅,可以做个监控
  33. elif str(quantdata.ErrorCode) == "10002013":
  34. print ("cnq subscribe break on some error, reconnect and request automatically.")
  35. # 资讯登录验证失败(每次连接资讯服务器时需要登录验证)或者资讯流量验证失败时,会取消所有订阅,用户需根据具体情况处理
  36. elif str(quantdata.ErrorCode) == "10001024" or str(quantdata.ErrorCode) == "10001025":
  37. print("Your all cnq subscribe have stopped.")
  38. else:
  39. pass
  40. def cnqCallback(quantdata):
  41. """
  42. csqCallback 是cnq订阅时提供的回调函数模板。该函数只有一个为c.EmQuantData类型的参数quantdata
  43. :param quantdata:c.EmQuantData
  44. :return:
  45. """
  46. print ("cnqCallback,", str(quantdata))
  47. # print("cnqCallback,")
  48. for code in quantdata.Data:
  49. total = len(quantdata.Data[code])
  50. for k in range(0, len(quantdata.Data[code])):
  51. print(quantdata.Data[code][k])
  52. try:
  53. #调用登录函数(激活后使用,不需要用户名密码)
  54. loginResult = c.start("ForceLogin=1", '', mainCallback)
  55. if(loginResult.ErrorCode != 0):
  56. print("login in fail")
  57. exit()
  58. # 资讯订阅使用范例 0072255 昨日涨停
  59. data = c.cnq("0072255", "sectornews", "", cnqCallback)
  60. if data.ErrorCode != 0:
  61. print("request cnq Error, ", data.ErrorMsg)
  62. else:
  63. print("cnq输出结果======分隔线======")
  64. _time.sleep(60)
  65. text = input("press any key to cancel cnq \r\n")
  66. # 取消订阅
  67. data = c.cnqcancel(data.SerialID)
  68. #退出
  69. data = logoutResult = c.stop()
  70. except Exception as ee:
  71. print("error >>>",ee)
  72. traceback.print_exc()
  73. else:
  74. print("demo end")