Python量化交易知识站Python · JoinQuant · Backtest · Factors

Chapter · 第 170 页起

第9章 利用Python语言编写量化策略

章节主张

第九章是整本书的中轴:它第一次把策略写作的真实结构完整展开,让量化从“想法”变成“可运行对象”。

中文释读

如果把前面几章看作准备动作,这一章就是正式把量化策略拼起来。

初始化函数、定时函数、下单函数、日志和对象系统,合起来构成了策略执行机器。

本章知识路线

关键论据

  • 策略是事件驱动结构。
  • 下单和调度函数决定执行路径。
  • Context、Order、Position 等对象是理解平台的钥匙。

行动清单

  • 先看策略由哪些函数组成。
  • 再看各类对象承载什么状态。
  • 把日志当作策略理解工具。

本章图版学习路径

图版按知识点分组,用来把理论页、平台页和代码页重新接上。

源章节深读

以下卡片基于章节和小节起始页 OCR,并补上“问题、动作、提醒”三层解读。

9.1 股票量化策略的组成

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

这节解决什么问题:这一节解决完整策略如何从信号走向执行与回测闭环。
怎么用到自己的系统:适合拆出初始化、选股、过滤、交易和回测几个模块。
常见错误:不要只看买卖条件,不看完整执行结构。

9.2 股票量化策略的设置函数

Python 量化交易实战入门与技巧 # 卖出所有股票,使这只股票的最终持有量为0 order_target (security,O) 开盘时运行函数,即在股票交易的所有时间内一直在运行的函数,是实 现买卖股票的函数。 首先输出运行时间到日志 log.info(,然后利用 security 获取要操作的股 票,即平安银行(000001)。接着获取平安银行的收盘价、5日均线的价格、 上一时间点的价格、当前账户的资金,如果上一时间点的价格高出5日均线 价格的1%,就会全仓买入,而上一时间点的价格低于5日均线的价格,就会 卖出股票的所有持仓筹码。

这节解决什么问题:这一节解决策略逻辑如何被拆分成可复用动作单元的问题。
怎么用到自己的系统:适合把重复动作逐步改写成函数和模块。
常见错误:不要把所有策略动作都塞进一个大函数。

9.3 股票量化策略的定时函数

第9章 利用 Python 语言编写量化策略 9.2.7 设置要操作的股票池函数 设置要操作的股票池函数的语法格式如下: set universe (security_list) 该函数只用于设定 history 函数的默认 security_list,除此之外并无其 他用处。参数 security_list 是指股票列表。 设置要操作的股票池函数代码如下: set_universe ([‘000001.XSHE’, ‘600000.XSHG’]) 9.3 股票量化策略的定时函数 在股票量化策略的初始化函数中,进行一些初始化设置后,最后运行了 三个定时函数。下面就来具体讲解一下定时函数。 9.3.1 定时函数的定义及分类 定时函数是指,在回测和模拟交易中指定每月、每周或者每天要运行的 函数。定时函数可以在具体每月或每周的第几个交易日(或者倒数第几天)的 某一分钟执行。

这节解决什么问题:这一节解决策略逻辑如何被拆分成可复用动作单元的问题。
怎么用到自己的系统:适合把重复动作逐步改写成函数和模块。
常见错误:不要把所有策略动作都塞进一个大函数。

9.4 股票量化策略的下单函数

Python 量化交易实战入门与技巧 daily(),具体代码如下: def weekly(context): print ‘weekly 8s os’| oP (context.current_dt, context. current _dt.isoweekday () ) def monthly (context): print| ‘monthly es es’ o (context.current_dt, context. current_dt.month) def daily (context): print ‘daily es’ s context.current_dt def initialize (context): # 指定每月第一个交易日,在开盘后十分钟运行,即 9:40 run_monthly(monthly, 1,‘open+10m’) # 指定每周倒数第一个交易日,在开盘前运行,即 9:00 run_we

这节解决什么问题:这一节解决策略逻辑如何被拆分成可复用动作单元的问题。
怎么用到自己的系统:适合把重复动作逐步改写成函数和模块。
常见错误:不要把所有策略动作都塞进一个大函数。

9.5 股票量化策略的日志log

第9章 利用 Python 语言编写量化策略 9.5 股票量化策略的日志 log 日志可以用来记录应用程序的状态、错误和信息消息,也经常作为调试 程序的工具。下面来讲解一下设定1og 级别及最常用的log.info。 9.5.1 设定log级别 设定log 级别语法格式如下: log.set_level (name, level) 设置不同种类10g的级别,低于这个级别的log 不会输出。所有10g的 默认级别是 debug。 各项参数意义如下: 参数name:字符串,但log种类只有三种,分别是 “order”、“history”、 “strategy” '。 order 表示调用 order 系列 API 产生的1og;history 表示调用 history 系列API产生的log;strategy 表示程序员自己在策略代码中打出来 的 log。

这节解决什么问题:这一节解决完整策略如何从信号走向执行与回测闭环。
怎么用到自己的系统:适合拆出初始化、选股、过滤、交易和回测几个模块。
常见错误:不要只看买卖条件,不看完整执行结构。

9.6 股票量化策略的常用对象

Python 量化交易实战入门与技巧 log.info 等同于 print 输出的结果。 参数content,可以是字符串、对象等。 log.info 的实例代码如下: log.info (history (10))#打印出 history(10)返回的结果 log.info(“Selling &s,amount-8s”,security,amount) 出一个格式化后的字符串 print history (10),data, context.portfo1i0 # 打印 9.6 股票量化策略的常用对象 在股票量化策略中,还会用到一些常用的对象,如 Order 对象、全局对 象g、Trade对象等。下面详细讲解一下常用对象。 9.6.1 Order 对象 Order 对象的常用属性如下: Amount:下单数量,不管是买还是卖,都是正数。 filled:已经成交的股票数量,正数。 security:股票代码。

这节解决什么问题:这一节解决平台或策略里不同对象分别承载什么状态。
怎么用到自己的系统:适合建立对象字典:知道每个对象在策略生命周期里负责什么。
常见错误:不要在没理解对象含义时直接抄调用代码。
辨析题:为什么说第九章是这本书最像“量化编程核心课”的一章?

因为从这里开始,读者面对的不再是通用 Python,而是完整策略如何在平台里生长和运转。