12. Füllen Sie Daten mithilfe von Datenerfassungskanälen automatisch aus.
Wir haben die grundlegenden Operationsmethoden des Objekts „DataSource“ eingeführt. Bei der tatsächlichen Verwendung müssen wir jedoch das Objekt „DataSource“ mit einer großen Datenmenge füllen. Wenn wir die Daten manuell mit der im vorherigen Kapitel eingeführten Methode „DataSource.update_table_data()“ füllen, ist der Arbeitsaufwand sehr groß.
Hier stellen wir vor, wie Datenerfassungskanäle zum automatischen Auffüllen von Daten verwendet werden.
12.1. QTEASY Datenabruffunktion
QTEASY Datenverwaltungsmodul: 
Wie im Diagramm oben gezeigt, ist die Datenfunktionalität von „qteasy“ in drei Schichten unterteilt. Die erste Schicht umfasst verschiedene Daten-Download-Schnittstellen zum Abrufen von Daten von Online-Datenanbietern; Dieser Vorgang wird „DataFetching“ genannt.
12.2. Die Datenabrufschnittstelle refill_data_source()
„qteasy“ bietet eine automatisierte Daten-Download-Schnittstelle „qteasy.refill_data_source()“, die verschiedene Finanzdaten von mehreren verschiedenen Online-Datenanbietern abrufen kann, um den Nutzungsgewohnheiten verschiedener Benutzer gerecht zu werden. Die von „qteasy“ bereitgestellte Daten-Pull-API bietet leistungsstarke parallele Multithread-Downloads, Daten-Chunking-Downloads, Download-Verkehrskontrolle und Fehlerverzögerungs-Wiederholungsfunktionen, um sich an die verschiedenen unvorhersehbaren Verkehrsgrenzen verschiedener Datenanbieter anzupassen. Gleichzeitig kann die Daten-Pull-API problemlos und automatisch regelmäßig Batch-Daten-Download-Aufgaben ausführen, sodass Sie sich keine Sorgen über fehlende Hochfrequenzdaten machen müssen.
Lassen Sie uns zunächst anhand eines Beispiels erklären, wie Daten mithilfe der Schnittstelle „qteasy.refill_data_source()“ automatisch aufgefüllt werden. Wir beginnen mit der Erstellung eines „DataSource“-Objekts, das keine Daten enthält, und füllen es dann mit den grundlegendsten Daten.
>>> import qteasy as qt
>>> ds = qt.DataSource()
# 检查数据源中是否有数据
>>> ds.overview()
Analyzing local data source tables... depending on size of tables, it may take a few minutes
[########################################]104/104-100.0% A...zing completed!
Finished analyzing datasource:
file://csv@qt_root/data/
3 table(s) out of 104 contain local data as summary below, to view complete list, print returned DataFrame
===============================tables with local data===============================
Has_data Size_on_disk Record_count Record_start Record_end
table
trade_calendar True 1.8MB 70K CFFEX SZSE
stock_basic True 852KB 5K None None
stock_daily True 98.8MB 1.3M 20211112 20241231
Wie wir sehen können, enthält das Objekt „DataSource“ bereits einige Datentabellen. Um die folgenden Tests durchzuführen, löschen wir zunächst die Daten aus den Datentabellen „trade_calendar“ und „stock_daily“ und füllen sie dann mithilfe der Datenabrufschnittstelle automatisch auf.
Löschen Sie zunächst zwei Datentabellen. Um eine Datentabelle zu löschen, setzen Sie zunächst das Attribut „allow_drop_table“ der Datenquelle auf „True“ und löschen Sie dann die Datentabelle.
>>> ds.allow_drop_table = True
>>> ds.drop_table_data('trade_calendar')
>>> ds.drop_table_data('stock_daily')
>>> ds.allow_drop_table = False
>>> overview = ds.overview()
Analyzing local data source tables... depending on size of tables, it may take a few minutes
[########################################]104/104-100.0% A...zing completed!
Finished analyzing datasource:
file://csv@qt_root/data/
1 table(s) out of 104 contain local data as summary below, to view complete list, print returned DataFrame
===============================tables with local data===============================
Has_data Size_on_disk Record_count Record_start Record_end
table
stock_basic True 852KB 5K None None
Wie Sie sehen können, wurden die Daten in den Tabellen „trade_calendar“ und „stock_daily“ gelöscht.
Als Nächstes verwenden wir die Schnittstelle „qteasy.refill_data_source()“, um die Daten automatisch aufzufüllen. Der Code ist sehr einfach, mit nur einer Zeile, und „qteasy“ erledigt den Rest automatisch.
>>> qt.refill_data_source(
tables='stock_daily', # 指定要填充的数据表:股票日K线数据
channel='tushare', # 指定数据下载渠道
data_source=ds, # 指定需要填充的数据源对象
start_date='20210101', # 指定数据下载的起始日期
end_date='20211231', # 指定数据下载的结束日期
)
Filling data source file://csv@qt_root/data/ ...
into 2 table(s) (parallely): {'stock_daily', 'trade_calendar'}
[########################################]243/243-100.0% <stock_daily> 2398764 wrtn in about 16 sec
[########################################]7/7-100.0% <trade_calendar> 70054 wrtn in about 1 sec
Data refill completed! 2468818 rows written into 2/2 table(s)!
Nachdem Sie die Daten abgerufen und ausgefüllt haben, können Sie überprüfen, ob die Daten erfolgreich heruntergeladen wurden:
>>> ds.read_table_data('stock_daily', shares='000001.SZ, 000002.SZ', start='20211111', end='20211131')
open high low close pre_close change pct_chg \
ts_code trade_date
000001.SZ 2021-11-11 17.35 18.43 17.32 18.35 17.40 0.95 5.4598
2021-11-12 18.31 18.63 18.11 18.27 18.35 -0.08 -0.4360
2021-11-15 18.35 18.63 18.20 18.43 18.27 0.16 0.8758
2021-11-16 18.36 18.54 18.17 18.22 18.43 -0.21 -1.1394
2021-11-17 18.15 18.30 17.98 18.11 18.22 -0.11 -0.6037
2021-11-18 18.09 18.12 17.73 17.80 18.11 -0.31 -1.7118
2021-11-19 17.80 18.24 17.70 18.15 17.80 0.35 1.9663
2021-11-22 18.03 18.25 17.90 18.12 18.15 -0.03 -0.1653
2021-11-23 18.11 18.35 17.68 17.88 18.12 -0.24 -1.3245
2021-11-24 17.77 17.95 17.66 17.87 17.88 -0.01 -0.0559
2021-11-25 17.74 17.79 17.63 17.68 17.87 -0.19 -1.0632
2021-11-26 17.62 17.67 17.52 17.58 17.68 -0.10 -0.5656
2021-11-29 17.41 17.57 17.36 17.51 17.58 -0.07 -0.3982
2021-11-30 17.54 17.68 17.35 17.44 17.51 -0.07 -0.3998
000002.SZ 2021-11-11 18.95 20.84 18.89 20.79 18.98 1.81 9.5364
2021-11-12 20.50 20.50 19.41 19.76 20.79 -1.03 -4.9543
2021-11-15 19.56 19.59 19.12 19.40 19.76 -0.36 -1.8219
2021-11-16 19.29 19.57 19.21 19.24 19.40 -0.16 -0.8247
2021-11-17 19.23 19.53 19.09 19.46 19.24 0.22 1.1435
2021-11-18 19.35 19.40 18.98 19.09 19.46 -0.37 -1.9013
2021-11-19 19.01 20.28 18.92 19.90 19.09 0.81 4.2431
2021-11-22 19.90 19.95 19.19 19.22 19.90 -0.68 -3.4171
2021-11-23 19.19 19.44 19.10 19.24 19.22 0.02 0.1041
2021-11-24 19.12 19.38 19.00 19.30 19.24 0.06 0.3119
2021-11-25 19.22 19.35 19.07 19.22 19.30 -0.08 -0.4145
2021-11-26 19.15 19.15 18.95 18.99 19.22 -0.23 -1.1967
2021-11-29 18.75 18.87 18.35 18.46 18.99 -0.53 -2.7909
2021-11-30 18.44 18.66 18.16 18.26 18.46 -0.20 -1.0834
vol amount
ts_code trade_date
000001.SZ 2021-11-11 2084729.00 3752413.858
2021-11-12 957546.46 1753072.716
2021-11-15 655089.99 1203764.095
2021-11-16 601110.48 1099113.409
2021-11-17 664640.38 1203859.180
2021-11-18 799843.77 1430058.311
2021-11-19 786371.56 1414506.380
2021-11-22 738617.80 1337768.172
2021-11-23 1235977.96 2213817.590
2021-11-24 741310.84 1316774.397
2021-11-25 603532.70 1068221.304
2021-11-26 694499.88 1219937.312
2021-11-29 512594.71 895105.981
2021-11-30 733616.06 1280384.552
000002.SZ 2021-11-11 3151015.76 6352746.112
2021-11-12 2065924.12 4100076.111
2021-11-15 959331.52 1852352.374
2021-11-16 593989.40 1149085.955
2021-11-17 623749.71 1205064.294
2021-11-18 609995.75 1168010.581
2021-11-19 1308293.09 2570652.947
2021-11-22 877584.30 1697701.639
2021-11-23 563435.65 1083646.252
2021-11-24 827366.98 1587246.249
2021-11-25 518123.06 995473.890
2021-11-26 504023.33 959331.064
2021-11-29 718595.81 1334479.867
2021-11-30 713092.22 1305310.857
12.3. Funktionen der Data Retrieval API
Bei der Analyse des Datenabrufprozesses können wir sehen, dass „qteasy“ die folgenden Aufgaben automatisch erledigt hat:
Automatische Abhängigkeitstabellensuche – Obwohl wir nur die Tabelle „stock_daily“ angegeben haben, hat „qteasy“ automatisch erkannt, dass auch die Tabelle „trade_calendar“ leer war, und da die Tabelle „stock_daily“ von der Handelskalendertabelle abhängt, hat sie auch automatisch die Tabelle „trade_calendar“ gefüllt.
Visualisierung des Download-Fortschritts – „qteasy“ bietet eine Visualisierung des Download-Fortschritts, sodass Benutzer den Download-Fortschritt jedes Datenblocks sowie den gesamten Download-Fortschritt sehen können. Außerdem wird die verbleibende Zeit angezeigt, sodass Benutzer den Status des Datendownloads leicht überwachen können.
Automatische Datenaufteilung – Der obige Code hat die täglichen Candlestick-Chartdaten für alle Aktien im Jahr 2021 heruntergeladen, insgesamt 2,39 Millionen Zeilen. Unabhängig von der Datenquelle kann eine derart große Datenmenge nicht auf einmal heruntergeladen werden. Daher teilt „qteasy“ die Daten automatisch auf, wobei jeder Block nur die Daten eines Tages enthält. Wie Sie sehen, wurden die Daten des gesamten Jahres in 243 Blöcke unterteilt. Dieser geblockte Download reduziert die pro Netzwerkanforderung angeforderte Datenmenge erheblich, erhöht die Erfolgsquote und verringert das Risiko einer Blockierung.
Paralleler Download mit mehreren Threads – Nach der Implementierung von Daten-Chunking für den Download verwendet „qteasy“ automatisch den parallelen Download mit mehreren Threads, um den Daten-Download-Prozess zu beschleunigen. Die Gesamtzeit für den parallelen Download von 243 Datenblöcken betrug nur 16 Sekunden.
Mit diesen Funktionen kann die Datenabruffunktion von „qteasy“ die Datenerfassungsanforderungen fast aller Benutzer erfüllen. Unabhängig davon, ob große Datenmengen oder Hochfrequenzdaten heruntergeladen werden, kann „qteasy“ effiziente Daten-Download-Dienste bereitstellen.
Zusätzlich zu den oben genannten Funktionen bietet „qteasy“ natürlich noch viele weitere Funktionen, um verschiedene Situationen zu bewältigen, die während des Downloadvorgangs auftreten können. Wir werden diese Funktionen später im Detail vorstellen:
Mehrkanal-Download – „qteasy“ bietet mehrere Daten-Download-Kanäle. Viele Datentabellen können von mehreren verschiedenen Kanälen heruntergeladen werden, und die Anzahl der Datenabrufkanäle nimmt mit jedem Versionsupdate ständig zu.
Verkehrskontrolle – Für einige Datenkanäle gelten Verkehrsbeschränkungen für Datendownloads. „qteasy“ bietet eine Verkehrskontrollfunktion, die die Daten-Download-Geschwindigkeit begrenzen kann. Das heißt, Sie können nach dem Herunterladen einer bestimmten Anzahl von Datenblöcken eine Zeit lang pausieren. Halten Sie beispielsweise nach dem Herunterladen von 300 Datenblöcken eine Minute inne, um eine Blockierung durch den Datenkanal zu vermeiden.
Fehler beim erneuten Versuch – Beim Herunterladen von Daten aus einigen Datenquellen können Netzwerkfehler auftreten. „qteasy“ bietet eine Fehlerwiederholungsfunktion, die den Download nach einem Fehler automatisch wiederholen kann. Wenn der Wiederholungsversuch nicht erfolgreich ist, wird die Wartezeit für Wiederholungsversuche verlängert und es wird erneut versucht, bis der Download erfolgreich ist oder die Anzahl der Wiederholungsversuche überschritten wird und ein Fehler gemeldet wird.
Protokollaufzeichnung – „qteasy“ bietet eine Protokollaufzeichnungsfunktion für Datendownloads, die detaillierte Informationen zu jedem Datendownload aufzeichnen kann, einschließlich der heruntergeladenen Datenmenge, der Downloadzeit, der Downloadgeschwindigkeit usw., sodass Benutzer den Datendownloadstatus bequem anzeigen können.
Daten aus mehreren Kanälen
„qteasy“ bietet mehrere Daten-Download-Kanäle, sodass viele Datentabellen von verschiedenen Kanälen heruntergeladen werden können. Darüber hinaus nimmt mit jedem Versionsupdate die Anzahl der Datenabrufkanäle weiter zu.
refill_data_source()接口的channel参数可以指定数据下载渠道,如果不指定,qteasy会使用默认渠道tushare(见qteasy/core.py中refill_data_source的默认逻辑)。用户也可以手动指定数据下载渠道。
当前内置四通道为:tushare、akshare、eastmoney(别名 emoney)、sina。
四通道能力对照(常用表)
下表概括常用数据表在各通道下的支持情况(「支持」表示当前版本已实现映射并可走 refill 链路;「不支持」表示该通道无映射,refill 会跳过并提示)。AKShare 完整 108 表状态见仓库内维护清单 tests/akshare_data_test_checklist.md。
数据表 |
tushare |
akshare |
eastmoney |
sina |
|---|---|---|---|---|
trade_calendar |
支持(需 token/积分) |
支持 |
暂不支持 |
暂不支持 |
stock_basic |
支持(行业/上市日等完整) |
支持(代码+简称索引;行业/地域等常为空) |
部分场景不支持 |
暂不支持 |
index_basic / fund_basic |
支持 |
支持(字段少于 Tushare 的项可能为空) |
部分 |
暂不支持 |
stock_daily / weekly / monthly |
支持 |
支持 |
支持(日/部分分) |
支持(日/分) |
stock_5/15/30min、hourly |
支持 |
支持 |
支持 |
支持 |
stock_adj_factor |
支持 |
支持(新浪因子源) |
暂不支持 |
暂不支持 |
index_daily / weekly / monthly |
支持 |
支持 |
支持(日) |
暂不支持 |
fund_daily / weekly / monthly / 1min |
支持 |
支持 |
部分 |
暂不支持 |
stock_suspend / money_flow / dividend |
支持 |
支持 |
暂不支持 |
暂不支持 |
new_share / stock_company |
支持 |
支持(字段可能少于 Tushare) |
暂不支持 |
暂不支持 |
realtime_bars / realtime_quotes |
支持 |
支持 |
支持 |
支持 |
index_1min 等指数分钟 |
支持 |
暂不支持(待 spike) |
支持 |
暂不支持 |
说明:
basics 表与
merge_type='update':对table_usage=='basics'的表(如stock_basic、index_basic、fund_basic等),主键冲突时仅用下载侧非空字段覆盖对应列,下载值为空字符串或NULL时保留本地已有值。因此可用 AKShare 补全代码列表拉分钟线依赖表,而不会冲掉此前用 Tushare 写入的industry、list_date等。按行业/地域筛选股票(filter_stocks/filter_stock_codes)仍建议以 Tushare 的stock_basic为准或先确认本地行业列非空。tushare:覆盖最全,多数表需配置
tushare_token及相应积分/权限。akshare:无需 token;当前 25 张历史/基础/事件表已实现(见
tests/akshare_data_test_checklist.md),其余表仍为blocked或not_supported。stock_basic等 basics 表仅保证 代码与名称索引,不替代 Tushare 完整基本面。eastmoney:无需 token;分钟线覆盖较全,部分基础表(如
stock_basic)可能无法从此通道拉取。sina:无需 token;以股票日线与分钟线为主,无周/月线等。
Der folgende Code versucht, tägliche Candlestick-Daten aus der Datentabelle „stock_daily“ für die ersten beiden Monate des Jahres 2025 aus dem Datenkanal „eastmoney“ herunterzuladen:
>>> qt.refill_data_source(
tables='stock_daily',
channel='eastmoney', # 指定数据下载渠道为东方财经
data_source=ds,
start_date='20250101',
end_date='20250301',
)
Filling data source file://csv@qt_root/data/ ...
into 2 table(s) (parallely): {'stock_daily', 'stock_basic'}
[########################################]11078/11078-100.0% <stock_daily> 131264304 wrtn in about 17 min
[----------------------------------------]0/1-0.0% <stock_basic> can't be fetched from channel:eastmoney!
Data refill completed! 131264304 rows written into 1/2 table(s)!
Überprüfen Sie, ob die Daten erfolgreich heruntergeladen wurden:
>>> ds.read_table_data('stock_daily', shares='000001.SZ, 000002.SZ', start='20250101', end='20250103')
open high low close pre_close change pct_chg \
ts_code trade_date
000001.SZ 2025-01-13 11.25 11.26 11.08 11.20 11.30 -0.10 -0.8850
2025-01-14 11.20 11.40 11.19 11.38 11.20 0.18 1.6071
2025-01-15 11.38 11.58 11.36 11.48 11.38 0.10 0.8787
2025-01-16 11.55 11.59 11.47 11.57 11.48 0.09 0.7840
2025-01-17 11.53 11.55 11.42 11.45 11.57 -0.12 -1.0372
2025-01-20 11.50 11.52 11.40 11.42 11.45 -0.03 -0.2620
2025-01-21 11.45 11.45 11.32 11.33 11.42 -0.09 -0.7881
2025-01-22 11.32 11.33 11.08 11.09 11.33 -0.24 -2.1183
2025-01-23 11.17 11.40 11.17 11.32 11.09 0.23 2.0739
2025-01-24 11.32 11.39 11.22 11.34 11.32 0.02 0.1767
2025-01-27 11.38 11.55 11.38 11.47 11.34 0.13 1.1464
000002.SZ 2025-01-13 6.60 6.77 6.55 6.76 6.69 0.07 1.0463
2025-01-14 6.76 6.93 6.75 6.91 6.76 0.15 2.2189
2025-01-15 6.88 6.96 6.79 6.86 6.91 -0.05 -0.7236
2025-01-16 6.90 7.07 6.84 6.88 6.86 0.02 0.2915
2025-01-17 6.58 6.65 6.45 6.63 6.88 -0.25 -3.6337
2025-01-20 6.60 6.94 6.48 6.85 6.63 0.22 3.3183
2025-01-21 6.84 7.54 6.82 7.36 6.85 0.51 7.4453
2025-01-22 7.27 7.36 6.98 7.02 7.36 -0.34 -4.6196
2025-01-23 7.15 7.70 7.08 7.36 7.02 0.34 4.8433
2025-01-24 7.33 7.54 7.21 7.39 7.36 0.03 0.4076
2025-01-27 7.38 7.56 7.22 7.27 7.39 -0.12 -1.6238
vol amount
ts_code trade_date
000001.SZ 2025-01-13 934966.0 1044904.416
2025-01-14 824629.0 934467.766
2025-01-15 1031631.0 1185403.653
2025-01-16 872964.0 1007689.274
2025-01-17 689765.0 791230.419
2025-01-20 832029.0 953092.179
2025-01-21 902069.0 1024879.174
2025-01-22 1347129.0 1504818.607
2025-01-23 1514920.0 1715172.472
2025-01-24 944944.0 1069899.088
2025-01-27 1151935.0 1324270.607
000002.SZ 2025-01-13 911147.0 611005.036
2025-01-14 1116454.0 765177.082
2025-01-15 887294.0 608363.557
2025-01-16 1110545.0 771648.218
2025-01-17 3620283.0 2369977.993
2025-01-20 2988167.0 2009728.944
2025-01-21 5849397.0 4290640.172
2025-01-22 3448728.0 2457396.391
2025-01-23 4416581.0 3245710.622
2025-01-24 2555024.0 1885566.128
2025-01-27 2151753.0 1580357.769
Der Datendownload war eindeutig erfolgreich. Bei der Analyse des oben beschriebenen Download-Prozesses können mehrere Merkmale beobachtet werden:
Von verschiedenen Kanälen heruntergeladene Daten haben das gleiche Format. Dies ist ein Designprinzip von „qteasy“. Von verschiedenen Kanälen heruntergeladene Daten durchlaufen denselben Reinigungsprozess. Dadurch können Benutzer problemlos zwischen verschiedenen Daten-Download-Kanälen wechseln, ohne sich Gedanken über Datenverarbeitungsprobleme machen zu müssen, die durch unterschiedliche Datenformate verursacht werden.
Verschiedene Download-Kanäle verwenden unterschiedliche Chunking-Methoden, was zu unterschiedlichen Download-Geschwindigkeiten führt. Der Datenkanal „eastmoney“ ist langsamer und dauert etwa 17 Minuten. Dies liegt an den spezifischen Einschränkungen jedes Download-Kanals.
Verschiedene Download-Kanäle ermöglichen möglicherweise das Herunterladen unterschiedlicher Datentabellen. Einige Datentabellen können über bestimmte Kanäle möglicherweise nicht heruntergeladen werden, möglicherweise aufgrund von Berechtigungsbeschränkungen oder anderen Faktoren. Wenn eine Datentabelle nicht heruntergeladen werden kann, überspringt „qteasy“ diese Datentabelle automatisch, ohne dass der Download anderer Datentabellen beeinträchtigt wird.
Daher müssen Benutzer je nach ihren eigenen Umständen unterschiedliche Kanäle zum Abrufen von Daten wählen.
通道切换与配置
一次性下载(脚本 / 交互):在 refill_data_source(..., channel='...') 中显式传入通道名即可,例如 Tushare 与 AKShare 对比如下:
>>> qt.refill_data_source(tables='stock_daily', channel='tushare', start_date='20240101', end_date='20240131')
>>> qt.refill_data_source(tables='stock_daily', channel='akshare', start_date='20240101', end_date='20240131')
实盘默认渠道(写入 qteasy.cfg 或通过 qt.configure() 修改):
配置键 |
含义 |
默认值 |
|---|---|---|
|
Trader 日更自动 refill 使用的通道 |
|
|
实盘获取实时价格的通道 |
|
示例:
>>> qt.configure(live_trade_data_refill_channel='akshare')
>>> qt.configure(live_price_acquire_channel='akshare')
修改后,实盘任务会使用新通道执行 refill / 取价;历史脚本仍可在每次 refill_data_source 调用中单独指定 channel,与全局配置无关。
Implementieren Sie die Kontrolle des Download-Verkehrs
„refill_data_source“ von „qteasy“ bietet eine Flusskontrollfunktion, die die Daten-Download-Geschwindigkeit begrenzen kann. Das heißt, nach dem Herunterladen einer bestimmten Anzahl von Datenblöcken kann es für einen bestimmten Zeitraum pausieren. Es kann beispielsweise nach dem Herunterladen von 300 Datenblöcken eine Minute pausieren, um eine Blockierung durch den Datenkanal zu vermeiden.
Diese Funktionalität wird durch die Parameter „download_batch_size“ und „download_batch_interval“ der Schnittstelle „refill_data_source()“ erreicht:
Der Parameter „download_batch_size“ gibt die Anzahl der Datenblöcke an, die jedes Mal heruntergeladen werden. Wenn der Wert auf 300 eingestellt ist, wird der Download für einen bestimmten Zeitraum angehalten, nachdem 300 Datenblöcke heruntergeladen wurden.
Der Parameter „download_batch_interval“ gibt die Pausenzeit nach dem Herunterladen jedes Datenblocks an; Der Standardwert ist 0, was bedeutet, dass keine Pause erfolgt.
Der folgende Code zeigt, wie die Download-Verkehrskontrolle mithilfe der Parameter „download_batch_size“ und „download_batch_interval“ implementiert wird:
>>> qt.refill_data_source(
tables='stock_daily',
channel='tushare',
data_source=ds,
start_date='20250101',
end_date='20250301',
download_batch_size=300, # 每次下载300个数据分块
download_batch_interval=60, # 每次下载300个数据分块后暂停60秒
)
Bei Verwendung der Verkehrssteuerung verlängert sich natürlich die Downloadzeit, bei einigen Datenkanälen ist dies jedoch erforderlich; Andernfalls kann es sein, dass der Download blockiert wird oder Fehler auftreten, was zu einem Download-Fehler führt.
Implementieren Sie Fehlerwiederholungen
Es ist zu beachten, dass „qteasy“ den Download automatisch erneut versucht, wenn während des Datendownloadvorgangs ein Fehler auftritt. Der Wiederholungsmechanismus ist wie folgt:
Nachdem der erste Download fehlgeschlagen ist, wird eine kurze Wartezeit vergehen, bevor ein erneuter Versuch unternommen wird. Die Standardwartezeit beträgt 1,0 Sekunden.
Jedes Mal, wenn ein Wiederholungsversuch fehlschlägt, erhöht sich die Wartezeit, wobei die Standardwartezeit auf das Doppelte des ursprünglichen Werts ansteigt. Das heißt, beim ersten Mal wird 1,0 Sekunden gewartet, beim zweiten Mal 2,0 Sekunden, beim dritten Mal 4,0 Sekunden und so weiter.
Die Wiederholungsversuche werden beendet und ein Fehler wird gemeldet, sobald die maximale Anzahl von Wiederholungsversuchen überschritten wird. Standardmäßig beträgt die maximale Anzahl an Wiederholungsversuchen 7.
Die oben genannten drei Fehlerwiederholungsparameter werden alle über die Konfigurationsdatei „qteasy“ festgelegt. Benutzer können diese Parameter über die Schnittstelle „qt.config()“ anzeigen oder ändern oder sie können diese Parameter in der anfänglichen Konfigurationsdatei von „qteasy“ ändern.
„hist_dnld_retry_cnt“ – Maximale Anzahl von Wiederholungsversuchen, standardmäßig 7.
„hist_dnld_retry_wait“ – Die Wartezeit für den ersten Wiederholungsversuch, der Standardwert beträgt 1,0 Sekunden.
„hist_dnld_backoff“ – Der Multiplikator zum Erhöhen der Wiederholungswartezeit; Der Standardwert ist 2.0.
Anweisungen zum Ändern der Konfigurationsdatei oder zur Verwendung der anfänglichen Konfigurationsdatei für „qteasy“ finden Sie im Abschnitt zur Konfigurationsdatei von „qteasy“ (…/api/api_reference.rst).
Protokollierung
„qteasy“ bietet eine Funktion zum Aufzeichnen von Daten-Download-Protokollen, mit der detaillierte Informationen zu jedem Daten-Download aufgezeichnet werden können, einschließlich der heruntergeladenen Datenmenge, der Download-Zeit, der Download-Geschwindigkeit usw., sodass Benutzer den Daten-Download-Status bequem überprüfen können.
Andere Funktionen
Die Schnittstelle „qteasy“ „refill_data_source()“ bietet auch andere Funktionalitäten, wie zum Beispiel:
Um den Bereich der heruntergeladenen Daten einzuschränken, können Sie die Parameter „start_date“ und „end_date“ verwenden, um den Zeitraum der heruntergeladenen Daten einzuschränken, und den Parameter „shares“, um den Bereich der herunterzuladenden Aktien einzuschränken.
未传
start_date/end_date时的默认行为:内部将start_date视为该表映射中的最早可用日(如new_share为19700101),end_date视为当天。因此tables='basics'会包含需按日期分块下载的new_share(IPO 新股);若不传日期,会从 1970-01-01 分块拉至今日,耗时较长。若只需代码/行业类 basics、不要 IPO 表,请显式指定表名或传入较窄的日期窗。Um zu konfigurieren, ob der Download parallel erfolgen soll, können Sie den Parameter „parallel“ verwenden. Wenn der Wert auf „Falsch“ gesetzt ist, werden Downloads seriell durchgeführt. andernfalls werden sie parallel durchgeführt.
Um zu konfigurieren, ob Abhängigkeitstabellen heruntergeladen werden sollen, können Sie den Parameter „download_dependent“ verwenden. Wenn es auf „Falsch“ gesetzt ist, werden Abhängigkeitstabellen nicht heruntergeladen; andernfalls werden sie heruntergeladen.
Konfigurieren Sie, ob eine Aktualisierung des Transaktionskalenders erzwungen werden soll.
Weitere Erläuterungen zu dieser Schnittstelle finden Sie in der API-Dokumentation „qteasy“ (…/api/history_data.rst).