1. 一些重点说明
1). panel类型数据(目前能用,官网说以后升级pandes2.5后要废除panel=True):
pa=get_price(['000001.XSHE','000002.XSHE','000004.XSHE'],start_date='2016-02-01',
end_date='2016-02-04',fields=['open','high','low','close'],panel=True)
tanel=True(默认): 三维数据 1.字段open等;2.日期;3.代码
pa[ : , : , '000001.XSHE' ] :000001的字段与日期二维。其它类推。【字段,日期,代码】
pa【'字段'】【‘代码’】【日期】:注意:与上面不一样的取数方法。?
2. 一些常用语法:
stocks = [x for x in list_a if x in list_b] #[list_a有、且 list_b也有]
stocks = [x for x in list_a if x not in list_b] #[list_a有、 list_b没有]
stocks = [x for x in a if x in b and x in c] #[a,b,c都有的]
stocks = [x for x in a if (x in b) if x in c] #[a,b,c都有的]
date_now=(context.current_dt+timedelta(days=-1)).strftime("%Y-%m-%d") #获取昨天日期 &&&
3. 一些重要函数:
#获取二日期之间交易日期(数组array类型)
trade_date = get_trade_days(start_date=开始日期, end_date=结束日期, count=None前N日)
#获取回测当时的时间
1).time_bs = context.current_dt.strftime('%H:%M:%S') #str类型
time_bs = context.current_dt.time() #元组类型
#获取回测当时的前一交易日日期
pre_d = context.previous_date
#获取PC系统日期 时间
time_sys = datetime.datetime.now().strftime('%y-%m-%d %H:%M:%S')
#str--> 时间格式
2).aday_one = datetime.datetime.strptime('09:40:00', '%H:%M:%S').strftime('%H:%M:%S')
只有1)与2)可是时间比较大小,与字符串如‘09:30:00’比较会出错
hour = context.current_dt.hour #回测当时的小时 int
minute = context.current_dt.minute #回测溝的分钟 int
4. 事件触发函数
#开盘前9:00运行一次
run_daily(before_market_open_all, time='before_open', reference_security='000300.XSHG')
# 每个bar开盘第一秒运行一次
run_daily(market_open, time='every_bar', reference_security='000300.XSHG')
#收盘后15.30运行一次
run_daily(after_market_close, time='after_close', reference_security='000300.XSHG')
4. 用户需要实现的函数:
initialize: 初始函数,整个程序初始函数只调用一次,初始函数用来定义一直股票等。
handle_data: 每个单位时间调用一次,由事件触发,交易条件就放在handle_data中。
before_trading_start:每天交易前调用一次。
after_trading_end: 每天结束交易后调用一次。
process_initialize: 回测进程重启时执行(initialize之后)
after_code_change: 若代码发生改变,则会执行这个函数(模拟盘)
获取数据函数:
get_price: 获取历史数据
history: 获取历史数据
attribute_history: 获取历史数据
get_current_data: 获取当前时间
get_extras: 获取基金净值/期货估算结算价
get_fundamentals: 查询财务数据
gta.run_query: 更多财务及宏观数据
get_index_stocks:获取指数股份
get_industry_stocks:获取概念成分
get_concept_stocks:获取所有标的信息,取平台支持的所有股票、基金、指数、期货信息
get_security_info: 获取单个标的信息
新增了 jqdata 模块用来提供更多数据, 如果要使用下面的 API 请先导入 jqdata 模块,
jqdata.all_trade_days:获取所有交易日, 返回一个包含所有交易日的 numpy.ndarray, 每个元素为一个 datetime.date 类型.
jqdata.get_trade_days:获取指定日期范围内的所有交易日, 返回 numpy.ndarray
?jqdata.get_trade_days:获取资金流信息
下单函数:
order('000001.XSHE', 100) 按股数下单: 买入100。-100为卖出
order_target('000001.XSHE', 0) 目标股数下单: 最终持仓0股
order_value('000001.XSHE', 500) 按市值下单: 买入500元。-500为卖出
order_target('000001.XSHE', 500) 目标市值下单: 最终市值500元
cancel_order: 撤单
get_open_orders: 获取未完成订单
get_orders: 获取订单信息
get_trades: 获取成交信息