12. データ取得チャネルを使用してデータを自動的に入力します。

DataSourceオブジェクトの基本的な操作方法を紹介しました。ただし、実際に使用する場合は、DataSource オブジェクトに大量のデータを設定する必要があります。前の章で紹介したDataSource.update_table_data()方法を使用してデータを手動で入力すると、作業負荷が非常に大きくなります。

ここでは、データ取得チャネルを使用してデータを自動的に入力する方法を紹介します。

12.1. QTEASY データ取得機能

QTEASY データ管理モジュール: データ取得モジュールの構造

上の図に示すように、qteasy のデータ機能は 3 つの層に分かれています。最初の層には、オンライン データ プロバイダーからデータを取得するためのさまざまなデータ ダウンロード インターフェイスが含まれます。このプロセスは DataFetching と呼ばれます。

12.2. データ取得インターフェース refill_data_source()

qteasy は、自動データ ダウンロード インターフェイス qteasy.refill_data_source() を提供します。これは、さまざまなユーザーの使用習慣に合わせて、複数の異なるオンライン データ プロバイダーからさまざまな財務データを取得できます。 qteasy が提供するデータ プル API は、強力なマルチスレッド並列ダウンロード、データ チャンク ダウンロード、ダウンロード トラフィック制御、エラー遅延再試行機能を備えており、さまざまなデータ プロバイダーのさまざまな予測不可能なトラフィック制限に適応します。同時に、データ プル API はバッチ データ ダウンロード タスクを定期的に簡単かつ自動的に実行できるため、高頻度のデータが欠落することを心配する必要はありません。

まず、例を使用して、qteasy.refill_data_source() インターフェースを使用してデータを自動的に入力する方法を説明します。まず、データを含まない DataSource オブジェクトを作成し、次に最も基本的なデータを設定します。

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

ご覧のとおり、DataSource オブジェクトにはすでにいくつかのデータ テーブルが含まれています。次のテストを実行するには、まず trade_calendar および stock_daily データ テーブルからデータを削除し、次にデータ取得インターフェイスを使用してこれらのテーブルに自動的にデータを入力します。

まず、2 つのデータ テーブルを削除します。データ テーブルを削除するには、まずデータ ソースの allow_drop_table 属性を True に設定してから、データ テーブルを削除します。

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

ご覧のとおり、trade_calendar テーブルと stock_daily テーブルのデータが削除されています。

次に、qteasy.refill_data_source() インターフェイスを使用してデータを自動的に入力します。コードは非常にシンプルで 1 行のみで、残りは qteasy が自動的に実行します。

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

データを取得して入力した後、データが正常にダウンロードされたことを確認できます。

>>> 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. データ取得 API の機能

データ取得プロセスを分析すると、qteasy が次のタスクを自動的に完了したことがわかります。

  • 依存関係テーブルの自動検索stock_daily テーブルのみを指定しましたが、qteasytrade_calendar テーブルも空であることを自動的に検出し、stock_daily テーブルはトレーディング カレンダー テーブルに依存しているため、trade_calendar テーブルにも自動的に値が設定されます。

  • ダウンロードの進行状況の視覚化qteasy は、ダウンロードの進行状況を視覚化して、ユーザーが各データ ブロックのダウンロードの進行状況と全体的なダウンロードの進行状況を確認できるようにします。残り時間も表示されるので、データのダウンロード状況も簡単に把握できます。

  • 自動データチャンク — 上記のコードは、2021 年中のすべての銘柄の毎日のローソク足チャート データ (合計 239 万行) をダウンロードしました。データソースに関係なく、このような大量のデータを一度にダウンロードすることはできません。したがって、qteasy はデータを自動的にチャンク化し、各チャンクには 1 日分のデータのみが含まれます。ご覧のとおり、1 年全体のデータは 243 のチャンクに分割されています。この分割ダウンロードにより、ネットワーク リクエストごとに要求されるデータ量が大幅に削減され、成功率が向上し、ブロックされるリスクが軽減されます。

  • マルチスレッド並列ダウンロード — ダウンロード用のデータ チャンク化を実装した後、qteasy は自動的にマルチスレッド並列ダウンロードを使用して、データ ダウンロード プロセスを高速化します。 243 個のデータ チャンクを並行してダウンロードする合計時間は、わずか 16 秒でした。

これらの機能により、qteasy のデータ取得機能は、ほぼすべてのユーザーのデータ取得ニーズを満たすことができます。大量のデータをダウンロードする場合でも、高頻度のデータをダウンロードする場合でも、qteasy は効率的なデータ ダウンロード サービスを提供できます。

