9.1 股票量化策略的组成
在浏览器的地址栏中输入"https : //www.joinquant.com" ,回车,进入JoinQuant (聚宽)量化交易平台的首页页面。
单击菜单栏中的"我的策略/我的策略"命令,单击"新建策略"按钮,弹出下拉菜单,如图9.1 所示。

在下拉菜单中,单击"股票策略"命令,进入编辑股票策略页面,如图9.2 所示。
在编辑股票策略页面,就可以看以股票策略的Python 代码。一个股票量化策略首先是导入聚宽函数库,具体代码如下:
import jqdata
接下来就是编写4 个Python 函数,分别是初始化函数( initialize )、开盘前运行函数( before_market_open )、开盘时运行函数( market_open )、收盘后运行函数( after_market_close )。

9.1.1 初始化函数(initialize)
初始化函数的代码如下:


initialize(context) ,即初始化函数,在整个回测模拟或实盘中最开始执行一次,用于初始一些全局变量。参数context 是context 对象,用来存储当前的账卢或股票持仓信息。
set_benchmark( ‘ 000300.xSHG' ),是指设定沪深300 作为基准。
set_option( ‘ use_real_price' , True) ,是指开启动态复权模式(真实价格)。复权就是对股价和成交量进行权息修复,股票的实际价值没有变,只是数量与价格变化了而已。例如,原来20 元的股票,十送十之后为10 元,但实际还是相当于20 元。从K 线图上看这个价位看似很低,但很可能就是一个历史高位。复权的作用是为了让股价连续,消除价格、指标的走势畸变。
log.info( ‘初始函数开始运行且全局只运行一次, ),是指输出内容到曰志log.info( ),这样便于事后分析、整理。
接下来就是关系股票的相关设定了。
set_order_cost(OrderCost(close_tax=0.001, open_cornrnission=0.0003 , close_comrnission=0.0003 , min_comrnission=5) ,type= ‘ stock' ),是指每笔交易日才的手续费是: 买入时佣金的万分之三,卖出时佣金万分之三加千分之一印花税,每笔交易佣金最低扫5 元钱。
接下来是运行三个定时函数,即开盘前运行定时函数、开盘时运行定时函数、收盘后运行定时函数,其中reference_securi ty 为运行时间的参考标的。
9.1.2 开盘前运行函数(before_market_ open)
开盘前运行函数的代码如下:


首先输出运行时间到曰志log.info( ),然后给绑定手机的微信发送消息。在这里可以看到要操作的股票是平安银行,代码是000001。
9.1.3 开盘时运行函数(market_open)
开盘时运行函数的代码如下:


开盘时运行函数,即在股票交易的所有时间内一直在运行的函数,是实现买卖股票的函数。
首先输出运行时间到日志log.info( ),然后利用security 获取要操作的股票,即平安银行( 000001 )。接着获取平安银行的收盘价、5 曰均线的价格、上一时间点的价格、当前账户的资金,如果上一时间点的价格高出5 日均线价格的1% ,就会全仓买入,而上一时间点的价格低于5 日均线的价格,就会卖出股票的所有持仓筹码。
9.1.4 收盘后运行函数(after_ market_ close)
收盘后运行函数的代码如下:

首先输出运行时间到曰志log.info( ),然后利用trades 获得当天所有成交记录,再利用for 循环语句把所有成交记录的值写入日志log.info( )中。