Exemplo n.º 1
0
def __fetch_histdata(basic=SjGpJb, start=None, end=None, ktype='D'):
    df = tushare.get_hist_data(basic.dm, start=start, end=end, ktype=ktype)
    if df is not None and not df.empty:
        records = df.to_records()

        # 接口中date变量在ktype为日, 周, 月时为字符日期, 5, 15, 30, 60时为字符日期时间
        if ktype == 'D' or ktype == 'W' or ktype == 'M':
            pattern = '%Y-%m-%d'
        else:
            pattern = '%Y-%m-%d %H:%M:%S'
        jyrq = str_utils.to_timezone(records[0]['date'], pattern).date()

        # 包含记录且行情日期大于基本表的交易日期,则更新对应字段
        if len(records) > 0 and (basic.jyrq is None or basic.jyrq < jyrq):
            basic.jyrq = records[0]['date']
            basic.kpj = records[0]['open']
            basic.spj = records[0]['close']
            basic.zgj = records[0]['high']
            basic.zdj = records[0]['low']
            basic.cjl = records[0]['volume']
            basic.zde = records[0]['price_change']
            basic.zdf = records[0]['p_change']
            basic.hsl = records[0]['turnover']
            basic.save()
        for record in records:
            model = SjLshqD  # 默认日线
            if ktype == 'W':  # 周线
                model = SjLshqW
            elif ktype == 'M':  # 月线
                model = SjLshqM
            elif ktype == '5':  # 5分线
                model = SjLshq5
            elif ktype == '15':  # 15分线
                model = SjLshq15
            elif ktype == '30':  # 30分线
                model = SjLshq30
            elif ktype == '60':  # 60线
                model = SjLshq60

            sj = str_utils.to_timezone(record['date'], pattern)
            data = model.objects.get_or_create(gpjb=basic, sj=sj)[0]
            data.dm = basic.dm
            data.kpj = record['open']
            data.spj = record['close']
            data.zgj = record['high']
            data.zdj = record['low']
            data.cjl = record['volume']
            data.zde = record['price_change']
            data.zdf = record['p_change']
            data.jj5 = record['ma5']
            data.jj10 = record['ma10']
            data.jj20 = record['ma20']
            data.jl5 = record['v_ma5']
            data.jl10 = record['v_ma10']
            data.jl20 = record['v_ma20']
            data.hsl = record['turnover']
            data.save()
Exemplo n.º 2
0
def init_day_data_by_file(import_files_path):
    files = os.listdir(import_files_path)
    for f in files:
        temp_path = import_files_path + '/' + f
        print(temp_path)
        csvfile = file(temp_path, 'rb')
        reader = csv.reader(csvfile)
        reader.next()  # 第一行略去
        basic = SjGpJb.objects.get(dm=stock_utils.gen_ggid(f))
        for line in reader:
            print(line)
            sj = str_utils.to_timezone(line[0], '%Y-%m-%d')
            data = SjLshqD.objects.get_or_create(gpjb=basic, sj=sj)[0]
            data.kpj = line[1]
            data.zgj = line[2]
            data.spj = line[3]
            data.zdj = line[4]
            data.cjl = line[5]
            data.zde = line[6]
            data.zdf = line[7]
            data.jj5 = line[8]
            data.jj10 = line[9]
            data.jj20 = line[10]
            data.jl5 = line[11]
            data.jl10 = line[12]
            data.jl20 = line[13]
            data.hsl = line[14]
            data.save()
        csvfile.close()
Exemplo n.º 3
0
def init_day_data(start=None):
    SjLshqD.objects.all().delete()
    stocks = SjGpJb.objects.order_by('dm').all()
    t1 = datetime.now()
    for basic in stocks:
        print('fetch stock: %s\'s data ' % basic.dm)
        if start is None:
            df = ts.get_hist_data(basic.dm, ktype='D')
        else:
            df = ts.get_hist_data(basic.dm, start=start, ktype='D')

        if df is not None and not df.empty:
            records = df.to_records()
            pattern = '%Y-%m-%d'
            for record in records:
                sj = str_utils.to_timezone(record['date'], pattern)
                data = SjLshqD.objects.get_or_create(gpjb=basic, sj=sj)[0]
                data.kpj = record['open']
                data.spj = record['close']
                data.zgj = record['high']
                data.zdj = record['low']
                data.cjl = record['volume']
                data.zde = record['price_change']
                data.zdf = record['p_change']
                data.jj5 = record['ma5']
                data.jj10 = record['ma10']
                data.jj20 = record['ma20']
                data.jl5 = record['v_ma5']
                data.jl10 = record['v_ma10']
                data.jl20 = record['v_ma20']
                data.hsl = record['turnover']
                data.save()

    t2 = datetime.now()
    print('init_day_data use totaol\' time: %s' % (t2 - t1).total_seconds())
