コード例 #1
0
def FillVolumnMatrix(stockId, startDay, endDay, timeSpan):
    global AmountMatrix
    global VolumeMatrix
    global FiveMinOpenPriceMatrix
    TradeDayList = []
    calendar = md.get_calendar(Market, startDay, endDay)
    index = len(calendar) - 1
    for i in range(0, timeSpan):
        #print('index', index)
        timeOri = calendar[index].strtime
        strIndex = timeOri.index('T')
        timeAft = timeOri[0:strIndex]
        TradeDayList.insert(0, timeAft)
        index -= 1
    print("TradeDayList", TradeDayList)
    for day in TradeDayList:
        print("day:", day)
        dayIndex = TradeDayList.index(day)
        startTime = day + ' ' + '9:30:00'
        endTime = day + ' ' + '15:00:00'
        print("stockId", stockId)
        print("IntervalWid", IntervalWid)
        print("startTime", startTime)
        print("endTime", endTime)
        bars = md.get_bars(stockId, IntervalWid, startTime, endTime)
        print("bar:", bars)
        for interval in range(len(bars)):
            VolumeMatrix[dayIndex][interval] = bars[interval].volume
            AmountMatrix[dayIndex][interval] = bars[interval].amount
            FiveMinOpenPriceMatrix[dayIndex][interval] = bars[interval].open
コード例 #2
0
def FillVolumnMatrix(stockId, startDay, endDay, timeSpan):
    global AmountMatrix
    global VolumeMatrix
    TradeDayList = []
    calendar = md.get_calendar(Market, startDay, endDay)
    # print('len(calender)', len(calendar))
    index = len(calendar) - 1
    for i in range(0, timeSpan):
        # print('index', index)
        timeOri = calendar[index].strtime
        strIndex = timeOri.index('T')
        timeAft = timeOri[0:strIndex]
        TradeDayList.insert(0, timeAft)
        index -= 1
    for day in TradeDayList:
        dayIndex = TradeDayList.index(day)
        startTime = day + ' ' + '9:30:00'
        endTime = day + ' ' + '15:00:00'
        bars = md.get_bars(stockId, IntervalWid, startTime, endTime)
        for interval in range(len(bars)):
            VolumeMatrix[dayIndex][interval] = bars[interval].volume
            AmountMatrix[dayIndex][interval] = bars[interval].amount
            FiveMinOpenPriceMatrix[dayIndex][interval] = bars[interval].open
    print("AmountMatrix", AmountMatrix)
    print("VolumeMatrix", VolumeMatrix)
コード例 #3
0
ファイル: myquant.py プロジェクト: fanraul/RichMinds
def get_bars(symbol, bar_type, begin_time, end_time):
    var = md.get_bars(symbol, bar_type, begin_time, end_time)
    if len(var) == 0:
        print("no bar data for stock %s between %s and %s" %(symbol, begin_time, end_time))
        return pd.DataFrame()
    else:
        ret = bar_topd(var,'date')
        return ret
コード例 #4
0
def GetTradeDayPriceList(stockId, tradeDay):
    tradedayPriceList = []
    startTime = tradeDay + ' ' + '9:30:00'
    endTime = tradeDay + ' ' + '15:00:00'
    bars = md.get_bars(stockId, IntervalWid, startTime, endTime)
    for interval in range(len(bars)):
        tradedayPriceList.insert(bars[interval].open)
    return tradedayPriceList
コード例 #5
0
ファイル: gmTools.py プロジェクト: lwgboy/stock
def get_minutes_bars(stock_list, minutes, begin_time, end_time):
    # 连接本地终端时,td_addr为localhost:8001,
    if (td.init('*****@*****.**', 'zyj2590@1109', 'strategy_1') == 0):
        try:
            bars = md.get_bars(stock_list, int(minutes * 60), begin_time,
                               end_time)
            return bars
        except:
            pass
