新建一个Python策略
# 2. 创建一个 Python 策略
# 2.1. 新建一个 Python 策略
模型创建方法有三种:
方法一,在【模型研究】界面,使用系统预置的各种示例模型,点击后方“编辑”按钮,并在弹出的【策略编辑器】中以此示例模型代码为基础进行编写。
我的主页-编辑模型
方法二,在【模型研究】界面,点击新建模型,选择 Python 模型,在弹出的【策略编辑器】中从头到尾编写一个用户自己的量化模型。
模型研究-新建模型
方法三,在模型管理面板右键,选择新建模型,并选择 Python 模型。
模型管理-新建模型
# 2.2. 策略编写
【策略编辑器】是迅投专门为模型开发者设计的,集成了模型列表、函数列表、函数帮助、模型基本信息、参数设置、回测参数等多个部分,拥有代码高亮、自动补全等便捷功能于一体的便捷的模型编辑、开发环境。
模型编辑页面 右侧可选择策略默认的周期、品种
编写 Python 策略需在开始时定义编码格式,如 gbk。
之后可选择导入第三方库,所选第三方库要在券商管理端白名单内才可运行。
Init 方法和 handlebar 方法的定义是必须的。Init 方法会在策略运行开始时调用一次,用以初始化所需对象(包裹在 ContextInfo 对象中传递),设定股票池等。
Handlebar 方法会在历史 K 线上逐 K 线调用,系统会保存函数所做更改。
在盘中交易时间,handlebar 函数会随行情推送(tick 数据)被调用,当一个 tick 数据为所在 K 线最后一个 tick 时,此 tick 调用的 handlebar 所做的更改会被系统保存,如有交易指令,会在下一根K 线的第一个 tick 到来时发送;其他 tick 可以打印运行结果,但 handlebar 所做更改不会被保存,也不会发送交易信号。
编写创建完模型后,对应模型的基本信息和回测参数进行设置。
基本信息包括:
基本信息
名称: 填写模型名称
快捷码: 默认根据模型名称自动生成拼音首字母拼写,如需自定义可以手动进行更改,用于键盘精灵快速引用模型
说明: 简单的说明模型功能
分类: 保存当前模型到某个分类下面
位置: 模型回测或运行时的位置,有副图、主图叠加、主图三种显示位置
默认周期: 点击模型回测或运行时的默认主图周期,可手动切换
默认品种: 点击模型回测或运行时的默认主图品种,可手动切换
复权方式: 提供不复权、前复权、后复权、等比前复权、等比后复权 5 种复权方式
快速计算: 限制计算范围,默认为 0 时模型运行会从模型设置的默认品种(主图)的第一根 K 线开始计算,设置为 n 则从当前 K 线再往前 n 个 K 线开始计算
刷新间隔: 用来设置策略运行的时间间隔。设置了刷新间隔,即每隔一段时间策略按照当前行情运行一次
加密公式: 加密后的公式只有输入密码才可以查看源代码
凭密码导出公式: 此项只有在开启 “加密公式” 后才能生效,生效后只能使用密码导出到本地
用法注释: 简短的说明模型使用的一些注意项,可不填
策略编辑器-基本信息
回测模式指策略以历史行情为依据进行运算,投资者可观察该策略在历史行情所获得的年化收益率、夏普比率、最大回撤、信息比率等指标表现。
回测参数包括:
回测参数
开始时间、结束时间: 设置模型回测时间区间
基准: 设置模型收益的参考基准
初始资金: 设置模型回测的初始资金
保证金比例: 设置期货的保证金比例
滑点: 设置回测撮合时的滑点,模拟真实交易的冲击成本
手续费类型: 支持按成交额比例或者固定值计算手续费
买入印花税: 设置买入印花税比例
卖出印花税: 设置卖出印花税比例
最低佣金: 设置单笔交易的最低佣金数额
买入佣金: 设置买入标的时的佣金比例
平昨佣金: 设置股票、期货平昨佣金比例
平今佣金: 设置期货平金佣金比例
最大成交比例: 控制回测中最大成交量不超过同期成交量*最大成交比例。可以点击此参数旁边的'?'按钮了解详情
策略编辑器-回测参数
使用者也可在参数设置中设置好参数值,参数名为变量名,模型中可以调用。最新值为变量默认值,运行/回测模式使用。
其中最小 / 最大 / 步长项,为遍历参数。初始项可不填。最小 / 最大都是包含在遍历区间内的,如图所示三个变量,测评时会遍历(20-3+1)[(160-140)/10+1][(-150+250)/10+1] 种组合。
策略编辑器-参数设置
点击公式测评,可选择回测模式支持的指标,如单位净值,最大回撤等,作为评价标准。
策略编辑器-公式评测
点击优化,评测结果弹窗显示不同参数变量组合下的回测结果,根据结果选择最优参数组合。可点击所需指标进行排序。需要注意的是,在测评之前,需要针对所选品种和周期补充数据。
# 2.3. 补充数据
在创建用户的模型之前,用户应使用客户端提供的“数据管理”功能,选择并补充模型所需的相应市场、品种以及对应周期的历史数据。
操作-数据管理
# 2.4. 策略运行
策略编写完毕后,点击编译,可保存策略。编译按钮在 Python 策略中只起保存功能,不会检查语法与引用的正误。之后点击运行可以看到策略运行效果(如有错误,会在日志输出的位置报错)。
策略编辑器-运行
如当前系统所处界面为“行情”界面或“交易”界面,点击运行之前,需在行情中手动设置好 K 线品种和周期,点击运行后,策略即可在当前主图下运行,如下图所示。
策略运行状态之一
如系统当前界面处于“我的主页”界面或“模型研究”和“模型交易”等非行情界面,点击运行时,会基于策略编辑器 - 基本信息中所设置的默认周期和默认品种运行。
策略运行状态之二
当选择的运行位置为副图时, 如想关闭策略,将主图下方策略运行的附图关闭即可。
关闭运行中的策略之一
关闭运行中的策略之二
当选择的运行位置为主图叠加时,如想关闭策略,在主图上右键单击取消叠加指标即可。
当选择的运行位置为主图时,键盘精灵输入KLINE即可结束模型运行。
关闭运行中的策略之三
点击策略编辑器上放的停止按钮
# 2.5. 策略调试
如果策略运行不成功,需要进行策略调试这一步。当运行出错时,报错信息会显示在日志输出面板,以供修改调试之用。
策略调试-输出日志
# 2.6. 策略回测
对某一策略编译成功后,点击回测,可以通过日志输出查看模型基于历史行情数据回测情况和表现。
在回测之前,需要设置好策略回测运行的主图品种和周期,以及相关的回测参数。回测主图和周期可以在策略编辑器-基本信息中进行设置,回测开始和结束时间、基准、费率等可以在策略编辑器 - 回测参数中设置。
用户在回测前,需根据此策略回测运行的主图、周期和时间,在【数据管理】中对行情数据进行下载补充。如回测时间设置为 20180930 至 20190530 ,运行主图为 SZ.000001 平安银行日线,补充数据时可进行如下设置。
操作-数据管理
如果回测正常的话,主界面会跳转到模型设置的默认标的和默认周期界面,并输出模型绩效分析结果。
策略编辑器-模型回测
此时,可最小化或者关闭【策略编辑器】,并对回测结果进行分析,随着光标在 K 线主图上的移动,右边回测结果展示窗口会动态显示截止光标所在当日的绩效分析结果(包括年化收益,基准年化收益,单位净值,下方差,信息比率,夏普比率,波动率,索提诺比率,阿尔法系数,贝塔系数,跟踪误差,最大回撤,胜率等)、当日买入、当日卖出、持仓列表。
以上列表均可鼠标右键复制和导出数据。
回测结果分析-回测结果随十字光标移动动态展示
如需根据模型生成的买入、卖出列表进行手工交易,则可直接点击“买入'或“卖出'按钮,系统会弹出下单界面由用户进行确认后进行普通交易下单或算法交易下单。交易方式可点击卖出按钮右侧的普通交易进行切换设置。
回测结果买入
副图回测指标:提供图形化的展示,除去绩效分析的相关指标外,用户可以通过编辑模型代码自定义输出一些特色指标,鼠标右键可以选择复制模型运行结果(每一天的数据)。
回测结果分析-附图指标输出
另外,回测结果还提供了持仓分析、历史板块汇总、操作明细、日志输出等信息,方便用户进行深入分析。
说明
持仓分析: 可查看光标所在当天持仓的行业分布,展示在相关行业的市值情况、盈利情况、权重以及股票数量情况,鼠标右键可以复制和导出数据;可切换对比基准,和模型持仓进行对比。
历史板块汇总: 可查看模型自回测日期以来到光标所在日期该模型交易标的的汇总信息,包括累计盈亏、累计交易量、累计交易额、持仓天数等;点击选择板块,可以自行选择其常用板块进行板块的各项数据累计汇总;汇总数据均可以进行排序,鼠标右键可以复制和导出数据。
操作明细: 可查看模型回测的历史每一笔交易的明细。
日志输出: 可用于调试输出模型回测和运行情况。
回测结果分析-绩效分析、当日买入、当日卖出、当日持仓
回测结果分析-持仓分析
回测结果分析-历史品种汇总、历史板块汇总
回测结果分析-操作明细、日志输出
# 2.7. 回测、运行两种模式的区别
在模型编辑器中,有“回测”和“运行”两个按钮,分别代表两种模式,它们之间的区别如下:
(1)回测模式指策略以历史行情为依据,以回测参数中的开始时间、结束时间为回测时间区间进行运算,投资者可观察该策略在历史行情所获得的年化收益率、夏普比率、最大回撤、信息比率等指标表现。
(2)运行模式指策略根据实时行情信号进行运算,以主图行情开始时间到当前时间为运行区间,进行策略的模拟运行,但不进行真实的委托。
注意
如果需要向模拟/实盘柜台发送真实的委托,请将策略加入到“模型交易”中。