功能简介
智能策略是终端集成的一系列常见的量化交易策略,包括 条件单、网格策略、涨停开板等。帮助用户不需要编写代码就可以使用常见又经典的量化交易策略。智能策略支持仿真和实盘交易,点击终端的 智能策略
连接仿真账户或实盘账户即可使用。智能策略功能最低支持的客户端版本为 3.20.0
智能策略界面使用
所有从左边栏选择设置的智能策略全部都会在 智能交易列表
中显示。当新设一个智能策略后,该策略会出现在【监控中】界面,可以对该策略选择停止、启动、修改、删除。如果新设智能策略的任务启动选择“立即启动”,在【监控中】默认是启动状态。
当一个智能策略被删除、或者触发了条件且不会再触发时,这个智能策略会进入【历史】。如果一个智能策略达到了设定的有效期,这个策略会进入【失效】。点击刷新按钮可以手动刷新各个智能策略的状态。
策略触发的信号可在【信号】查看。信号类别为直接下单
的,不需要人工确认,会自动转成委托下单。信号类别为无效信号
的,是指转成委托校验参数不合法的信号,为避免废单产生,这些信号不会下单。
信号类别
为人工确认下单的,策略触发的信号要在【信号】中操作列点击下单,才会发出委托。点击只看待确认
可查看需要人工确认下单的信号记录,无效信号不会进入待确认列表。
重要提醒
- 掘金终端关闭后,智能策略的所有策略任务均会停止运行,不会触发信号。只有开启了掘金终端,智能策略任务运行期间才会产生信号,并在信号列表展示。重启掘金终端,上次关闭终端时正在运行的策略任务如果没有过期失效,会保留运行状态。
- 掘金终端关闭后,信号列表中的已触发的信号(待确认/已下单/无效)将会释放,不会留存。请注意及时检查待确认的信号是否已手动下单,已下单的信号是否有对应的委托和成交记录。
- 如果根据策略任务条件触发的信号,实际委托参数将会产生废单,会被掘金终端识别为无效信号,不会直接下单,也不会待人工确认下单。
例如:通过委托设置(每笔金额、每笔百分比、最小底仓数量、最大持仓数量、清仓设置等)计算得到实际委托数量为0,会被识别为无效信号。 例如:定时条件限价单触发时没有实时行情,无法获取盘口价格来指定限价价格,会被识别为无效信号。
- 智能策略任务在有效期内,如果标的发生除权、除息、已退市、退市整理、暂停上市等风险警示情况,平台对智能策略统一做失效处理。
- 智能策略任务的有效信号触发后,如果信号类别是“人工确认下单”,已登录的所有掘金终端均会收到信号提醒;如果信号类别是“直接下单”,已登录的所有掘金终端均会收到信号提醒,但只在创建智能策略任务的掘金终端会直接下单,不会在其他本地设备登录的掘金终端重复下单。建议启用智能策略后,避免在其他设备终端登录同一账号。如果要在其他设备登录终端,创建策略任务时请勿设置“直接下单”。
条件单
智能策略-条件单支持品种:股票、场内基金和可转债
条件单是通过价格、涨跌幅、止盈止损等多种条件对交易标的进行跟踪监控、达到用户提前设定的触发条件后,自动根据用户设置的委托参数提交委托。条件单启动后自动盯盘,相比人工盯盘更精准、及时、高效。
注意:如果发生了除权除息等导致股票价格变动的情况会导致条件单失效。
条件单类型 | 信号触发判断逻辑 | 条件参数 |
---|---|---|
触发时间 | 条件任务创建并启动后,达到预设时间,触发信号。 | 预设时间 |
触发价格 | 条件任务创建并启动后,行情价格达到预设的价格时,触发信号。 | 行情价格,选项:最新价,买一价,卖一,达到方向,选项:>=,<=,预设价格,填写:数字 |
当日涨幅 | 条件任务创建并启动后,日内涨跌幅(=现价/昨收价-1)达到预设幅度时,触发信号。 | 达到方向,选项:>=,<=,预设幅度,填写:百分比% |
反弹买入 | 条件任务创建并启动后,行情价格向下击穿触发价格后向上反弹指定幅度时,触发买入。![]() |
行情价格,选项:最新价,买一价,卖一价,触发价格,填写:数字,反弹幅度,填写:百分比% |
回落卖出 | 条件任务创建并启动后,行情价格向上突破触发价格后向下回落指定幅度时,触发卖出。![]() |
行情价格,选项:最新价,买一价,卖一价,触发价格,填写:数字,反弹幅度,填写:百分比% |
止盈 | 条件任务创建并启动后,最新价达到(>=)止盈条件:成本价*(1+上涨幅度%)时,触发卖出。 | 成本价,填写:数字,上涨幅度,填写:百分比% |
止损 | 条件任务创建并启动后,最新价达到(<=)止损条件:成本价*(1-下跌幅度%)时,触发卖出。 | 成本价,填写:数字,下跌幅度,填写:百分比% |
涨速 | 条件任务创建并启动后,开始记录最高价和最低价和发生的时间,如果在时间范围内,最低价出现在前,最高价出现在后,且最高价/最低价-1达到涨跌幅度,触发信号。最高价出现在前,最低价出现在后,且最低价/最高价-1达到涨跌幅度,触发信号。 | 时间范围长度,填写:数字,时间范围单位,选项:时,分,秒,达到方向,选项:>=,<=,涨跌幅度,填写:百分比% |
创建步骤2
点击终端的 智能策略
连接账户后选择选择【条件单】。
在弹出的窗口,进行条件单参数设置。
单标的策略
第一步,输入标的,选择条件单类型。
第二步,填写条件设置、委托设置和任务设置参数。
- 打开委托设置的“高级设置”,可设置策略关联账户下对应symbol的持仓期望。触发信号后,委托会根据高级参数,调整委托数量。
- 最小底仓数量:默认不限制,设置对应symbol在关联账户下总持仓的最小数量。
- 最大持仓数量:默认不限制,设置对应symbol在关联账户下总持仓的最大数量。
- 清仓设置:默认打开,打开后如关联账户下对应symbol的可卖数量小于委托数量,则清仓卖出剩余数量。关闭清仓设置委托数量不变。
第三步,参数设置完成,点击“确定”,确认设置后即可新建条件单。
多标的策略
第一步,标的池导入:点击“标的池导入”。
第二步,选择标的池:选择已有标的池或新建标的池,选中需要设置条件单的标的并点击下一步
。标的池可在【交易工具-标的池】界面进行管理。
第三步,参数微调:在最左侧选择交易标的,设置单个symbol
的参数。注意一定要先点击最左侧交易标的symbol,进入该标的的参数微调界面,再设置该symbol的参数。
第四步,确认设置:条件参数设置完成,点击确定
,确认设置后即可新建条件单。没有点击过最左侧交易标的参数设置的symbol,不会进入设置确认表单。
网格交易
智能策略-网格交易支持品种:股票、场内基金和可转债
网格交易是量化交易的一种策略,可在震荡行情中通过一定的价格区间构造出一系列的买卖价位,通过自动执行的低买高卖,从而获得震荡区间波段收益的一种交易方法。
注意:如果发生了除权除息等导致股票价格变动的情况会导致网格策略失效。
网格设置
- 价格中枢:初始基准价,是网格策略的中枢网格线对应的价格。
- 网格大小:设定高于价格中枢的上行网格大小、低于价格中枢的下行网格大小,有绝对值和百分比两种设置方式。
- 区间范围:设定一个价格区间上限和价格区间下限,当监控价格超过价格区间上下限不会触发网格策略的买卖信号。非必填参数,默认不限。
拐点交易:当行情价格出现异动时,为了追求更低的买点和更高的卖点,等待拐点出现后在右侧交易。非必填参数,默认关闭。
反弹买入:触发min[大于最低价(拐点)的第一个网格线,击穿或触达网格线后的
最低价
*(1+反弹幅度)]买入,买入数量为当次下跌累计穿越格子数应买数量之和。- 回落卖出:触发max[小于最高价(拐点)的第一个网格线,突破或触达网格线后的
最高价
*(1-回落幅度)]卖出,卖出数量为当次上涨累计穿越格子数应卖数量之和。
- 回落卖出:触发max[小于最高价(拐点)的第一个网格线,突破或触达网格线后的
委托设置
- 委托数量:每个网格买入或卖出的数量(金额)。
- 委托倍数:网格下单数量计算策略。
- 平均触发:每个网格下单数量(金额) 相同。
- 金字塔策略:每个网格下单数量(金额)依次翻倍。
- 马丁格尔策略:输入值为放大倍数,每个网格下单数量(金额)依次乘以该放大倍数。
- 递增策略:每个网格递增N股加仓。
- 委托方式:买入和卖出委托方式可独立设置。
- 市价:价格触碰网格线以市价发出委托,上交所symbol以涨停价填写买入保护限价,以跌停价填写卖出保护限价。
- 限价:价格触碰网格线以限价发出委托,价格可选买卖5档。当所选档位触发时缺少报价(例如涨停没有卖出档位价格,跌停没有买入档位价格),会以最新价委托。
- 高级设置:设置策略关联账户的持仓期望。触发信号后,委托会根据高级设置的参数,调整委托数量。
- 最小底仓数量:默认不限制,设置对应symbol在关联账户下总持仓的最小数量。
- 最大持仓数量:默认不限制,设置对应symbol在关联账户下总持仓的最大数量。
- 清仓设置:默认打开,打开后如关联账户下对应symbol的可卖数量小于委托数量,则清仓卖出剩余数量。关闭清仓设置委托数量不变。
任务设置
- 有效期:默认为当日有效,可选N日有效/长期有效。一旦超过有效期,就会停止网格策略监控,释放策略任务。
- 任务启动:默认立即启动(策略任务创建成功会立即启动),可选手动启动。
- 信号执行:默认人工确认下单(策略信号触发后需手动确认才会下单),可选直接下单。
操作建议
- 建议先提前一天购买底仓或针对已有持仓的股票进行网格交易的创建,这样网格创建后便可以高抛低吸了。
- 建议第一次创建网格交易可以先从可转债开始,可转债交易时t+0交易,当天买入、当天即可卖出,很符合网格交易的交易方法。
- 建议设置的回落幅度和反弹幅度要远小于设置的网格大小,特别是同时开启回落卖出和反弹买入策略的场景,以避免当价格在一个网格内反复震荡时,反弹到上网格线触发反弹买入,回落到下网格线触发回落卖出。
示例说明
- 回落卖出策略关闭 & 反弹买入策略关闭
价格中枢为10元,价格区间上限为15元,价格区间下限为7元,网格大小为1元,委托数量为每笔数量1000股,委托倍数为平均触发。
- 回落卖出策略关闭 & 反弹买入策略开启
价格中枢为10元,价格区间上限为15元,价格区间下限为7元,网格大小为1元,反弹买入策略反弹幅度1%,委托数量为每笔数量1000股,委托倍数为平均触发。
- 回落卖出策略开启 & 反弹买入策略关闭
价格中枢为10元,价格区间上限为15元,价格区间下限为7元,网格大小为1元,回落卖出策略回落幅度-1%,委托数量为每笔数量1000股,委托倍数为平均触发。
- 回落卖出策略开启 & 反弹买入策略开启
价格中枢为10元,价格区间上限为15元,价格区间下限为7元,网格大小为1元,反弹买入策略反弹幅度1%,委托数量为每笔数量1000股,委托倍数为平均触发。
- 高开
如下图所示,创建一个网格大小为2%的网格策略,平均触发1份委托数量为1000股。如果第二天股价大幅度高开,高开价格较前一天行情价格通过4个网格,卖出4份委托数量。
- 情形1:第二天高开后,单边下跌
- 情形2:第二天高开后,先涨后跌
(1)回落卖出关闭 & 反弹买入关闭
(2)回落卖出开启 & 反弹买入关闭 T+1日高开时应卖出4份委托数量,由于开启了回落卖出策略,需要加上T+1日高开后未触发回落卖出信号的1份委托数量,在T+1日开盘后达到最高价的回落指定幅度,以4+1=5份委托数量卖出。
(3)回落卖出关闭 & 反弹买入开启 T+1日高开时应卖出4份委托数量,由于开启了反弹买入策略,需要减去T日收盘前未触发反弹买入信号的2份委托数量,在T+1日开盘以4-2=2份委托数量净卖出。
(4)回落卖出开启 & 反弹买入开启
- 低开
如下图所示,创建一个网格大小为2%的网格策略,平均触发1份委托数量为1000股。如果第二天股价大幅度低开,低开价格较前一天行情价格通过3个网格,买入3份委托数量,吸收足够多的低廉筹码,这样当股价低开高走时使自己的利润最大化,但对于跳空低开继续下行的走势可能会导致亏损扩大。
- 情形1:第二天低开后,单边上涨
- 情形2:第二天低开后,先跌后涨 (1)反弹买入关闭 & 回落卖出关闭
(2)反弹买入开启 & 回落卖出关闭 T+1日低开时应买入3份委托数量,由于开启了反弹买入策略,需要加上T+1日低开后未触发反弹买入信号的1份委托数量,在T+1日开盘后达到最低价的反弹指定幅度,以3+1=4份委托数量卖出。
(3)反弹买入关闭 & 回落卖出开启 T+1日低开时应买入4份委托数量,由于开启了回落卖出策略,需要减去T日收盘前未触发拐点卖出信号的3份委托数量,在T+1日开盘以4-3=1份委托数量净卖出。
(4)反弹买入开启 & 回落卖出开启
创建步骤1
点击终端的 智能策略
连接账户后选择选择【网格交易】。
在弹出的窗口,进行网格交易参数设置。
单标的策略
第一步,输入标的。
第二步,填写网格设置、委托设置和任务设置参数。
打开网格设置的“高级设置”,可设置网格可选参数。
打开委托设置的“高级设置”,可设置策略关联账户下对应symbol的持仓期望。触发信号后,委托会根据高级参数,调整委托数量。
- 最小底仓数量:默认不限制,设置对应symbol在关联账户下总持仓的最小数量。
- 最大持仓数量:默认不限制,设置对应symbol在关联账户下总持仓的最大数量。
清仓设置:默认打开,打开后如关联账户下对应symbol的可卖数量小于委托数量,则清仓卖出剩余数量。关闭清仓设置委托数量不变。
第三步,参数设置完成,点击“确定”,确认设置后即可新建网格交易策略。
多标的策略
第一步,标的池导入:点击标的池导入
。
第二步,选择标的池:选择已有标的池或新建标的池,选中需要设置网格交易的标的并点击下一步
。标的池可在【交易工具-标的池】界面进行管理。
第三步,设置默认参数:设置上一步选中标的的默认参数。最左侧交易标的为上一步选中标的,此页面下设置的默认参数会对全部交易标的
生效。
第四步,参数微调:在最左侧选择需要参数微调的交易标的,设置单个symbol
的参数,不需要参数微调的symbol会采用上一步设置的默认参数。如果全部交易标的都不需要微调,统一采用默认参数,可直接点击确定
。
第五步,确认设置:网格交易参数设置完成,点击确定
,确认设置后即可新建网格交易策略。没有参数微调的symbol,以默认参数设置进入设置确认表单。
涨停开板
智能策略-涨停开板支持品种:股票、场内基金和可转债
跟踪一只涨停标的,当它的买一封盘数量出现绝对手数或者相对流通盘的比例小于设定值的时候卖出指定比例。买一封盘数量默认为 0,意思是开板触发卖出。卖出比例参数默认全部卖出,策略任务的有效期默认当日有效。
信号触发1
- 涨停标的买一封盘数量小于设定值,或买一封盘数量相对流通股本的比例小于设定值,会触发涨停开板卖出信号。
信号执行1
- 条件触发的信号以市价委托卖出,委托数量=可卖数量×卖出股票比例%,以100为单位向下取整。
策略创建1
- 在智能策略页,点击 涨停开板;
- 在弹出的窗口中设置证券代码,如‘SZSE.300819’;
- 设置买一封盘数量,如低于 1 手;
- 填写卖出比例,如 100%;
- 选择卖出委托方式,如 即时成交剩余撤销;
- 设置有效期和任务启动方式,如有效期选择‘当日有效’、任务启动选择‘立即启动’,点击确认按钮就可以成功设置涨停开板策略了。
自动打新
自动打新可以每天在指定的打新时间申购新股,避免错失新股收益。
注意:自动打新仅支持实盘账户。
信号触发2
- 在有效期内每天的指定时间触发自动打新信号。
信号执行2
- 信号触发后,根据可申购数量申购最大限额。
策略创建2
- 在智能策略页,点击 自动打新;
- 设置打新申购时间、策略有效期;
- 最后按需设置有效期、任务启动方式,点击确认按钮就可以成功设置自动打新了。
自动逆回购
每天定时自动操作国债逆回购,避免账户资金闲置。
注意:自动逆回购仅支持实盘账户。
信号触发3
- 在有效期内每天的开始执行时间到达后,如果逆回购代码的行情现价不低于设置的最低年化收益率,会触发逆回购信号。
信号执行3
- 信号触发后,以限价委托,价格=max(实时最新价,最低年化收益率%×100),委托数量=可用资金×使用可用资金比例%/单张面额100,以10为单位向下取整。
策略创建3
- 在智能策略页,点击 自动逆回购;
- 先选择逆回购标的,上海和深圳都是1000元起;
- 然后设置逆回购资金占账户可用资金的比例、开始执行时间和最低年化收益率;
- 考虑逆回购手续费,建议可用资金比例设置小于100%
- 最后按需设置有效期、任务启动方式,点击确认按钮就可以成功设置自动逆回购了。
算法交易
算法交易介绍
东财掘金算法交易采用云服务算法模式,相比策略级算法交易或者本地算法交易有以下特点:
- 行情/交易延迟小,委托任务的拆单算法在券商专有机房执行,专线行情+内网极速柜台接入
- 算法可靠,服务级经典算法模型,tick 级盘口分析,并提供多项控制参数
- 运行稳定,执行过程的母单(原始委托任务)、子单(算法根据原始委托任务自动拆解的可执行委托)、回报实时推送到本地
基本规则
- 算法交易工具仅支持股票交易
- 部分终端版本无算法交易,以实际有算法交易的实盘为准
- 算法交易自动拆解的子单等同于普通委托
- 算法交易自动拆解的子单全部为限价单,且会在终端委托列表内同步显示
- 算法交易仅管理维护本次任务算法拆解的子单,而不会参考其他等同条件下的其他单
算法适用
- 适用于母单订单量较大的各类程序化、手工交易场景及其他频繁换仓的用户;母单执行时间大于半小时以上的交易执行,效果更加显著
算法限制
- 如股票出现临时停牌或涨跌停时,有不能完整完成客户委托数量的可能
- 用户当日委托的交易金额过大时,可能受到市场流动性不足的影响从而降低算法运行的效果,建议母单量不超过指定交易时段内预期成交量的 15%
下单面板
算法名称:下拉选择可供使用的算法名称,不同的算法应用于不同的交易需求,后续会不断增加算法模型
- ATS-SMART 算法:根据用户委托交易特征,通过对市场高频数据的实时分析和处理,利用程序化分析动态选择最优算法执行用户委托。具有高完成度,高稳定性,高隐蔽性,低敞口等特点,在不同持仓风格场景下,中长期均体现出稳定超越 TWAP/VWAP 基准的效果
- ZC-POV 算法:比例成交算法(Percentage of volume),通过追踪目标股票流动性,按照市场参与度完成用户委托交易。算法针对性解决股票交易中大金额委托造成的交易冲击、目的暴露、完成率低等问题,更加贴近客户的真实委托意愿
ATS-SMART 算法参数
开始时间(P1):策略开始执行的时间(剔除非交易时间段)。如果开始时间早于策略下达时间点时,则使用下达时间作为开始时间 结束参考时间(P2): 结束参考时间,和结束时间一致 结束时间(P3):策略停止执行的时间(剔除非交易时间段)。过了结束时间还未完成的数量,将会自动释放到指令。算法执行的区间段,时间越短,任务执行强度(委托频率和单笔委托量)越高 结束时间是否有效:算法在结束时间是否有效,如设为无效,则以收盘时间为结束时间 涨停时是否停止卖出:标的在涨停时是否需要停止卖出 跌停时是否撤单:标的在跌停时是否需要撤单 最小交易金额:控制子单单笔委托的最小金额 该参数只适用于股票。A 股单位为元 基准价格:此算法不生效
注意:p3 必须晚于 p2,p2 必须晚于 p1,交易时长必须大于 3 分钟,不得晚于 14:55,交易数据不应该早于当前时间
ZC-POV 算法参数
参与率:市场参与率,即每日委托总量占市场真实交易额的比例(上交易日参考标准),默认 30%,最高委托量比例限制为 45%。 基准价格:算法模型的参考基准价格,这里指限价。卖出时,当市场价格低于此价格就停止交易,再次高于此价格就恢复交易,并且补回前面应停止交易而少交易的量;买入时,当市场价格高于此价格就停止交易,再次低于此价格就恢复交易,并且补回前面应停止交易而少交易的量。当填入价格为 0 时,则不设置基准价。
任务列表
算法交易任务列表记录了母单任务列表及子单列表
撤销母单:算法服务会进行撤销操作,撤销当前任务并取消所有未结子单 暂停母单:算法服务处于暂停状态,不再进行子单拆解(ATS-SMART 算法不生效) 撤销子单:子单的独立撤销并不属于算法交易范畴,需要在普通委托的未结委托处进行撤销
交易接口
algo_order_pause 暂停或启动算法母单(ATS-SMART 算法不支持)
get_algo_child_orders 查询算法母单的所有子单
注意:仅实盘支持算法单, 点击蓝色字体可获取接口具体用法 接口适用于:python、C++、C#
示例
ATS-SMART 算法示例
# coding=utf-8
from gm.api import *
from gm.model import DictLikeAlgoOrder
from gm.pb.account_pb2 import AlgoOrder
from datetime import timedelta
"""
算法单新增api在 sdk 的 gm.api.trade.py 文件里, 有如下函数, 具体函数签名可点进去看api文档
algo_order
algo_order_cancel
algo_order_pause
get_algo_child_orders
get_algo_orders
start_time str 开始时间
end_time_referred str 结束参考时间(不能超过14:55:00)
end_time str 结束时间(不能超过14:55:00)
end_time_valid int 结束时间是否有效,如设为无效,则以收盘时间为结束时间, 1为有效, 0为无效
stop_sell_when_dl int 涨停时是否停止卖出, 1为是,0为否
cancel_when_pl int 跌停时是否撤单, 1为是, 0为否
min_trade_amount int 最小交易金额
"""
# ATS-SMART算法示例, 仅接口使用示例
def init(context):
time = (context.now + timedelta(seconds=3)).strftime('%H:%M:%S')
schedule(schedule_func=algo, date_rule='1d', time_rule=time)
def algo(context):
# 算法名
algo_name = 'ATS-SMART'
# 算法参数格式如下
algo_param = {'start_time': '13:00:00', 'end_time_referred': '14:55:00', 'end_time': '14:00:00', 'end_time_valid': 1, 'stop_sell_when_dl': 1,
'cancel_when_pl': 0, 'min_trade_amount': 100000}
symbol = 'SHSE.600008'
# 基准价, 算法母单需要是限价单
price = current(symbol)[0]['price']
aorder = algo_order(symbol=symbol, volume=2000, side=OrderSide_Buy, order_type=OrderType_Limit,
position_effect=PositionEffect_Open, price=price, algo_name=algo_name, algo_param=algo_param)
# 提取算法单的 cl_ord_id 委托客户端ID, 用于其它api的查询, 或者撤单时用
context.algo_order_id = aorder[0]['cl_ord_id']
# 撤销指定cl_ord_id的算法母单
# aorders = get_algo_orders(account='')
# wait_cancel_orders = [{'cl_ord_id': aorders[0]['cl_ord_id'], 'account_id': aorders[0]['account_id']}]
# algo_order_cancel(wait_cancel_orders)
def on_order_status(context, order):
# 算法子单已成
if order['status'] == 3:
# 查询指定cl_ord_id算法母单的所有子单
child_order = get_algo_child_orders(context.algo_order_id, account='')
print('算法子单: child_order ={}'.format(child_order))
def on_algo_order_status(context, algo_order):
# type: (Context, DictLikeAlgoOrder) -> NoReturn
"""
算法单状态事件. 参数algo_order为算法单的信息
响应算法单状态更新事情,下算法单后状态更新时被触发
3.0.125 后增加.
"""
print('算法单状态变化: algo_order={}'.format(algo_order))
# 算法母单已报
if algo_order['status'] == 1:
# 查询算法母单, 默认账户account填空
aorders = get_algo_orders(account='')
print('算法母单: aorders ={}'.format(aorders))
if __name__ == '__main__':
'''
strategy_id策略ID,由系统生成
filename文件名,请与本文件名保持一致
mode实时模式:MODE_LIVE回测模式:MODE_BACKTEST
token绑定计算机的ID,可在系统设置-密钥管理中生成
backtest_start_time回测开始时间
backtest_end_time回测结束时间
backtest_adjust股票复权方式不复权:ADJUST_NONE前复权:ADJUST_PREV后复权:ADJUST_POST
backtest_initial_cash回测初始资金
backtest_commission_ratio回测佣金比例
backtest_slippage_ratio回测滑点比例
'''
run(strategy_id='3acc8b6e-af54-11e9-b2de-00163e0a4100',
filename='main.py',
mode=MODE_LIVE,
token='2c4e3c59cde776ebc268bf6d7b4c457f204482b3',
backtest_start_time='2020-11-02 08:00:00',
backtest_end_time='2020-11-02 16:00:00',
backtest_adjust=ADJUST_PREV,
backtest_initial_cash=10000000,
backtest_commission_ratio=0.0001,
backtest_slippage_ratio=0.0001)
ZC-POV 算法示例
# coding=utf-8
from gm.api import *
from gm.model import DictLikeAlgoOrder
from gm.pb.account_pb2 import AlgoOrder
from datetime import timedelta
"""
participation_rate 市场参与率,单位%(5.0 表示5%),默认30,即30%,最大值为45
"""
# ZC-POV算法示例, 仅接口使用示例
def init(context):
time = (context.now + timedelta(seconds=3)).strftime('%H:%M:%S')
schedule(schedule_func=algo, date_rule='1d', time_rule=time)
def algo(context):
# 算法名
algo_name = 'ZC-POV'
symbol = 'SHSE.600007'
# 基准价, 算法母单需要是限价单
price = current(symbol)[0]['price']
# 算法参数格式如下
algo_param = {"participation_rate" : 15, "price": price}
aorder = algo_order(symbol=symbol, volume=1000, side=OrderSide_Buy, order_type=OrderType_Limit,
position_effect=PositionEffect_Open, price=price, algo_name=algo_name, algo_param=algo_param)
print(aorder)
# 提取算法单的 cl_ord_id 委托客户端ID, 用于其它api的查询, 或者撤单时用
context.algo_order_id = aorder[0]['cl_ord_id']
# 撤销指定cl_ord_id的算法母单
# aorders = get_algo_orders(account='')
# wait_cancel_orders = [{'cl_ord_id': aorders[0]['cl_ord_id'], 'account_id': aorders[0]['account_id']}]
# algo_order_cancel(wait_cancel_orders)
def on_order_status(context, order):
# 算法子单已成
if order['status'] == 3:
# 查询指定cl_ord_id算法母单的所有子单
child_order = get_algo_child_orders(context.algo_order_id, account='')
print('算法子单: child_order ={}'.format(child_order))
def on_algo_order_status(context, algo_order):
# type: (Context, DictLikeAlgoOrder) -> NoReturn
"""
算法单状态事件. 参数algo_order为算法单的信息
响应算法单状态更新事情,下算法单后状态更新时被触发
3.0.125 后增加.
"""
print('算法单状态变化: algo_order={}'.format(algo_order))
# 算法母单已报
if algo_order['status'] == 1:
# 查询算法母单, 默认账户account填空
aorders = get_algo_orders(account='')
print('算法母单: aorders ={}'.format(aorders))
if __name__ == '__main__':
'''
strategy_id策略ID,由系统生成
filename文件名,请与本文件名保持一致
mode实时模式:MODE_LIVE回测模式:MODE_BACKTEST
token绑定计算机的ID,可在系统设置-密钥管理中生成
backtest_start_time回测开始时间
backtest_end_time回测结束时间
backtest_adjust股票复权方式不复权:ADJUST_NONE前复权:ADJUST_PREV后复权:ADJUST_POST
backtest_initial_cash回测初始资金
backtest_commission_ratio回测佣金比例
backtest_slippage_ratio回测滑点比例
'''
run(strategy_id='strategy_id',
filename='main.py',
mode=MODE_LIVE,
token='token',
backtest_start_time='2020-11-02 08:00:00',
backtest_end_time='2020-11-02 16:00:00',
backtest_adjust=ADJUST_PREV,
backtest_initial_cash=10000000,
backtest_commission_ratio=0.0001,
backtest_slippage_ratio=0.0001)