コード例 #6
0
    def get_k_data(self,
                   code=None,
                   start=None,
                   end=ct._TODAY_,
                   ktype='D',
                   isOHLC=True):

        if code[:2] == '60' or\
                        code[:2] == '00':
            code = 'SHSE.' + code
        else:
            code = 'SZSE.' + code

        if len(start) == 10:
            start += ' 09:00:00'
        if len(end) == 10:
            end += ' 15:00:00'
        tmp_end = start
        last_end = -1
        dat = pd.DataFrame()
        while (tmp_end < end and tmp_end != last_end):
            if ktype == 'D':
                bars = md.get_dailybars(code, tmp_end, end)
            else:
                bars = md.get_bars(code, self.k_dic[ktype], tmp_end, end)
            if len(bars) == 0:
                break

            rt = []
            for i in bars:
                rt.append(to_dict(i))

            dt = pd.DataFrame(rt)
            if start == tmp_end:
                dat = dt
            else:
                dat = dat.append(dt)
            print '-----', code, dt.iloc[-1, 12][:19]
            last_end = tmp_end
            tmp_end = dt.iloc[-1, 12][:19]
            next_5min = datetime.strptime(
                tmp_end, '%Y-%m-%dT%H:%M:%S') + timedelta(minutes=int(ktype))
            tmp_end = datetime.strftime(next_5min, '%Y-%m-%d %H:%M:%S')
        if dat.empty:
            return dat
        dat.drop_duplicates(['strendtime'], inplace=True)
        dat['date'] = dat['strendtime'].apply(
            lambda x: x[:10] + ' ' + x[11:19])
        dat.insert(len(dat.columns), "code", code[5:])
        #dat.index = dat['strtime'].apply(lambda x: datetime.strptime(x, '%Y-%m-%dT%H:%M:%S+08:00'))
        if isOHLC:
            return dat[[
                'date', 'high', 'low', 'open', 'close', 'volume', 'code'
            ]]
        return dat
コード例 #7
0
def GetLastOpenPrice(stockId, startDay, endDay, timeSpan):
    calender = md.get_calendar(Market, startDay, endDay)
    index = len(calender) - timeSpan + 1
    timeOri = calender[index].strtime
    strIndex = timeOri.index('T')
    lastDay = timeOri[0:strIndex]
    startTime = lastDay + ' ' + '14:55:00'
    endTime = lastDay + ' ' + '15:00:00'
    bars = md.get_bars(stockId, 300, startTime, endTime)
    result = bars[0].open
    return result
コード例 #8
0
def TestIFS():
    barList = md.get_bars(Market+'.'+StockId, 300, CurrentDay + ' 9:40:00', CurrentDay + ' 10:40:00')
    averageDataList = []
    for i in range(0, len(barList)):
        vol = barList[i].volume
        amt = barList[i].amount
        if vol != 0:
            averagePrice = amt / vol
            averageDataList.append(averagePrice)
        else:
            tempCount = len(averageDataList)
            averageDataList.append(averageDataList[tempCount - 1])
    ifsTestList = GetIFS(averageDataList, 0.6)
    return ifsTestList
コード例 #9
0
def GetHistoryIntervalOpenPrice(stockId, startDay, endDay, timeSpan):
    fiveMinOpenPriceMatrix = [[0 for col in range(48)] for row in range(timeSpan)]
    global FiveMinOpenPriceMatrix
    TradeDayList = []
    calendar = md.get_calendar(Market, startDay, endDay)
    index = len(calendar) - 1
    for i in range(0, timeSpan):
        timeOri = calendar[index].strtime
        strIndex = timeOri.index('T')
        timeAft = timeOri[0:strIndex]
        TradeDayList.insert(0, timeAft)
        index -= 1
    for day in TradeDayList:
        dayIndex = TradeDayList.index(day)
        startTime = day + ' ' + '9:30:00'
        endTime = day + ' ' + '15:00:00'
        bars = md.get_bars(stockId, 300, startTime, endTime)
        for interval in range(len(bars)):
            fiveMinOpenPriceMatrix[dayIndex][interval] = bars[interval].open
    return fiveMinOpenPriceMatrix
