Browse Source

新增wind数据接口

tuoling805 1 year ago
parent
commit
86b8deac81
1 changed files with 155 additions and 0 deletions
  1. 155 0
      wind_api.py

+ 155 - 0
wind_api.py

@@ -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)