程序员

量化交易入门笔记-策略常用对象

2018-10-05  本文已影响4人  东南有大树

在股票量化策略中,还会用到一些常用的对象,如 Order 对象、全局对象 g 、Trade 对象等。下面详细讲解一下常用的对象

Order 对象

Order 对象常用的属性如下:

全局对象 g

全局对象 g,用来存储用户的种类可被 pickle.dumps 函数序列化的全局数据

在模拟盘中,如果中途进程中断,我们会使用 pickle.dumps 序列化所有的 g 下面的变量内容,保存到磁盘中,再启动的时候模拟盘就不会有任何数据影响。如果没有用 g 声明,会出现模拟盘重启后,变量数据丢失的问题

如果不想 g 中某个变量被序列化,可以让变量以 "_"开头,这样,这个变量在序列化会被忽略

全局对象 g 的实例代码如下:

def initialize(context):
    g.secruity = "000001.XSHG"
    g.count = 1
    g.flag = 0
    
def process_initialize(context):
    # 保存不能被序列化的对象,进程每次重启都初始化
    g._q = query(valuation)
    
def handle_data(context, data):
    log.info(g.security)
    log.info(g.count)
    log.info(g.flag)

Trade 对象

Trade 对象用于记录订单的一次交易。但需要注意的是,一个订单可能分多次交易。Trade 对象的常用属性如下:

tick 对象

tick 中的信息是在 tikc 事件发生时,盘面的一个快照。tikc 对象的家长属性如下:

Context 对象

Context 对象,即量化策略加油对象,其常用属性如下:

另外,此对象也做了和 g 一样的处理:

  1. 可以添加自己的变量,每次进程关闭时持久保存,进程重启时恢复

  2. 以"_"开头的变量不会被持久保存

  3. 如果添加的变量与系统的冲突,将覆盖掉系统变量,如果想恢复系统变量,就要删除自己的变量

    实例代码:

    def handle_data(context, data):
        # 执行下面的语句之后,context.portfolio 的整数 1
        context.portfolio = 1
        log.info(context.portfolio)
        # 要恢复系统的变量,只需要使用下面的语句即可
        del context.portfolio
        # 此时,context.portfolio 将变成账户信息
        log.info(context.portfolio.portfolio_value)
    
  4. 以后可能会向 context 中添加新的变量来支持量多功能,为了减少麻烦,这里建议大家使用 g

Context 对象的实例代码如下:

def handle_data(context, data):

    #获得当前回测相关时间
    year = context.current_dt.year
    month = context.current_dt.month
    day = context.current_dt.day
    hour = context.current_dt.hour
    minute = context.current_dt.minute
    second = context.current_dt.second
    #得到"年-月-日"格式
    date = context.current_dt.strftime("%Y-%m-%d")
    #得到周几
    weekday = context.current_dt.isoweekday()

    # 获取账户的持仓价值
    positions_value = context.portfolio.positions_value

    # 获取仓位subportfolios[0]的可用资金
    available_cash = context.subportfolios[0].available_cash

    # 获取subportfolios[0]中多头仓位的security的持仓成本
    hold_cost = context.subportfolios[0].long_positions[security].hold_cost

Position 对象

Position 对象是特有的某个标的的信息,其常用属性如下:

SubPortfolio 对象

SubPortfolio 对象是某个仓位的资金和标的信息,其常用属性如下:

Portfolio 对象

Portfolio 对象是所有标的的操作仓位的信息汇总,其常用属性如下

SecurityUnitData 对象

SecurityUintData 对象是一个单位时间内的股票的数据,其常用属性如下:

注:本文章为个人学习笔记,参考了一些书籍与官方教程,不作任何商业用途!

上一篇下一篇

猜你喜欢

热点阅读