コード例 #10
0
ファイル: gm_api.py プロジェクト: zzprice/xuefu
    def get_hist_data(self, code=None, start=None, end=ct._TODAY_, ktype='D'):

        if code[:2] == '60':
            code = 'SHSE.' + code
        else:
            code = 'SZSE.' + code

        tmp_end = start
        last_end = -1
        dat = pd.DataFrame()
        while (tmp_end < end and tmp_end != last_end):
            if ktype == 'D':
                bars = md.get_dailybars(code, tmp_end, end)
            else:
                bars = md.get_bars(code, self.k_dic[ktype],
                                   tmp_end + ' 09:00:00', end + ' 15:00:00')

            if len(bars) == 0:
                return pd.DataFrame(
                    [], columns=['high', 'low', 'open', 'close', 'volume'])

            rt = []
            for i in bars:
                rt.append(to_dict(i))

            dt = pd.DataFrame(rt)
            if start == tmp_end:
                dat = dt
            else:
                dat = dat.append(dt)
            print '-----', code, dt.iloc[-1, 12][:10]
            last_end = tmp_end
            tmp_end = dt.iloc[-1, 12][:10]
            tomorrow = datetime.strptime(tmp_end,
                                         '%Y-%m-%d') + timedelta(days=1)
            tmp_end = datetime.strftime(tomorrow, '%Y-%m-%d')

        dat.drop_duplicates(['strendtime'], inplace=True)
        dat.index = dat['strendtime'].apply(
            lambda x: datetime.strptime(x, '%Y-%m-%dT%H:%M:%S+08:00'))
        return dat[['high', 'low', 'open', 'close', 'volume']]
コード例 #11
0
ファイル: test_md_query.py プロジェクト: ssh352/see
)
print('get_ticks: ', len(r))

#提取tick快照
r = md.get_last_ticks('SHSE.600000')
print('get_last_ticks: ', len(r))

#提取最新N笔tick数据
r = md.get_last_n_ticks(
    'SHSE.600000', 10)
print('get_last_n_ticks(10): ', len(r))

#提起一分钟分时数据(freq=60 seconds)
r = md.get_bars(
    'SHSE.600000',
    60,
    '2015-12-01 09:30:00',
    '2015-12-10 09:31:00',
)
print('get_bars: ', len(r))

#提取bar快照
r = md.get_last_bars('SHSE.600000,', 60)
print('get_last_bars: ', len(r))

#提取最新N笔bar数据
r = md.get_last_n_bars('SHSE.600000',60,10)
print('get_last_n_bars(10): ', len(r))

