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')

5,一些典型程序

1) .用布尔索引筛选DataFrame

df = get_price(g.hold_list, end_date=context.previous_date, frequency='daily',
     fields=['close','high_limit','low_limit'], count=1, panel=False, fill_paused=False)

df = df[df['close'] == df['high_limit']]  # 筛选出昨日收盘价等于涨停价的股票
# 1. df['close'] == df['high_limit'] → 得到一个布尔Series 就是一列为真/假的series
# 2. df[布尔Series] → 用布尔索引筛选DataFrame,可以任何布尔series,但行数必须眼df一样.

6. 用户需要实现的函数:

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:           获取成交信息

Logo

加入社区!打开量化的大门,首批课程上线啦!

更多推荐