|
@@ -0,0 +1,155 @@
|
|
|
+import hug
|
|
|
+from bottle import route, run,NORUN
|
|
|
+from WindPy import w
|
|
|
+import iFinDPy as THS
|
|
|
+import json
|
|
|
+import pandas as pd
|
|
|
+import time
|
|
|
+import os
|
|
|
+import sys
|
|
|
+
|
|
|
+hug.API(__name__).http.output_format = hug.output_format.json
|
|
|
+
|
|
|
+
|
|
|
+@hug.get('/hz_server')
|
|
|
+def hello():
|
|
|
+ return 1
|
|
|
+ # return 'wind true'
|
|
|
+
|
|
|
+
|
|
|
+# 同花顺登录函数
|
|
|
+def thslogindemo():
|
|
|
+ # 输入用户的帐号和密码
|
|
|
+ thsLogin = THS.THS_iFinDLogin("hzmd150", "689719")
|
|
|
+ print(thsLogin)
|
|
|
+ if (thsLogin == 0 or thsLogin == -201):
|
|
|
+ print('ths 登录成功')
|
|
|
+ else:
|
|
|
+ print('ths 登录失败')
|
|
|
+
|
|
|
+
|
|
|
+@hug.get('/edbInfo/ths')
|
|
|
+def GetEdbDataByThs(EdbCode, StartDate, EndDate):
|
|
|
+ print("GetEdbDataByThs")
|
|
|
+ thsLogin = THS.THS_iFinDLogin("hzmd150", "689719")
|
|
|
+ thsEDBDataQuery = THS.THS_EDBQuery(EdbCode, StartDate, EndDate, True)
|
|
|
+ print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + ":start GetEdbDataByThs")
|
|
|
+ print("thsEDBDataQuery")
|
|
|
+ print(thsEDBDataQuery)
|
|
|
+ thsEDBDataQuery = thsEDBDataQuery.decode("unicode_escape")
|
|
|
+
|
|
|
+ result = json.loads(thsEDBDataQuery)
|
|
|
+ print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + ":end GetEdbDataByThs")
|
|
|
+ return result
|
|
|
+
|
|
|
+@hug.get('/edbInfo/ths/future_good')
|
|
|
+def GetFutureGoodEdbDataByThs(EdbCode, StartDate, EndDate):
|
|
|
+ print("THS_HistoryQuotes start")
|
|
|
+ thsLogin = THS.THS_iFinDLogin("hzmd150", "689719")
|
|
|
+
|
|
|
+ filed = 'lastclose,open,high,low,close,avgprice,change,changeper,volume,amount,hsl,lastsettlement,settlement,zdsettlement,zdfsettlement,ccl,ccbd,zf,zjlx,zjcd'
|
|
|
+ # filed = 'open,high,low,close,volume,amount,settlement,ccl,zjlx'
|
|
|
+ params = 'Interval:D,CPS:1,baseDate:1900-01-01,Currency:YSHB,fill:Previous'
|
|
|
+ # params = 'YSHB;Tradedays'
|
|
|
+ # print(params)
|
|
|
+ thsEDBDataQuery = THS.THS_HistoryQuotes(EdbCode, filed, params, StartDate, EndDate, True)
|
|
|
+ # thsEDBDataQuery = THS.THS_HQ(EdbCode, filed, params, StartDate, EndDate)
|
|
|
+ # thsEDBDataQuery = THS.THS_EDBQuery(EdbCode, StartDate, EndDate, True)
|
|
|
+ print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + ":start GetFutureGoodEdbDataByThs")
|
|
|
+ print("THS_HistoryQuotes end")
|
|
|
+ print(thsEDBDataQuery)
|
|
|
+ thsEDBDataQuery = thsEDBDataQuery.decode("unicode_escape")
|
|
|
+ result = json.loads(thsEDBDataQuery)
|
|
|
+ print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + ":end GetFutureGoodEdbDataByThs")
|
|
|
+ return result
|
|
|
+
|
|
|
+
|
|
|
+@hug.get('/edbInfo/wind')
|
|
|
+def GetEdbDataByWind(EdbCode, StartDate, EndDate):
|
|
|
+ print("GetEdbDataByWind:", EdbCode)
|
|
|
+ isConnected = w.isconnected()
|
|
|
+ print("isconnected")
|
|
|
+ print(isConnected)
|
|
|
+ if isConnected == False:
|
|
|
+ print("re isconnected")
|
|
|
+ w.start()
|
|
|
+ isConnected = w.isconnected()
|
|
|
+ if isConnected == False:
|
|
|
+ return "{'ErrMsg':'启动Wind接口失败'}"
|
|
|
+
|
|
|
+ print("getdata")
|
|
|
+ option = "Fill=Previous"
|
|
|
+ data = w.edb(EdbCode, StartDate, EndDate, option)
|
|
|
+ print("wind data")
|
|
|
+ print(data)
|
|
|
+ df = pd.DataFrame()
|
|
|
+ if data.ErrorCode == -40521010: # Internet Timeout 超时退出
|
|
|
+ os._exit(0)
|
|
|
+ return "a"
|
|
|
+ df['DT'] = data.Times
|
|
|
+ df['CLOSE'] = data.Data[0]
|
|
|
+ df['ErrorCode'] = data.ErrorCode
|
|
|
+ df = df[['DT', 'CLOSE', 'ErrorCode']]
|
|
|
+ df = df.dropna()
|
|
|
+ json_data = df.to_json()
|
|
|
+ # w.stop()
|
|
|
+ print("wind data end")
|
|
|
+ result = json.loads(json_data)
|
|
|
+ return result
|
|
|
+
|
|
|
+
|
|
|
+@hug.get('/edbInfo/wind/future_good')
|
|
|
+def GetFutureGoodEdbDataByWind(FutureGoodEdbCode, StartDate, EndDate):
|
|
|
+ print("GetFutureGoodEdbDataByWind:", FutureGoodEdbCode)
|
|
|
+ isConnected = w.isconnected()
|
|
|
+ print("isconnected")
|
|
|
+ print(isConnected)
|
|
|
+ if isConnected == False:
|
|
|
+ print("re isconnected")
|
|
|
+ w.start()
|
|
|
+ isConnected = w.isconnected()
|
|
|
+ if isConnected == False:
|
|
|
+ return "{'ErrMsg':'启动Wind接口失败'}"
|
|
|
+
|
|
|
+ print("getdata")
|
|
|
+ option = "Fill=Previous"
|
|
|
+ data = w.edb(FutureGoodEdbCode, StartDate, EndDate, option)
|
|
|
+ data = w.wsd(FutureGoodEdbCode, "trade_code,open,high,low,close,volume,amt,oi,settle", StartDate, EndDate, option)
|
|
|
+ print("wind data")
|
|
|
+ print(data)
|
|
|
+ df = pd.DataFrame()
|
|
|
+
|
|
|
+ if data.ErrorCode == -40521010: # Internet Timeout 超时退出
|
|
|
+ os._exit(0)
|
|
|
+ return "a"
|
|
|
+
|
|
|
+ df['DT'] = data.Times
|
|
|
+ df['TRADE_CODE'] = data.Data[0]
|
|
|
+ df['OPEN'] = data.Data[1]
|
|
|
+ df['HIGH'] = data.Data[2]
|
|
|
+ df['LOW'] = data.Data[3]
|
|
|
+ df['CLOSE'] = data.Data[4]
|
|
|
+ df['VOLUME'] = data.Data[5]
|
|
|
+ df['AMT'] = data.Data[6]
|
|
|
+ df['OI'] = data.Data[7]
|
|
|
+ df['SETTLE'] = data.Data[8]
|
|
|
+ df['ErrorCode'] = data.ErrorCode
|
|
|
+ df = df[['DT', 'TRADE_CODE', 'OPEN', 'HIGH', 'LOW', 'CLOSE', 'VOLUME', 'AMT', 'OI', 'SETTLE', 'ErrorCode']]
|
|
|
+ df = df.dropna()
|
|
|
+ json_data = df.to_json()
|
|
|
+ # w.stop()
|
|
|
+ print("wind data end")
|
|
|
+ result = json.loads(json_data)
|
|
|
+ return result
|
|
|
+
|
|
|
+
|
|
|
+if __name__ == "__main__":
|
|
|
+ # ths登录函数
|
|
|
+ thslogindemo()
|
|
|
+ # wind 登录
|
|
|
+ wStart = w.start()
|
|
|
+ if wStart.ErrorCode != 0:
|
|
|
+ print("启动万得API接口失败")
|
|
|
+ print(wStart)
|
|
|
+ app = __hug__.http.server()
|
|
|
+ run(app=app, reloader=True, port=7000)
|