もちろん、上記の機能に加えて、qteasy は、ダウンロード プロセス中に発生する可能性のあるさまざまな状況に対処するために、さらに多くの機能を提供します。これらの機能については後ほど詳しく紹介します。

  • マルチチャネル ダウンロードqteasy は複数のデータ ダウンロード チャネルを提供します。多くのデータ テーブルは複数の異なるチャネルからダウンロードでき、データ取得チャネルの数はバージョンが更新されるたびに常に増加しています。

  • トラフィック制御 - 一部のデータ チャネルでは、データのダウンロードにトラフィック制限があります。 qteasyは、データのダウンロード速度を制限できるトラフィック制御機能を提供します。つまり、一定数のデータ チャンクをダウンロードした後、一定期間一時停止できます。たとえば、データ チャネルによってブロックされないように、300 個のデータ チャンクをダウンロードした後、1 分間停止します。

  • エラーの再試行 — 一部のデータ ソースからデータをダウンロードするときに、ネットワーク エラーが発生する場合があります。 qteasy はエラー再試行機能を提供し、失敗後にダウンロードを自動的に再試行できます。再試行が失敗した場合は、再試行の待機時間を延長し、ダウンロードが成功するか、再試行回数を超えてエラーが報告されるまで再試行します。

  • ログ記録qteasy は、データダウンロードのログ記録機能を提供します。これにより、ダウンロードされたデータの量、ダウンロード時間、ダウンロード速度などを含む各データダウンロードの詳細情報を記録できるため、ユーザーはデータのダウンロード状況を確認するのに便利です。

複数のチャネルから取得されたデータ

qteasy は複数のデータ ダウンロード チャネルを提供し、さまざまなチャネルから多くのデータ テーブルをダウンロードできます。さらに、バージョンが更新されるたびに、データ取得チャネルの数は増加し続けています。

refill_data_source()接口的channel参数可以指定数据下载渠道,如果不指定,qteasy会使用默认渠道tushare(见qteasy/core.pyrefill_data_source的默认逻辑)。用户也可以手动指定数据下载渠道。

当前内置四通道为:tushareakshareeastmoney(别名 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_basicindex_basicfund_basic 等),主键冲突时仅用下载侧非空字段覆盖对应列,下载值为空字符串或 NULL 时保留本地已有值。因此可用 AKShare 补全代码列表拉分钟线依赖表,而不会冲掉此前用 Tushare 写入的 industrylist_date 等。按行业/地域筛选股票(filter_stocks / filter_stock_codes)仍建议以 Tushare 的 stock_basic 为准或先确认本地行业列非空。

  • tushare:覆盖最全,多数表需配置 tushare_token 及相应积分/权限。

  • akshare:无需 token;当前 25 张历史/基础/事件表已实现(见 tests/akshare_data_test_checklist.md),其余表仍为 blockednot_supportedstock_basic 等 basics 表仅保证 代码与名称索引,不替代 Tushare 完整基本面。

  • eastmoney:无需 token;分钟线覆盖较全,部分基础表(如 stock_basic)可能无法从此通道拉取。

  • sina:无需 token;以股票日线与分钟线为主,无周/月线等。

次のコードは、eastmoney データ チャネルから 2025 年の最初の 2 か月間、stock_daily データ テーブルから毎日のローソク足データをダウンロードしようとします。

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

データが正常にダウンロードされたことを確認します。

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

データのダウンロードは明らかに成功しました。上記のダウンロード プロセスを分析すると、いくつかの特徴が観察できます。

  • 異なるチャネルからダウンロードされたデータは同じ形式です。これがqteasyの設計原則です。さまざまなチャネルからダウンロードされたデータは、同じクリーニング プロセスを受けます。これにより、ユーザーは、異なるデータ形式によって引き起こされるデータ処理の問題を心配することなく、異なるデータ ダウンロード チャネルを簡単に切り替えることができます。

  • 異なるダウンロード チャネルでは異なるチャンキング方法が使用されるため、ダウンロード速度が異なります。 eastmoney データ チャネルは低速で、完了までに約 17 分かかります。これは、各ダウンロード チャネルの固有の制限によるものです。

  • ダウンロード チャネルが異なれば、異なるデータ テーブルのダウンロードが可能になる場合があります。一部のデータ テーブルは、許可制限やその他の要因により、特定のチャネルを通じてダウンロードできない場合があります。データテーブルをダウンロードできない場合、qteasy は他のデータテーブルのダウンロードに影響を与えることなく、そのデータテーブルを自動的にスキップします。

したがって、ユーザーは自分の状況に基づいてデータを取得するために異なるチャネルを選択する必要があります。

使用 AKShare 通道

AKShare 适合无 Tushare token、仅需 P0 行情表的场景。使用前请安装依赖:

pip install akshare

最小 refill 示例(短日期窗、指定 channel='akshare'):

>>> qt.refill_data_source(
        tables='stock_daily',
        channel='akshare',
        data_source=ds,
        shares='000001.SZ,600000.SH',
        start_date='20240101',
        end_date='20240110',
)

完整可运行脚本见仓库 examples/akshare_refill_minimal.py(需联网)。

限制与注意

  • AKShare 接口由第三方维护,稳定性与速率不可控;失败时会按 hist_dnld_retry_* 配置重试。

  • 当前版本承诺 108 张内置表均可从 AKShare 下载;扩表属于 S3.2 后续批次,详见 tests/akshare_data_test_checklist.md

  • 拉取分钟线时若自动补 stock_basic,AKShare 会更新代码/名称,但不会用空值覆盖已有 industry 等列;若库中从未写入过 Tushare 基本面,按行业选股前仍需 refill_data_source(tables='stock_basic', channel='tushare')

