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 __enter__(self): if ts.Logined() is False: print('天软未登陆或客户端未打开,将执行登陆操作') self.__tsLogin() return self
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
def __enter__(self): if ts.Logined() is False: self.__tsLogin() return self