中央财经大学“小容量化平台”回测函数介绍

文章目录

  • 回测平台函数与参数介绍
    • 一、交易相关常用函数
      • 1. order_shares:指定股数交易(股票专用)
      • 2. order_value:指定价值交易(股票专用)
      • 3. order_percent:一定比例下单(股票专用)
      • 4. 目标价值下单和目标比率下单
        • 4.1 order_target_value():目标价值下单(股票专用)
        • 4.2 order_target_percent():目标比率下单(股票专用)
    • 二、查询相关常用函数
      • 1. history_bars:某一合约的历史数据

回测平台函数与参数介绍

一、交易相关常用函数

1. order_shares:指定股数交易(股票专用)

order_shares(id_or_ins, amount, style=MarketOrders())
参数 类型 注释
id_or_ins str 或 instrument 对象 order_book_id 或 symbol 或 instrument 对象,用户必须指定
amount float-required 需要落单的股数。正数代表买入,负数代表卖出。将会根据一手 xx 股来向下调整到一手的股数(如A股调整为100股的倍数)
style OrderType 订单类型,默认是市价单。目前支持的订单类型有:style=MarketOrder()、style=LimitOrder(limit_price)

范例:

# 购买2000股平安银行股票,并以市价单发送
order_shares('000001.XSHE', 2000)
# 卖出2000股平安银行股票,并以市价单发送;
order_shares('000001.XSHE', -2000)
# 购买1000股平安银行股票,并以限价单发送,价格为10
order_shares('000001.XSHE', 1000, style=LimitOrder(10))

2. order_value:指定价值交易(股票专用)

order_value(id_or_ins, cash_amount, style=OrderType)

买入或卖出股票,暂不支持卖空,股票的股数会被调整成对应的100的倍数。提交卖单表示希望通过卖出该股票套现的金额。如果金额超出了所持有的股票的价值将被卖出所有股票(清仓)。如果资金不足,将不会创建订单。

参数 类型 注释
id_or_ins str 或 instrument 对象 order_book_id 或 symbol 或 instrument 对象,用户必须指定
cash_amount float 需要花费现金购买或卖出证券的数目。正数代表买入,负数代表卖出,用户必须指定
style OrderType 订单类型,默认为市价单。目前支持的订单类型有:style=MarkerOrder()、style=LimitOrder(limit_price)

范例:

# 买入价值10000人民币的平安银行股票,并以市价单发送
# 如果股价是21元一股,则会买入400股的平安银行,因为少于100股的数目会被自动删除
order_value('000001.XSHE', 10000)
# 卖出价值为10000人民币的平安银行股票,如果持仓价值不足10000,则清仓
order_value('000001.XSHE', -10000)

3. order_percent:一定比例下单(股票专用)

order_percent(id_or_ins, percent, style=OrderType)

发送一个等于目前投资组合价值(市场价值和目前先进的总和)一定百分比的买卖单,暂不支持卖空。股数总是会被调整成为100的倍数。当买入股票所需金额加上手续费大于资金时,该API将不会创建发送订单。

参数 类型 注释
id_or_ins str 或 instrument 对象 order_book_id 或 symbol 或 instrument 对象,用户必须指定
percent float 占有现有的投资组合价值的百分比。正数为买入,负数为卖出。用户必须指定
style OrderType 订单类型,默认是市价单。目前支持的订单类型有:style=MarketOrder()、style=LimitOrder(limit_price)

范例:买入等于现有投资组合50%价值的平安银行股票,如果现在平安银行的股价是21元人民币一股,且投资组合总价值为10000,则用来买入的资金为5000人民币,买入200股。

order_percent('000001.XSHE', 0.5)

4. 目标价值下单和目标比率下单

4.1 order_target_value():目标价值下单(股票专用)

order_target_value(id_or_ins, cash_amount, style=OrderType)

4.2 order_target_percent():目标比率下单(股票专用)

order_target_percent(id_or_ins, percent, style=OrderType)

买入或卖出并且自动调整该证券仓位到达一个目标价值(或是占到投资组合的目标百分比),暂不支持卖空。如果没有任何该证券的仓位,则买入全部目标价值的(或是等于现在投资组合总价值目标百分比的数目的)证券。如果已经有了该证券的仓位,则会买入或卖出调整该证券的现在仓位和目标仓位的价值差值的数目的证券。

参数 类型 注释
id_or_ins str 或 instrument 对象 order_book_id 或 symbol 或 instrument 对象,用户必须指定
cash_amount float 最终该证券的仓位目标价值
percent float 仓位最终所占投资组合总价值的目标百分比
style OrderType 订单类型,默认是市价单。目前支持的订单类型有:style=MarkerOrder()、style=LimitOrder(limit_price)

二、查询相关常用函数

1. history_bars:某一合约的历史数据

history_bars(order_book_id, bar_count, frequency, fields=None, skip_suspended=True, include_now=False)

获取指定合约的历史行情,同时支持日以及分钟历史数据。不能在initialize中调用。

参数 类型 注释
order_book_id str 合约代码,必须填
bar_count int 获取的历史数据数量,必须填
frequency str 以什么样的频率获取数据,‘1d’ 或 ‘1m’ 分别表示每日和每分钟,必须填。您可以指定不同的分钟频率,例如 ‘5m’ 代表 5 分钟线
fields str 或 str list 返回数据字段,必须填,见下表
skip_suspended bool 是否跳过停牌,默认为 True
include_now bool 是否包括不完整的 bar 数据,默认为 False。举例说明:在 09:39 的时候获取上一个 5 分钟线,默认获取到 09:31 ~ 09:35 合成的 5 分钟线。如果设置为 True,则会获得 09:36 ~ 09:39 之间合成的“不完整的” 5 分钟线
adjust_type str 复权方式,默认为 pre。所有参数:不复权(none)、动态前复权(pre)、后复权(post)
fields 字段名
open 开盘价
high 最高价
low 最低价
close 收盘价
volume 成交量
total_turnover 成交额
datetime int 类型时间戳
open_interest 持仓量(期货专用)
settlement 结算价(期货日线专用)
prev_settlement 结算价(期货日线专用)

该函数的返回值数据格式为ndarray,方便直接与talib等计算库对接。

-----------------------------------------------------------------------------------------
[In]
logger.info(history_bars('000002.XSHE', 5, '1d', 'close'))
[Out]
[ 8.69  8.7  8.71  8.81  8.81 ]
-----------------------------------------------------------------------------------------
[In]
logger.info('NO INCLUDE NOW')
logger.info(history_bars(context.s1, 2, '5m', ['datetime', 'volume'], include_now=False))
[Out]
2016-07-01 09:31:00.00   INFO  NO INCLUDE NOW
2016-07-01 09:31:00.00   INFO  [(20160630145500, 654006) (20160630150000, 1420219)]
-----------------------------------------------------------------------------------------

:bar 数据是切片数据,例如当前时间为12:00,使用 history_bars(context.s1, 3, '60m', include_now=True) 获取到的数据为: ( 9 : 30 , 10 : 30 ] , ( 10 : 30 , 11 : 30 ] , ( 11 : 30 , 12 : 30 ] (9:30,10:30],(10:30,11:30],(11:30,12:30] (9:30,10:30],(10:30,11:30],(11:30,12:30] 三个时间段的数据。

你可能感兴趣的:(大数据,python,金融,科技,学习)