wind_api.py 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. import hug
  2. from bottle import route, run,NORUN
  3. from WindPy import w
  4. import json
  5. import pandas as pd
  6. import time
  7. import os
  8. import sys
  9. hug.API(__name__).http.output_format = hug.output_format.json
  10. @hug.get('/hz_server')
  11. def hello():
  12. return 1
  13. # return 'wind true'
  14. @hug.get('/edbInfo/wind')
  15. def GetEdbDataByWind(EdbCode, StartDate, EndDate):
  16. print("GetEdbDataByWind:", EdbCode)
  17. isConnected = w.isconnected()
  18. print("isconnected")
  19. print(isConnected)
  20. if isConnected == False:
  21. print("re isconnected")
  22. w.start()
  23. isConnected = w.isconnected()
  24. if isConnected == False:
  25. return "{'ErrMsg':'启动Wind接口失败'}"
  26. print("getdata")
  27. option = "Fill=Previous"
  28. data = w.edb(EdbCode, StartDate, EndDate, option)
  29. print("wind data")
  30. print(data)
  31. df = pd.DataFrame()
  32. if data.ErrorCode == -40521010: # Internet Timeout 超时退出
  33. os._exit(0)
  34. return "a"
  35. df['DT'] = data.Times
  36. df['CLOSE'] = data.Data[0]
  37. df['ErrorCode'] = data.ErrorCode
  38. df = df[['DT', 'CLOSE', 'ErrorCode']]
  39. df = df.dropna()
  40. json_data = df.to_json()
  41. # w.stop()
  42. print("wind data end")
  43. result = json.loads(json_data)
  44. return result
  45. @hug.get('/edbInfo/wind/future_good')
  46. def GetFutureGoodEdbDataByWind(FutureGoodEdbCode, StartDate, EndDate):
  47. print("GetFutureGoodEdbDataByWind:", FutureGoodEdbCode)
  48. isConnected = w.isconnected()
  49. print("isconnected")
  50. print(isConnected)
  51. if isConnected == False:
  52. print("re isconnected")
  53. w.start()
  54. isConnected = w.isconnected()
  55. if isConnected == False:
  56. return "{'ErrMsg':'启动Wind接口失败'}"
  57. print("getdata")
  58. option = "Fill=Previous"
  59. data = w.edb(FutureGoodEdbCode, StartDate, EndDate, option)
  60. data = w.wsd(FutureGoodEdbCode, "trade_code,open,high,low,close,volume,amt,oi,settle", StartDate, EndDate, option)
  61. print("wind data")
  62. print(data)
  63. df = pd.DataFrame()
  64. if data.ErrorCode == -40521010: # Internet Timeout 超时退出
  65. os._exit(0)
  66. return "a"
  67. df['DT'] = data.Times
  68. df['TRADE_CODE'] = data.Data[0]
  69. df['OPEN'] = data.Data[1]
  70. df['HIGH'] = data.Data[2]
  71. df['LOW'] = data.Data[3]
  72. df['CLOSE'] = data.Data[4]
  73. df['VOLUME'] = data.Data[5]
  74. df['AMT'] = data.Data[6]
  75. df['OI'] = data.Data[7]
  76. df['SETTLE'] = data.Data[8]
  77. df['ErrorCode'] = data.ErrorCode
  78. df = df[['DT', 'TRADE_CODE', 'OPEN', 'HIGH', 'LOW', 'CLOSE', 'VOLUME', 'AMT', 'OI', 'SETTLE', 'ErrorCode']]
  79. df = df.dropna()
  80. json_data = df.to_json()
  81. # w.stop()
  82. print("wind data end")
  83. result = json.loads(json_data)
  84. return result
  85. if __name__ == "__main__":
  86. # wind 登录
  87. wStart = w.start()
  88. if wStart.ErrorCode != 0:
  89. print("启动万得API接口失败")
  90. print(wStart)
  91. app = __hug__.http.server()
  92. run(app=app, reloader=True,host='0.0.0.0', port=7000)