1. インストールと構成
qteasy は、以下の機能を備えた定量的取引分析ツールキットの完全にローカライズされた展開と運用です。
財務データの取得、クリーニング、保管、処理、可視化、および使用
定量的な取引戦略を作成し、多数の組み込みの基本的な取引戦略を提供します
ベクトル化された高速取引戦略のバックテストと取引結果の評価
取引戦略パラメーターの最適化と評価
取引戦略の展開と実際の運用
ここでは、一連の実践的な例を通じて、qteasy の主な機能と使用法を理解するのに役立つ一連のチュートリアルを示します。
qteasyはpythonを利用して作成されており、ベクトル化されたバックテストおよびトレーディングシミュレーションエンジンを使用して戦略の高速バックテストを実現するとともに、戦略フレームワークの柔軟性も考慮しており、ユーザーは必要に応じてさまざまな高度な戦略をカスタマイズできます。 qteasy は、取引戦略の最適化と評価を支援するさまざまな戦略パラメーター最適化アルゴリズムを提供し、リアルタイム操作モードを提供して、取引戦略を直接展開して使用できるようにします。
1.1. qteasy インストール前の準備
設置環境の作成
qteasy は pip 経由でインストールできます。依存パッケージが多いため、依存パッケージと既存環境のパッケージとの競合を避けるため、独立したpython環境を作成してqteasyをインストールすることをお勧めします。
ここでは、venv と conda を使用して仮想環境を作成する 2 つの方法を示します。
macOS および Linux のユーザーは、ターミナルを開き、環境を作成する必要があるパスを入力し、次のコマンドを入力して、現在のディレクトリに qteasy-env という名前の仮想環境を作成し、環境をアクティブ化できます。
python -m venv qteasy-env
source qteasy-env/bin/activate
Windows ユーザーは、コマンド プロンプトを開き、環境を作成する必要があるフォルダーを入力し、次のコマンドを入力して仮想環境を作成し、アクティブ化できます。
py -m venv qteasy-env
.venv\Scripts\activate
ユーザーはターミナルを開き、次のコマンドを入力して qteasy-env という名前の仮想環境を作成し、その環境をアクティブ化できます。
conda create -n qteasy-env python=3.8
conda activate qteasy-env
次のコマンドを使用して、アクティブ化された仮想環境に qteasy をインストールします。
pip install qteasy
MySQL データベースをインストールします (オプション)
qteasy は大量の財務データを管理できます。 qteasy の仕組みは、すべての財務データをローカル マシンにダウンロードし、クリーンアップして、事前定義されたデータ テーブルに保存することです。必要に応じて (K ライン チャートの生成、取引シグナルの生成、取引バックテストのシミュレーション、取引結果の評価など、すべてのリンクに財務データが必要です)、必要なデータはローカル データ ソースから直接読み込まれます。したがって、データ管理環境をローカルにセットアップする必要があります。
qteasy は、データ管理環境としてデータベースとファイル システムの両方をサポートします。財務データの量を考慮すると、データベースをローカル データ ソースとして使用することを強くお勧めします。 qteasy でサポートされるローカル データ ソースには次のものがあります。
csvファイル をデフォルトのデータ ソースとして使用します。多くのスペースを消費しますが、Excel を使用してローカル データを読み取ることができます。データ量が多いと遅いmysqlデータベースを使用し、ディスクに少なくとも 1TB の高速なストレージ容量があることを確認することを強くお勧めします。hdf5ファイルは多くのスペースを占有し、データ量が大きいと速度が遅くなりますfeatherファイル は使用するスペースが少なく、データ量が多いと速度が遅くなります
最高のデータストレージ効率を実現するには、mysql データベースをローカル データ ソースとして使用することをお勧めします。
データベースをローカル データ ソースとして使用する必要がある場合は、次の方法を参照して MySQL データベースをインストールします。ファイルをローカル データ ソースとして使用する場合は、この手順を省略できます。
公式 Web サイト でコミュニティ オープン ソース バージョンを直接見つけてダウンロードできます。Web サイトでは、dmg や tar などのさまざまなインストール方法が提供されており、Apple M1 チップ用に利用可能なバージョンもあります。

