【历史文档】策略回测-其他方法
由qxiao创建,最终由small_q 被浏览 666 用户
更新
本文内容对应旧版平台与旧版资源,其内容不再适合最新版平台,请查看新版平台的使用说明
新版量化开发IDE(AIStudio):
https://bigquant.com/wiki/doc/aistudio-aiide-NzAjgKapzW
新版模版策略:
https://bigquant.com/wiki/doc/demos-ecdRvuM1TU
新版数据平台:
https://bigquant.com/data/home
https://bigquant.com/wiki/doc/dai-PLSbc1SbZX
新版表达式算子:
https://bigquant.com/wiki/doc/dai-sql-Rceb2JQBdS
新版因子平台:
https://bigquant.com/wiki/doc/bigalpha-EOVmVtJMS5
\
TradingCalendar
定义
class TradingCalendar
示例代码
session_distance(start_session_label, end_session_label):
获取两个交易日之间的差值交易日
参数:
- start_session_label – 开始交易日
- end_session_label – 结束交易日
示例代码
distance = context.trading_calendar.session_distance(pd.Timestamp('2017-06-13'), pd.Timestamp('2017-06-16'))
# 预期输出: 3
自定义交易日历
定义
get_extend_calendar_with_tradingdays(name, tradingdays=None, trading_sections= None)
如果是不同市场或者不同品种,那么需要设置不同的交易日历。
参数:
- name - str 交易日历名称
- tradingdays - datetime 日期
- trading_sections - list 交易日历的section。其中,每个开盘、收盘形成一个section,section的类型为tuple,第一个元素为开盘时间,第二个元素为收盘时间。
示例代码
from datetime import time
# 直接根据回测数据的DataFrame的date来生成交易日历对象
trading_date = history_ds.read_df()['date'] # 交易日历的日期
trading_sections = [(time(9,30), time(11,30)), (time(13, 00), time(15,00))] # 交易日历的开、收盘时间
# 生成交易日历
trading_calendar = get_extend_calendar_with_tradingdays('MyFutCalendar', tradingdays=trading_date, trading_sections=trading_sections)
# 3. 启动回测
m = M.trade.v4(
instruments=instruments,
start_date=start_date,
end_date=end_date,
initialize=initialize,
handle_data=handle_data,
prepare=prepare,
order_price_field_buy='open',
order_price_field_sell='open',
capital_base=1000000,
volume_limit=0,
data_frequency=data_frequency,
product_type=product_type,
history_ds=history_ds,
benchmark=benchmark_ds,
trading_calendar=trading_calendar, # 传入交易日历
m_deps=np.random.rand()
)
TradingAlgorithm
定义
class TradingAlgorithm
即context对象
参数:
- trading_day_index – 当前交易日下标
- capital_base – 初始资金
- data_frequency – 数据频率
- start_date – 回测开始时间
- end_date– 回测结束时间
- instruments– 回测证券空间
- volume_limit–回测单个头寸上限比例
\