getLimitUpNewsData.py 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  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. print ("cnqCallback,", str(quantdata))
  42. print("cnqCallback,")
  43. for code in quantdata.Data:
  44. total = len(quantdata.Data[code])
  45. for k in range(0, len(quantdata.Data[code])):
  46. print(quantdata.Data[code][k])
  47. try:
  48. #调用登录函数(激活后使用,不需要用户名密码)
  49. loginResult = c.start("ForceLogin=1", '', mainCallback)
  50. if(loginResult.ErrorCode != 0):
  51. print("login in fail")
  52. exit()
  53. # 资讯订阅使用范例 0072255 昨日涨停
  54. data = c.cnq("0072255", "sectornews", "", cnqCallback)
  55. if data.ErrorCode != 0:
  56. print("request cnq Error, ", data.ErrorMsg)
  57. else:
  58. print("cnq输出结果======分隔线======")
  59. _time.sleep(60)
  60. text = input("press any key to cancel cnq \r\n")
  61. # 取消订阅
  62. data = c.cnqcancel(data.SerialID)
  63. #退出
  64. data = logoutResult = c.stop()
  65. except Exception as ee:
  66. print("error >>>",ee)
  67. traceback.print_exc()
  68. else:
  69. print("demo end")