データベースをインストールし、ユーザーを作成し、アクセス方法を設定し、パスワードを設定します。
# 创建新的用户,并允许客户通过localhost连接
mysql> CREATE USER '用户名'@'localhost' IDENTIFIED BY '初始密码';
Query OK, 0 rows affected (0.46 sec)
# 设置用户的权限
mysql> GRANT ALL ON *.* TO '用户名'@'localhost';
Query OK, 0 rows affected (0.06 sec)
# 创建新的用户,并允许客户通过远程连接
mysql> CREATE USER '用户名'@'%' IDENTIFIED BY '初始密码';
Query OK, 0 rows affected (0.46 sec)
# 设置用户的权限
mysql> GRANT ALL ON *.* TO '用户名'@'%';
Query OK, 0 rows affected (0.06 sec)
データベースがセットアップされ、qteasy は自動的にデータベース テーブルを作成し、データベースに財務データを保存します。
pymysql をインストールします
pip install pymysql
TA-lib のインストール (オプション)
qteasyには多数のテクニカル指標が組み込まれています。これらのテクニカル指標の計算は、TA-lib に依存します。 qteasy のすべての組み込みテクニカル指標を使用する必要がある場合は、TA-lib をインストールする必要があります。このステップをスキップすると、次の組み込み戦略のみを使用できます。 組み込み戦略の完全なリストと詳細なリファレンス ドキュメント と 組み込み取引戦略のバックテスト結果 は次のとおりです。
ID |
戦略名 |
説明書 |
|---|---|---|
crossline |
TimingCrossline |
クロスライン タイミング戦略クラス。長移動平均と短移動平均のクロスを使用してロングとショートの状態を決定します。 |
macd |
TimingMACD |
MACD タイミング戦略クラス。MACD 移動平均戦略を使用してターゲット ポジション パーセンテージを生成します。 |
dma |
TimingDMA |
DMA タイミング戦略 |
trix |
TimingTRIX |
TRIX タイミング戦略、株価の 3 倍平滑指数移動平均価格を長短の判断に使用する: |
ssma |
SCRSSMA |
単一移動平均クロス戦略 - SMA移動平均(単純移動平均):株価とSMA移動平均の相対位置に基づいてポジション比率を設定 |
sema |
SCRSEMA |
単一移動平均クロス戦略 - EMA移動平均(指数平滑移動平均):株価とEMA移動平均の相対位置に基づいてポジション比率を設定 |
dsma |
DCRSSMA |
ダブル移動平均クロス戦略 - SMA 移動平均 (単純移動平均): |
dema |
DCRSEMA |
ダブル移動平均クロス戦略 - EMA 移動平均 (指数平滑移動平均): |
slema |
SLPEMA |
移動平均傾斜取引戦略 - EMA 移動平均 (指数平滑移動平均): |
signal_none |
SignalNone |
空の取引シグナル戦略: 取引シグナルを生成しない戦略 |
sellrate |
SellRate |
変化率売りシグナル戦略:価格の変化率が閾値を超えた場合に売りシグナルを生成 |
buyrate |
BuyRate |
変化率買いシグナル戦略:価格の変化率が閾値を超えた場合、買いシグナルが生成される |
Long |
TimingLong |
シンプルなタイミング戦略、全歴史期間を通じて固定ロングポジション |
short |
TimingShort |
シンプルなタイミング戦略、全歴史期間を通じて固定ショートポジション |
zero |
T |
シンプルなタイミング戦略、全歴史期間を通じて固定の空のポジション |
all |
SelectingAll |
過去の株式プール内のすべての株式を選択したままにし、投資比率を均等に配分します。 |
select_none |
SelectingNone |
過去の株式プール内のすべての株式を選択解除したままにし、投資ポジションは 0 になります。 |
random |
SelectingRandom |
各履歴セグメントにおいて、指定された割合に従って特定の数の銘柄をランダムに選択する (p<1)、または指定された数の銘柄をランダムに選択する (p>=1) 投資ポートフォリオに入力し、投資比率は均等に配分されます。 |
finance |
SelectingAvgIndicator |
一定期間にわたる株式の財務指標の平均値に基づいて株式に投資します。銘柄選択の基本戦略: 銘柄の過去の指標の平均値を銘柄選択要素として使用します。ファクターソートパラメータを戦略パラメータとして渡して、戦略データタイプを変更したり、さまざまな履歴データに基づいて銘柄を選択したり、選択した銘柄パラメータをparsを介して渡すことができます。 |
ndaylast |
|
N 日前の株式の価格またはデータ指標に基づいて銘柄を選択します |
ndayavg |
SelectingNDayAvg |
過去 N 日間の株式の価格またはデータ指標の平均値に基づいて銘柄を選択します |
ndayrate |
SelectingNDayRateChange |
過去N日間の株式の価格またはデータ指標の変化率に基づいて銘柄を選択します |
ndaychg |
|
S |
ndayvol |
SelectingNDayVolatility |
銘柄選択要素として過去 N 日間の株式の株価変動率に基づく |
次に、TA-libのインストール方法を簡単に紹介します。
pip install ta-lib によってインストールされるのは単なる Python であるため、完全な TA-Lib` パッケージを pip 経由でインストールすることはできません。
一部のユーザーは、次の方法を使用して C 言語 TA-Lib パッケージをインストールできます:
conda install -c conda-forge libta-lib
さまざまなシステムへの C 言語 TA-Lib パッケージのインストール方法:
Windows
ta-lib-0.4.0-msvc.zipをダウンロードし、
C:\ta-libに解凍します。Visual Studio Community(2015 以降のバージョン) をダウンロードしてインストールし、[Visual C++]機能を選択しますWindows スタート メニュー、
[VS2015 x64 Native Tools Command Prompt]を起動C:\ta-lib\c\make\cdr\win32\msvcに移動しますnmake
Mac OS
$ brew install ta-lib
Apple Silicon チップを使用している場合は、以下を使用できます。
$ arch -arm64 brew install ta-lib
Linux
ダウンロード ta-lib-0.4.0-src.tar.gz
$ tar -xzf ta-lib-0.4.0-src.tar.gz
$ cd ta-lib/
$ ./configure --prefix=/usr
$ make
$ sudo make install
C言語TA-Libをインストールした後、TA-Libのpython wrapperをインストールしてください
pip install TA-Lib
TA-Libのより完全なインストール方法は、こちらを参照してください。
1.2. QTEASYを初期化します
qteasy の依存パッケージがすべて正しくインストールされている場合、IDE に qteasy をインポートできます。
>>> import qteasy as qt
>>> print(qt.__version__)
初めてqteasyをインポートすると、自動的に初期化されます。初期化プロセスでは、qteasy の環境構成変数を保存するために使用される qteasy.cfg ファイルが作成されます。ユーザーはこのファイルを変更して、qteasy の環境構成変数を変更できます。
ユーザーは、いくつかの主要な構成情報を qteasy.cfg ファイルに保存して、インポート時に qteasy がこれらの構成情報を自動的に読み取ることができます。
QTEASYの初期設定ファイルの2つの方法をご覧ください。
ユーザーがqteasy の初期設定ファイルを編集できるように、qteasy には 2 つの方法が用意されています。
方法 1、qteasy.update_start_up_setting() メソッドを使用します
qteasy は、ユーザーが起動後に起動構成情報を表示および変更できるようにする一連の組み込み関数を提供します。
現在の起動構成を表示するには、関数 qteasy.start_up_settings() を使用して現在の起動構成情報を出力します。
>>> qt.start_up_settings()
qteasy を初めて起動するときは、起動設定ファイルは空で、出力される情報も空です。
出力は次のとおりです。
Start up settings:
--------------------
起動設定ファイルを変更または更新するには、関数 qteasy.update_start_up_setting(**kwargs) を直接呼び出します。渡されたパラメータは起動設定ファイルに書き込まれます。
>>> qt.update_start_up_setting(tushare_token='你的tushare token', local_data_source='database', local_db_host='localhost', local_db_port=3306, local_db_user='user_name', local_db_password='pass_word', local_db_name='qt_db')
Start up settings updated successfully! The settings will be effective next time you start qteasy.
>>> qt.start_up_settings() # 启动配置参数设置完毕后,再次查看启动设置
出力は次のとおりです。
Start up settings:
--------------------
tushare_token = 你的tushare token
local_data_source = database
local_db_host = localhost
local_db_user = user_name
local_db_password = pass_word
local_db_name = qt_db
local_db_port = 3306
起動設定ファイルが正常に変更されたことがわかります。上記の情報が間違っている場合は、いつでも変更できます。 IDE を閉じて、import qteasy を再実行して有効にします。
方法 2、qteasy.cfg ファイルに直接アクセスします
ユーザーは、ファイル エクスプローラー、Finder、またはターミナルで qteasy のルート ディレクトリを見つけて、qteasy.cfg ファイルを開いてその内容を変更できます。
qteasy では、
qt.QT_ROOT_PATHを介して qteasy のルート ディレクトリを表示できます。>>> print(qt.QT_ROOT_PATH)
最初の初期化後のqteasy.cfg ファイルの内容は次のとおりです。
# qteasy configuration file
# following configurations will be loaded when initialize qteasy
# example:
# local_data_source = database
ユーザーは、ファイルに構成情報を直接追加し、ファイルを保存して、qteasy を再インポートして、構成を有効にすることができます。例:
local_data_source = database
以下は、qteasy を使用する前にユーザーが構成する必要があるいくつかの構成情報です。
tushareのAPIトークンを設定します
tushare は有料データサービスであることに注意してください。ユーザーはポイントを取得する必要があります。ポイントが多いほど、取得できるデータの種類が増え、権限も大きくなります。 tushare tokenを設定しない場合、tushareデータサービスを正常に利用することができません。
チュートリアルの前のセクションの内容に従って tushare アカウントを作成し、token を取得した場合は、トークンを qteasy.cfg ファイルに書き込むことができます。これにより、qteasy をインポートするときに token が自動的に読み取られます。
次の内容を qteasy.cfg ファイルに追加します。
tushare_token = 你的tushare token
ローカルデータソースの構成
デフォルトでは、qteasy は csv ファイルを使用してローカル データを保存しますが、これは遅く、多くのスペースを占有します。 qteasy をより効果的に使用するには、ユーザーはローカル データ ソースの基本構成も完了する必要があります。
チュートリアルの前のセクションの内容に従って mysql データベースを作成した場合は、データベースの構成情報を qteasy.cfg ファイルに書き込むことができます。これにより、qteasy は指定したデータベースに接続し、データベースに財務データを保存します。
qteasyの起動設定ファイルに以下の内容を追加し、
local_data_source = database
local_db_host = <你的数据库主机名,如localhost>
local_db_port = <你的数据库端口,如3306>
local_db_user = <你的数据库用户名>
local_db_password = <你的数据库连接密码>
local_db_name = <保存金融数据的数据库名,如qt_database>
上記の設定が行われていない場合、qteasy はデフォルトの csv ファイルをローカル データ ソースとして使用します。
注意: 起動設定ファイルを直接変更する場合、ファイルに設定情報を指定するときに
<と>を追加しないでください。そうしないと、これらの文字もtokenまたはデータベース名の一部とみなされ、データベース接続が失敗します。
qteasyは、設定ファイルを解析するときに、設定の種類に応じて正しい形式に自動的に変換します。たとえば、データベース ポート3306はint変数である必要があります。直接使用:local_db_port = 3306それでおしまい。
qteasyは、文字列3306をintタイプ3306に変換します。次の構成ファイルの例は正しいです。
tushare_token = xxxxxxxxxxxxxxxxxxxxx local_data_source = database local_db_host = localhost local_db_port = 3306 local_db_user = user_name local_db_password = pass_word local_db_name = qt_db
1.3. 財務データの最初のバッチのダウンロードを開始する
上記の設定を完了し、qteasy.cfg ファイルを保存して閉じます。おめでとうございます。qteasy がインストールされ、設定されました。これで、qteasy の使用を開始できます。
まず、財務データをダウンロードする必要があります。取引戦略のバックテスト、最適化、評価などのすべての機能には財務データが必要です。ここでは、最初に後続のチュートリアルで使用するためにいくつかのストック データをダウンロードできます。
qt.refill_data_sourceは汎用のデータ取得APIです。データテーブル名、データソースチャネル(デフォルトtushare)、開始日/終了日、銘柄コードを指定することで、qteasyは対応するオンラインデータプロバイダーに接続し、データをバッチで自動的にダウンロードできます。ダウンロードするデータ量が多い場合、この機能によりデータが自動的に分割されます。また、ネットワーク遅延によるダウンロードの失敗を自動的に処理し、過剰なダウンロード トラフィックによる接続の失敗を防ぐレート制限オプションを提供します。ダウンロードされたデータは自動的にクリーンアップ、整理、重複除去され、DataSource に書き込まれるデータがクリーンであることが保証されます。 refill_data_source() 関数の詳細については、api_reference を参照してください。
refill_data_source 機能を通じて、株、先物、指数、ファンドなどの財務データだけでなく、マクロ経済、財務諸表、財務指標、会社の基本情報などの非取引データもダウンロードできます。 qteasy は、データをローカルにバッチでダウンロードでき、マルチスレッドの並列ダウンロードも使用でき、ダウンロードの進行状況バーを提供し、大量の履歴データを一度にローカルにダウンロードするのに特に適しています。今月または今週のすべてのデータをダウンロードして月次または週次で追加するなど、増分データを定期的に追加する定期的な操作に適しています。
現在はtushare / akshare / eastmoney などのチャンネルからデータを取得できますが、当面はtushare がメインチャンネルとなります。 tushare チャネルはすべてのデータ API をカバーしており、他の 2 つのチャネルの API はバージョン更新により徐々に追加されます。
# 从tushare下载股票数据 (从2023年1月1日到2023年12月31日之间的所有股票数据)
qt.refill_data_source(channel='tushare', tables='stock_daily', start_date='20230101', end_date='20231231')
qteasy はすべてのデータを自動的にダウンロードし、データのグループ化、分割ダウンロード、切断時の再試行、データ クリーニング、重複排除を自動的に処理します。ダウンロード中に進行状況バーが表示されます。ダウンロードが完了すると、データはローカル データ ソースに書き込まれます。
出力は次のとおりです。
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)!
qteasy では、すべてのデータが特定のデータテーブルに保存され、各タイプのデータには、株価収益率を表す pe、始値を表す open などのデータ ID があります。データ ID を介して、データがローカルにダウンロードされている限り、ユーザーはいつでも qteasy で必要なデータを取得できます。
同時に、データIDはqteasyにおける取引戦略の中核でもあります。ユーザーは、データ ID を通じて取引戦略に必要なデータ タイプを「サブスクライブ」し、これらのデータに基づいて取引シグナルを生成できます (取引シグナルと取引戦略については、チュートリアルの第 4 章を参照してください)。
ネットワーク環境やデータサイズにより、ダウンロードにかかる時間が異なる場合があります。ダウンロードが完了すると、2023年のすべての株価データを直接取得できるようになります。
履歴データを取得するには、get_history_data 関数を使用し、パラメーターでデータ型、銘柄コード、開始日、終了日を指定します。次のコードは、2023 年 1 月 1 日から 2023 年 3 月 1 日までの株式 000001.SZ の始値、高値、安値、終値、取引高、出来高などを取得できます。
>>> qt.get_history_data(
... 'open, high, low, close, vol', # 数据类型,分别为开盘价、最高价、最低价、收盘价、成交量
... shares='000001.SZ', # 股票代码:平安银行
... start='20230101', # 数据开始日期
... end='20230301', # 数据结束日期
... )
出力は次のとおりです。
{'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-02-27 13.75 13.88 13.68 13.69 621461.93
2023-02-28 13.75 13.85 13.61 13.78 607935.92
2023-03-01 13.80 14.19 13.74 14.17 1223451.78}
この時点で上記のデータが表示されていれば、qteasyのインストールと初期化が完了し、qteasyの使用を開始できることになります。
次の章では、qteasyの基本的なデータ型と、qteasyを使用して財務データを取得および管理する方法を紹介します。
あ
qteasy 環境変数の AP およびすべての環境変数については、設定 API を参照してください。


