def todayStock(table='tb_today_stock'): configger.init() engine = configger.engine if (timeUtil.tableNeedUpdate(table) == False): return pd.read_sql(con=engine, sql='select * from {}'.format(table)) nowtime = datetime.datetime.now() endDate = nowtime.strftime('%Y%m%d') createTimeSql = " SELECT CREATE_TIME from information_schema.`TABLES` WHERE `information_schema`.`TABLES`.`TABLE_SCHEMA` = '{}' and `information_schema`.`TABLES`.`TABLE_NAME` = '{}' ".format( 'stock', table) lastUpdateTime = pd.read_sql(con=engine, sql=createTimeSql).iloc[0, 0] try: ##排除五点后获取数据 print('needUpdate') print(needUpdate(lastUpdateTime, nowtime, isWorkDay=True)) if (needUpdate(lastUpdateTime, nowtime)): stockData = ak.stock_zh_a_spot() stockData['symbol'] = stockData['symbol'].map( lambda x: getdotCodeBysymbol(x)) stockData.to_sql(table, con=engine, if_exists='replace') else: stockData = pd.read_sql(con=engine, sql='select * from {}'.format(table)) except: # traceback.print_exc() stockData = pd.read_sql(con=engine, sql='select * from {}'.format(table)) timeUtil.saveOperationTime(table) return stockData
def all_stock_tick(): """ 描述: A 股数据是从新浪财经获取的数据, 重复运行本函数会被新浪暂时封 IP, 建议增加时间间隔 限量: 单次返回所有 A 股上市公司的实时行情数据 """ stock_zh_a_spot_df = ak.stock_zh_a_spot() return stock_zh_a_spot_df
def code(self): etf = ak.fund_em_etf_fund_daily() etf = etf[['基金代码', '基金简称', '类型', ]] etf.columns = ['code','name', 'market'] etf['market'] = 'ETF' etf['symbol'] = etf['code'].apply(lambda x:'sh' + str(x)[:6] if int(x) > 500000 else 'sz' + str(x)[:6]) etf['tag'] = etf['symbol'].apply(lambda x: 'E_' + str(x)) etf = etf[['name', 'code', 'symbol', 'tag', 'market']] index = ak.stock_zh_index_spot() index['code'] = index['symbol'].apply(lambda x:str(x)[2:]) index['tag'] = index['symbol'].apply(lambda x:'I_' + str(x)) index.loc[index['name']=='','name']='TBD' index['market'] = 'INDEX' index = index[['name','code','symbol', 'tag','market']] stock = ak.stock_zh_a_spot() stock['tag'] = stock['symbol'].apply(lambda x: 'S_' + str(x)) stock.to_csv(self.BASIC + 'stock_spot.csv', encoding='gb18030', index=False) stock['tag'] = stock['symbol'].apply(lambda x:'S_' + str(x)) stock['market'] = 'STOCK' stock = stock[['name','code','symbol', 'tag','market']] df = pd.concat([etf,index,stock],axis=0) df = df.append({'name':'银证转账', 'code':'817909','symbol':'sh817909','tag':'C_sh817909','market':'TRADE'},ignore_index=True) df = df.append({'name':'测试账号','code':'817910', 'symbol':'sh817910','tag':'C_sh817910','market':'TRADE'},ignore_index=True) df['name'] = df['name'].apply(lambda x: x[:-5] if x[-5:] == 'ETF行情' else x) df['name'] = df['name'].apply(lambda x: x[:-2] if x[-2:] == '行情' else x) df=df[df['name'].str.contains('ST')==False] df.to_csv(self.BASIC + 'code_name.csv', encoding='gb18030', index=False) return
def get_all_stock(): all_stock = ak.stock_zh_a_spot() print(all_stock) print(type(all_stock)) stock_list = all_stock['代码'].tolist() stock_str = json.dumps(stock_list,ensure_ascii=False) with open('all_china_stocks.txt','w')as f : f.write(stock_str)
def query_RT_stock(): stock_zh_a_spot_df = ak.stock_zh_a_spot() for index, stock_data_info in stock_zh_a_spot_df.iterrows(): result = DBUtils.execute( "INSERT INTO `stock_2020_1218`(`symbol`,`code`,`name`)" "VALUES('{symbol}','{code}','{name}')".format( **dict(stock_data_info))) if result is None or result <= 0: print(stock_data_info)
def get_stock_code_info(self): stock_info_df = ak.stock_info_a_code_name() # 获取所有A股code和name stock_symbol_code = ak.stock_zh_a_spot().get(["symbol", "code"]) # 获取A股所有股票的symbol和code for _id in range(stock_info_df.shape[0]): _symbol = stock_symbol_code[stock_symbol_code.code == stock_info_df.iloc[_id].code].symbol.values if len(_symbol) != 0: _dict = {"symbol": _symbol[0]} _dict.update(stock_info_df.iloc[_id].to_dict()) self.col_basic_info.insert_one(_dict) return stock_info_df
def get_realtime_news(self, freq="day"): while True: if_updated = input( "Has the stock price dataset been updated today? (Y/N) \n") if if_updated == "Y": self.redis_client.set("is_today_updated", "1") break elif if_updated == "N": self.redis_client.set("is_today_updated", "") break self.get_historical_news() # 对所有股票补充数据到最新 while True: if freq == "day": time_now = datetime.datetime.now().strftime( "%Y-%m-%d %H:%M:%S") if time_now.split(" ")[0] != self.redis_client.get( "today_date").decode(): self.redis_client.set("today_date", time_now.split(" ")[0]) self.redis_client.set("is_today_updated", "") # 过了凌晨,该参数设置回空值,表示今天未进行数据更新 if not bool( self.redis_client.get("is_today_updated").decode()): update_time = "{} {}".format( time_now.split(" ")[0], "15:30:00") if time_now >= update_time: stock_zh_a_spot_df = ak.stock_zh_a_spot() # 当天的日数据行情下载 for _id, sym in enumerate( stock_zh_a_spot_df["symbol"]): _col = self.db_obj.get_collection( self.database_name, sym) _tmp_dict = {} _tmp_dict.update({ "date": Timestamp("{} 00:00:00".format( time_now.split(" ")[0])) }) _tmp_dict.update( {"open": stock_zh_a_spot_df.iloc[_id].open}) _tmp_dict.update( {"high": stock_zh_a_spot_df.iloc[_id].high}) _tmp_dict.update( {"low": stock_zh_a_spot_df.iloc[_id].low}) _tmp_dict.update( {"close": stock_zh_a_spot_df.iloc[_id].trade}) _tmp_dict.update({ "volume": stock_zh_a_spot_df.iloc[_id].volume }) _col.insert_one(_tmp_dict) self.redis_client.set(sym, time_now.split(" ")[0]) logging.info( "finished updating {} price data of {} ... ". format(sym, time_now.split(" ")[0])) self.redis_client.set("is_today_updated", "1")
def mainProcess(): engine = create_engine('mysql+pymysql://root:root@localhost:3306/stock') createTimeSql = " SELECT CREATE_TIME from information_schema.`TABLES` WHERE `information_schema`.`TABLES`.`TABLE_SCHEMA` = 'stock' and `information_schema`.`TABLES`.`TABLE_NAME` = 'todaystock' " engine = create_engine('mysql+pymysql://root:root@localhost:3306/stock') createTime = pd.read_sql(con=engine, sql=createTimeSql) if (datetime.datetime.now().day != createTime.iloc[0, 0].day): stockData = ak.stock_zh_a_spot() stockData.to_sql('todaystock', con=engine, if_exists='replace') else: stockData = pd.read_sql(con=engine, sql='select * from todayStock') importData(stockData, engine)
def get_stock_zh_day(): # stock_zh_a_daily_qfq_df = ak.stock_zh_a_daily(symbol="sz000002", start_date="20101103", end_date="20201116", # adjust="qfq") stock_zh_a_spot_df = ak.stock_zh_a_spot() print(stock_zh_a_spot_df) stock_list= stock_zh_a_spot_df['代码'].tolist() print(stock_list) print(type(stock_list)) stock_list_str = json.dumps(stock_list).encode(encoding='utf8') print(stock_list_str) print(type(stock_list_str)) with open('./all_cn_stocks','wb') as f : f.write(stock_list_str)
def indexStocksCN(idx): print(idx) index_stock_cons_df = ak.index_stock_cons(index=idx[2:]) # print(index_stock_cons_df) index_stock_cons_df.drop_duplicates(subset='品种代码', keep='first', inplace=True) index_stock_cons_df.set_index('品种代码', inplace=True) # 今日全场股票概况(价格、市值等) df = ak.stock_zh_a_spot() df.set_index('symbol', inplace=True) # 按总市值排顺序,只保留指数成份股 df = df.loc[df.index.isin( [dealSymbol(s) for s in index_stock_cons_df.index])].copy() df.sort_values(by='mktcap', ascending=True, inplace=True) df = df.iloc[:int(len(df) / 2) - 1] # 计算因子值 days = 30 sortedDf = pd.DataFrame() tqdmRange = tqdm(range(len(df))) tqdmRange = tqdm([-3, -2, -1]) for i in tqdmRange: symbol = dealSymbol(df.index[i]) tqdmRange.set_description("cauculating factor value for %s" % symbol) factorVaule_1 = [] factorVaule_2 = [] stockK = ak.stock_zh_index_daily_tx(symbol=symbol) stockK['symbol'] = symbol for j in range(0, len(stockK)): if j < days: factorVaule_1.append(None) factorVaule_2.append(None) continue factorVaule_1.append(factor_1(stockK.iloc[j - days:j])) factorVaule_2.append(factor_1(stockK.iloc[j - days:j])) stockK['factor_1'] = factorVaule_1 stockK['factor_2'] = factorVaule_2 stockK.to_csv('Quotation/' + symbol + '.csv') stockK = stockK[['symbol', 'factor_1', 'factor_2']].copy() stockK.reset_index(inplace=True) sortedDf = sortedDf.append(stockK) sortedDf.sort_values(by=['date', 'factor_1'], ascending=True, inplace=True) sortedDf.dropna(subset=['factor_1'], inplace=True) sortedDf.to_csv(idx + 'factor.csv') sortedDf['date'] = pd.to_datetime(sortedDf['date']).date return sortedDf
def get_stock_price(stock_code): global stock_zh_a_spot_df global stock_hk_spot_df if stock_zh_a_spot_df.empty: print("get A stock information") stock_zh_a_spot_df = ak.stock_zh_a_spot() if stock_hk_spot_df.empty: print("get HK stock information") stock_hk_spot_df = ak.stock_hk_spot() if stock_code[:2] == "hk": return float( stock_hk_spot_df.set_index('symbol').at[stock_code[2:], 'lasttrade']) elif stock_code == '689009': return 64.0 else: return float( stock_zh_a_spot_df.set_index('code').at[stock_code, 'trade'])
def importTodayStock(): stockData = ak.stock_zh_a_spot() engine = create_engine('mysql+pymysql://root:root@localhost:3306/stock') stockData.to_sql('todaystock',con=engine,if_exists='replace')
def getZhASpot(request): zh_a_spot = akshare.stock_zh_a_spot() return HttpResponse(zh_a_spot)
df = df[[code, value]] return df # Fund open_df = ak.fund_em_open_fund_daily() open_df = select_today_price(open_df, '基金代码', open_df.columns[2], fundlist) #open_df.to_csv(csv_file) qdii_df = ak.fund_em_open_fund_daily() qdii_df = select_today_price(qdii_df, '基金代码', qdii_df.columns[4], overseefundlist) # Stock etf_df = select_today_price(ak.fund_em_etf_fund_daily(), '基金代码', '市价', etflist) sz162411_df = ak.fund_etf_hist_sina(symbol=sz162411_code) sz162411_df = select_today_close_price(sz162411_df, sz162411_code) a_stock_df = select_today_price(ak.stock_zh_a_spot(), 'code', 'trade', a_stockList) # US Stock #voo_df = ak.stock_us_daily(symbol=voo_code, adjust="") #voo_df = select_today_close_price(voo_df,voo_code) #us_stock_df = select_today_price(ak.stock_us_spot(),'symbol','price',us_stockList) #toCS open_df.append(qdii_df).append(etf_df).append(sz162411_df).append( a_stock_df).to_csv(csv_file)
import akshare as ak stock_zh_a_spot_df = ak.stock_zh_a_spot() # print(stock_zh_a_spot_df) stock_zh_a_spot_df.to_csv('test.csv')
# coding: utf-8 import akshare as ak import os import datetime import time import pytz localtime = datetime.datetime.now( tz=pytz.timezone('Asia/Shanghai')).strftime("%Y-%m-%d") if not os.path.exists(localtime): os.mkdir(localtime) try: df_Stock = ak.stock_zh_a_spot() df_Stock.to_excel(localtime + '/A_data.xlsx') except: pass time.sleep(10) try: dce_text = ak.match_main_contract(exchange="dce") czce_text = ak.match_main_contract(exchange="czce") shfe_text = ak.match_main_contract(exchange="shfe") df_Future_C = ak.futures_zh_spot(subscribe_list=",".join( [dce_text, czce_text, shfe_text]), adjust=False, market="CF") df_Future_C.to_excel(localtime + '/Future_C_data.xlsx') except: pass
def stock_zh_a_spot(self): stock_zh_a_spot_df = ak.stock_zh_a_spot() return stock_zh_a_spot_df
def get_CurrentQuoteS(self): response = ak.stock_zh_a_spot() return response