1. 配置QTEASY

查看qteasy的當前系統配置資訊:

qteasy.configuration(config_key=None, level=0, up_to=0, default=True, verbose=False) None[原始碼]

顯示qt當前的配置變量,

參數:
  • config_key (str or list of str) – 需要顯示的配置變量名稱,如果不給出任何名稱,則按level,up_to等方式顯示所有的匹配的變量名 可以以逗號分隔字符串的形式給出一個或多個變量名,也可以list形式給出一個或多個變量名 以下兩種方式等價: 『local_data_source, local_data_file_type, local_data_file_path』 [『local_data_source』, 『local_data_file_type』, 『local_data_file_path』]

  • level (int, Default: 0) – 需要顯示的配置變量的級別。 如果給出了config,則忽略此參數

  • up_to (int, Default: 0) – 需要顯示的配置變量的級別上限,需要配合level設置。 例如,當level == 0, up_to == 2時 會顯示級別在0~2之間的所有配置變量 如果給出了config,則忽略此參數

  • default (Bool, Default: False) – 是否顯示配置變量的默認值,如果True,會同時顯示配置變量的當前值和默認值

  • verbose (Bool, Default: False) – 是否顯示完整說明資訊,如果True,會同時顯示配置變量的詳細說明

回傳型別:

None

備註

使用示例參見get_config()

qteasy.get_config(config_key=None, level=0, up_to=0, default=True, verbose=False)[原始碼]

顯示qt當前的配置變量,與get_config / configuration 相同

參數:
  • config_key (str or list of str) – 需要顯示的配置變量名稱,如果不給出任何名稱,則按level,up_to等方式顯示所有的匹配的變量名 可以以逗號分隔字符串的形式給出一個或多個變量名,也可以list形式給出一個或多個變量名 以下兩種方式等價: 『local_data_source, local_data_file_type, local_data_file_path』 [『local_data_source』, 『local_data_file_type』, 『local_data_file_path』]

  • level (int, Default: 0) – 需要顯示的配置變量的級別。 如果給出了config,則忽略此參數

  • up_to (int, Default: 0) – 需要顯示的配置變量的級別上限,需要配合level設置。 例如,當level == 0, up_to == 2時 會顯示級別在0~2之間的所有配置變量 如果給出了config,則忽略此參數

  • default (Bool, Default: False) – 是否顯示配置變量的默認值,如果True,會同時顯示配置變量的當前值和默認值

  • verbose (Bool, Default: False) – 是否顯示完整說明資訊,如果True,會同時顯示配置變量的詳細說明

回傳型別:

None

範例

>>> get_config('local_data_source')
No. Config-Key            Cur Val        Default val
----------------------------------------------------
1   local_data_source     database       <file>
>>> get_config('local_data_source, local_data_file_type, local_data_file_path')
No. Config-Key            Cur Val        Default val
----------------------------------------------------
1   local_data_source     database       <file>
2   local_data_file_type  csv            <csv>
3   local_data_file_path  data/          <data/>
>>> get_config(level=0, up_to=2)
No. Config-Key            Cur Val        Default val
----------------------------------------------------
1   mode                  1              <1>
2   time_zone             Asia/Shanghai  <Asia/Shanghai>
3   asset_pool            000300.SH      <000300.SH>
4   asset_type            IDX            <IDX>
5   live_trade_account_id None           <None>
6   live_trade_account    None           <None>
7   live_trade_debug_mode False          <False>
8   live_trade_init_cash  1000000.0      <1000000.0>
... (more rows)
>>> get_config(level=0, up_to=1, verbose=True)
No. Config-Key            Cur Val        Default val
      Description
----------------------------------------------------
1   mode                  1              <1>
      qteasy 的运行模式:
      0: 实盘运行模式
      1: 回测-评价模式
      2: 策略优化模式
      3: 统计预测模式
2   time_zone             Asia/Shanghai  <Asia/Shanghai>
      回测时的时区,可以是任意时区,例如:
      Asia/Shanghai
      Asia/Hong_Kong
      US/Eastern
      US/Pacific
      Europe/London
      Europe/Paris
      Australia/Sydney
      Australia/Melbourne
      Pacific/Auckland
      Pacific/Chatham
      etc.
3   asset_pool            000300.SH      <000300.SH>
      可用投资产品池,投资组合基于池中的产品创建
4   asset_type            IDX            <IDX>
      投资产品的资产类型,包括:
      IDX  : 指数
      E    : 股票
      FT   : 期货
      FD   : 基金
