download_history_data2.py 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. from xtquant import xtdata, xttrader
  2. from datetime import datetime as dt
  3. import pandas as pd
  4. import math
  5. from sqlalchemy import create_engine
  6. import multiprocessing as mp
  7. # pd.set_option('display.max_rows', None) # 设置显示最大行
  8. path = 'C:\\qmt\\userdata_mini'
  9. field = ['time', 'open', 'close', 'high', 'low', 'volume', 'amount']
  10. cpu_count = mp.cpu_count()
  11. def to_sql(stock_list, engine):
  12. for stock in stock_list:
  13. print(stock)
  14. data = xtdata.get_market_data(field, [stock], '1d', end_time='', count=-1, dividend_type='back')
  15. df = pd.concat([data[i].loc[stock].T for i in ['time', 'open', 'high', 'low', 'close', 'volume', 'amount']], axis=1)
  16. df.columns = ['time', 'open', 'high', 'low', 'close', 'volume', 'amount']
  17. df['time'] = df['time'].apply(lambda x: dt.fromtimestamp(x / 1000.0))
  18. df.reset_index(drop=True, inplace=True)
  19. print(df)
  20. df.to_sql('%s_1d' %stock, con=engine, index=True, if_exists='append')
  21. # with engine.connect() as con:
  22. # con.execute("ALTER TABLE `%s_1d` ADD PRIMARY KEY (`time`);" %stock)
  23. # exit()
  24. def to_df(key,valus,engine):
  25. print('to_df')
  26. pass
  27. sttime = dt.now()
  28. if __name__ == '__main__':
  29. stocks = xtdata.get_stock_list_in_sector('沪深A股')
  30. field = ['time', 'open', 'close', 'high', 'low', 'volume', 'amount']
  31. cpu_count = mp.cpu_count()
  32. stocks.sort()
  33. step = math.ceil(len(stocks) / cpu_count)
  34. engine = create_engine('mysql+pymysql://root:r6kEwqWU9!v3@localhost:3307/qmt_stocks?charset=utf8')
  35. num = xtdata.download_history_data2(stock_list=stocks, period='1d', start_time='', end_time='')
  36. # num = 1
  37. if num:
  38. print(dt.now() - sttime, '更新完成,准备入库!', )
  39. to_sql(stocks, engine)
  40. # p_list = []
  41. # # data = xtdata.get_market_data(field, stocks, '1d', end_time='', count=-1, dividend_type='back')
  42. # for i in range(0, len(stocks), step):
  43. # p = mp.Process(target=to_sql, args=(stocks[i:], engine,))
  44. # p.start()
  45. # p_list.append(p)
  46. # for m in p_list:
  47. # m.join()
  48. #
  49. # exit()