Exemple #1
0
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
Exemple #2
0
 def all_stock_tick():
     """
     描述: A 股数据是从新浪财经获取的数据, 重复运行本函数会被新浪暂时封 IP, 建议增加时间间隔
     限量: 单次返回所有 A 股上市公司的实时行情数据
     """
     stock_zh_a_spot_df = ak.stock_zh_a_spot()
     return stock_zh_a_spot_df
Exemple #3
0
 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 
Exemple #4
0
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)
Exemple #6
0
 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
Exemple #7
0
 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)
Exemple #9
0
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)
Exemple #10
0
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
Exemple #11
0
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')
Exemple #13
0
def getZhASpot(request):
    zh_a_spot = akshare.stock_zh_a_spot()
    return HttpResponse(zh_a_spot)
Exemple #14
0
    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)
Exemple #15
0
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')
Exemple #16
0
# 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
Exemple #17
0
 def stock_zh_a_spot(self):
     stock_zh_a_spot_df = ak.stock_zh_a_spot()
     return stock_zh_a_spot_df
Exemple #18
0
 def get_CurrentQuoteS(self):
     response = ak.stock_zh_a_spot()
     return response