#提取日频数据
r = md.get_dailybars(
    'SHSE.600000',
コード例 #12
0
ファイル: activeVWAP2.py プロジェクト: SmeOFNJU/AlgTrading
    for row in range(len(FiveMinOpenPriceMatrix)):
        print("row:%d", rowIndex)
        for col in range(colLen):
            print("col:%d", FiveMinOpenPriceMatrix[row][col])
        rowIndex += 1

    DrawTheData(FiveMinOpenPriceMatrix)'''

    #Hurst = GetWaveletHurst(HistoryPriceMatrix)
    #OpenPriceHurst = GetWaveletHurst(FiveMinOpenPriceMatrix)
    #print('Hurst', Hurst)
    #print('OpenPriceHurst', OpenPriceHurst)
    
    
    #利用加权移动平均法估算第k+2个区间的值
    currentDataList = md.get_bars(Market+'.'+StockId, 300, CurrentDay + ' 9:30:00', CurrentDay + ' 15:00:00')
    print("currentDataList", currentDataList)
    CurrentOpenPriceList = ConvertBarsToOpenPrices(currentDataList)
    print('CurrentOpenPriceList', CurrentOpenPriceList)
    SampleDataList = ConvertMatrixToList(FiveMinOpenPriceMatrix)
    weighList = [0.4, 0.25, 0.15, 0.15, 0.05]
    for index in range(0,48):
        sumOfLastFive = 0
        openPriceCount = len(SampleDataList)
        for subIndex in range(1,6):
            sumOfLastFive = sumOfLastFive + weighList[subIndex - 1] * SampleDataList[openPriceCount - subIndex]
        estimate = sumOfLastFive
        temSampleDataList = SampleDataList
        temSampleDataList.append(estimate)
        #对temSampleDataList求IFS
        global ForcastOpenPirceList
コード例 #13
0
ファイル: GetData.py プロジェクト: zhangyy130/PyQuant
def min_data(daima, start_date, end_date, n):
    def count_split_days(start_date, end_date):
        if datetime.datetime(int(start_date[0:4]), int(start_date[4:6]),
                             int(start_date[6:])) < datetime.datetime(
                                 2015, 1, 5):
            num = (datetime.datetime(int(end_date[0:4]), int(end_date[4:6]),
                                     int(end_date[6:])) -
                   datetime.datetime(2015, 1, 5)).days
        else:
            num = (datetime.datetime(int(end_date[0:4]), int(end_date[4:6]),
                                     int(end_date[6:])) -
                   datetime.datetime(int(start_date[0:4]), int(
                       start_date[4:6]), int(start_date[6:]))).days
        return num

    from gmsdk import md
    ret = md.init("yourname", "password")
    if daima[0:2] == '60':
        daima_new = str('SHSE.') + str(daima)
    else:
        daima_new = str('SZSE.') + str(daima)
    mins = n * 60
    strtime = []
    openp = []
    high = []
    low = []
    close = []
    volume = []
    amount = []

    days_internal = 120

    LoopNum = divmod(count_split_days(start_date, end_date),
                     days_internal)[0] + 1
    left = divmod(count_split_days(start_date, end_date), days_internal)[1]
    bars_set = []
    n = 0
    for ln in range(0, LoopNum):
        if n == 0:
            bars = md.get_bars(
                daima_new, mins,
                str(
                    datetime.datetime(int(start_date[0:4]), int(
                        start_date[4:6]), int(start_date[6:])) +
                    datetime.timedelta(days=days_internal * (ln)))[0:10] +
                ' 09:00:00',
                str(
                    datetime.datetime(int(start_date[0:4]), int(
                        start_date[4:6]), int(start_date[6:])) +
                    datetime.timedelta(days=days_internal *
                                       (ln + 1)))[0:10] + ' 15:30:00')
            n = n + 1
        else:
            if ln == LoopNum - 1:
                bars = md.get_bars(
                    daima_new, mins,
                    str(
                        datetime.datetime(int(start_date[
                            0:4]), int(start_date[4:6]), int(start_date[6:])) +
                        datetime.timedelta(days=days_internal *
                                           (ln) + 1))[0:10] + ' 09:00:00',
                    end_date[0:4] + '-' + end_date[4:6] + '-' + end_date[6:] +
                    ' 15:30:00')
                n = n + 1
            else:
                bars = md.get_bars(
                    daima_new, mins,
                    str(
                        datetime.datetime(int(start_date[
                            0:4]), int(start_date[4:6]), int(start_date[6:])) +
                        datetime.timedelta(days=days_internal *
                                           (ln) + 1))[0:10] + ' 09:00:00',
                    str(
                        datetime.datetime(int(start_date[
                            0:4]), int(start_date[4:6]), int(start_date[6:])) +
                        datetime.timedelta(days=days_internal *
                                           (ln + 1)))[0:10] + ' 15:30:00')
                n = n + 1

        bars_set.append(bars)

    for SignalBars in bars_set:
        for b in SignalBars:
            strtime.append(b.strtime)
            openp.append(b.open)
            high.append(b.high)
            low.append(b.low)
            close.append(b.close)
            volume.append(b.volume)
            amount.append(b.amount)

    mins = pd.DataFrame({
        'strtime': strtime,
        'open': openp,
        'close': close,
        'high': high,
        'low': low,
        'volume': volume,
        'amount': amount
    })
    return mins
コード例 #14
0
                               transaction_ratio=1,
                               commission_ratio=0.0001,
                               slippage_ratio=0.001,
                               price_type=0)

    TodayVRList = GetRatioListOfToday(Market + '.' + StockId, StartHistoryDay,
                                      EndHistoryDay, HistoryDays, WeightList)
    IntervalBorderList = GetIntervalList(TradeDate)
    print("VolumeMatrix", VolumeMatrix)
    print("AmountMatrix", AmountMatrix)

    #Hurst = GetWaveletHurst(FiveMinHisAveragePriceMatrix)
    #print('Hurst', Hurst)

    currentDataList = md.get_bars(Market + '.' + StockId, 300,
                                  TradeDate + ' 9:30:00',
                                  TradeDate + ' 15:00:00')
    CurrentOpenPricesList = ConvertBarsToOpenPriceList(currentDataList)
    HistoryFiveMinOpenPriceList = ConvertMatrixToList(FiveMinOpenPriceMatrix)
    print("HistoryFiveMinOpenPriceList", HistoryFiveMinOpenPriceList)
    print("CurrentOpenPricesList", CurrentOpenPricesList)
    ForcastAveragePricesList = GetForcastAveragePricesListByMove(
        HistoryFiveMinOpenPriceList, CurrentOpenPricesList)

    #lastDayPrice = GetLastOpenPrice(Market+'.'+StockId, StartHistoryDay, EndHistoryDay, HistoryDays)
    #HistoryFiveMinOpenPriceDifferList = ConvertPriceToDifferenceOne(lastDayPrice, HistoryFiveMinOpenPriceList)
    #print("HistoryFiveMinOpenPriceDifferList", HistoryFiveMinOpenPriceDifferList)
    #CurrentOpenPricesDifferList = ConvertPriceToDifference(HistoryFiveMinOpenPriceList, CurrentOpenPricesList)
    #ForcastAveragePricesDifferList = ConvertPriceToDifference(HistoryFiveMinOpenPriceList, ForcastAveragePricesList)
    predictIndex = 5
    basicPointNum = 48 * HistoryDays
コード例 #15
0
ファイル: GetData.py プロジェクト: VAPSEC/PyQuant
def min_data(daima,start_date,end_date,n):

    def count_split_days(start_date,end_date):
        if datetime.datetime(int(start_date[0:4]),int(start_date[4:6]),int(start_date[6:]))<datetime.datetime(2015,1,5):
            num = (datetime.datetime(int(end_date[0:4]),int(end_date[4:6]),int(end_date[6:]))-datetime.datetime(2015,1,5)).days
        else:
            num = (datetime.datetime(int(end_date[0:4]),int(end_date[4:6]),int(end_date[6:]))-datetime.datetime(int(start_date[0:4]),int(start_date[4:6]),int(start_date[6:]))).days
        return num
        
        
    from gmsdk import md
    ret = md.init("yourname", "password")
    if daima[0:2]=='60':
        daima_new = str('SHSE.')+str(daima)
    else:
        daima_new = str('SZSE.')+str(daima)
    mins = n*60
    strtime = []
    openp = []
    high = []
    low = []
    close = []
    volume = []
    amount = []

    days_internal = 120

    LoopNum = divmod(count_split_days(start_date,end_date),days_internal)[0]+1
    left = divmod(count_split_days(start_date,end_date),days_internal)[1]
    bars_set = []
    n = 0
    for ln in range(0,LoopNum):
        if n == 0:
            bars = md.get_bars(daima_new,mins,str(datetime.datetime(int(start_date[0:4]),int(start_date[4:6]),int(start_date[6:]))+datetime.timedelta(days=days_internal*(ln)))[0:10]+' 09:00:00',str(datetime.datetime(int(start_date[0:4]),int(start_date[4:6]),int(start_date[6:]))+datetime.timedelta(days=days_internal*(ln+1)))[0:10]+' 15:30:00')
            n = n+1
        else:
            if ln == LoopNum-1:
                bars = md.get_bars(daima_new,mins,str(datetime.datetime(int(start_date[0:4]),int(start_date[4:6]),int(start_date[6:]))+datetime.timedelta(days=days_internal*(ln)+1))[0:10]+' 09:00:00',end_date[0:4]+'-'+end_date[4:6]+'-'+end_date[6:]+' 15:30:00')
                n = n+1
            else:
                bars = md.get_bars(daima_new,mins,str(datetime.datetime(int(start_date[0:4]),int(start_date[4:6]),int(start_date[6:]))+datetime.timedelta(days=days_internal*(ln)+1))[0:10]+' 09:00:00',str(datetime.datetime(int(start_date[0:4]),int(start_date[4:6]),int(start_date[6:]))+datetime.timedelta(days=days_internal*(ln+1)))[0:10]+' 15:30:00')
                n = n+1
                
            

        bars_set.append(bars)

    
    for SignalBars in bars_set:
        for b in SignalBars:
            strtime.append(b.strtime)
            openp.append(b.open)
            high.append(b.high)
            low.append(b.low)
            close.append(b.close)
            volume.append(b.volume)
            amount.append(b.amount)

    mins = pd.DataFrame({'strtime':strtime,
                        'open':openp,
                        'close':close,
                        'high':high,
                        'low':low,
                        'volume':volume,
                        'amount':amount})
    return mins
コード例 #16
0
def OneDayMinData_MD(date, stklst):
    md.init('18201141877', 'Wqxl7309')
    datestr = dt.datetime.strptime(str(date), '%Y%m%d')
    datestr = dt.datetime.strftime(datestr, '%Y-%m-%d')
    starttime = ' '.join([datestr, '09:30:00'])
    endtime = ' '.join([datestr, '15:00:00'])
    # day base obj
    objday = StocksMinDB(configpath=r'E:\stocks_data_min\StocksMinDB\configs')
    objday.connectDB('stocks_data_min_by_day')
    daycols = [c.lower() for c in ByDay.colinfo if c != 'STKID']
    dayconn = objday._getConn_()
    # stk base obj
    objstk = StocksMinDB(configpath=r'E:\stocks_data_min\StocksMinDB\configs')
    objstk.connectDB('stocks_data_min_by_stock')
    stkcols = [c.lower() for c in ByStock.colinfo]
    stkconn = objstk._getConn_()
    # data to extract
    cols = [
        'date', 'time', 'stkcd', 'open', 'high', 'low', 'close', 'volume',
        'amount'
    ]
    alldata = pd.DataFrame()
    for stk in stklst:
        szstk = False
        if stk >= 600000:
            stkcd = '.'.join(['SHSE', str(stk)])
        else:
            szstk = True
            stkstr = str(stk)
            stkcd = '.'.join(['SZSE', '0' * (6 - len(stkstr)) + stkstr])
        stkbars = md.get_bars(stkcd, 60, starttime, endtime)
        stkdata = [[
            date,
            utc2local(bar.utc_endtime, '%H%M'), stk, bar.open, bar.high,
            bar.low, bar.close, bar.volume, bar.amount
        ] for bar in stkbars]
        if szstk and stkdata[-1][1] == 1500 and stkdata[-2][1] >= 1457:
            tms = stkdata[-2][1] + 1
            cls = stkdata[-2][6]
            for tm in range(tms, 1460):
                stkdata.insert(-1, [date, tm, stk, cls, cls, cls, cls, 0, 0])
        stkdata = pd.DataFrame(stkdata, columns=cols)
        stkdata['volamtflag'] = 0
        stkdata.loc[stkdata['amount'] >
                    (stkdata['volume'] + 100) * stkdata['high'],
                    'volamtflag'] = 1
        stkdata.loc[stkdata['amount'] <
                    (stkdata['volume'] - 100) * stkdata['low'],
                    'volamtflag'] = 2
        stkdata.loc[(stkdata['amount'] == 0) & (stkdata['volume'] > 0),
                    'volamtflag'] = 3
        stkdata.loc[(stkdata['amount'] == 0) & (stkdata['volume'] == 0),
                    'volamtflag'] = 4
        alldata = alldata.append(stkdata, ignore_index=True)
        stktable = '_'.join(
            ['stkmin', stkcd[:2].lower() + stkcd.split('.')[1]])
        objstk.update_db(conn=stkconn,
                         dbname='stocks_data_min_by_stock',
                         data=stkdata.loc[:, stkcols].values,
                         tablename=stktable,
                         colinfo=ByStock.colinfo,
                         prmkey=ByStock.prmkey,
                         if_exist='append',
                         chunksize=1000)
    # update day base
    daytable = 'stkmin_{0}'.format(date)
    daycolinfo = dict(
        [itm for itm in ByDay.colinfo.items() if itm[0] != 'STKID'])
    objday.update_db(conn=dayconn,
                     dbname='stocks_data_min_by_day',
                     data=alldata.loc[:, daycols].values,
                     tablename=daytable,
                     colinfo=daycolinfo,
                     prmkey=ByDay.prmkey,
                     if_exist='append',
                     chunksize=1000)
コード例 #17
0
    'CFFEX.IF1512,CFFEX.IF1512',
    '2015-03-19 11:29:00',
    '2015-03-19 12:00:00',
)
print('get_ticks: ', len(r))

r = md.get_last_ticks('CFFEX.IF1512,')
print('get_last_ticks: ', len(r))

r = md.get_last_n_ticks(
    'CFFEX.IF1512', 10)
print('get_last_n_ticks(10): ', len(r))

r = md.get_bars(
    'CFFEX.IF1512',
    60,
    '2015-05-01 09:30:00',
    '2015-05-10 09:31:00',
)
print('get_bars: ', len(r))

r = md.get_last_bars('CFFEX.IF1512,', 60)
print('get_last_bars: ', len(r))

r = md.get_last_n_bars(
    'CFFEX.IF1512',
    60,
    10)
print('get_last_n_bars(10): ', len(r))

r = md.get_dailybars(
    'CFFEX.IF1512',
コード例 #18
0
def get_bars(symbol, bar_type, begin_time, end_time):
    var = md.get_bars(symbol, bar_type, begin_time, end_time)
    ret = bar_topd(var,'date')
    return ret
コード例 #19
0
ファイル: QAGmsdk.py プロジェクト: imsimplise/QUANTAXIS
def get_bars(symbol, bar_type, begin_time, end_time):
    var = md.get_bars(symbol, bar_type, begin_time, end_time)
    ret = bar_topd(var, 'date')
    return ret
コード例 #20
0
ファイル: test.py プロジェクト: tianhm/pyvanas-halfway
conn = pymongo.MongoClient('139.196.6.151', 26666)
db = conn['test_center']
qh_data_one_min = db['qh_data_one_min']
qh_data_five_min = db['qh_data_five_min']
qh_data_five_daily = db['qh_data_five_daily']
###############################
end = datetime.datetime.now()
start_m = end.month - 1
start = datetime.datetime(end.year, start_m, 1, 9, 0, 0)
start_e = datetime.datetime(end.year, start_m, 1, 15, 0, 0)
e_s_timedetlta = (end - start).days
for day in range(e_s_timedetlta):
    this_start = start + datetime.timedelta(days=day)
    this_end = start_e + datetime.timedelta(days=day)
    for f in f_list:
        bars = md.get_bars(f, 60, this_start.strftime('%Y-%m-%d %H:%M:%S'),
                           this_end.strftime('%Y-%m-%d %H:%M:%S'))
        for bar in bars:
            print to_dict(bar)
            qh_data_one_min.insert_one(to_dict(bar))
    time.sleep(2)

for day in range(e_s_timedetlta):
    this_start = start + datetime.timedelta(days=day)
    this_end = start_e + datetime.timedelta(days=day)
    for f in f_list:
        bars = md.get_bars(f, 300, this_start.strftime('%Y-%m-%d %H:%M:%S'),
                           this_end.strftime('%Y-%m-%d %H:%M:%S'))
        for bar in bars:
            print to_dict(bar)
            qh_data_five_min.insert(to_dict(bar))
    time.sleep(2)
コード例 #21
0
ファイル: gmTools.py プロジェクト: lwgboy/stock
def read_kline_ts(symbol_list,
                  weeks_in_seconds,
                  begin_time,
                  end_time,
                  max_record=50000):
    if (True):
        # 类结构体转成dataframe
        kdata = []
        columns = [
            'endtime', 'open', 'high', 'low', 'close', 'volume', 'amount'
        ]
        bars = 0

        is_daily = (weeks_in_seconds == 240 * 60)

        while (True):

            # 返回结果是bar类数组
            if is_daily:
                bars = md.get_dailybars(symbol_list, begin_time, end_time)
            else:
                bars = md.get_bars(symbol_list, weeks_in_seconds, begin_time,
                                   end_time)

            for bar in bars:
                if is_daily:
                    kdata.append([
                        int(bar.utc_time), bar.open, bar.high, bar.close,
                        bar.low, bar.volume, bar.amount
                    ])
                else:
                    kdata.append([
                        int(bar.utc_endtime), bar.open, bar.high, bar.close,
                        bar.low, bar.volume, bar.amount
                    ])

            count = len(bars)
            # TODO 一次最多处理10000项以内数据,超出应有所提示
            if (count == 0 or len(kdata) > max_record) \
                    or (not is_daily and bars[count - 1].strendtime >= end_time) \
                    or (is_daily and bars[count - 1].strtime >= end_time):
                break

            # print("read [%s] k line:%s count=%d" % (symbol_list,
            #        bars[0].strtime[:10] + ' ' + bars[0].strtime[11:19], count))

            if is_daily:
                if count <= 10:
                    break
                else:
                    begin_time = bars[count - 1].strtime[:10] \
                                 + ' ' + bars[count - 1].strtime[11:19]
            else:
                begin_time = bars[count - 1].strendtime[:10] \
                             + ' ' + bars[count - 1].strendtime[11:19]
        '''
        count=len(kdata)
        if count>0:
            print("total count:%d,end date:%s " % (count,timestamp_datetime(kdata[count-1][0])))
        else:
            print("No data" )
        '''

        return pd.DataFrame(kdata, columns=columns)
コード例 #22
0
def OneDayMinData_MD(date,stklst):
    md.init('18201141877','Wqxl7309')
    datestr= dt.datetime.strptime(str(date),'%Y%m%d')
    datestr = dt.datetime.strftime(datestr,'%Y-%m-%d')
    starttime = ' '.join([datestr,'09:30:00'])
    endtime = ' '.join([datestr,'15:00:00'])
    # day base obj
    objday = StocksMinDB(configpath=r'E:\stocks_data_min\StocksMinDB\configs')
    objday.connectDB('stocks_data_min_by_day')
    daycols = [c.lower() for c in ByDay.colinfo if c!='STKID']
    dayconn = objday._getConn_()
    # stk base obj
    objstk = StocksMinDB(configpath=r'E:\stocks_data_min\StocksMinDB\configs')
    objstk.connectDB('stocks_data_min_by_stock')
    stkcols = [c.lower() for c in ByStock.colinfo]
    stkconn = objstk._getConn_()
    # data to extract
    cols = ['date','time','stkcd','open','high','low','close','volume','amount']
    alldata = pd.DataFrame()
    for stk in stklst:
        szstk = False
        if stk>=600000:
            stkcd = '.'.join(['SHSE',str(stk)])
        else:
            szstk = True
            stkstr = str(stk)
            stkcd = '.'.join(['SZSE','0'*(6-len(stkstr))+stkstr])
        stkbars = md.get_bars(stkcd,60,starttime,endtime)
        stkdata = [[date,utc2local(bar.utc_endtime,'%H%M'),stk,bar.open,bar.high,bar.low,bar.close,bar.volume,bar.amount] for bar in stkbars]
        if szstk and stkdata[-1][1]==1500 and stkdata[-2][1]>=1457:
            tms = stkdata[-2][1]+1
            cls = stkdata[-2][6]
            for tm in range(tms,1460):
                stkdata.insert(-1,[date,tm,stk,cls,cls,cls,cls,0,0])
        stkdata = pd.DataFrame(stkdata,columns=cols)
        stkdata['volamtflag'] = 0
        stkdata.loc[stkdata['amount']>(stkdata['volume']+100)*stkdata['high'],'volamtflag'] = 1
        stkdata.loc[stkdata['amount']<(stkdata['volume']-100)*stkdata['low'],'volamtflag'] = 2
        stkdata.loc[(stkdata['amount']==0) & (stkdata['volume']>0),'volamtflag'] = 3
        stkdata.loc[(stkdata['amount']==0) & (stkdata['volume']==0),'volamtflag'] = 4
        alldata = alldata.append(stkdata,ignore_index=True)
        stktable = '_'.join(['stkmin',stkcd[:2].lower()+stkcd.split('.')[1]])
        objstk.update_db(conn=stkconn,
                         dbname='stocks_data_min_by_stock',
                         data=stkdata.loc[:,stkcols].values,
                         tablename=stktable,
                         colinfo=ByStock.colinfo,
                         prmkey=ByStock.prmkey,
                         if_exist='append',
                         chunksize=1000
                         )
    # update day base
    daytable = 'stkmin_{0}'.format(date)
    daycolinfo = dict([itm for itm in ByDay.colinfo.items() if itm[0]!='STKID'])
    objday.update_db(conn=dayconn,
                         dbname='stocks_data_min_by_day',
                         data=alldata.loc[:,daycols].values,
                         tablename=daytable,
                         colinfo=daycolinfo,
                         prmkey=ByDay.prmkey,
                         if_exist='append',
                         chunksize=1000
                         )
コード例 #23
0
ファイル: get_data_gmsdk.py プロジェクト: FayolChang/mlp
# coding:utf-8
__author__ = 'song.lu'
from dateutil.parser import parse
from gmsdk import md
import pandas as pd
import numpy as np
import time




md.init('cloud.myquant.cn:8000', 'demo', 'demo')

r = md.get_bars(
    'CFFEX.IF1506',
    60,
    '2015-05-27 09:15:00',
    '2015-05-27 15:30:00',
)


st = time.time()
times = []
closep = []
openp = []
highp = []
lowp = []
volume = []
for i in r:
    times.append(parse(str(i.bar_time)))
    closep.append(i.close)
    openp.append(i.open)