QTEASY 快速上手指南

安裝與導入

使用 pip 安装(要求 Python >= 3.9, <3.13):部分功能(如全部内置策略、数据库存储等)需要可选依赖,详见 FAQ 与安装说明。

pip install qteasy

啓動後即可導入 qteasy 並查看版本號:

>>> import qteasy as qt
>>> print(qt.__version__)

輸出如下:

2.6.0

一分鐘跑通

本節將帶您完成:配置 tushare Token → 下載滬深 300 十年指數數據 → 查看數據與 K 線 → 使用內置 DMA 策略對 000300.SH 做擇時回測,並得到一份可用的回測結果。

1. 配置 tushare Token

qteasy 默認使用 Tushare 下載金融數據。若要下載數據,需要先在系統的啓動配置文件中配置 tushare 的 API Token(請先在 tushare 官網註冊並獲取 Token)。

有兩種方式修改啓動配置文件:

方式一:在代碼中設置啓動配置 在首次下載數據前執行update_start_up_setting()修改啓動配置並自動將其保存到啓動配置文件中:

>>> qt.update_start_up_setting(tushare_token='你的tushare_API_Token')  # 启动配置将被保存到启动配置文件中
>>> qt.start_up_settings()  # 查看启动配置文件的内容

輸出如下:

Start up settings:
--------------------
tushare_token = <你的tushare_API_token>
...

方式二:直接修改啓動配置文件 啓動配置文件 qteasy.cfg 保存在 qteasy 根目錄下(可通過 qt.QT_ROOT_PATH 查看配置文件路徑),使用任意文本編輯器打開該文件並在其中增加一行:

tushare_token = 你的tushare_API_Token  # 直接打开文件并在其中新增配置,字符串配置不需要使用双引号

2. 下载 000300.SH 十年指数数据

配置好 tushare Token 後,下載滬深 300 指數(000300.SH)的日線數據。建議先下載交易日曆與指數基礎資訊,再下載指數日線(約十年):

使用qteasy.refill_data_source()函數,qteasy會自動從配置好的數據下載渠道下載數據,當數據量太大時,會自動分塊下載數據、完成數據檢查和清洗並存儲到數據庫中。

>>> # 下载交易日历与指数基础信息
>>> qt.refill_data_source(tables=['trade_calendar', 'index_basics'])
>>> # 下载 000300.SH 近十年日线数据
>>> qt.refill_data_source(
...     tables=['index_daily'],
...     start_date='20140101',
...     end_date='20241231',
...     symbols=['000300.SH'],
... )

輸出如下:

Filling data source file://csv@qt_root/data/ ...
into 1 table(s) (parallely): {'trade_calendar'}
<trade_calendar> 35000 wrn: 100%|█████████████████████████████████████████████████████| 8/8 [00:05<00:00,  1.58task/s]
Data refill completed! 35000 rows written into 1/1 table(s)!

Filling data source file://csv@qt_root/data/ ...
into 2 table(s) (parallely): {'index_daily', 'index_basic'}
<index_daily> 152760 wrn: 100%|███████████████████████████████████████████████████████| 2/2 [00:05<00:00,  2.51s/task]
<index_basic> 1327 wrn: 100%|█████████████████████████████████████████████████████████| 8/8 [00:05<00:00,  1.58task/s]
Data refill completed! 154087 rows written into 2/2 table(s)!

3. 查看数据与 K 线图

數據落地後,可用 get_history_data 取數、用 HistoryPanel.plotqt.candle 畫 K 線,確認數據與行情是否正常:

>>> # 获取近一年日线,直接返回 HistoryPanel
>>> hp = qt.get_history_data(
...     htypes='open, high, low, close',  # 需要获取的数据类型分别为开盘价、最高价、最低价、收盘价
...     shares='000300.SH',  # 资产类型为沪深300指数
...     start='20230101',  # 数据起始日期
...     end='20231231',  # 数据结束日期
... )
>>> print(hp)  # 查看数据结构与范围
>>> # 在 HistoryPanel 上绘制静态 K 线 + 成交量
>>> hp.plot(interactive=False)
>>> # 或者使用 qt.candle 快速绘制 K 线(内部同样基于 HistoryPanel)
>>> qt.candle('000300.SH', start='2023-06-01', end='2023-12-01', asset_type='IDX')

3.1 交互式圖表(Plotly)與依賴

如果你希望在 Notebook 裏縮放、平移並查看每根 K 線/指標對應的具體數值,可以使用交互式繪圖:

>>> hp.plot(interactive=True)

交互式圖表依賴 Plotly。建議按你的使用環境選擇安裝:

  • 基礎交互(Plotly Figure)

