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-lib ab (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:

Bildbeschreibung hier einfügen

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支持通过 tushareakshareeastmoneysina 等多个内置通道下载数据(参数 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:

Bildbeschreibung hier einfügen

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')

Bildbeschreibung hier einfügen

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')

Bildbeschreibung hier einfügen

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])

png

png

png

png

png

png

png

png

png

png

png

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