2. Erfassen und verwalten Sie Finanzdaten
„qteasy“ ist ein vollständig lokal bereitgestelltes und ausgeführtes quantitatives Handelsanalyse-Toolkit mit den folgenden Funktionen:
Erfassung, Bereinigung, Speicherung, Verarbeitung, Visualisierung und Nutzung von Finanzdaten
Erstellung quantitativer Handelsstrategien mit einer großen Anzahl integrierter grundlegender Handelsstrategien
Vektorisiertes Hochgeschwindigkeits-Backtesting von Handelsstrategien und Auswertung der Handelsergebnisse
Optimierung und Bewertung von Handelsstrategieparametern
Bereitstellung und Live-Handel von Handelsstrategien
Durch diese Tutorialreihe erhalten Sie anhand einer Reihe praktischer Beispiele ein umfassendes Verständnis der Hauptfunktionen von „qteasy“ und deren Verwendung.
2.1. Vorbereitungen, bevor Sie beginnen
Bevor Sie mit diesem Tutorial beginnen, erledigen Sie bitte Folgendes:
Schließen Sie die Installation von „qteasy“ ab und aktualisieren Sie auf die neueste Version
数据通道(二选一或组合):
使用 Tushare:注册
tushare pro账户并确保有一定的积分(大多数高级数据需要较多积分才能下载),在qteasy.cfg中配置tushare_token使用 AKShare 或其他通道:安装
pip install akshare(若选 AKShare),无需 Tushare token;部分表覆盖范围小于 Tushare,详见数据通道文档
完成
mysql数据库的配置,并将数据库配置写入qteasy.cfg(可选项)Schließen Sie die Installation von
ta-libab (optional)
Im vorherigen Tutorial habe ich erklärt, wie man eine neue virtuelle Umgebung erstellt und „qteasy“ darin installiert und initialisiert. Wenn Sie diesen Schritt noch nicht abgeschlossen haben, lesen Sie bitte das vorherige Tutorial, um die Installation von „qteasy“ und die Grundkonfiguration abzuschließen.
Um die spätere Nutzung von Funktionen wie Diagrammen zu erleichtern, wird außerdem empfohlen, für die Entwicklung „Jupyter Notebook“ zu verwenden. Sie können den folgenden Befehl in der neu erstellten virtuellen Umgebung ausführen, um „Jupyter Notebook“ zu installieren:
(bash): pip install notebook
Nachdem die Installation abgeschlossen ist, können Sie den folgenden Befehl verwenden, um „Jupyter Notebook“ zu starten:
(bash): jupyter notebook
Nach dem Start können Sie Code in einer interaktiven Entwicklungsumgebung in Ihrem Browser ausführen, wie in der folgenden Abbildung dargestellt:

