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