在股票量化策略中,还会用到一些常用的对象,如 Order 对象、全局对象 g 、Trade 对象等。下面详细讲解一下常用的对象
Order 对象
Order 对象常用的属性如下:
- amount : 下单数量,不管是买还是卖,都是正数
- filled : 已经成交的股票数量,正数
- security : 股票代码
- order_id : 订单 id
- price : 平均成交价格,已经成交的股票的平均成交价格(一个订单可能分多次成交)
- avg_cost : 卖出时表示下单卖出前的此股票的持仓成本,用来计算此次卖出的收益。买入时表示此次买入的均价(等于 price )
- side : 用来指定开多单,还是空单。如果其值是 long 代表开多单,如果其值是 short 代表开空单
- action : 用来指定是开仓,还是平仓。如果其值是 open 代表开仓,如果其值是 close 代表平仓
- add_time : 订单添加时间
全局对象 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