Wenn Sie „Jupyter Notebook“ nicht verwenden, können Sie auch „ipython“ verwenden:
(bash): pip install ipython
„ipython“ läuft im Terminal, aber die Unterstützung für Diagramme ist nicht so gut.
2.2. Erhalten Sie Basisdaten und Preisdaten
Wie im vorherigen Tutorial vorgestellt, kann ein neu initialisiertes „qteasy“ nicht auf historische Daten zugreifen. Alle historischen Daten müssen zunächst lokal heruntergeladen und in einem Datenrepository namens „Datasource“ gespeichert werden, bevor Sie nachfolgende datenabhängige Arbeiten ausführen können, wie z. B. das Abrufen historischer Daten, Backtesting und Optimierungsstrategien usw.
„qteasy“ muss viele Arten von Daten verwenden. Alle Daten werden in einigen vordefinierten Datentabellen gespeichert und „Datenquelle“ ist eine Sammlung einer Reihe von Datentabellen. Zu den grundlegendsten Datentabellen gehören:
„trade_calendar“ – Handelskalenderdaten, einschließlich der geplanten Marktöffnungs- und -schlusstermine für verschiedene Börsen; Der Handelskalender für das nächste Jahr wird am Ende jedes Jahres aktualisiert.
„stock_basics“ – Grundlegende Aktieninformationen, einschließlich grundlegender Informationen für alle Aktien an den Börsen in Shanghai und Shenzhen, wie z. B. Code, Name, vollständiger Name, Börsennotierungsdatum, Kategorie usw.
„index_basics“ – Grundlegende Indexinformationen, einschließlich grundlegender Informationen für alle Indizes an den Aktienmärkten von Shanghai und Shenzhen, wie Code, Name, vollständiger Name usw.
Wenn Sie „qteasy“ nach der Konfiguration von „tushare_token“ zum ersten Mal importieren und das System keine Handelskalenderdaten finden kann, zeigt es eine Meldung an, dass der Handelskalender nicht gelesen werden kann.
Weitere Informationen zum Datenquellenobjekt „DataSource“ finden Sie unter DataSource-Referenz.
>>> import qteasy as qt
Tipp:
UserWarning: trade calendar is not loaded, some utility functions may not work properly, to download trade calendar, run
"qt.refill_data_source(tables='trade_calendar')"
„qteasy“ bietet eine Funktion „get_table_overview()“ zum Anzeigen von Informationen über lokal gespeicherte Daten. Beim Ausführen dieser Funktion wird eine Liste der lokal gespeicherten Datentabellen, der gespeicherten Datenmenge, des verwendeten Speicherplatzes, des Datenbereichs usw. gedruckt.
>>> qt.get_table_overview()
Der Prozess der Datentabellenanalyse kann einige Minuten dauern. Während dieser Zeit wird ein Fortschrittsbalken angezeigt, der den Analysefortschritt anzeigt. Nach Abschluss der Analyse wird eine Liste der Tabellen in der lokalen Datenquelle angezeigt, zusammen mit Informationen wie dem Datenbereich jeder Tabelle.
Wenn in der aktuellen Datenquelle keine Daten vorhanden sind, wird Folgendes ausgegeben:
Analyzing local data source tables... depending on size of tables, it may take a few minutes
Analyzing completed!
Analyzing tables: 100%|█████████████████████████| 104/104 [00:00<00:00, 9107.58it/s]
Finished analyzing datasource:
file://csv@qt_root/data/
0 table(s) out of 104 contain local data as summary below, to view complete list, print returned DataFrame
===============================tables with local data===============================
Empty DataFrame
Columns: [has_data, size, records, min2, max2]
Index: []
Wenn in der lokalen Datenquelle keine Daten vorhanden sind, wird der obige Inhalt angezeigt. In diesem Fall müssen Sie Daten in die lokale Datenquelle herunterladen.
Laden Sie den Handelskalender und die Basisdaten herunter
我们可以调用refill_data_source函数下载交易日历和基础数据。这个函数是qteasy的标准数据下载接口函数,所有的历史数据类型均可以通过此接口下载。这个函数的基本参数是tables,传入数据表的名称即可下载相应的数据到本地存储了。使用refill_data_source下载交易数据时,qteasy会自动进行数据清洗,排除重复数据,去除错误数据,发生错误自动重试,并将下载的数据合并到本地数据表中。
qteasy支持通过 tushare、akshare、eastmoney、sina 等多个内置通道下载数据(参数 channel,未指定时默认为 tushare)。不同通道支持的表范围与前置条件不同,切换方式与能力对照见数据通道文档。
要下载前面提到的交易日历、股票和指数的基本信息,只需要运行下面的代码(默认使用 Tushare,需已配置 tushare_token):
>>> qt.refill_data_source(tables='trade_calendar, stock_basic, index_basic')
Während des Datendownloadvorgangs wird ein Fortschrittsbalken angezeigt, der den Downloadfortschritt anzeigt.
Die Ausgabe ist wie folgt:
Filling data source file://csv@qt_root/data/ ...
into 3 table(s) (parallely): {'trade_calendar', 'index_basic', 'stock_basic'}
<trade_calendar> 72609 wrn: 100%|███████████████| 8/8 [00:03<00:00, 2.39task/s]
<index_basic> 12456 wrn: 100%|██████████████████| 8/8 [00:00<00:00, 9.68task/s]
<stock_basic> 5484 wrn: 100%|███████████████████| 4/4 [00:00<00:00, 5.45task/s]
Data refill completed! 90549 rows written into 3/3 table(s)!
Nachdem der Download abgeschlossen ist, führen Sie die Funktion „qt.get_table_overview()“ erneut aus.
>>> qt.get_table_overview()
Sie können sehen, dass die Daten erfolgreich lokal heruntergeladen wurden:
Analyzing local data source tables... depending on size of tables, it may take a few minutes
Analyzing tables: 100%|████████████████████████| 104/104 [00:00<00:00, 967.60it/s]
Analyzing completed!
Finished analyzing datasource:
file://fth@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.3MB 73K CFFEX SZSE
stock_basic True 651KB 5K None None
index_basic True 1.1MB 12K None None
Wie Sie sehen, wurden die drei Datentabellen bereits in die lokale Datenquelle heruntergeladen. Der Datenquellentyp ist „file://csv@qt_root/data/“ (d. h. die Daten werden als „csv“-Dateien unter dem Pfad „/data/“ im qt-Stammverzeichnis gespeichert). Es enthält drei Datentabellen und der Handelskalender reicht bis Ende 2024.
Sehen Sie sich Basisdaten für Aktien und Indizes an
Nach dem Herunterladen der oben genannten Basisdaten wird empfohlen, die IDE neu zu starten und „qteasy“ erneut zu importieren. An dieser Stelle können wir „qteasy“ verwenden, um Aktien/Indizes zu filtern und nachzuschlagen.
Um detaillierte Aktien-/Indexinformationen abzurufen, können Sie die Funktion „get_stock_info()“ oder „get_basic_info()“ verwenden. Die beiden Funktionen haben die gleiche Funktionalität: Beide können Sicherheitsinformationen basierend auf dem eingegebenen Sicherheitscode, Namen oder Schlüsselwörtern suchen und unterstützen Platzhalter oder Fuzzy-Suche. Wenn derselbe Code verschiedenen „qt_codes“ entspricht – zum Beispiel steht die Aktie „000001“ für Ping An Bank mit „qt_code: 000001.SZ“, während der Index „000001“ für den SSE Composite Index mit „qt_code: 000001.SZ“ steht – listet „qteasy“ alle Sicherheitsinformationen auf:
# 通过完整的qt_code获取信息
>>> qt.get_basic_info('000001.SZ')
Die Ausgabe ist wie folgt:
found 1 matches, matched codes are {'E': {'000001.SZ': '平安银行'}, 'count': 1}
More information for asset type E:
------------------------------------------
ts_code 000001.SZ
name 平安银行
area 深圳
industry 银行
fullname 平安银行股份有限公司
list_status L
list_date 1991-04-03
-------------------------------------------
Weitere Ausgaben sind in der folgenden Abbildung zu sehen:

