wind_api.py 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  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/ths/future_good')
  16. def GetFutureGoodEdbDataByThs(EdbCode, StartDate, EndDate):
  17. print("THS_HistoryQuotes start")
  18. thsLogin = THS.THS_iFinDLogin("hzmd150", "689719")
  19. filed = 'lastclose,open,high,low,close,avgprice,change,changeper,volume,amount,hsl,lastsettlement,settlement,zdsettlement,zdfsettlement,ccl,ccbd,zf,zjlx,zjcd'
  20. # filed = 'open,high,low,close,volume,amount,settlement,ccl,zjlx'
  21. params = 'Interval:D,CPS:1,baseDate:1900-01-01,Currency:YSHB,fill:Previous'
  22. # params = 'YSHB;Tradedays'
  23. # print(params)
  24. thsEDBDataQuery = THS.THS_HistoryQuotes(EdbCode, filed, params, StartDate, EndDate, True)
  25. # thsEDBDataQuery = THS.THS_HQ(EdbCode, filed, params, StartDate, EndDate)
  26. # thsEDBDataQuery = THS.THS_EDBQuery(EdbCode, StartDate, EndDate, True)
  27. print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + ":start GetFutureGoodEdbDataByThs")
  28. print("THS_HistoryQuotes end")
  29. print(thsEDBDataQuery)
  30. thsEDBDataQuery = thsEDBDataQuery.decode("unicode_escape")
  31. result = json.loads(thsEDBDataQuery)
  32. print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + ":end GetFutureGoodEdbDataByThs")
  33. return result
  34. @hug.get('/edbInfo/wind')
  35. def GetEdbDataByWind(EdbCode, StartDate, EndDate):
  36. print("GetEdbDataByWind:", EdbCode)
  37. isConnected = w.isconnected()
  38. print("isconnected")
  39. print(isConnected)
  40. if isConnected == False:
  41. print("re isconnected")
  42. w.start()
  43. isConnected = w.isconnected()
  44. if isConnected == False:
  45. return "{'ErrMsg':'启动Wind接口失败'}"
  46. print("getdata")
  47. option = "Fill=Previous"
  48. data = w.edb(EdbCode, StartDate, EndDate, option)
  49. print("wind data")
  50. print(data)
  51. df = pd.DataFrame()
  52. if data.ErrorCode == -40521010: # Internet Timeout 超时退出
  53. os._exit(0)
  54. return "a"
  55. df['DT'] = data.Times
  56. df['CLOSE'] = data.Data[0]
  57. df['ErrorCode'] = data.ErrorCode
  58. df = df[['DT', 'CLOSE', 'ErrorCode']]
  59. df = df.dropna()
  60. json_data = df.to_json()
  61. # w.stop()
  62. print("wind data end")
  63. result = json.loads(json_data)
  64. return result
  65. @hug.get('/edbInfo/wind/future_good')
  66. def GetFutureGoodEdbDataByWind(FutureGoodEdbCode, StartDate, EndDate):
  67. print("GetFutureGoodEdbDataByWind:", FutureGoodEdbCode)
  68. isConnected = w.isconnected()
  69. print("isconnected")
  70. print(isConnected)
  71. if isConnected == False:
  72. print("re isconnected")
  73. w.start()
  74. isConnected = w.isconnected()
  75. if isConnected == False:
  76. return "{'ErrMsg':'启动Wind接口失败'}"
  77. print("getdata")
  78. option = "Fill=Previous"
  79. data = w.edb(FutureGoodEdbCode, StartDate, EndDate, option)
  80. data = w.wsd(FutureGoodEdbCode, "trade_code,open,high,low,close,volume,amt,oi,settle", StartDate, EndDate, option)
  81. print("wind data")
  82. print(data)
  83. df = pd.DataFrame()
  84. if data.ErrorCode == -40521010: # Internet Timeout 超时退出
  85. os._exit(0)
  86. return "a"
  87. df['DT'] = data.Times
  88. df['TRADE_CODE'] = data.Data[0]
  89. df['OPEN'] = data.Data[1]
  90. df['HIGH'] = data.Data[2]
  91. df['LOW'] = data.Data[3]
  92. df['CLOSE'] = data.Data[4]
  93. df['VOLUME'] = data.Data[5]
  94. df['AMT'] = data.Data[6]
  95. df['OI'] = data.Data[7]
  96. df['SETTLE'] = data.Data[8]
  97. df['ErrorCode'] = data.ErrorCode
  98. df = df[['DT', 'TRADE_CODE', 'OPEN', 'HIGH', 'LOW', 'CLOSE', 'VOLUME', 'AMT', 'OI', 'SETTLE', 'ErrorCode']]
  99. df = df.dropna()
  100. json_data = df.to_json()
  101. # w.stop()
  102. print("wind data end")
  103. result = json.loads(json_data)
  104. return result
  105. if __name__ == "__main__":
  106. # wind 登录
  107. wStart = w.start()
  108. if wStart.ErrorCode != 0:
  109. print("启动万得API接口失败")
  110. print(wStart)
  111. app = __hug__.http.server()
  112. run(app=app, reloader=True,host='0.0.0.0', port=7000)