def api_panorama_dynamic_valuation_chg(): date = request.values.get('date') result = {'industry_name': [], 'chg': []} date_list = get_offset_open_date_list(date, 2) chg_data = {} chg_data_sorted = {} chg_result = {} for i in range(0, len(date_list)): data = Stock_Industry_Basic.query.join(Stock_Industry_CSRC_1, Stock_Industry_Basic.industry_code == Stock_Industry_CSRC_1.industry_csrc_1_code).add_columns( Stock_Industry_CSRC_1.industry_csrc_1_name).filter(Stock_Industry_Basic.trade_date == date_list[i]).all() if i == 0: for j in data: chg_data[j.industry_csrc_1_name] = [] chg_data[j.industry_csrc_1_name].append(j.Stock_Industry_Basic.pe_ttm_overall) else: for j in data: chg_data[j.industry_csrc_1_name].append(j.Stock_Industry_Basic.pe_ttm_overall) for i in chg_data: chg_data_sorted[i] = round((chg_data[i][1] - chg_data[i][0]) / chg_data[i][0], 3) sum_result = sorted(chg_data_sorted.items(), key=lambda x: x[1], reverse=True) for i in sum_result: industry = i[0][4:] result['industry_name'].append(industry) result['chg'].append(i[1]) return jsonify(result)
def api_panorama_dynamic_valuation_n(): date = request.values.get('date') days=request.values.get('days') result={'industry_name':[],'amount':[]} date_list=get_offset_open_date_list(date,int(days)) sum_data={} sum_data_sorted={} sum_result={} for i in range(0,len(date_list)): data=Stock_Industry_Basic.query.join(Stock_Industry_CSRC_1,Stock_Industry_Basic.industry_code==Stock_Industry_CSRC_1.industry_csrc_1_code).add_columns(Stock_Industry_CSRC_1.industry_csrc_1_name).filter(Stock_Industry_Basic.trade_date==date_list[i]).all() if i==0: for j in data: sum_data[j.industry_csrc_1_name]=[] sum_data[j.industry_csrc_1_name].append(j.Stock_Industry_Basic.pe_ttm_overall) else: for j in data: sum_data[j.industry_csrc_1_name].append(j.Stock_Industry_Basic.pe_ttm_overall) for i in sum_data: sum = 0 for a in sum_data[i]: if a is None: a = 0 sum += a sum_data_sorted[i] = int(sum) sum_result = sorted(sum_data_sorted.items(), key=lambda x: x[1], reverse=True) for i in sum_result: industry=i[0][4:] result['industry_name'].append(industry) result['amount'].append(i[1]) return jsonify(result)
def api_trading_point_sorting_steady(): date = request.args.get('date') date_list = get_offset_open_date_list(date) buy_count_data = [] sell_count_data = [] category_data = [] for i in date_list: buy_count_data.append( Model_Trading_Point.query.filter_by(trade_date=i, steady_buy_point=1).count()) sell_count_data.append( Model_Trading_Point.query.filter_by(trade_date=i, steady_sell_point=1).count()) category_data.append(i[0:4] + '/' + i[4:6] + '/' + i[6:8]) model_result = Model_Trading_Point.query.filter_by( trade_date=date, steady_buy_point=1).all() model_data = [] for i in model_result: code = i.ts_code stock_basic = Stock_Basic.query.filter_by(ts_code=code).first() stock_bar_result = Stock_Daily_Bar.query.filter( Stock_Daily_Bar.ts_code == code, Stock_Daily_Bar.trade_date <= date, Stock_Daily_Bar.trade_date >= get_offset_date( date, -365)).order_by(Stock_Daily_Bar.trade_date.asc()).all() close = [] for j in stock_bar_result: close.append(j.close) basic_data = Stock_Daily_Basic.query.filter_by( ts_code=code, trade_date=date).first() model_data.append({ 'symbol': stock_basic.symbol, 'name': stock_basic.name, 'bar': close[-60:], 'close': close[-1], 'min': min(close), 'max': max(close), 'turnover_rate': basic_data.turnover_rate }) return jsonify({ 'chart': { 'category': category_data, 'buy': buy_count_data, 'sell': sell_count_data }, 'table': model_data })
def api_panorama_capital_flow_table(): date = request.values.get('date') date_list = get_offset_open_date_list(date, 30) data_list = {} chg_list={} cur_pcg_list={} data_sorted = {} flag=0 result = {'industry':[],'data':[],'chg':[],'cur_chg':[]} for i in range(0, len(date_list)): data = Stock_Industry_Basic.query.join(Stock_Industry_CSRC_1, Stock_Industry_Basic.industry_code == Stock_Industry_CSRC_1.industry_csrc_1_code).add_columns( Stock_Industry_CSRC_1.industry_csrc_1_name).filter(Stock_Industry_Basic.trade_date == date_list[i]).all() if len(data)>0: if i == flag: for j in data: data_list[j.industry_csrc_1_name] = [] data_list[j.industry_csrc_1_name].append(j.Stock_Industry_Basic.amount_sum/100000000) else: for j in data: data_list[j.industry_csrc_1_name].append(j.Stock_Industry_Basic.amount_sum/100000000) else: flag+=1 for i in data_list: chg_list[i]=[] for j in range(1,len(data_list[i])): if j == (len(data_list[i]) - 1): k=(data_list[i][j]-data_list[i][j-1])/data_list[i][j-1] cur_pcg_list[i]=k chg_list[i].append(k) else: k = (data_list[i][j] - data_list[i][j - 1]) / data_list[i][j - 1] chg_list[i].append(k) data_sorted = sorted(cur_pcg_list.items(), key=lambda x: x[1], reverse=True) for i in data_sorted: result['industry'].append(i[0][4:]) result['data'].append(data_list[i[0]]) result['chg'].append(chg_list[i[0]]) result['cur_chg'].append(i[1]) return jsonify(result)
def api_trading_point_sorting_comprehensive(): date = request.args.get('date') date_list = get_offset_open_date_list(date) buy_count_data = [] sell_count_data = [] category_data = [] for i in date_list: buy_count_data.append( Model_Trading_Point.query.filter_by( trade_date=i, aggressive_buy_point=1).count() + Model_Trading_Point.query.filter_by(trade_date=i, steady_buy_point=1).count()) sell_count_data.append( Model_Trading_Point.query.filter_by( trade_date=i, aggressive_sell_point=1).count() + Model_Trading_Point.query.filter_by(trade_date=i, steady_sell_point=1).count()) category_data.append(i[0:4] + '/' + i[4:6] + '/' + i[6:8]) model_aggressive_result = Model_Trading_Point.query.filter_by( trade_date=date, aggressive_buy_point=1).all() model_steady_result = Model_Trading_Point.query.filter_by( trade_date=date, steady_buy_point=1).all() aggressive_code_list = [] steady_code_list = [] for i in model_aggressive_result: aggressive_code_list.append(i.ts_code) for i in model_steady_result: steady_code_list.append(i.ts_code) model_common_data = [] model_aggressive_data = [] model_steady_data = [] for i in list( set(aggressive_code_list).intersection(set(steady_code_list))): stock_basic = Stock_Basic.query.filter_by(ts_code=i).first() bar_data = Stock_Daily_Bar.query.filter_by(ts_code=i, trade_date=date).first() basic_data = Stock_Daily_Basic.query.filter_by( ts_code=i, trade_date=date).first() model_common_data.append({ 'symbol': stock_basic.symbol, 'name': stock_basic.name, 'pct_chg': bar_data.pct_chg, 'turnover_rate': basic_data.turnover_rate }) for i in list(set(aggressive_code_list).difference(set(steady_code_list))): stock_basic = Stock_Basic.query.filter_by(ts_code=i).first() bar_data = Stock_Daily_Bar.query.filter_by(ts_code=i, trade_date=date).first() basic_data = Stock_Daily_Basic.query.filter_by( ts_code=i, trade_date=date).first() model_aggressive_data.append({ 'symbol': stock_basic.symbol, 'name': stock_basic.name, 'pct_chg': bar_data.pct_chg, 'turnover_rate': basic_data.turnover_rate }) for i in list(set(steady_code_list).difference(set(aggressive_code_list))): stock_basic = Stock_Basic.query.filter_by(ts_code=i).first() bar_data = Stock_Daily_Bar.query.filter_by(ts_code=i, trade_date=date).first() basic_data = Stock_Daily_Basic.query.filter_by( ts_code=i, trade_date=date).first() model_steady_data.append({ 'symbol': stock_basic.symbol, 'name': stock_basic.name, 'pct_chg': bar_data.pct_chg, 'turnover_rate': basic_data.turnover_rate }) return jsonify({ 'chart': { 'category': category_data, 'buy': buy_count_data, 'sell': sell_count_data }, 'table': { 'common': model_common_data, 'aggressive': model_aggressive_data, 'steady': model_steady_data } })