qteasy.get_configurations(config_key=None, level=0, up_to=0, default=True, verbose=False)[原始碼]

顯示qt當前的配置變量,與get_config / configuration 相同

參數:
  • config_key (str or list of str) – 需要顯示的配置變量名稱,如果不給出任何名稱,則按level,up_to等方式顯示所有的匹配的變量名 可以以逗號分隔字符串的形式給出一個或多個變量名,也可以list形式給出一個或多個變量名 以下兩種方式等價: 『local_data_source, local_data_file_type, local_data_file_path』 [『local_data_source』, 『local_data_file_type』, 『local_data_file_path』]

  • level (int, Default: 0) – 需要顯示的配置變量的級別。 如果給出了config,則忽略此參數

  • up_to (int, Default: 0) – 需要顯示的配置變量的級別上限,需要配合level設置。 例如,當level == 0, up_to == 2時 會顯示級別在0~2之間的所有配置變量 如果給出了config,則忽略此參數

  • default (Bool, Default: False) – 是否顯示配置變量的默認值,如果True,會同時顯示配置變量的當前值和默認值

  • verbose (Bool, Default: False) – 是否顯示完整說明資訊,如果True,會同時顯示配置變量的詳細說明

回傳型別:

None

範例

使用示例參見get_config()

修改qteasy的配置資訊:

qteasy.configure(config=None, reset=False, only_built_in_keys=True, **kwargs) None[原始碼]

配置qteasy的運行參數QT_CONFIG

參數:
  • config (ConfigDict 对象) – 需要設置或調整參數的config對象,默認爲None,此時直接對QT_CONFIG對象設置參數

  • reset (bool) – 默認值爲False,爲True時忽略傳入的kwargs,將所有的參數設置爲默認值

  • only_built_in_keys (bool) – 默認值False,如果爲True,僅允許傳入內部參數,False時允許傳入任意參數

  • **kwargs – 需要設置的所有參數

回傳型別:

None

備註

使用get_config()或configuration()查看當前的QT_CONFIG參數

範例

