历史文档

【历史文档】策略回测-数据查询相关(data)

由bigquant创建,最终由small_q 被浏览 987 用户

更新

本文内容对应旧版平台与旧版资源,其内容不再适合最新版平台,请查看新版平台的使用说明

新版量化开发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

\

定义

class BarData

标的数据

数据对象

数据对象为您的算法提供了获取各种数据的方法。 数据对象提供许多功能:

  • 获取标的的开盘价、最高价、最低价、收盘价、成交量信息(OHLCV)
  • 获取历史时间窗口的OHLCV数据
  • 检查该资产在当前bar是否可成交(以成交量为判断)

current_dt

定义

current_dt

获取最新日期, 为datetime格式

示例代码

date = data.current_dt
print('目前日期为:{}'.format(date))

current

定义

current(assets, fields)

获取当天股票数据,通过data(BarData).current进行调用,在handle_data中调用

参数

assets – 股票列表,类型为Equity

fields – 历史数据项或集合,数据项可以为'close', 'open', 'high', 'low', 'price',如果指定为'price',效果等价于'close',即最新价用收盘价代替

示例代码

获取平安银行当天的最低市价-的一种情况

#获取平安银行当天的最低市价-的一种情况
curr = data.current(context.symbol('000001.SZA'), 'low')# 获取平安银行当天的最低市价-第二种情况
curr = data.current(context.symbol('000001.SZA'), ['low', 'high', 'price'])
curr['low']
#获取平安银行当天的最低市价-第三种情况
curr = data.current(context.symbols('000001.SZA', '600000.SHA'), 'low')
curr[symbol('000001.SZA')]
#获取平安银行、浦发银行当天的最低、最高及市价(用收盘价代替)
curr = data.current(context.symbols('000001.SZA', '600000.SHA'), ['low', 'high', 'price'])
#获取平安银行当天的最低市价-第四种情况
curr[context.symbol('000001.SZA')]['low']

history

定义

history(assets, fields, bar_count, frequency)

获取一定时间窗口的历史数据,通过data(BarData).history进行调用,在handle_data中调用

参数

assets - 股票列表,类型为Equity

fields - 历史数据项或集合,数据项可以为'close'、'open'、'high'、'low'、'volume'、'price',如果指定为'price',效果等价于'close',即最新价用收盘价代替

返回:

如果assets是单一资产,字段是单个字段,返回pandas模块下的日期作为索引的Series格式

如果assets是多个资产,字段是单个字段,返回pandas模块下的日期作为索引的DataFrame格式,列名为资产名

如果assets是单一资产,字段是多个字段,返回pandas模块下的日期作为索引的Series格式,列名为字段名

如果assets是多个资产,字段是多个字段,返回pandas模块下的字段作为索引的Panel格式,主索引为日期,次索引为资产名

'price'是向前填充的,'open'、'high'、'low'、'close'不会进行向前填充。

示例代码

#获取平安银行最近二十个交易日的收盘价数据
price_history = data.history(context.symbol('000001.SZA'), fields="price", bar_count=20, frequency="1d")

#获取平安银行最近二十个交易日的开盘价数据

open_history = data.history(context.symbol('000001.SZA'), fields="open", bar_count=20, frequency="1d")

#获取平安银行最近五个交易日的成交量数据

volume_history = data.history(context.symbol('000001.SZA'), fields="volume", bar_count=5, frequency="1d")

#获取当天数据和前一天数据

sec = [context.symbol('000002.SZA'), context.symbol('600000.SHA'), context.symbol('000333.SZA')]
price_history = data.history(sec, fields="price", bar_count=2, frequency="1d")
for s in sec:
prev_bar = price_history[s][-2] # 前一天数据
curr_bar = price_history[s][-1] # 当前数据
if curr_bar > prev_bar:
context.order(s, 20)

#计算一段时间区间的股票的收益率

sec = [context.symbol('600000.SHA'), context.symbol('000333.SZA')]
prices = data.history(sec, fields="price", bar_count=10, frequency="1d")
pct_change = (prices.ix[-1] - prices.ix[0]) / prices.ix[0]
print(pct_change)

#通过pandas提供的滚动运算方法计算mavg\stddev\vwap

#计算平安银行的移动平滑价格

price_history = data.history(context.symbol('000002.SZA'), fields="price", bar_count=5, frequency="1d")
print(price_history.mean())

#计算平安银行价格标准差

price_history = data.history(context.symbol('000002.SZA'), fields="price", bar_count=5, frequency="1d")
print(price_history.std())

#计算成交量加权平均价(VWAP)

def initialize(context):
context.securities = [context.symbol('000002.SZA'), context.symbol('000333.SZA')]

def vwap(prices, volumes):
return (prices * volumes).sum() / volumes.sum()

def handle_data(context, data):
hist = data.history(context.securities, fields=["price", "volume"], bar_count=30, frequency="1d")
vwap_15 = vwap(hist["price"][-15:], hist["volume"][-15:])
vwap_30 = vwap(hist["price"], hist["volume"])

for s in context.securities:
    if vwap_15[s] > vwap_30[s]:
        context.order(s, 50)

can_trade

定义

can_trade(asset)

返回该标的是否可以交易,该标的在当前的时间下如果有行情价格数据,那么返回True,否则返回False,如果为False,在该标的下单会报错。

参数

assets - 标的,类型为Equity

返回:

bool - 布尔型变量

示例代码

def handle_data(context, data):
    sid = symbol('000002.SZA')
    if data.can_trade(sid) == True:
        context.order(sid, 100)


\

标签

开盘价收盘价data
{link}