其他方法
由iquant创建,最终由iquant 被浏览 55 用户
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–回测单个头寸上限比例