Exemplo n.º 4
0
def init_day_data_by_file(import_files_path):
    files = os.listdir(import_files_path)
    for f in files:
        temp_path = import_files_path + '/' + f
        print(temp_path)
        csvfile = file(temp_path, 'rb')
        reader = csv.reader(csvfile)
        reader.next() # 第一行略去
        basic = SjGpJb.objects.get(dm=stock_utils.gen_ggid(f))
        for line in reader:
            print(line)
            sj = str_utils.to_timezone(line[0], '%Y-%m-%d')
            data = SjLshqD.objects.get_or_create(gpjb=basic, sj=sj)[0]
            data.kpj = line[1]
            data.zgj = line[2]
            data.spj = line[3]
            data.zdj = line[4]
            data.cjl = line[5]
            data.zde = line[6]
            data.zdf = line[7]
            data.jj5 = line[8]
            data.jj10 = line[9]
            data.jj20 = line[10]
            data.jl5 = line[11]
            data.jl10 = line[12]
            data.jl20 = line[13]
            data.hsl = line[14]
            data.save()
        csvfile.close()
Exemplo n.º 5
0
def init_day_data(start=None):
    SjLshqD.objects.all().delete()
    stocks = SjGpJb.objects.order_by('dm').all()
    t1 = datetime.now()
    for basic in stocks:
        print('fetch stock: %s\'s data ' % basic.dm)
        if start is None:
            df = ts.get_hist_data(basic.dm, ktype='D')
        else:
            df = ts.get_hist_data(basic.dm, start=start, ktype='D')

        if df is not None and not df.empty:
            records = df.to_records()
            pattern = '%Y-%m-%d'
            for record in records:
                sj = str_utils.to_timezone(record['date'], pattern)
                data = SjLshqD.objects.get_or_create(gpjb=basic, sj=sj)[0]
                data.kpj = record['open']
                data.spj = record['close']
                data.zgj = record['high']
                data.zdj = record['low']
                data.cjl = record['volume']
                data.zde = record['price_change']
                data.zdf = record['p_change']
                data.jj5 = record['ma5']
                data.jj10 = record['ma10']
                data.jj20 = record['ma20']
                data.jl5 = record['v_ma5']
                data.jl10 = record['v_ma10']
                data.jl20 = record['v_ma20']
                data.hsl = record['turnover']
                data.save()

    t2 = datetime.now()
    print('init_day_data use totaol\' time: %s' % (t2 - t1).total_seconds())
Exemplo n.º 6
0
def fetch_stock_basic(request):
    result = dict()
    try:
        if fetch_info['is_fetching_basic']:
            result['code'] = '1'
        else:
            fetch_info['is_fetching_basic'] = True
            df = tushare.get_stock_basics()
            records = df.to_records()
            for record in records:
                code = record['code']
                ggid = stock_utils.gen_ggid(code)
                sj_gp_jb = SjGpJb.objects.get_or_create(ggid=ggid)[0]
                sj_gp_jb.dm = code
                sj_gp_jb.mc = record['name']
                py = pinyin.Converter().convert(record['name'], fmt='fl', sc=False)
                sj_gp_jb.py = str_utils.qj_to_bj(py.lower().replace(' ', ''))
                sj_gp_jb.sshy = record['industry']
                sj_gp_jb.dq = record['area']
                sj_gp_jb.syl = record['pe']
                sj_gp_jb.ltgb = record['outstanding']
                sj_gp_jb.zgb = record['totals']
                sj_gp_jb.zzc = record['totalAssets']
                sj_gp_jb.ldzc = record['liquidAssets']
                sj_gp_jb.gdzc = record['fixedAssets']
                sj_gp_jb.gjj = record['reserved']
                sj_gp_jb.mggj = record['reservedPerShare']
                sj_gp_jb.mgsy = record['esp']
                sj_gp_jb.mgjz = record['bvps']
                sj_gp_jb.sjl = record['pb']
                ssrq = record['timeToMarket']
                if ssrq > 0:
                    sj_gp_jb.ssrq = str_utils.to_timezone(str(ssrq), "%Y%m%d")
                sj_gp_jb.tbsj = timezone.now()
                sj_gp_jb.save()
                result['code'] = '0'
                fetch_info['is_fetching_basic'] = False
    except Exception as e:
        result['code'] = '-1'
        result['message'] = e.message
        fetch_info['is_fetching_basic'] = False
    return JsonResponse(result)