Im obigen Beispiel wurden nur Wertpapiere vom Typ Aktie und Index gefunden. Wenn Sie auch weitere Wertpapierinformationen wie Fonds und Futures suchen müssen, können Sie auf die gleiche Weise weitere Basisdatentabellen herunterladen:
fund_basic: Grundlegende Fondsdaten
future_basic: Grundlegende Futures-Daten
Neben der Suche nach grundlegenden Informationen über Aktien oder Wertpapiere können wir auch die Funktion „qt.filter_stock()“ verwenden, um Aktien zu überprüfen:
>>> qt.filter_stocks(date='20240212', industry='银行', area='上海')
Die Ausgabe ist wie folgt:
name area industry market list_date exchange
qt_code
600000.SH 浦发银行 上海 银行 主板 1999-11-10 SSE
601229.SH 上海银行 上海 银行 主板 2016-11-16 SSE
601328.SH 交通银行 上海 银行 主板 2007-05-15 SSE
601825.SH 沪农商行 上海 银行 主板 2021-08-19 SSE
Laden Sie die Daten der in Shanghai notierten Aktien herunter
Unter den Finanzdaten sind Preis- und Volumendaten zweifellos die wichtigste Art. Als nächstes werden wir historische Preisdaten herunterladen.
Alle historischen Daten in „qteasy“ werden in Datentabellen in Form von Candlestick-Daten (K-Linie) gespeichert. Zu den derzeit unterstützten Candlestick-Daten gehören:
Minuten-Candlestick-Charts – 1-Minuten-/5-Minuten-/15-Minuten-/30-Minuten-/60-Minuten-Candlestick-Charts
Tages-Candlestick-Chart
Wöchentliches Candlestick-Diagramm
Monatlicher Candlestick-Chart
Wir verwenden auch die Funktion „qt.refill_data_source()“, um Bestandsdaten herunterzuladen. Die am häufigsten verwendeten täglichen Aktienkerzendaten (K-Linie) werden in der Tabelle „stock_daily“ gespeichert. Da das Datenvolumen jedoch groß ist, ist es am besten, den Datenbereich beim Herunterladen zu begrenzen. Verwenden Sie die Parameter „start_date“/„end_date“, um das Start- und Enddatum anzugeben und historische Daten stapelweise herunterzuladen. Andernfalls ist der Downloadvorgang sehr zeitaufwändig:
>>> qt.refill_data_source(tables='stock_daily', start_date='20230101', end_date='20231231')
Der obige Code lädt tägliche Candlestick-Daten (K-Linie) für alle börsennotierten Aktien für das gesamte Jahr 2023 herunter. Ebenso kann der folgende Code verwendet werden, um tägliche Candlestick-Daten (K-Linie) für häufig verwendete Indizes (den SSE Composite Index und den CSI 300 Index) herunterzuladen:
>>> qt.refill_data_source(tables='index_daily', symbols='000001, 000300', start_date='20231231', end_date='20240208')
Erhalten Sie Aktienkursdaten aus dem lokalen Speicher
Sobald die Aktienkursdaten lokal gespeichert sind, können Sie sie jederzeit extrahieren und verwenden.
Wir können die Funktion „qt.get_history_data()“ verwenden, um die Preis- und Volumendaten einer Aktie zu erhalten. Diese Funktion ist eine Allzweckschnittstelle in „qteasy“ und kann zum Abrufen verschiedener Datentypen verwendet werden. Durch Angabe des Datentyps (über die Datentyp-ID), des Börsentickers und anderer Parameter in den Funktionsargumenten können Sie die entsprechenden Daten erhalten. Wenn Sie die soeben heruntergeladenen Candlestick-Preise (K-Linie) abrufen möchten, stellen Sie den Datentyp auf „Eröffnung, Hoch, Tief, Schluss, Vol.“ ein, um die Eröffnungs-, Höchst-, Tiefst-, Schluss- und Handelsvolumina zu erhalten:
>>> qt.get_history_data(
... 'open, high, low, close, vol', # 数据类型,分别为开盘价、最高价、最低价、收盘价、成交量
... shares='000001.SZ', # 股票代码:平安银行
... start='20230101', # 数据开始日期
... end='20230301', # 数据结束日期
... )
Das Ergebnis ist wie folgt:
{'000001.SZ':
open high low close vol
2023-01-04 13.71 14.42 13.63 14.32 2189682.53
2023-01-05 14.40 14.74 14.37 14.48 1665425.18
2023-01-06 14.50 14.72 14.48 14.62 1195744.71
2023-01-09 14.75 14.88 14.52 14.80 1057659.11
2023-01-10 14.76 14.89 14.39 14.44 1269423.39
2023-01-11 14.45 14.78 14.39 14.67 830566.12
2023-01-12 14.77 14.77 14.53 14.67 625694.84
2023-01-13 14.67 14.95 14.55 14.95 949085.83
2023-01-16 14.95 15.28 14.85 15.08 1560039.89
2023-01-17 15.13 15.18 14.77 14.97 935834.54
2023-01-18 14.95 15.18 14.91 15.11 718434.03
2023-01-19 15.13 15.25 14.87 15.09 641875.20
2023-01-20 15.16 15.24 15.00 15.13 608590.08
2023-01-30 15.60 15.74 14.89 15.15 1374317.50
2023-01-31 15.24 15.51 14.96 14.99 1030497.84
2023-02-01 15.03 15.08 14.51 14.70 1653421.48}
Die Ausgabe der obigen Funktion ist ein Wörterbuch: Seine Schlüssel sind die Ticker aller Aktien, die durch den Parameter „shares“ angegeben werden, und seine Werte sind „DataFrames“, die die historischen Daten jeder Aktie für den angegebenen Zeitraum enthalten. Hier haben wir den Datentyp als Candlestick-Preis- und Volumendaten (K-Linie) angegeben. Natürlich können wir auch andere Datentypen angeben – sofern diese Daten bereits lokal heruntergeladen wurden, können sie direkt gelesen werden.
Wenn Sie beispielsweise die Datentypen „htypes=‘pe, pb, total_mv“ angeben, können Sie drei Finanzindikatoren erhalten, z. B. das Kurs-Gewinn-Verhältnis, das Kurs-Buchwert-Verhältnis und die Gesamtmarktkapitalisierung einer Aktie. Wenn bei einigen Indikatoren Werte fehlen, können Sie eine Füllmethode definieren, um die fehlenden Werte auszufüllen. Sie können die Daten auch erneut abtasten und so Tagesdaten in wöchentliche oder stündliche Daten umwandeln.
Eine ausführliche Erläuterung der Parameter der Funktion „get_history_data“ finden Sie in der qteasy-Dokumentation.
Erstellen Sie ein Candlestick-Diagramm
Bei der Verwendung von Volumen- und Preisdaten besteht ein bequemerer und lesbarerer Ansatz darin, die Daten als Candlestick-Diagramm anzuzeigen.
„qteasy“ stellt die Funktion „qt.candle()“ zur Anzeige professioneller Candlestick-Charts bereit. Sofern die Daten lokal heruntergeladen wurden, können Sie sofort ein Candlestick-Chart anzeigen:
>>> qt.candle('600004.SH', start='20230101', end='20230301')