pip install plotly
  • Notebook 更完整交互(FigureWidget + 回調)

pip install ipywidgets anywidget

在 Notebook 中,qteasy 會優先嚐試提供更完整的 FigureWidget 體驗;如果當前內核/依賴不滿足,則會回退到 HTML 方式展示。若未安裝 Plotly,interactive=True 會直接拋出英文錯誤提示(通常包含 “requires plotly”)。

3.2 最常用的交互參數

  • plotly_backend_app='auto'|'FigureWidget'|'html':在 Notebook 中選擇輸出方式(默認 'auto')。

  • layout='auto'|'overlay'|'stack':多標的佈局。'overlay' 僅對 兩標的疊加對比最常用;'auto' 會在“兩標的 → overlay,其餘 → stack”間自動選擇。

  • highlight='max'|'min':高亮最大/最小值點(靜態與交互均可用)。

輸出如下:

{'000300.SH':
               open     high      low    close
2023-01-03  3864.84  3893.99  3831.25  3887.90
2023-01-04  3886.25  3905.90  3873.65  3892.95
2023-01-05  3913.49  3974.88  3912.26  3968.58
...             ...      ...      ...      ...
2023-10-10  3696.25  3701.26  3655.59  3657.13
2023-10-11  3674.75  3689.53  3658.35  3667.55
2023-10-12  3697.93  3711.50  3682.84  3702.38

[186 rows x 4 columns]
}

png

3.5 操作歷史數據(HistoryPanel)

在實際研究中,很多時候我們不僅需要“看 K 線”,還需要在代碼裏對歷史數據做統計、生成因子get_history_data() 除了可以返回 DataFrame 外,還可以直接返回一個三維的 HistoryPanel,便於對多標的、多指標做統一計算:

>>> # 获取 000300.SH 的 OHLCV 历史数据,并返回 HistoryPanel
>>> hp = qt.get_history_data(
...     htypes='open, high, low, close, vol',
...     shares='000300.SH',
...     start='20230101',
...     end='20231231',
...     as_data_frame=False,          # 关键:返回 HistoryPanel
... )
>>> print(hp.shape, hp.shares, hp.htypes)

>>> # 1) 计算简单收益率矩阵(时间 × 股票)
>>> ret = hp.returns(price_htype='close', method='simple')
>>> print(ret.head())

>>> # 2) 计算 20 日滚动波动率
>>> vol = hp.volatility(window=20, price_htype='close', annualize=True)
>>> print(vol.tail())

>>> # 3) 生成 K 线技术指标(如 20 日均线、MACD)
>>> hp_ma = hp.kline.sma(window=20)              # 在 htypes 中新增 'sma_20'
>>> hp_ma_macd = hp_ma.kline.macd()              # 再追加 MACD 指标
>>> print(hp_ma_macd.htypes)

>>> # 4) 识别蜡烛形态(如锤头线)
>>> hammer = hp.candle_pattern('cdlhammer')      # 返回 DataFrame,非 0 代表出现形态
>>> print(hammer[hammer['000300.SH'] != 0].head())

>>> # 5) 单只股票切片成 DataFrame,方便与 pandas / sklearn 等联动
>>> df_300 = hp_ma_macd.to_share_frame('000300.SH')
>>> print(df_300.tail())

上面的例子演示了從 get_history_data(..., as_data_frame=False) 得到 HistoryPanel 之後,如何在一兩行代碼內完成收益率、波動率、技術指標與形態信號的計算,並隨時切回熟悉的 DataFrame 做進一步分析。

更系統的 HistoryPanel 用法可以參考「使用教程」中“歷史數據的操作和分析”一章,以及 HistoryPanel API 參考

4. 使用 DMA 策略做择时回测

使用內置 DMA 均線擇時策略,以 000300.SH 爲交易標的,在已下載的十年數據上做回測。下面使用一組常用且表現較穩的參數(短均線 20、長均線 60、DMA 週期 10),直接得到回測結果與圖表:

>>> # 设置qteasy的运行配置参数
>>> qt.configure(
...     asset_pool='000300.SH',  # 交易资产池包括沪深300指数
...     asset_type='IDX',  # 投资资产类型为IDX-指数
...     invest_cash_amounts=[100000],  # 回测初始投资金额为十万元
...     invest_start='20150101',  # 回测投资初始日期
...     invest_end='20241231',  # 回测投资结束日期
...     cost_rate_buy=0.0003,  # 交易费率:买入手续费万分之三
...     cost_rate_sell=0.0001,  # 交易费率:卖出手续费万分之一
...     visual=True,  # 是否输出回测结果可视化图表:是
...     trade_log=True,  # 是否输出回测记录:是
... )
>>> op = qt.Operator(strategies='dma')  # 创建一个交易员对象,执行一个DMA交易策略
>>> op.set_parameter('dma', par_values=(20, 60, 10))  # 设置交易策略的参数
>>> res = qt.run(op, mode=1)  # 启动交易,运行模式为1(回测交易)