通道切换与配置

一次性下载(脚本 / 交互):在 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() 修改):

配置键

含义

默认值

live_trade_data_refill_channel

Trader 日更自动 refill 使用的通道

eastmoney

live_price_acquire_channel

实盘获取实时价格的通道

eastmoney

示例:

>>> qt.configure(live_trade_data_refill_channel='akshare')
>>> qt.configure(live_price_acquire_channel='akshare')

修改后,实盘任务会使用新通道执行 refill / 取价;历史脚本仍可在每次 refill_data_source 调用中单独指定 channel,与全局配置无关。

ダウンロードトラフィック制御を実装する

qteasyrefill_data_source は、データのダウンロード速度を制限できるフロー制御機能を提供します。つまり、一定数のデータ チャンクをダウンロードした後、一定期間停止することができます。たとえば、300 個のデータ チャンクをダウンロードした後、データ チャネルによってブロックされるのを避けるために 1 分間一時停止することができます。

この機能は、refill_data_source() インターフェイスの download_batch_size および download_batch_interval パラメータを通じて実現されます。

  • download_batch_size パラメータは、毎回ダウンロードされるデータ チャンクの数を指定します。 300 に設定すると、300 個のデータ チャンクをダウンロードした後、ダウンロードは一定期間一時停止します。

  • download_batch_interval パラメータは、各データ チャンクがダウンロードされた後の一時停止時間を指定します。デフォルト値は 0 で、一時停止しないことを意味します。

次のコードは、download_batch_size パラメーターと download_batch_interval パラメーターを使用してダウンロード トラフィック制御を実装する方法を示しています。

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

トラフィック制御を使用すると、ダウンロード時間は当然長くなりますが、一部のデータ チャネルではこれが必要です。そうしないと、ダウンロードがブロックされたり、エラーが発生したりして、ダウンロードが失敗する可能性があります。

エラーの再試行を実装する

データのダウンロード処理中にエラーが発生した場合、qteasy は自動的にダウンロードを再試行することに注意してください。再試行メカニズムは次のとおりです。

  • 最初のダウンロードが失敗した後、再試行するまで少し待機します。デフォルトの待機時間は 1.0 秒です。

  • 再試行が失敗するたびに待機時間は増加し、デフォルトの待機時間は元の値の 2 倍に増加します。つまり、最初は 1.0 秒待機し、2 回目は 2.0 秒待機し、3 回目は 4.0 秒待機する、というようになります。

  • 最大再試行回数を超えると再試行が停止され、エラーが報告されます。デフォルトでは、最大再試行回数は 7 です。

上記の 3 つのエラー再試行パラメータはすべて、qteasy 設定ファイルを通じて設定されます。ユーザーは、qt.config() インターフェイスを介してこれらのパラメータを表示または変更することも、qteasy の初期設定ファイルでこれらのパラメータを変更することもできます。

  • hist_dnld_retry_cnt - 再試行の最大数。デフォルトは 7 です。

  • hist_dnld_retry_wait - 最初の再試行の待ち時間。デフォルトは 1.0 秒です。

  • hist_dnld_backoff - 再試行待ち時間を増やすための乗数。デフォルトは 2.0 です。

設定ファイルを変更する方法、または qteasy の初期設定ファイルを使用する方法については、qteasy の設定ファイル セクション (…/api/api_reference.rst) を参照してください。

ロギング

qteasyはデータダウンロードログ記録機能を提供しており、ダウンロードしたデータ量、ダウンロード時間、ダウンロード速度など、各データダウンロードの詳細情報を記録できるため、ユーザーはデータダウンロード状況を確認するのに便利です。

その他の機能

qteasy refill_data_source() インターフェイスは、次のような他の機能も提供します。

  • ダウンロードされるデータの範囲を制限するには、start_date および end_date パラメータを使用してダウンロードされるデータの時間範囲を制限し、shares パラメータを使用してダウンロードされる株の範囲を制限します。

  • 未传 start_date / end_date 时的默认行为:内部将 start_date 视为该表映射中的最早可用日(如 new_share19700101),end_date 视为当天。因此 tables='basics' 会包含需按日期分块下载的 new_share(IPO 新股);若不传日期,会从 1970-01-01 分块拉至今日,耗时较长。若只需代码/行业类 basics、不要 IPO 表,请显式指定表名或传入较窄的日期窗。

  • 並行してダウンロードするかどうかを設定するには、parallel パラメーターを使用できます。 False に設定すると、ダウンロードは連続的に実行されます。それ以外の場合、それらは並行して実行されます。

  • 依存関係テーブルをダウンロードするかどうかを構成するには、download_dependent パラメーターを使用できます。 False に設定すると、依存関係テーブルはダウンロードされません。それ以外の場合はダウンロードされます。

  • 取引カレンダーの更新を強制するかどうかを設定します。

このインターフェイスの詳細については、qteasy API ドキュメント (…/api/history_data.rst) を参照してください。