wind_api.py 2.9 KB

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