輸出如下:

====================================
|                                  |
|         BACKTEST REPORT          |
|                                  |
====================================
qteasy running mode: 1 - History back testing
time consumption for operate signal creation: 81.3 ms
time consumption for operation back testing:  4.9 ms
investment starts on      2015-01-05 15:00:00
ends on                   2024-12-30 15:00:00
Total looped periods:     10.0 years.
-------------operation summary:------------
Only non-empty shares are displayed, call 
"loop_result["oper_count"]" for complete operation summary
          Sell Cnt Buy Cnt Total Long pct Short pct Empty pct
000300.SH   340       41    381   44.7%     -0.0%     55.3%  

Total operation fee:     ¥    3,261.19
total investment amount: ¥  100,000.00
final value:              ¥  115,601.73
Total return:                    15.60% 
Avg Yearly return:                1.46%
Skewness:                         -1.16
Kurtosis:                         16.95
Benchmark return:                 1.67% 
Benchmark Yearly return:          0.17%

------strategy loop_results indicators------ 
alpha:                            0.006
Beta:                             0.975
Sharp ratio:                      0.113
Info ratio:                       0.001
250 day volatility:               0.130
Max drawdown:                    36.85% 
    peak / valley:        2015-04-27 / 2018-11-27
    recovered on:         Not recovered!


==================END OF REPORT===================

png

運行後將得到收益曲線、最大回撤、夏普比等評價指標及可視化圖表。若要嘗試其他參數或優化區間,可參考下一節「qteasy 能做什麼」中的參數優化與 回測文檔


qteasy 能做什麼

獲取並管理金融歷史數據:

  • 方便地從多渠道獲取大量金融歷史數據,進行數據清洗後以統一格式進行本地存儲

  • 通過DataType對象結構化管理金融數據中的可用資訊,即便是復權價格、指數成份等複雜資訊,也只需要一行代碼即可獲取

  • 基於DataType對象的金融數據可視化、統計分析以及分析結果可視化

  • 數據本地存儲、按需取用,爲回測與實盤提供一致的數據基礎,便於復現

png

以簡單、安全的方式創建交易策略

  • 通過BaseStrategy類,交易策略定義方法直觀、邏輯清晰

  • 內置超過70種策略開箱即用,獨特的策略混合和組機制,複雜策略可以通過簡單策略拼裝而來,過程如同搭積木

  • 交易策略的數據輸入和使用方法完全封裝且安全,完全避免無意中導致未來函數、數據泄露等問題,保證策略運行結果的真實性和可靠性

  • 同一套策略邏輯既用於回測也用於實盤,減少「回測漂亮、實盤走樣」的落差

png

交易策略的回測評價、優化和模擬自動化交易

  • 通過Operator交易員類管理策略運行,按照真實市場交易節奏回測策略,對交易結果進行多維度全方位評價,生成交易報告和結果圖表

  • 提供多種優化算法,包括模擬退火、遺傳算法、貝葉斯優化等在大參數空間中優化策略性能

  • 獲取實時市場數據,運行策略模擬自動化交易,跟蹤記錄交易日誌、股票持倉、賬戶資金變化等資訊

  • 回測、優化與實盤使用同一套運行機制,寫一次策略即可全模式運行,配置清晰,便於復現與排查

  • 未來將通過QMT接口接入券商提供的實盤交易接口,實現自動化交易

png
png
png


端到端路線圖 / 教程

若希望按完整流程走通「從配置到回測、優化、模擬/實盤」,可依下列順序閱讀教程與文檔,每步均有對應章節與示例:

  1. 配置數據源與 Token教程:入門教程:獲取數據

  2. 下載數據教程:獲取數據下載並管理金融歷史數據

  3. 定義策略並回測教程:第一個策略教程:內置策略教程:自定義策略如何運行回測

  4. 參數優化教程:交易策略的優化優化交易策略

  5. 模擬/實盤運行教程:交易策略的部署及運行模擬實盤運行概覽

上述教程已覆蓋從配置到回測、優化與模擬/實盤的完整鏈路;遇到問題時可在 FAQ 中查找「如何跑通」「爲何慢」「防未來函數」等常見說明。


接下來