>>> configure(reset=True)  # 将QT_CONFIG参数设置为默认值
>>> configure(invest_cash_amounts=[10000, 20000, 30000], invest_cash_dates=['2018-01-01', '2018-02-01', '2018-03-01'])
>>> get_config('invest_cash_amounts, invest_cash_dates')
No. Config-Key            Cur Val                       Default val
-------------------------------------------------------------------
1   invest_cash_amounts   [10000, 20000, 30000]         <[100000.0]>
2   invest_cash_dates     ['2018-01-01', '2018-02-01'...<None>
qteasy.set_config(config=None, reset=False, only_built_in_keys=True, **kwargs) None[原始碼]

配置qteasy的運行參數QT_CONFIG,等同於configure()

參數:
  • config (ConfigDict 对象) – 需要設置或調整參數的config對象,默認爲None,此時直接對QT_CONFIG對象設置參數

  • reset (bool) – 默認值爲False,爲True時忽略傳入的kwargs,將所有的參數設置爲默認值

  • only_built_in_keys (bool) – 默認值False,如果爲True,僅允許傳入內部參數,False時允許傳入任意參數

  • **kwargs – 需要設置的所有參數

回傳型別:

None

範例

參見 configure()

查看、修改或刪除qteasy的啓動配置內容:

qteasy.start_up_settings() None[原始碼]

列印qteasy啓動配置文件中存儲的啓動設置內容

回傳型別:

None

範例

>>> import qteasy as qt
>>> qt.start_up_settings()
Start up settings:
--------------------
local_data_source = file
local_data_file_type = csv
local_data_file_path = data/
qteasy.update_start_up_setting(**kwargs) None[原始碼]

更新qteasy啓動配置文件中存儲的啓動設置

啓動設置中可以包括系統定義配置參數以及用戶自定義配置參數

參數:

**kwargs – 需要更新的配置參數

回傳型別:

None

範例

>>> import qteasy as qt
>>> qt.start_up_settings()
Start up settings:
--------------------
local_data_source = file
local_data_file_type = csv
local_data_file_path = data/
>>> qt.update_start_up_setting(local_data_source='database', local_data_file_type='feather')
Start up settings updated successfully!
>>> qt.start_up_settings()
Start up settings:
--------------------
local_data_source = file
local_data_file_type = feather
local_data_file_path = data/
qteasy.remove_start_up_setting(*args) None[原始碼]

刪除qteasy啓動配置文件中存儲的一項或者多項啓動設置

必須給出需要刪除的配置參數名稱,可以同時刪除多個配置參數

參數:

*args (str) – 需要的配置參數名稱清單

回傳型別:

None

範例

>>> import qteasy as qt
>>> qt.start_up_settings()
Start up settings:
--------------------
local_data_source = file
local_data_file_type = csv
local_data_file_path = data/
>>> qt.remove_start_up_setting('local_data_source')
Start up settings removed:  ('local_data_source',)
>>> qt.start_up_settings()
Start up settings:
--------------------
local_data_file_type = csv
local_data_file_path = data/

將所有的配置變量重置爲默認值:

qteasy.reset_config(config=None)[原始碼]

重設config對象,將所有的參數都設置爲默認值,如果config爲None,則重設qt.QT_CONFIG

參數:

config (ConfigDict) – 需要重設的config對象

回傳型別:

None

備註

等同於調用configure(config, reset=True)

從文件中讀取配置資訊:

qteasy.load_config(*, config=None, file_name=None) ConfigDict[原始碼]
從文件file_name中讀取相應的config參數,寫入到config中,如果config爲

None,則保存參數到QT_CONFIG中

參數:
  • config (ConfigDict 对象) – 一個config對象,默認None,如果不爲None且爲一個ConfigDict對象,則將讀取的配置參數寫入到config中

  • file_name (str) – 文件名,默認None,如果爲None,文件名爲saved_config.cfg

回傳:

config – 讀取的配置參數

回傳型別:

ConfigDict

引發:
  • FileNotFoundError – 如果給定文件不存在,則報錯。如果沒有給定文件名,則當config/saved_config.cfg不存在時,報錯

  • Examples:

  • --------

  • >>> load_config()

將配置資訊寫入文件:

qteasy.save_config(*, config=None, file_name=None, overwrite=True, initial_config=False) str[原始碼]

將config保存爲一個文件 尚未實現的功能:如果initial_config爲True,則將配置更新到初始化配置文件qteasy.cfg中()

參數:
  • config (ConfigDict or dict, Default: None) – 一個config對象或者包含配配置變量的dict,如果爲None,則保存qt.QT_CONFIG

  • file_name (str, Default: None) – 文件名,如果爲None,文件名爲」saved_config.cfg」

  • overwrite (bool, Default: True) – 默認True,覆蓋重名文件,如果爲False,當保存的文件已存在時,將報錯

  • initial_config (bool, Default: False (functionality not implemented)) – 保存配置變量到初始配置文件 qteasy.cfg 中,如果 qteasy.cfg 中已經存在配置變量,則覆蓋對應變量。 TODO: 實現將配置變量寫入 qteasy.cfg 初始配置文件的功能。 由於目前使用 pickle 寫入對象爲二進制文件,而 qteasy.cfg 是文本文件,所以需要實現新的寫入方式。

回傳:

file_name – 保存的文件名

回傳型別:

str

qteasy的所有配置變量

下面是qteasy的配置變量,可以通過qteasy.get_config()函數查看當前的配置資訊,也可以通過qteasy.configure()函數修改配置資訊。

備註

關於 S1.3 完成後的模擬實盤文檔入口(按使用目標):

  • 快速瞭解:live_trading/1-overview.md

  • 先跑起來:live_trading/2-configuration-and-run.md

  • 理解拒單與狀態:live_trading/3-risk-and-order-lifecycle.md

  • 扩展 Broker:live_trading/4-broker-adapter-and-integration.md

  • XtQuant/MiniQMT 契约 v1(英文):live_trading/4a-xtquant-broker-adapter-contract-v1.md

  • 排錯覆盤:live_trading/5-artifacts-and-troubleshooting.md

  • 雙路徑實操教程:tutorials/8-live-trade-risk-and-broker-walkthrough.md

說明:

  • live_trading 側重模塊能力與場景化說明;

  • references 側重 API 視角功能清單;

  • api 側重 autodoc 導出的接口明細。

用戶可見拒單提示、錯誤資訊、日誌示例在文檔中統一使用英文文案。

qteasy Configuration Variables

Name

Level

Default Value

Description

mode

0

1

qteasy 的運行模式:
0: 實盤運行模式
1: 回測-評價模式
2: 策略優化模式
3: 統計預測模式

time_zone

4

local

回測時的時區,默認值」local」,表示使用本地時區。
如果需要固定時區,設置任意合法的時區,例如:
Asia/Shanghai
Asia/Hong_Kong
US/Eastern
US/Pacific
Europe/London
Europe/Paris
Australia/Sydney
Australia/Melbourne
Pacific/Auckland
Pacific/Chatham
etc.

asset_pool

0

000300.SH

可用投資產品池,投資組合基於池中的產品創建

asset_type

0

IDX

投資產品的資產類型,包括:
IDX : 指數
E : 股票
FT : 期貨
FD : 基金

live_trade_account_id

0

None

實盤交易賬戶ID,用於實盤交易,如果指定了該參數,則會直接
使用該賬戶執行實盤交易,如果賬戶ID不存在,則會報錯
如果不給出account_id,則必須給出live_trade_account_name
以創建一個新的賬戶ID

live_trade_account_name

0

None

用於實盤交易的賬戶名稱,如果live_trade_account爲None,則
必須創建新的賬戶ID,此時本參數必須給出,並設定account_name爲
本參數的值

live_trade_debug_mode

1

False

實盤交易調試模式,True: 調試模式,False: 正常模式

live_trade_init_cash

1

1000000.0

實盤交易賬戶的初始資金,浮點數,例如:
1000000.0 : 初始資金爲100萬
1000000 : 初始資金爲100萬

live_trade_init_holdings

1

None

實盤交易賬戶的初始持倉,字典,例如:
{『000001.SZ』: 1000, 『000002.SZ』: 2000} : 初始持倉爲
000001.SZ: 1000股, 000002.SZ: 2000股

live_trade_broker_type

1

simulator

實盤交易賬戶的交易代理商類型,可以設置爲模擬交易代理商返回交易結果、手動輸入結果或者連接到交易代理商的交易接口
默認使用模擬交易代理Simulator

live_trade_broker_params

1

None

實盤交易賬戶的交易代理商參數,字典,例如:
{『host』: 『localhost』, 『port』: 8888} : 交易代理商的主機名和端口號
具體的參數設置請參考交易代理商的文檔
如果使用 『simulator』 broker,且設置此參數爲None,則會使用config中的
backtest參數

live_price_acquire_channel

2

eastmoney

實盤交易時獲取實時價格的方式:
eastmoney - 通過東方財富網獲取實時價格
tushare - 通過tushare獲取實時價格(需要自行開通權限)
akshare - 通过AKShare获取实时价格(部分表已实现,详见数据通道文档)

live_price_acquire_freq

2

15MIN

實盤交易時獲取實時價格的頻率:
H - 每1小時獲取一次數據
30MIN - 每30分鐘獲取一次數據
15MIN - 每15分鐘獲取一次數據
5MIN - 每5分鐘獲取一次數據
1MIN - 每1分鐘獲取一次數據

watched_price_refresh_interval

4

5

實盤交易時監看實時價格的刷新頻率,單位爲秒,默認爲5秒
該數值不能低於5秒

trade_batch_size

0

0.01

投資產品的最小申購批量大小,浮點數,例如:
0.01 : 可以購買最小到0.01份的投資產品
1. : 只能购买整数份额的投资产品
100: 可以購買100的整數倍份額投資產品
n : 可以購買的投資產品份額爲n的整數倍,n不必爲整數

sell_batch_size

0

0.01

投資產品的最小賣出或贖回批量大小,浮點數,例如:
0.01 : 可以賣出最小到0.01份的投資產品
1. : 只能购买整数份额的投资产品
100: 可以購買100的整數倍份額投資產品
n : 可以購買的投資產品份額爲n的整數倍,n不必爲整數

cash_decimal_places

2

2

現金的小數位數,例如:
0: 現金只能爲整數
2: 保留小數點後兩位數字

amount_decimal_places

2

2

投資產品的份額的小數位數,例如:
0: 份額只能爲整數
2: 保留小數點後兩位數字

riskfree_ir

1

0.0035

無風險利率,如果選擇」考慮現金的時間價值」,則回測時現金按此年利率增值

parallel

1

True

如果True,策略參數尋優時將利用多核心CPU進行並行計算提升效率

hist_dnld_parallel

4

16

下載歷史數據時啓用的線程數量,爲0或1時採用單線程下載,大於1時啓用多線程

hist_dnld_delay

4

0.0

爲防止服務器數據壓力過大,下載歷史數據時下載一定數量的數據後延遲的時間長度,單位爲秒

hist_dnld_delay_evy

4

0

爲防止服務器數據壓力過大,下載歷史數據時,每下載一定數量的數據,就延遲一段時間。
此參數爲兩次延遲之間的數據下載量

hist_dnld_prog_bar

4

False

下載歷史數據時是否顯示進度條

hist_dnld_retry_cnt

4

7

下載歷史數據失敗時的自動重試次數

hist_dnld_retry_delay

4

1.0

下載歷史數據失敗時的自動重試前的延遲時間,單位爲秒

hist_dnld_backoff

4

2.0

下載歷史數據失敗時的自動重試的延遲時間倍增乘數
例如,設置hist_dnld_backoff = 2時,每次重試失敗
後延遲時間會變爲前一次的2倍

auto_dnld_hist_tables

4

[]

[PLANNED] 在實盤運行時自動下載的歷史數據表名列表,例如:
[「stock_daily」, 「index_weekly」, 「stock_monthly」]
當前版本尚未啓用該功能,配置不產生實際效果。

gpu

4

False

[PLANNED] 如果True,策略參數尋優時使用GPU加速計算。
本功能目前尚未實現,設置該參數不會改變當前版本的運行行爲。

local_data_source

1

file

確定本地歷史數據存儲方式:
file - 歷史數據以本地文件的形式存儲,
文件格式在」local_data_file_type」屬性中指定,包括csv/hdf等多種選項
database - 歷史數據存儲在一個mysql數據庫中
選擇此選項時,需要在配置文件中配置數據庫的連接資訊
db - 等同於」database」

local_data_file_type

4

csv

確定本地歷史數據文件的存儲格式:
csv - 歷史數據文件以csv形式存儲,速度較慢但可以用Excel打開
hdf - 歷史數據文件以hd5形式存儲,數據存儲和讀取速度較快
feather/fth - 歷史數據文件以feather格式存儲,數據交換速度快但不適用長期存儲

local_data_file_path

4

data/

確定本地歷史數據文件存儲路徑

local_db_host

4

localhost

用於存儲歷史數據的數據庫的主機名,該數據庫應該爲mysql數據庫或MariaDB

local_db_port

4

3306

用於存儲歷史數據的數據庫的端口號,默認值爲mysql數據庫的端口號3306

local_db_name

4

qt_db

用於存儲歷史數據的數據庫名,默認值爲」qt_db」

local_db_user

4

訪問數據庫的用戶名,該用戶需具備足夠的操作權限
建議通過配置文件配置數據庫用戶名和密碼

local_db_password

4

數據庫的訪問密碼
建議通過配置文件配置數據庫用戶名和密碼

sys_log_file_path

4

syslog/

系統運行日誌及錯誤日誌的存儲路徑。
支持相對路徑(相對 QT_ROOT_PATH)、絕對路徑及以 ~ 開頭的家目錄路徑;
通過 qt.configure() / qt.set_config() 修改後立即生效(熱修改),無需重新導入。
路徑中不得包含非法字符(如控制字符、Windows 下 <>"|?* 等),否則拋出 ValueError。

trade_log_file_path

4

tradelog/

明細交易日誌及交易彙總的存儲路徑(回測與實盤共用)。
支持相對路徑(相對 QT_ROOT_PATH)、絕對路徑及以 ~ 開頭的家目錄路徑;
通過 qt.configure() / qt.set_config() 修改後立即生效(熱修改),無需重新導入。
路徑中不得包含非法字符,否則拋出 ValueError。

trade_log_keep_days

4

3

回測寫盤的 trade_log_* / trade_summary_* / value_curve_* 等 CSV 的保留天數;默認 3
進程加載 qteasy 模塊後 對當前 trade_log_file_path 目錄執行一次按天清理(非每次回測寫文件前)。
設爲 None小於等於 0 可關閉自動刪除;需要時可調用 qt.rotate_trade_logs() 手動清理。

trade_log

1

True

是否生成明細交易清單,以pd.DataFrame形式給出明細的每日交易清單
包括交易信號以及每一步驟的交易結果

benchmark_asset

1

000300.SH

用來產生回測結果評價結果基準收益的資產類型,默認基準爲滬深300指數
基準指數用來生成多用評價結果如alpha、beta比率等,因爲這些指標除了考察投資收益的
絕對值意外,還需要考慮同時期的市場平均表現,只有當投資收益優於市場平均表現的,纔會
被算作超額收益或alpha收益,這纔是投資策略追求的目標
基準資產的類型與價格類型由系統根據 benchmark_asset 及運行時間表自動推斷。

report

1

True

爲True時列印運行結果報告
實時模式顯示策略運行報告,回測模式顯示回測結果報告,優化模式顯示優化結果報告

visual

0

True

爲True時使用圖表顯示可視化運行結果
(回測模式顯示回測報告,優化模式顯示優化結果報告)

buy_sell_points

4

True

爲True時在回測圖表中顯示買賣點,使用紅色和綠色箭頭標示出買賣點的位置

show_positions

4

True

爲True時在回測圖表中用色帶顯示投資倉位

cost_fixed_buy

2

0.0

買入證券或資產時的固定成本或固定佣金,該金額不隨買入金額變化
默認值爲10元

cost_fixed_sell

2

0.0

賣出證券或資產時的固定成本或固定佣金,該金額不隨賣出金額變化
默認值爲0

cost_rate_buy

1

0.0003

買入證券或資產時的成本費率或佣金比率,以買入金額的比例計算
默認值爲萬分之三

cost_rate_sell

1

0.0001

賣出證券或資產時的成本費率或佣金比率,以賣出金額的比例計算
默認值爲萬分之一

cost_min_buy

2

5.0

買入證券或資產時的最低成本或佣金,買入佣金只能大於或等於該最低金額
默認值爲5元

cost_min_sell

2

5.0

賣出證券或資產時的最低成本或佣金,賣出佣金只能大於或等於該最低金額

cost_slippage

2

0.0

交易滑點,一個預設參數,模擬由於交易延遲或交易金額過大產生的額外交易成本

invest_start

0

None

回測模式下的回測開始日期。
留空(None)時,將在運行時根據 invest_end(或當前日期)自動推導爲一年前的日期。
顯式設置時格式爲」YYYYMMDD」。

invest_end

0

None

回測模式下的回測結束日期。
留空(None)時,將在運行時自動使用當前日期。
顯式設置時格式爲」YYYYMMDD」。

invest_cash_amounts

1

[100000.0]

投資的金額,一個tuple或list,每次投入資金的金額,多個數字表示多次投入

invest_cash_dates

2

None

回測操作現金投入的日期,一個str或list,多個日期表示多次現金投入。默認爲None
當此參數爲None時,現金投入日期與invest_start相同,當參數不爲None時,此參數覆蓋
invest_start
參數輸入類型爲str時,格式爲」YYYYMMDD」
如果需要模擬現金多次定投投入,或者多次分散投入,則可以輸入list類型或str類型
以下兩種輸入方式等效:
「20100104,20100202,20100304」 =
[「20100104」, 「20100202」, 「20100304」]

allow_sell_short

4

False

是否允許賣空交易,:
False - 默認值,不允許賣空操作,賣出數量最多僅爲當前可用持倉數量
True - 允許賣空,賣出數量大於持倉量時,即持有空頭倉位

long_position_limit

3

1.0

回測過程中允許交易信號建立的多頭倉位百分比的極限值,即允許動用
總資產(包括現金和持有股票的總額)的多少百分比用於持有多頭倉位,
默認值1.0,即100%
如果設置值大於1,則表示允許超過持有現金建倉,這種情況會產生負現金
餘額,表示產生了借貸

short_position_limit

3

-1.0

回測過程中允許交易信號建立的空頭倉位百分比的極限值,即允許持有的
空頭倉位佔當前淨資產總額的最高比例限額,默認值-1.0,即最多允許借入
相當於淨資產總額100%價值的股票並持有空頭倉位,此時持有負股票份額且
產生正現金流入

backtest_price_adj

4

none

回測時的復權價格處理方法:
股票分紅除權的處理,正常來說,應該在股票分紅除權時計算分紅和派息對持倉
數量和現金的影響,但是目前這種處理方法比較複雜,暫時先採用比較簡單的方
法,即直接採用復權價格進行回測,目前處理方法有兩種
- none/n - 默认值,不使用复权价格,但也不处理派息,这只是临时处理,因
爲長期回測不考慮除權派息將會導致回測結果與實際相差巨大
- back/b - 使用后复权价格回测,可以弥补不考虑分红派股的不足
- adj - 使用前复权价格回测。

PT_signal_timing

3

lazy

回測信號模式爲PT(position target)時,控制檢查實際持倉比例並自動生成交易
信號的時機,默認normal
- aggressive: 在整个策略运行时间点上都会产生交易信号,不论此时PT信号是否发
生變化,實時監控實際持倉與計劃持倉之間的差異,只要二者發生偏
離,就產生信號
- lazy: 在策略运行时间点上,只有当持仓比例发生变化时,才会产生交易
信號,不實時監控實際持倉與計劃持倉的差異

PT_buy_threshold

3

0.0

回測信號模式爲PT(position target)時,觸發買入信號的倉位差異閾值
在這種模式下,當持有的投資產品的倉位比目標倉位低,且差額超過閾值時,觸發買入信號
例如當賣出閾值爲0.05即5%時,若目標持倉30%,那麼只有當實際持倉<=25%時,纔會產生
交易信號,即此時實際持倉與目標持倉之間的差值大於5%了

PT_sell_threshold

3

0.0

回測信號模式爲PT(position target)時,觸發賣出信號的倉位差異閾值
在這種模式下,當持有的投資產品的倉位比目標倉位高,且差額超過閾值時,觸發賣出信號
例如當賣出閾值爲0.05即5%時,若目標持倉30%,那麼只有當實際持倉>=35%時,纔會產生
交易信號,即此時實際持倉與目標持倉之間的差值大於5%了

price_priority_OHLC

3

OHLC

回測時如果存在多種價格類型的交易信號,而且交易價格的類型爲OHLC時,處理各種
不同的價格信號的優先級。
輸入類型爲字符串,O、H、L、C、A分別代表Open,High,Low,Close,Nav

price_priority_quote

3

normal

回測時如果存在多種價格類型的交易信號,而且交易價格的類型爲實時報價時,回測程式處理
不同的價格信號的優先級。
輸入包括」normal」 以及 「reverse」兩種,分別表示:
- 「normal」: 优先处理更接近成交价的报价,如卖1/买1等
- 「reverse」: 优先处理更远离成交价的报价,如卖5/买5等

cash_delivery_period

3

0

回測時賣出股票獲得現金的交割週期,用一個數字N代表交易日後第N天可以完成現金交割。
獲得現金後立即計入總資產,但在途資金(尚未交割的資金)不能用於下一筆交易
當現金交割期爲零時,可以選擇在同一輪交易中先賣出資產獲得儘可能多的現金用於本輪
買入

stock_delivery_period

3

1

回測時買入股票後的股票交割週期,用一個數字N代表交易日後第N天可以完成資產交割。
獲得股票後立即計入總資產,但尚未交割的股票不能用於下一筆交易

market_open_time_am

3

09:30:00

交易市場上午開市時間

market_close_time_am

3

11:30:00

交易市場上午收市時間

market_open_time_pm

3

13:00:00

交易市場下午開市時間

market_close_time_pm

3

15:00:00

交易市場下午收市時間

strategy_open_close_timing_offset

3

1

策略信號的開盤/收盤運行時間偏移量,單位爲分鐘,當策略信號運行時機爲開盤/收盤,需要提前/推遲
一個偏移量運行,避免無法交易。

opti_start

0

None

優化模式下的策略優化區間開始日期。
留空(None)時,將在運行時根據 opti_end 自動推導爲其前一年的日期。

opti_end

0

None

優化模式下的策略優化區間結束日期。
留空(None)時,將在運行時根據當前日期自動推導。

opti_cash_amounts

1

[100000.0]

優化模式投資的金額,一個tuple或list,每次投入資金的金額,多個數字表示多次投入

opti_cash_dates

2

None

策略優化區間現金投入的日期,一個str或list,多個日期表示多次現金投入。默認爲None
當此參數爲None時,現金投入日期與invest_start相同,當參數不爲None時,此參數覆蓋
invest_start
參數輸入類型爲str時,格式爲」YYYYMMDD」
如果需要模擬現金多次定投投入,或者多次分散投入,則可以輸入list類型或str類型
以下兩種輸入方式等效:
「20100104,20100202,20100304」[「20100104」, 「20100202」, 「20100304」]

opti_type

3

single

優化類型。指優化數據的利用方式:
「single」 - 在每一回合的優化測試中,在優化區間上進行覆蓋整個區間的單次回測並評價
回測結果
「multiple」 - 在每一回合的優化測試中,將優化區間的數據劃分爲多個子區間,在這些子
區間上分別測試,並根據所有測試的結果確定策略在整個區間上的評價結果

opti_sub_periods

3

5

僅對無監督優化有效。且僅當優化類型爲」multiple」時有效。將優化區間切分爲子區間的數量

opti_sub_prd_length

3

0.6

僅當優化類型爲」multiple」時有效。每一個優化子區間長度佔整個優化區間長度的比例
例如,當優化區間長度爲10年時,本參數爲0.6代表每一個優化子區間長度爲6年

test_start

0

None

優化模式下的策略測試區間開始日期。
留空(None)時,將在運行時根據 test_end 自動推導爲其前六個月。
顯式設置時格式爲」YYYYMMDD」。

test_end

0

None

優化模式下的策略測試區間結束日期。
留空(None)時,將在運行時根據當前日期自動推導。
顯式設置時格式爲」YYYYMMDD」。

test_cash_amounts

1

[100000.0]

優化模式策略測試投資的金額,一個tuple或list,每次投入資金的金額。
模擬現金多次定投投入時,輸入多個數字表示多次投入
輸入的數字的個數必須與cash_dates中的日期數量相同

test_cash_dates

2

None

策略優化區間現金投入的日期,一個str或list,多個日期表示多次現金投入。默認爲None
當此參數爲None時,現金投入日期與invest_start相同,當參數不爲None時,此參數覆蓋
invest_start參數|
參數輸入類型爲str時,格式爲」YYYYMMDD」
如果需要模擬現金多次定投投入,或者多次分散投入,則可以輸入list類型或str類型
以下兩種輸入方式等效:
「20100104,20100202,20100304」[「20100104」, 「20100202」, 「20100304」]

test_type

3

single

測試類型。指測試數據的利用方式:
「single」 - 在每一回合的優化測試中,在測試區間上進行覆蓋整個區間的單次回測
並評價回測結果
「multiple」 - 在每一回合的優化測試中,將測試區間的數據劃分爲多個子區間,在這
些子區間上分別測試,並根據所有測試的結果確定策略在整個區間上的
評價結果
「montecarlo」 - 蒙特卡洛測試,根據測試區間歷史數據的統計性質,隨機生成大量的模
擬價格變化數據,用這些數據對策略的表現進行評價,最後給出統計意
義的評價結果

test_indicators

2

years,fv,return,mdd,v,ref,alpha,beta,sharp,info

對優化後的策略參數進行測試評價的評價指標。
格式爲逗號分隔的字符串,多個評價指標會以字典的形式輸出,包含以下類型中的一種或多種
「years」 - total year
「fv」 - final values
「return」 - total return rate
「mdd」 - max draw down
「ref」 - reference data return
「alpha」 - alpha rate
「beta」 - beta rate
「sharp」 - sharp rate
「info」 - info rate

indicator_plot_type

2

histo

優化或測試結果評價指標的可視化圖表類型:
0 - errorbar 類型
1 - scatter 類型
2 - histo 類型
3 - violin 類型
4 - box 類型

test_sub_periods

3

3

僅當測試類型爲」multiple」時有效。將測試區間切分爲子區間的數量

test_sub_prd_length

3

0.75

僅當測試類型爲」multiple」時有效。每一個測試子區間長度佔整個測試區間長度的比例
例如,當測試區間長度爲4年時,本參數0.75代表每個測試子區間長度爲3年

test_cycle_count

3

100

僅當測試類型爲」montecarlo」時有效。生成的模擬測試數據的數量。
默認情況下生成100組模擬價格數據,並進行100次策略回測並評價其統計結果

optimize_target

1

final_value

策略的優化目標。即優化時以找到該指標最佳的策略爲目標

maximize_target

1

True

爲True時尋找目標值最大的策略,爲False時尋找目標值最低的策略

opti_method

1

1

策略優化算法,可選值如下:
0 - 網格法,按照一定間隔對整個向量空間進行網格搜索
1 - 蒙特卡洛法,在向量空間中隨機取出一定的點搜索最佳策略
2 - 遞進步長法,對向量空間進行多輪搜索,每一輪搜索結束後根據結果選擇部分子
空間,縮小步長進一步搜索
3 - 遺傳算法,模擬生物種羣在環境壓力下不斷進化的方法尋找全局最優(尚未完成)
4 - ML方法,基於機器學習的最佳策略搜索算法(尚未完成)

opti_grid_size

3

1

使用窮舉法搜索最佳策略時有用,搜索步長

opti_sample_count

3

256

使用蒙特卡洛法搜索最佳策略時有用,在向量空間中採樣的數量

opti_r_sample_count

3

16

在使用遞進步長法搜索最佳策略時有用,每一輪隨機取樣的數量

opti_reduce_ratio

3

0.1

在使用遞進步長法搜索最佳策略時有用,
每一輪隨機取樣後擇優留用的比例,同樣也是子空間縮小的比例

opti_max_rounds

3

5

在使用遞進步長法搜索最佳策略時有用,多輪搜索的最大輪數,輪數大於該值時停止搜索

opti_min_volume

3

1000

在使用遞進步長法搜索最佳策略時有用,空間最小體積,當空間volume低於該值時停止搜索

opti_population

3

1000.0

在使用遺傳算法搜索最佳策略時有用,種羣的數量

opti_output_count

3

30

策略參數優化後輸出的最優參數數量