def TSreadSingleStock(Ticker, Factor=["close"], TsAccount=None, TsPassword=None): if (TsAccount == None) or (TsPassword == None): try: acc_f = pd.read_csv("D:/TSaccount.csv") except Exception as e: return e try: ts.ConnectServer("tsl.tinysoft.com.cn", 443) dl = ts.LoginServer(acc_f.Account[0], acc_f.Password[0]) #Tuple(ErrNo,ErrMsg) Login ts.Disconnect() # Log out. except Exception as e: return e # 2. GetData # 3. Export(save data)
def tsl_login(): ts.ConnectServer("tsl.tinysoft.com.cn", 443) dl = ts.LoginServer("htccqh", "htfc2018") # Tuple(ErrNo,ErrMsg) 登陆用户 if dl[0] == 0: print("登陆成功") print("服务器设置:", ts.GetService()) ts.SetComputeBitsOption(64) # 设置计算单位 print("计算位数设置:", ts.GetComputeBitsOption()) else: print(dl[1])
def get_sCode_sDate(sDate): while True: ts.ConnectServer('211.100.23.205', 443) # ts.LoginServer('chancehunt', 'chnchnt') ts.LoginServer('fuchunguang', 'Fcg=888888') if ts.Logined() == True: print('已登录') # sql = 'stocks:=GetBk(\'上证A股;深证A股;创业板;中小企业板\');return stocks;' # result = (ts.RemoteExecute(sql, {}))[1] sCode = [] # for data in result: # sCode.append(data.decode('utf8')) sCode.append('SH000300') sCode.append('SH000016') sCode.append('SH000905') ts.Disconnect() break return (sCode)
def getData(sCode, sDate): while True: ts.ConnectServer('211.100.23.205', 443) ts.LoginServer('fuchunguang', 'Fcg=888888') if ts.Logined() == True: print('已登录') daycount = 0 for code in sCode: #########deal min1 hCodeInfo1min = {} with open('./{}_5s.csv'.format(code), 'w') as f: f.write('code,mtime,open,high,low,close,vol,amount\n') for date in sDate: daycount += 1 # sql = 'setsysparam(pn_stock(),\'{}\');' \ # 'setsysparam(PN_Cycle(), cy_1m());setsysparam(pn_date(),inttodate({}));' \ # 'return nday({},"mdate",datetimetostr(sp_time()),"open",Open(),"high",High(),"low",Low(),"close",Close(),"vol",Vol(),"amount",Amount());' \ # .format(code, date, 240) # 240个正好是一天 sql = 'setsysparam(pn_stock(),\'{}\');' \ 'setsysparam(PN_Cycle(), cy_5s());setsysparam(pn_date(),inttodate({}));' \ 'return nday({},"mdate",datetimetostr(sp_time()),"open",Open(),"high",High(),"low",Low(),"close",Close(),"vol",Vol(),"amount",Amount());' \ .format(code, date, 2880) # 240个正好是一天 result = (ts.RemoteExecute(sql, {}))[1] if result: for data in result: temp = data[b'mdate'].decode('gbk').replace( ':', '').replace('-', '').replace(' ', '') if temp[:4] == '2019' or temp[:4] == '2020': print(data[b'vol']) f.write('{},{},{},{},{},{},{},{}\n'.format( code, temp, data[b'open'], data[b'high'], data[b'low'], data[b'close'], data[b'vol'], data[b'amount'])) print('{},{},{},{},{},{},{},{}\n'.format( code, temp, data[b'open'], data[b'high'], data[b'low'], data[b'close'], data[b'vol'], data[b'amount'])) ts.Disconnect() break else: print('天软未登录') return 0
def __tsLogin(self): ts.ConnectServer("tsl.tinysoft.com.cn", 443) dl = ts.LoginServer("fzzqjyb", "fz123456") print('天软登陆成功')
def getData(sDate, intervel, sContract): #intervel 表示数据间隔要5秒的,还是一分钟数据,还是日线数据 e.g "5s" #contract 合约名称 e.g "sc" try: os.makedirs('E:\CLionProjects\HedgeArbitrage/data') except: pass while True: ts.ConnectServer('211.100.23.205', 443) ts.LoginServer('fuchunguang', 'Fcg=888888') if ts.Logined() == True: print('already login') daycount = 0 for code in sContract: hdateInfo = {} notNullcounter = 0 for date in sDate: daycount += 1 if intervel == '1m': temp1 = 'cy_1m()' temp2 = 240 elif intervel == '5s': temp1 = 'cy_5s()' temp2 = 2880 sql = 'setsysparam(pn_stock(),\'{}\');' \ 'setsysparam(PN_Cycle(), {});setsysparam(pn_date(),inttodate({}));' \ 'return nday({},"mdate",datetimetostr(sp_time()),"open",Open(),"high",High(),"low",Low(),"close",Close(),"vol",Vol(),"amount",Amount());' \ .format(code, temp1,date, temp2) result = (ts.RemoteExecute(sql, {}))[1] if result: for data in result: temp = data[b'mdate'].decode('gbk').replace( ':', '').replace('-', '').replace(' ', '') if len(temp) < 14: temp += '0' * (14 - len(temp)) if int(sDate[0]) <= int(temp[:8]) <= int( sDate[-1]): notNullcounter += 1 hdateInfo[temp] = [ data[b'open'], data[b'high'], data[b'low'], data[b'close'], data[b'vol'], data[b'amount'] ] print(temp) # print('{},{},{},{},{},{},{},{}\n'.format(code, # temp, # data[b'open'], # data[b'high'], # data[b'low'], # data[b'close'], # data[b'vol'], # data[b'amount'])) if notNullcounter: with open( 'E:\CLionProjects\HedgeArbitrage/data/{}_{}.js'. format(code, intervel), 'w') as f: json.dump(hdateInfo, f) ts.Disconnect() break else: print('not login ') return 0
# -*- coding: utf-8 -*- # @Time : 2018/12/20 16:07 # @Author : Big Huang # @Email : [email protected] # @File : tslfun.py # @Software: PyCharm import pandas as pd import sys import datetime sys.path.append(r"E:\software\Analyse.NET") import TSLPy3 as ts ts.ConnectServer("tsl.tinysoft.com.cn", 443) dl = ts.LoginServer("indexsh","888888") #Tuple(ErrNo,ErrMsg) 登陆用户 assert dl[0] == 0 print("登陆成功") print("服务器设置:", ts.GetService()) ts.SetComputeBitsOption(64) # 设置计算单位 print("计算位数设置:", ts.GetComputeBitsOption()) def tsl_fun(start_date: datetime.datetime, end_date:datetime.datetime): start_date_str = start_date.strftime("%Y-%m-%d") end_date_str = end_date.strftime("%Y-%m-%d") # data = ts.RemoteExecute("return 'return a string';",{}) #执行一条语句 data = ts.RemoteCallFunc("big", [start_date_str, end_date_str, "SH000050"], {}) df = pd.DataFrame(data[1]) df.columns = df.columns.map(lambda x: x.decode("gbk")) for col, dtype in df.dtypes.iteritems(): if dtype.name == "object": df[col] = df[col].str.decode("gbk")