Nachdem Sie die Anpassungsfaktordaten auf Ihren lokalen Computer heruntergeladen haben, können Sie angepasste Preise anzeigen:
>>> qt.refill_data_source(tables='adj', start_date='20230101', end_date='20230601')
>>> qt.candle('600004.SH', start='20230101', end='20230301', adj='b')

Die Funktion „qt.candle()“ unterstützt die Übergabe des Startdatums, Enddatums, der Candlestick-Häufigkeit (K-Linie) und der Anpassungsmethode, um Candlestick-Diagramme für verschiedene Bereiche und Häufigkeiten anzuzeigen. Es unterstützt auch die Eingabe der Dauer gleitender Durchschnitte und verschiedener MACD-Parameter, um verschiedene gleitende Durchschnitte anzuzeigen. Darüber hinaus unterstützt „qt.candle()“ die Anzeige von Candlestick-Charts nach Aktiennamen: Wenn es sich bei der Eingabe um einen Aktiennamen handelt, wird automatisch eine Fuzzy-Suche durchgeführt und es werden auch Platzhalter unterstützt.
Nachfolgend finden Sie weitere Beispiele für Candlestick-Charts, die verschiedene Anlageklassen wie Aktien, Fonds und Indizes zeigen. unterschiedliche Datenfrequenzen; verschiedene Einstellungen für den gleitenden Durchschnitt; verschiedene Diagrammtypen; und so weiter. Um die Candlestick-Charts in den folgenden Beispielen anzuzeigen, müssen Sie die entsprechenden Daten herunterladen.
>>> import qteasy as qt
>>> df = qt.candle('159601', start='20210420', freq='d')
>>> df = qt.candle('000001.SH', start = '20211221', asset_type='IDX', plot_type='c')
>>> df = qt.candle('000300.SH', start = '20220331', asset_type='IDX', mav=[], plot_type='c')
>>> df = qt.candle('000300.SH', start = '20221021', asset_type='IDX', mav=[], plot_type='c',
>>> freq='30min')
>>> df = qt.candle('601728', freq='30min', adj='b', plot_type='c')
>>> df = qt.candle('沪镍主力', start = '20211130', mav=[5, 12, 36])
>>> df = qt.candle('510300', start='20200101', asset_type='FD', adj='b', mav=[])
>>> df = qt.candle('格力电器', start='20220101', asset_type='E', adj='f', mav=[5, 10, 20, 30])
>>> df = qt.candle('513100', asset_type='FD', adj='f', mav=[])
>>> df = qt.candle('110025', asset_type='FD', adj='f', mav=[9, 28])
>>> df = qt.candle('001104', asset_type='FD', adj='f', mav=[12, 26])











