$保变电气(SH600550)$ $岭南股份(SZ002717)$ $国中水务(SH600187)$
我一直认为,对于波段操作和长期持股的战法,大家完全可以用专门的回测软件进行回测,一劳永逸,只需要关注设置量化条件就行,而不需要自己一天一天的下载数据。
而短线交易,这些系统自带的回测软件其“智能”程度还不够,往往回测结果驴唇不对马嘴。也就是说单单用指标“量化”还不够。
所以,还是需要一天一天的人工回测。与其说是短线回测,不如说是一天一天的“复盘”。
我的评论区有不少高手知道如何调整量化指标,也有些刚接触短线量化的股友喜欢“拿来主义”,还有些股友“凭感觉”说话。无论是哪种情况,如果不回测,那就和瞎子摸象一样。
我分享一下我常用的“短线”量化回测方法。希望大家有自主能力:
1. 验证新的量化指标
2. “抄作业前”评估选股策略
3. 评估有明确“战法”的收费软件
我常用的回测软件是带有类似于AI语句识别功能的问财和东财的智能选股。案例分析用的语句是问财版的。
写连板票搜索语句
首先,在设置量化策略前(写选股搜索语句前),每一个思路都可以用语言表达出来。
连板票选股思路
比如,我想开发一个连板票选股策略,每天在开盘的几分钟能够搜到大概率能够连板的连板票。
1. 开盘上涨,不能砸盘
2. 主力参与程度比较高
这个思路其实很简单。接下来要把这个思路转化成选股条件。我们可以写选股语句。
选股语句
1. 开盘上涨,不能砸盘
我们设定开盘指的是开盘3分钟,先用开盘3分钟作为“default参数”代表。
那么开盘上涨可以写成:
9:33涨幅大于0
开盘不能砸盘:
其实就是阳线的意思:
(9:33股价-9:30股价)大于0
之前直接写9:33阳线在回测时系统不认,所以改用这个写法代替。只要系统“认”就行,意思是一样的,写法多种多样。
主力参与程度比较高:
可以这么写:
(9:33大单买入量/自由流通股数)大于1.3%
这是市占比语句,为啥是1.3%?其实这是个经验值,以往回测过后常用的一个参数,比如路径语句就是这么写的。学会了回测后,可以根据回测结果自行调整参数,或增加参数。
连板票
如何定义连板票?很简单,就是昨日有涨停。至于几连板,我们先不管,今后有优化需求再说,先这么写:
前1个交易日涨停
完整的语句
9:33涨幅大于0,(9:33股价-9:30股价)大于0,(9:33大单买入量/自由流通股数)大于1.3%,(9:33大单买入量/自由流通股数)大于1.3%,前1个交易日涨停
回测语句写法
上面这个语句只适合交易日当天回测使用,如果想知道这个语句在过去一周的表现如何,我们可以加上日期。
一天一天回测:
9月13日
9月13日涨幅, 创业板或主板非st,9月13日9:33涨幅大于0,(9月13日9:33股价-9月13日9:30股价)大于0,(9月13日9:33大单买入量/自由流通股数)大于1.3%, 9月13日前1个交易日涨停,
这里“9月13日涨幅”,是专门为回测语句加上的。这个没有写条件的语句是我们回测的一个技巧。
这些语句不会对搜索结果产生影响,但我们想知道其数值,以便分析。如果我们想看看某些量化指标是否会提高成功率,我们先写一个这样不设置条件的语句。
比如:9月13日9:33量比,9月13日9:33换手率…
上图左侧一栏就是9月13日涨幅,如果没有写上时间,就是“收盘”涨幅。右侧一栏是“9月13日9:33分的涨幅”,对应开盘搜索语句。
可以看到,这么简单的搜索,其结果还不错,6只股票4个涨停。
大家想要继续优化的话,先要战胜我分享给大家的这个搜索语句的成功率。哈哈
继续回测…
9月12日
9月12日涨幅, 创业板或主板非st,9月12日9:33涨幅大于0,(9月12日9:33股价-9月12日9:30股价)大于0,(9月12日9:33大单买入量/自由流通股数)大于1.3%, 9月12日前1个交易日涨停
5只股票3只涨停。回测语句只需要:
1. “查找目标”写上“9月13日”,
2. “替换为”写上“9月12日”,
3. 然后按按键“全部替换”。
一般的文字编辑软件如金山文档、word等都有这种“Find”“Replace all”功能。我喜欢用编程软件Notepad++的“替换所有打开文件”功能批量写不同的回测策略进行对比。
嗯,回测语句的写作的确和编程差不多了,但用的是自然语言每个人都会写。“RUN”的编译工作就是把语句输入到问财或者东财的搜索界面。
9月11日
9月11日涨幅, 创业板或主板非st,9月11日9:33涨幅大于0,(9月11日9:33股价-9月11日9:30股价)大于0,(9月11日9:33大单买入量/自由流通股数)大于1.3%, 9月11日前1个交易日涨停
9月11日涨停的不多,还有个超15厘米大跌的阳普医疗,但是,阳普医疗次日20厘米涨停。
在统计胜率的时候,如果不点开一个一个“阅读”,我们可以写上:
“9:12日竞价涨幅,9月12日最高涨幅,9月12日涨幅”
这样写法可以把搜索结果下载到表格中,收集一天一天的信息。看看平均下来这个搜索的次日表现,比如次日平均冲高高度(最高涨幅),平均开盘高度(竞价涨幅),平均收盘高度(涨幅)。
有了这些信息,凯利公式需要的胜率、赔率、平均涨幅、平均跌幅就能统计出来。
9月10日
这个回测语句想必大家都会写了…
虽然有一半的结果涨停,但是还有另外一半妥妥的套人。
这个回测语句,除了统计胜率之外,还可以帮助我们“复盘”。
看看几个被套的股票,如果搜到后,是否有明显的信号我们可以“排除”- 管住手不买。还可以看看能不能优化搜索语句添加参数进一步精简搜索结果的同时避免“错杀”。
9月10日
当大家连续回测时会发现,其实有些股票是“昨日”的连板票,比如9月10日套人的长春一东,9月9日就搜到了,如果9月9日打板买入的话,其实9月10日炸板不是一件坏事,我们有10厘米的盈利空间。
虽然看到右侧9:33分是涨停板,不代表我们买不到。因为回测语句只是固定时间点的语句。在实盘环境中我们的搜索语句是动态的,说不定9:31分就搜到了。
另外,回测语句不是“交易策略”,只是“搜索策略”。而常见的“打板”、“回落反弹条件单买入”、“突破均线买入”、“回避首阴”、“10日线止损”,“冲高回落条件单卖出”这些都是交易策略。
所以胜率统计还需要考虑交易策略,不能单独的看单日搜索结果的涨跌幅。
如果回测软件支持这些短线专有的交易策略,以及阅读K线图实施“排除法”,这样才能满足回测的需求。但常见的回测软件都不支持这样的自动回测,我们只能手动的一天一天回测了。
回测验证的时间
一般来说,回测验证至少要3个月的数量。验证一周或一个月并做优化,很有可能这种优化只适合特定股市周期。
就算回测3个月,也有可能正好赶上熊市的超跌阶段或者牛市的初始阶段,所以这种搜索没有“普遍性”。
我做过的回测已经非常多了,深有体会。经常会遇到“失效”周期。
包括评论区股友们提出的优化方案和新的指标,我都会去回测验证一下。大多数情况都经不起3个月的回测和“特定股市阶段回测”。
比如今年春节前后的百慕大三角地带就是一个验证“普遍性”的好时期。
比如2月5日处于百慕大三角地带的超跌区,出现了千股跌停的壮观,共1338只股票跌停。
那么我们刚才回测的连板语句在2月5日开盘能搜到什么呢?2月6日创业板率先反弹,2月7日小市值股票团灭,2月19日股市全面反弹…
这个回测留给大家做作业。
回测时间
超过一年以上的回测,需要写上年份,比如1月5日是一年内的1月5日,指的是2024年1月5日,如果想回测2023年的,需要写上2023年1月5日。
如果想改变开盘时间,只要更换9:33为“9:35”。
回测竞价搜索时,一般可以用9:25或9:30代替。这两个时间点数值是一样的,都能代表竞价。但有的数值9:30才有,比如“大单净比”9:25分是没有的,9:30分才有。
而在实盘中,用实时动态语句,9:30分的数据其实9:27分就有可能都搜到了,会有提前量。
实时动态语句
创业板或主板非st,涨幅大于0,(股价-竞价)大于等于0,(大单买入量/自由流通股数)大于1.3%, 前1个交易日涨停
这个语句就是上面回测语句对应的“实时动态”语句。
当你使用动态语句搜索时,取决于你的搜索时间,比如今天9:27分,而今天是9月14日,那么动态语句给你反馈的数据是9月13日的数据,因为昨天是交易日,而今天不是。
另外,前一个交易日,对于今天来说也是9月13日。所以“前1个交易日涨停”指的是9月13日涨停,而不是我们想要的9月12日涨停数据。
但如果今天是个交易日,动态语句才会正常工作。要注意的是,动态语句如果超出了“开盘”时间,比如超出了9:35分,那么开盘搜索语句搜到的结果就会越来越多,因为成交量在上升!
所以动态语句适合交易日“提前搜索”。比如回测语句是9:33分,实盘语句9:27分(竞价)或者9:31分就有可能出结果。
比如分享给大家的连板票搜索语句就有可能竞价结束9:25分之后9:30分之前搜到。
为了实现竞价就能搜到,我把阳线语句写成了“大于等于0”而不是大于0。因为如果你9:27分搜索,股价就是竞价,两者是一样的。
小结
上面分享的是个连板票搜索语句及其回测方法。总体上这个语句回测还不错,能够通过各种阶段的测试。但还有一些优化空间。
案例分享的目的是希望大家学会短线回测,在“抄作业”前最好先回测评估一下,适合复盘练习,以及开发自己的交易策略了。选股搜索只是第一步。
对于一些高手,在“优化指标”之前希望大家能做到充分回测验证,不要偷懒!
最后,在充分回测的基础上,希望大家多多提优化意见,大家一起进步。
本文作者可以追加内容哦 !