金融數據下載及管理
本示例展示瞭如何使用qteasy模塊下載、管理及提取本地存儲的金融數據 QTEASY提供了一套比較完善的金融數據下載及管理工具,可以通過tushare服務器下載相當廣泛的金融數據,將數據存儲在本地,並在需要的時候自動從本地提取數據用於策略的回測或策略運行。
本地數據源對象DataSource
在qteasy中定義了一個DataSource對象,這個對象定義了一個本地金融數據源,並提供了一系列內置的本地金融數據表和數據類型,用戶可以直接通過各種數據類型的ID來直接讀取相應的金融數據(前提是這些金融數據已經從網上下載並保存到了本地數據源中)。
大量常用的金融數據,例如’close』 『pe’都是預先定義並內置在qteasy中的,這些數據涵蓋了相當廣泛的範圍,包括:
量價數據,如開盤價open、收盤價close、最高價high,交易量vol等等
財務指標數據,如市盈率pe,市淨率pb
財務報表數據,如ebidta、ebit等等
公司基本資訊數據,如管理層姓名、公司行業資訊
上面的數據都是以“數據表”的形式內置並定義在系統中的,如果需要使用這些數據,必須首先下載數據至本地。DataSource對象定義了數據存儲的方式和位置。qteasy定義了一個默認的數據源對象QT_DATA_SOURCE,在不特殊指明的情況下,qteasy所操作及使用的數據都在這個數據源中。
DataSource對象可以將數據保存爲文件格式(csv、fth等),也可以將數據保存在mysql數據庫中,鑑於金融數據的體量,建議將數據保存在數據庫中。數據存儲方式及存儲位置可以在qteasy的configuration中設置。
DataSource的兩種數據源類型
qt.DataSource(source_type, file_type='fth', file_loc='qteasy/data/', host='localhost', port=3306, user=None, password=None, db='qt_db')
對於一個DataSource對象,用戶可以選擇將數據存儲爲不同的形式,也叫數據源。DataSource目前支持兩種不同的數據源:
db: 數據庫,數據存儲在mysql/Maria DB數據庫中,通過建立數據庫連接來訪問
file: 文件,數據以文件的形式存儲在指定的文件夾中,支持csv、hdf5以及feather三種文件格式
鑑於金融數據的數據量較大(例如,所有股票的日K線歷史數據有超過一千萬行數據,分鐘級K線的數據量更加龐大),推薦使用mysql數據庫來存儲數據,如果使用本地文件存儲數據,數據交換的效率將會很低。
使用下面的參數建立一個連接到本地數據庫的DataSource對象:
import qteasy as qt
ds_db = qt.DataSource(source_type='db', host='localhost', port=3306, user='user', password='password', db='qt_db')
可以通過connection_type屬性瞭解DataSource對象的連接性質
print(ds_db.connection_type)
ds_db
db:mysql://localhost@3306/qt_db
DataSource('db', 'localhost', 3306)
使用下面的參數可以建立一個使用本地文件夾的DataSource對象
import qteasy as qt
ds_csv = qt.DataSource(source_type='file', file_loc='src/data', file_type='csv')
print(ds_csv.connection_type)
ds_csv
file://csv@qt_root/qteasy/data
DataSource('file', 'qteasy/data', 'csv')
使用qt.configuration可以查看當前的配置變量,使用qt.QT_DATA_SOURCE可以查看當前數據源的類型和參數
qt.configuration(config_key='local_data_source, local_data_file_type, local_data_file_path', default=False)
qt.QT_DATA_SOURCE
No. Config-Key Cur Val
-----------------------------------------
1 local_data_source database
2 local_data_file_type csv
3 local_data_file_path qteasy/data/
DataSource('db', 'localhost', 3306)
歷史數據類型
qteasy可以管理多種不同的數據類型,自動下載這些類型的數據並儲存在本地,供交易策略調用。每一種數據都有一個內置的數據id(data_id),根據這個data_id,用戶可以查看、讀取、下載相應的數據。
qt.find_history_data(s, match_description=False, fuzzy=False, freq=None, asset_type=None, match_threshold=0.85,)
qt.find_history_data()可以查找qteasy內置的所有數據類型,列出數據的id,資產類型和頻率,以及數據的詳細說明。 使用qt.get_history_data()並將找到的數據id作爲參數傳入,則可以直接查看已經下載的歷史數據
import qteasy as qt
qt.find_history_data('pe')
輸出如下:
matched following history data,
use "qt.get_history_data()" to load these historical data by its data_id:
------------------------------------------------------------------------
freq asset table desc
data_id
initial_pe d E new_share 新股上市信息 - 发行市盈率
pe d IDX index_indicator 指数技术指标 - 市盈率
pe d E stock_indicator 股票技术指标 - 市盈率(总市值/净利润, 亏损的PE为空)
pe_2 d E stock_indicator2 股票技术指标 - 动态市盈率
========================================================================
import qteasy as qt
qt.get_history_data('pe', '000001.SZ', start="20220101", end="20220201")
Out[16]:
{'000001.SZ':
pe
2022-01-04 11.1761
2022-01-05 11.5048
2022-01-06 11.4847
2022-01-07 11.5384
2022-01-10 11.5317
2022-01-11 11.6792
2022-01-12 11.4042
2022-01-13 11.3908
2022-01-14 10.9547
2022-01-17 10.8809
2022-01-18 11.0822
2022-01-19 11.0688
2022-01-20 11.6256
2022-01-21 11.6390
2022-01-24 11.5384
2022-01-25 11.3036
2022-01-26 11.1694
2022-01-27 10.9346
2022-01-28 10.6193
2022-01-31 10.6193
2022-02-01 10.6193}
檢查本地數據源的數據
使用qt.get_table_overview()可以查看當前數據源中已經下載的數據量 當數據量較大時,需要花費幾分鐘時間分析所有的數據,並列印本地數據源中數據表的數據量、佔用磁盤空間以及數據範圍
本地數據存儲在若干張數據表中,也可以通過qt.get_table_info()來獲取某一張數據表的詳細資訊 包括數據表的主鍵類型和取值範圍以外,還包括各數據列的名稱、含義和數據類型
qt.get_table_info(table_name, data_source=None, verbose=True)
獲取一張數據表的資訊,包括數據量(數據行數),佔用磁盤空間大小、數據主鍵的名稱及數據範圍 如果設置verbose=True,還可以查看數據表中的數據列完整資訊,包括列名、數據類型和說明
qt.get_table_overview(data_source=None)
統計數據源中所有數據表的數據量並列印總覽
使用qt.get_table_info()可以獲取一張數據表的資訊:
qt.get_table_info('stock_15min', verbose=True)
<stock_15min>, 15.85GB/100.9M records on disc
primary keys:
-----------------------------------
1: ts_code: *<CRITICAL>*
<unknown> entries
starts: 000001.SZ, end: 689009.SH
2: trade_time:
<unknown> entries
starts: 20090105, end: 20220323
columns of table:
------------------------------------
columns dtypes remarks
0 ts_code varchar(20) 证券代码
1 trade_time datetime 交易日期时间
2 open float 开盘价
3 high float 最高价
4 low float 最低价
5 close float 收盘价
6 vol double 成交量(股)
7 amount double 成交额(元)
使用qt.get_table_overview()可以檢查並顯示DataSource中保存的所有本地數據的總覽
qt.get_table_overview()
Analyzing local data source tables... depending on size of tables, it may take a few minutes
[########################################]62/62-100.0% Analyzing completed!or>>>>>ht>or>>
db:mysql://localhost@3306/ts_db
Following tables contain local data, to view complete list, print returned DataFrame
Has_data Size_on_disk Record_count Record_start Record_end
table
trade_calendar True 2.5MB 76K 1990-10-12 2022-12-31
stock_basic True 1.5MB 5K None None
stock_names True 2.4MB 13K 1990-12-10 2022-03-21
index_basic True 4.5MB 11K None None
fund_basic True 8.3MB 17K None None
future_basic True 2.5MB 7K None None
opt_basic True 4.5MB 10K None None
stock_15min True 15.85GB 100.9M 20090105 20220323
stock_30min True 6.66GB 38.9M 20090105 20220321
stock_hourly True 3.41GB 38.3M 20090105 20220318
stock_daily True 1.57GB 12.1M 1990-12-19 2022-03-22
stock_weekly True 217.9MB 2.4M 1990-12-21 2022-03-18
stock_monthly True 87.7MB 638K 1990-12-31 2022-02-28
index_15min True 2.07GB 17.6M 20090105 20220323
index_30min True 1.12GB 7.6M 20090105 20220318
index_hourly True 602.0MB 7.1M 20090105 20220113
index_daily True 357.0MB 2.2M 1990-12-19 2022-03-23
index_weekly True 56.6MB 611K 1991-07-05 2022-03-18
index_monthly True 22.5MB 139K 1991-07-31 2022-02-28
fund_hourly True 16KB 0 None None
fund_daily True 165.3MB 1.6M 1998-04-07 2022-03-22
fund_nav True 973.0MB 15.0M 2000-01-07 2022-03-22
fund_share True 69.7MB 1.1M 1998-03-27 2022-03-18
fund_manager True 84.7MB 40K 2000-02-22 2022-03-18
future_daily True 384.0MB 2.0M 1995-04-17 2022-03-23
options_daily True 753.0MB 5.3M 2015-02-09 2022-03-23
stock_adj_factor True 688.0MB 11.0M 1990-12-19 2022-03-23
fund_adj_factor True 112.7MB 1.9M 1998-04-07 2022-03-23
stock_indicator True 2.31GB 11.6M 1999-01-01 2022-03-23
stock_indicator2 True 988.0MB 4.8M 2017-06-14 2022-03-23
index_indicator True 5.5MB 45K 2004-01-02 2022-03-23
index_weight True 841.9MB 10.5M 2005-04-08 2022-03-17
income True 94.8MB 189K 1990-12-31 2021-12-31
balance True 130.0MB 172K 1989-12-31 2021-12-31
cashflow True 111.9MB 186K 1998-12-31 2021-12-31
financial True 373.0MB 152K 1989-12-31 2021-12-31
forecast True 50.6MB 86K 1998-12-31 2022-12-31
express True 4.5MB 23K 2004-12-31 2021-12-31
HistoryPanel 与 get_history_data
在 qteasy 2.x 中,qt.get_history_data() 的推薦用法是直接返回 HistoryPanel:
import qteasy as qt
hp = qt.get_history_data(
htypes='open, high, low, close, vol',
shares='000300.SH,000905.SH',
start='20230101',
end='20231231',
)
print(hp)
HistoryPanel 是一個三維數據容器,維度含義爲:
axis 0(shares):標的列表,例如股票或指數代碼;
axis 1(hdates):時間軸,每一行對應一個時間點(如交易日或分鐘);
axis 2(htypes):歷史數據類型,例如
open、high、low、close、vol等。
使用 hp[...] 按軸切片時,結果類型爲 子 HistoryPanel(帶正確的軸標籤),不再直接得到 ndarray。需要裸矩陣時請使用 hp['close'].values 或 hp['close'].to_numpy(copy=True);具名切片與默認拷貝行爲見 hp.subpanel(..., copy=True)。
研究向布爾掩碼與後續帶 mask= 的 API 可使用 hp.where(condition):返回與 hp.values 同形的 dtype=bool 數組(不改變 hp),詳見 HistoryPanel API 參考 與教程 使用 HistoryPanel 操作和分析歷史數據。
自 2.2.8 起還可:合法標識符列名用只讀屬性(如 hp.close,等價 hp['close']);比較運算(如 hp.close > 100、兩列子面板比較)得到 numpy 布爾數組,可直接作爲 hp.where(...) 的輸入;按 交易日(時間軸) 篩選可用 hp.loc[key](等價 hp[:, :, key],與 pandas 僅類比)。邊界說明見 API 頁「列屬性訪問、比較與 loc」與教程 §6.1。
這樣,策略與可視化都可以在同一份結構化數據上工作,避免重複轉換。
當你已有 DataFrame 或字典形式的數據時,可以使用 qt.dataframe_to_hp() 將其適配爲 HistoryPanel,再複用同一套 API。
從 HistoryPanel 到可視化
HistoryPanel 提供統一的可視化入口 hp.plot(),根據面板中已有的 htypes 自動選擇合適的圖表類型(K 線、成交量、MACD 或普通折線),並支持多標的對比:
import qteasy as qt
hp = qt.get_history_data(
htypes='open, high, low, close, vol',
shares='000300.SH',
start='20230101',
end='20231231',
)
# 静态 K 线 + 成交量
hp.plot(interactive=False)
# 交互式 K 线(在 Jupyter 中体验更好)
hp.plot(interactive=True)
HistoryPanel.plot 交互式可視化(Plotly)
當你使用 hp.plot(interactive=True) 時,qteasy 會使用 Plotly 生成交互式圖表,支持縮放、平移與懸停查看數據。在 Notebook 中,如果你的環境支持 FigureWidget(通常需要安裝 ipywidgets 與 anywidget),qteasy 會優先返回更完整的交互體驗;否則會回退到 HTML 方式展示。你也可以通過 plotly_backend_app='auto'|'FigureWidget'|'html' 明確指定輸出方式。
依賴與安裝
基礎交互(Plotly Figure):
pip install plotly
Notebook 更完整交互(FigureWidget + 回調):
pip install ipywidgets anywidget
注意:若未安裝 Plotly,調用 interactive=True 會直接拋出英文錯誤提示(例如包含 “requires plotly” 的資訊);這是爲了讓依賴缺失問題儘早暴露,避免生成一個不可交互的“空圖”。
plotly_backend_app:輸出方式與回退
plotly_backend_app 僅在 interactive=True 時生效:
plotly_backend_app='auto':在 Notebook 中優先使用 FigureWidget;否則回退到 HTML 包裝;在腳本環境中也可能返回原始 Plotly Figure。plotly_backend_app='FigureWidget':強制使用 FigureWidget;若當前不是 Notebook 或缺少依賴會直接報錯(英文提示)。plotly_backend_app='html':強制使用 HTML 包裝;若當前不是 Notebook 也會直接報錯(英文提示)。
關鍵交互能力(用戶視角)
縮放/平移一致性:HTML 與 FigureWidget 在縮放/平移時遵循同一套 x 軸約束:保持最少可見 bar 數、越界時按 pan 語義平移回數據域。
頂部 OHLC 摘要:當面板中存在完整 OHLC 主圖(蠟燭圖)時,會顯示頂部摘要;交互圖初始爲最後一根 bar,點擊某根 bar 會更新摘要。無 K 線主圖(例如僅 close 折線)時不顯示該摘要區。
兩標的 overlay:當你用
layout='overlay'對比兩隻標的時,點擊某根 bar 會切換主次標的:主次透明度與線寬會聯動更新;如果你啓用了highlight,高亮點默認僅對當前主標的可見,並隨主次切換。選中態十字交叉線:點擊後在主價格圖上顯示選中態十字交叉線;縮放/平移時保持同步;當選中 bar 滾動出可見區域時會隱藏。
示例:最常用的兩種交互調用
示例 1:單標的交互式 K 線
hp.plot(interactive=True, plotly_backend_app='auto')
示例 2:兩標的 overlay + 高亮
hp2 = qt.get_history_data(
htypes='open, high, low, close, vol',
shares='000300.SH,000905.SH',
start='20230101',
end='20231231',
)
hp2.plot(
interactive=True,
layout='overlay',
highlight='max',
plotly_backend_app='html',
)
可視化層嚴格遵循“有什麼畫什麼”原則:
只使用 HistoryPanel 中已經存在的列,不在繪圖層計算新的指標;
是否繪製 K 線、成交量或 MACD,僅取決於面板中是否存在對應的 htypes。
典型 htypes 與默認圖表類型的對應關係如下:
圖表類型 |
依賴的 htype 示例 |
|---|---|
K 線 |
|
成交量 |
|
MACD |
|
折線圖 |
其它任意一維序列(如 |
若需要 MA/布林帶/MACD 等指標,應在 HistoryPanel 上調用相應方法 (例如 hp.kline.ma()、hp.kline.bbands()、hp.kline.macd()), 將結果列追加進面板後再調用 hp.plot()。
qt.candle 與 HistoryPanel 的關係
qt.candle() 是更高層的快捷入口,用於“一行代碼畫出某個標的的 K 線圖”, 其內部邏輯可以概括爲:
解析
stock、start、end等參數,從本地數據源取數;將價格數據適配爲單標的
HistoryPanel;在 HistoryPanel 上追加用戶需要的指標列(如 MA、布林帶、MACD);
調用
hp.plot(...)繪製圖表。
因此,你可以在保留現有 qt.candle 調用方式的同時,直接在 HistoryPanel 上 做更細粒度的控制。
常見用法示例:
import qteasy as qt
# 快速绘制日 K 线(内部走 HistoryPanel 可视化)
df = qt.candle(
stock='000300.SH',
start='2023-06-01',
end='2023-12-01',
asset_type='IDX',
plot_type='candle',
interactive=True,
)
print(df.head()) # df 为用于绘图的价格数据
其中 plot_type 的意義爲:
'candle'/'c':使用 OHLC 繪製蠟燭圖;'ohlc'/'o':行爲與'candle'接近,僅作爲輕量別名保留;'line'/'l':只繪製一維價格折線(通常爲close);'none'/'n':只取數不繪圖,直接返回DataFrame,方便你用 其它工具自行可視化。
Renko 圖('renko' / 'r')在新版中已不再內置支持;若需要 Renko 圖, 建議使用專門的技術分析或畫圖庫。
獲取歷史數據,並將數據保存在DataSource中
如果DataSource中沒有數據,那麼qteasy將很難發揮所長,因此,首先需要將數據保存到DataSource中 DataSource類提供了_fetch_table_data_from_tushare()函數,來獲取並存儲歷史數據到DataSource中,在這個函數的參數中可以直接給出一個DataFrame、一個csv文件名或excel文件名,同樣也可以連接網絡數據提供商的API獲取數據。 使用DataSource對象獲取、更新數據的方法包括:
DataSource.update_table_data()
檢查輸入的df,去掉不符合要求的列或行後,將數據合併到table中,包括以下步驟:
檢查下載後的數據表的列名是否與數據表的定義相同,刪除多餘的列
如果datasource type是」db」,刪除下載數據中與本地數據重複的部分,僅保留新增數據
如果datasource type是」file」,將下載的數據與本地數據合併並去重
DataSource.read_table_data()
通過本地文件獲取數據,並保存到DataSource中:
下面的示例代碼將存儲在DataFrame中的數據保存在DataSource中
# stock_data 是事先准备好的股票价格数据,格式为pd.DataFrame
df = ds_csv._fetch_table_data_from_tushare(table='stock_basic', channel='df', df=stock_data)
ds_csv.update_table_data('stock_basic', df)
ds_csv.table_data_exists('stock_basic')
本地數據的獲取和可視化
只要本地數據源中有了數據,就可以非常容易地獲取這些數據,如果是量價數據,還可以非常容易地可視化(列印爲K線圖或價格曲線圖)
股票或資產的基本資訊數據
qt.get_basic_info(code_or_name: str, asset_types=None, match_full_name=False, printout=True, verbose=False)
獲取一個股票或證券的基本資訊,code_or_name可以是股票的代碼,或者股票名稱,默認情況下系統會進行全劇匹配查找匹配的證券,如‘000001’會匹配到多種不同的證券,所有匹配的證券都會被列出,除非在asset_type中指定一種或幾種證券類型。 如果設置match_full_name=True,則會通過股票或基金的全名來模糊匹配證券
qt.get_stock_info(code_or_name: str, asset_types=None, match_full_name=False, printout=True, verbose=False)
get_basic_info()的別稱
篩選股票代碼
qt.filter_stocks(date: str = 'today', **kwargs)
根據發行日期、地區、行業、規模、指數成份等多種可用的資訊篩選出一部分股票,列印出股票的資訊
qt.filter_stock_codes(date: str = 'today', **kwargs)
根據發行日期、地區、行業、規模、指數成份等多種可用的資訊篩選出一部分股票,返回股票的完整代碼
提取金融歷史數據
量價數據的可視化
qt.candle(stock=None, start=None, end=None, stock_data=None, asset_type=None, freq=None, plot_type='candle', interactive=True, data_source=None, **kwargs)
這個函數從本地數據源中提取股票的價格數據,並生成一張完整的動態高級K線圖
示例:
查找證券的基本資訊
使用qt.get_basic_info()獲取證券的基本資訊 在DataSource中準備好相關的金融數據後,還可以方便地查找證券的資訊,通過證券代碼(六位數字)或證券的名稱搜索證券,並列印出詳細資訊。 使用證券名稱搜索時,支持模糊查找或使用通配符:
例如,通過六位代碼獲取證券資訊:
qt.get_basic_info('601728')
found 1 matches, matched codes are {'E': {'601728.SH': '中国电信'}, 'IDX': {}, 'FT': {}, 'FD': {}, 'OPT': {}, 'count': 1}
More information for asset type E:
------------------------------------------
ts_code 601728.SH
name 中国电信
area 北京
industry 电信运营
fullname 中国电信股份有限公司
list_status L
list_date 2021-08-20
-------------------------------------------
也可以直接通過證券名稱來查找證券,模糊查找匹配多個證券,例如:
qt.get_basic_info('中国证券')
Too many matched codes 128, best matched are
{'E': {'000728.SZ': '国元证券'}, 'IDX': {'100630.CIC': '中金证券'}, 'FD': {'001552.OF': '天弘中证证券保险A'}}
pass "verbose=Ture" to view all matched assets
More information for asset type E:
------------------------------------------
ts_code 000728.SZ
name 国元证券
area 安徽
industry 证券
fullname 国元证券股份有限公司
list_status L
list_date 1997-06-16
-------------------------------------------
More information for asset type IDX:
------------------------------------------
ts_code 100630.CIC
name 中金证券
fullname 中金证券指数
publisher 中金公司
category 其他
list_date None
-------------------------------------------
More information for asset type FD:
------------------------------------------
ts_code 001552.OF
name 天弘中证证券保险A
management 天弘基金
custodian 国泰君安
fund_type 股票型
issue_date 2015-06-29
issue_amount 0.05
invest_type 被动指数型
type 契约型开放式
-------------------------------------------
通過證券名稱匹配證券時,支持通過通配符查找:
qt.get_basic_info('中国?通')
found 2 matches, matched codes are {'E': {'600050.SH': '中国联通', '601698.SH': '中国卫通'}, 'IDX': {}, 'FD': {}, 'count': 2}
More information for asset type E:
------------------------------------------
ts_code 600050.SH 601698.SH
name 中国联通 中国卫通
area 北京 北京
industry 电信运营 电信运营
fullname 中国联合网络通信股份有限公司 中国卫通集团股份有限公司
list_status L L
list_date 2002-10-09 2019-06-28
-------------------------------------------
默認情況下,並不會查找證券的全名,如果有必要,可以匹配全名,例如:
# 使用‘贵州钢绳’为关键字搜索股票代码,不匹配全名时,找不到匹配的结果:
qt.get_basic_info('贵州钢绳')
結果如下:
found 0 matches, matched codes are {'E': {}, 'IDX': {}, 'FD': {}, 'count': 0}
# 然而如果设置了匹配全名`match_full_name=True`,则能够找到匹配的代码:
qt.get_basic_info('贵州钢绳', match_full_name=True)
結果如下:
found 1 matches, matched codes are {'E': {'600992.SH': '贵绳股份'}, 'IDX': {}, 'FD': {}, 'count': 1}
More information for asset type E:
------------------------------------------
ts_code 600992.SH
name 贵绳股份
area 贵州
industry 钢加工
fullname 贵州钢绳股份有限公司
list_status L
list_date 2004-05-14
-------------------------------------------
qt.filter_stocks被用來根據某些標準篩選股票,例如:
# 筛选2000年以后发行的HS300指数成份股
qt.filter_stocks(date = '20000101', index='000300.SH')
| symbol | name | area | industry | market | list_date | exchange | |
|---|---|---|---|---|---|---|---|
| ts_code | |||||||
| 000001.SZ | 000001 | 平安银行 | 深圳 | 银行 | 主板 | 1991-04-03 | SZSE |
| 000002.SZ | 000002 | 万科A | 深圳 | 全国地产 | 主板 | 1991-01-29 | SZSE |
| 000063.SZ | 000063 | 中兴通讯 | 深圳 | 通信设备 | 主板 | 1997-11-18 | SZSE |
| 000069.SZ | 000069 | 华侨城A | 深圳 | 旅游景点 | 主板 | 1997-09-10 | SZSE |
| 000100.SZ | 000100 | TCL科技 | 广东 | 元器件 | 主板 | 2004-01-30 | SZSE |
| ... | ... | ... | ... | ... | ... | ... | ... |
| 603486.SH | 603486 | 科沃斯 | 江苏 | 家用电器 | 主板 | 2018-05-28 | SSE |
| 605499.SH | 605499 | 东鹏饮料 | 深圳 | 软饮料 | 主板 | 2021-05-27 | SSE |
| 688561.SH | 688561 | 奇安信-U | 北京 | 软件服务 | 科创板 | 2020-07-22 | SSE |
| 688599.SH | 688599 | 天合光能 | 江苏 | 电气设备 | 科创板 | 2020-06-10 | SSE |
| 688981.SH | 688981 | 中芯国际 | 上海 | 半导体 | 科创板 | 2020-07-16 | SSE |
397 rows × 7 columns