2.3. Nachschlagen des Datentyps DataType
Wie bereits erwähnt, sind alle Datentypen in „qteasy“ als „DataType“-Objekte gekapselt und stellen eine Art historische Daten dar, die direkt verwendet werden können. Jeder „DataType“ hat eine eindeutige ID. Mit dieser ID können Sie Daten extrahieren, in Handelsstrategien auf diesen Datentyp verweisen und die in „qteasy“ erforderlichen Aufgaben ausführen.
Um die Datentypen in „qteasy“ besser zu verstehen, können wir die Funktion „qt.find_history_data()“ verwenden, um die benötigten Datentypen abzufragen. Die in „qteasy“ definierten Datentypen sind an die Datenhäufigkeit und den Asset-Typ gebunden. Mit anderen Worten: Der Schlusskurs verschiedener Vermögenswerte ist ein unterschiedlicher Datentyp, und der Schlusskurs bei unterschiedlichen Häufigkeiten ist ebenfalls ein unterschiedlicher Datentyp.
Die Funktion „qt.find_history_data()“ kann basierend auf Ihrer Eingabe nach relevanten Datentypen suchen und deren IDs, Datentabellen, Beschreibungen und andere verwandte Informationen anzeigen. Wenn Sie beispielsweise nach „close“ (Schlusskurs) suchen, können Sie alle zugehörigen Datentypen finden:
>>> qt.find_history_data('close')
Sie erhalten die folgende Ausgabe:
matched following history data,
use "qt.get_history_data()" to load these historical data by its data_id:
------------------------------------------------------------------------
freq asset table desc
data_id
close d E stock_daily 股票日K线 - 收盘价
close w E stock_weekly 股票周K线 - 收盘价
close m E stock_monthly 股票月K线 - 收盘价
close 1min E stock_1min 股票60秒K线 - 收盘价
... ... ... ... ...
close h FD fund_hourly 基金小时K线 - 收盘价
close d Any top_list 融资融券交易明细 - 收盘价
========================================================================
Ein weiteres Beispiel: Die Suche nach dem Kurs-Gewinn-Verhältnis (KGV) ergibt Folgendes:
>>> qt.find_history_data('pe')
Sie erhalten die folgende Ausgabe:
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 股票技术指标 - 动态市盈率
========================================================================
Nachdem Sie die entsprechenden Daten gefunden haben, müssen Sie nur noch prüfen, zu welcher Datentabelle sie gehören, diese Tabelle in die lokale Datenquelle herunterladen („refill_data_source(tables, …)“) und dann können Sie diese Daten verwenden („qt.get_history_data(htype, share, …)“).
Eine kurze Einführung in das DataType-Objekt
Wie oben gezeigt, existieren Datentypen in „qteasy“ in Form von „DataType“-Objekten. Jeder Datentyp hat eine eindeutige ID. Mit dieser ID können Sie Daten extrahieren, den Datentyp in Handelsstrategien referenzieren und die in „qteasy“ erforderlichen Arbeiten abschließen.
„DataType“ stellt einen Typ historischer Daten dar, die aus einer Datenquelle extrahiert werden können. Beispielsweise ist der Schlusskurs einer Tageskerze (K-Linie) einer Aktie eine Art historischer Daten; Der Schlusskurs einer wöchentlichen Kerze ist eine weitere Art historischer Daten; und der Schlusskurs einer monatlichen Aktienkerze ist eine weitere Art historischer Daten. Obwohl es sich bei allen um Schlusskurse handelt, sind sie aufgrund unterschiedlicher Häufigkeiten in unterschiedliche Datentypen gekapselt.
Die Klasse „DataType“ kapselt eine einheitliche Datenabruf-API und Attribute, was die Verwendung historischer Daten in „qteasy“ erheblich erleichtert. Wenn wir eine bestimmte Art von historischen Daten benötigen, müssen wir nur deren ID verwenden und get_history_data aufrufen, um sie direkt abzurufen.
Und wenn Sie eine bestimmte Art von Daten in einer Handelsstrategie verwenden müssen, müssen Sie während des Strategiedefinitionsprozesses nur die ID dieser Daten registrieren. Dann können Sie es direkt in der Strategie verwenden, ohne sich um Details wie die Speicherung der Daten, den Download, die Bereinigung usw. kümmern zu müssen.
2.4. Laden Sie regelmäßig Daten in den lokalen Speicher herunter
Um die lokale Datenquelle auf dem neuesten Stand zu halten, können wir die Funktion „qt.refill_data_source()“ verwenden, um regelmäßig Daten lokal herunterzuladen. Erstellen Sie eine Datei „refill_data.py“ und schreiben Sie den folgenden Code hinein:
import qteasy as qt
if __name__ == '__main__':
# 解析命令行参数,--tabls参数表示数据表类型,--start_date和--end_date表示下载数据的起始日期和结束日期
import argparse
parser = argparse.ArgumentParser(description='refill data source')
parser.add_argument('--tables', type=str, default='stock_daily', help='data table type')
parser.add_argument('--start_date', type=str, default='20230101', help='start date')
parser.add_argument('--end_date', type=str, default='20231231', help='end date')
parser.add_argument('--parallel', type=bool, default=True, help='parallel download')
parser.add_argument('--merge_type', type=str, default='update', help='merge type')
args = parser.parse_args()
tables = args.tables
start_date = args.start_date
end_date = args.end_date
parallel = args.parallel
merge_type = args.merge_type
if tables == 'events':
# 下载低频data和event数据,下载周期较长以cover所有的季度月度周度数据 (每周下载或每月下载)
tables = 'stock_weekly, stock_monthly, index_weekly, index_monthly, '
tables += 'income, balance, cashflow, financial, forecast, express, comp, report, events'
elif tables == 'basics':
# 下载基础数据,下载周期较长以cover所有的季度月度周度数据 (每周下载或每月下载)
tables = 'basics'
elif tables == 'daily':
# 下载日频数据,下载周期较短以减少下载负载 (每天或每周下载)
tables = 'adj, stock_daily, fund_daily, future_daily, options_daily, stock_indicator, stock_indicator2, index_indicator, shibor, libor, hibor, index_daily'
elif tables == 'stock_mins':
tables = 'adj, stock_1min, stock_5min, stock_15min, stock_30min, stock_hourly'
elif tables == 'index_mins':
tables = 'adj, index_1min, index_5min, index_15min, index_30min, index_hourly'
elif tables == 'fund_mins':
tables = 'adj, fund_1min, fund_5min, fund_15min, fund_30min, fund_hourly'
else:
tables == tables
qt.refill_data_source(tables=tables,
start_date=start_date,
end_date=end_date,
parallel= parallel,
merge_type=merge_type)
Die obige Skriptdatei bietet die grundlegendste Funktionalität zum Herunterladen von Daten. Sie können die Parameter „tables“ und „start_date“/„end_date“ sowie die Parameter „parallel“ und „merge_type“ nach Bedarf ändern, um verschiedene Datentypen und verschiedene Datumsbereiche herunterzuladen. Sie können die Skriptdatei auch selbst verbessern, um weitere Funktionen zu implementieren.
Um die „stock_daily“-Daten für das Gesamtjahr 2023 herunterzuladen, müssen Sie nur den folgenden Befehl in der Befehlszeile ausführen:
(bash): python -m refill_data --tables stock_daily --start_date 20230101 --end_date 20231231
2.5. Rückblick und Zusammenfassung
An diesem Punkt haben wir ein vorläufiges Verständnis dafür gewonnen, wie „qteasy“ Daten verwaltet und wie Daten heruntergeladen werden. Wir haben Basisdaten sowie einige Preis- und Mengendaten heruntergeladen. Wir haben gelernt, wie man Daten extrahiert und Candlestick-Charts anzeigt. Schließlich haben wir auch gelernt, wie man Daten abfragt. Wenn Sie eine bestimmte Art von Daten benötigen, wissen Sie, wie Sie diese nachschlagen, herunterladen und aufrufen.
Im nächsten Tutorial werden wir unser Verständnis von „qteasy“ vertiefen. Wir werden lernen, wie man Handelsstrategien erstellt und wie man sie ausführt und Backtests durchführt.
Weitere Informationen zu „qteasy“ finden Sie in der qteasy-Dokumentation