掘金社区

股市暴跌深套 | 如何利用日内回转交易策略降低持仓成本Pinned highlighted

掘金小Q 【 论坛管理员 】 发表在策略研究 2018-08-15 16:03:06

策略研究
3063
6
0

介绍

最近的大盘,走势真的一谷更比一谷低,如果说世界上还有什么沟是比马里亚纳海沟更深的话,我觉得 A 股投 资者肯定会举双手双脚赞成,我们的大 A股,当之无愧,世界第一沟!!!

最近网上流传着一个段子,说美国股市十年,市场翻了十倍,投资者高兴地说,感谢自由女神,我要去周游世界,德国人炒股十年,股市翻了九倍,他高兴地说,感谢上帝,我要去买个新房子;巴西人,炒股十年,翻了五倍,他说,感谢上帝,我要娶两个老婆;而中国人炒股,十年过去了,上市公司老板买了新别墅,新豪车,娶了新 太太,他们还带着资产出了国。

笑话,调侃调侃即可,但中间也说明了一些东西,如果作为一个普通投资者,什么都不懂,闷头进场,就僵卧不动,装死,在中国的 A股市场,你可挣不了什么钱,相比十年前,考虑到同期利率,投资者可是亏的。但是,是不是说普通投资者就真的没有机会了么?也不尽然吧,合理地投资理念,合理的进场出场点设置,实际从我大 A 股历史走势来看,又不是没有辉煌过,只是,在它辉煌的时候,你是否及时立场,在它低谷的时候,你是否又对他不离不弃呢?

最近证监会各种规定出台,股市也重回 10 年前,一方面,固然代表股市很烂,但另一方面,也说明股市的风险也变得越来越小。可惜的是,很多投资者看着自己装死的股票,即便现在股市已经跌无可跌,一方面,没钱补仓,另一方面,已有的装死股票,持有成本那么高,不免唏嘘。

在本文,笔者试着去介绍日内交易法的程序化实现,抛砖引玉,希望老股民们能基于笔者提出的日内交易量化方案,去修改,更新得到属于自己的日内交易方案,在现在股市哪怕处在深沟的时候,也能通过日内的高卖低买,实现降低持仓成本的理想。

策略方案

相信很多读者都听说过国内有所谓的 T+0 工厂,一堆交易员盯着实时盘面,股价一旦拐头向下,立刻就卖出,股价一旦拐头向上,立刻买入。当然,这样做会有一些问题,包括:1.券源的来源与成本,甚至会有法律风险;2. 对交易员的精力和体力考验,本职工作都在,专职去炒股?未免不太现实 3. 交易的实时性,当看到自己认为的信号的时候,手忙脚乱去操作,结果发现却发现没有游戏高手的键鼠操作能力,股价已经脱离了掌控。

作为普通投资者,手里沉淀着一些股票,完全可以不用去借券,用手上套的牢牢的股票自己去做 T+0 交易,完全合理合法,而且给股市提供流动性,利国利民啊。但是,还有个问题,相比专业的交易员,普通投资者,精力和体力跟不跟得上,实在是个大问题,而且,想法挺好,原本想着在日内低买高卖,降低持仓成本的,结果不成想,理想太美好,现实太残酷,碰到这样的情况,还做什么交易啊,安安心心、任劳任怨去为社会主义添砖加瓦吧。

不过还好,类似掘金量化这样的量化软件出现,对于我们去验证想法,实现快速交易,相比手工操作有着无与伦比 的优势。首先,提出一个合理的日内交易的想法,譬如,我这里想了一个很简单的交易方案,赚不赚钱不知道,但至少这个想法靠不靠谱,拍脑袋不行,我把它落实到代码上,用历史数据回测看看咯。这里,笔者假设自己做一个通道择时交易,操作逻辑如下:

  1. 股价突破 10 分钟高点,买入
  2. 股价突破 10 分钟低点,卖出

当然,初衷不能忘,咱可是为了降低持仓成本的,而不是去割肉或者再次头脑发热,拿着压箱底的一点家当再次进入这个怎么看怎么不美的股市。因此,有一些纪律,在交易前,必须给自己,给自己狂热的心,束上金箍。

  1. 日内交易必须先有卖出,然后才有买入;
  2. 因为是日内交易,而且做得通道突破策略,趋势策略最怕震荡行情,因此,定下规矩,每日包括开平仓,最多 操作 10 次;
  3. 每次操作最多不超过总持仓一半的五分之一;
  4. 每日收盘前,必须保证总仓位一致。

代码实现步骤

既然规矩定下了,现在就是建模实现啦,到了激动人心的时刻,笔者很乐意将代码分享给读者,不过考虑到现在大家都喜欢做安静的看客,笔者作为一个辛苦笔耕的人,实在感受不到一点原动力,再加上不少公众号,恶心人地未经本人同意,就乱转载本人的文章,实在是开心不能。

因此,这里,笔者会对量化过程中的某些点加以讲解,详细代码,不管好与坏,请分享并关注,然后添加小编索取,当然,如果读者想自己实现,并有这个毅力,笔者会感到更加欣慰,这里,笔者会针对该策略建模过程中的一些难点与坑,进行一些说明,如果读者感兴趣,完全可以自己去复现策略。

反正 “纸上得来终觉浅,绝知此事要躬行”。

1.换日的处理 因为做的是日内交易,因此,在回测时候,兼顾效率和准确性,建议采用 "60s" 频率的数据,但是,这样会产生一个问题,换日的时候,某些数据需要更新,譬如,记录日内交易次数的变量,当日买入股票的数目,这些变量,在换日的时候,需要进行重置。当然,处理起来也比较简单,可以首先定义一个时间游标,游标设定为回测起始时间之前一日,这样,换日的时候,先判断当前的时间 context.now 是不是和时间游标的日期相同,不同的时候,将时间游标设定为 context.now 的日期,这样,就可以在换日的时候,实现自动更新数据了。以下是代码片段:

0_1534320000414_001.png

2.日内回转交易,首先,得有底仓,这个问题,感觉上程序上处理起来比较麻烦。后来,笔者想了一个 办法,就是设置一个 flag,在回测过程中运行一次,就是在最开始的时候,买入底仓股票,之后 就是在这个底仓股票上进行 T+0交易,想起来比较麻烦,想通了做起来就挺简单的了,示例代码如下:

0_1534320036862_002.png

3.考虑到下午三点收盘,如果在收盘前还不进行平仓,最后到收盘,未必能保持仓位平衡,因此,笔者设置在下午两点三十,就不再进行操作了,而在两点三十到两点五十,则用来进行仓位平衡工作。

4.时间仓促,掘金的小编催稿,但是策略总得完成啊,于是厚颜仓促完成了一个简单版本的日内回转策略,股票池就用平安银行和浦发银行试试吧,笔者有个朋友,听从国家号召,坚决只购买基本面良好的股票,于是重仓买入某银行股票,被套住了,现在装死中,笔者试着写个日内回转交易的框架,希望给和笔者 朋友一样的股民朋友,一点启发与帮助吧。

回测效果

仓促完成的策略,效果其实一般,笔者这里回测了从 2018 年 1 月 1 日到 2018 年 8 月 10 日,平安银行和浦发银行的操作,收益图如下:

0_1534320080185_003.png

当然,效果其实一般,而且代码匆匆促就,肯定中间还有这样那样的问题,也希望抛砖引玉吧,希望读者有什么好的建议 或者看法,留言给我们看看。

最后的话

从想法,到实践,可能读者觉得笔者实现起来简单,但是其实,细节处理往往非常折磨人,以致于往往也就百来行代码,实际从写成初步的框架到测试完成,精力与时间远远超过最初的想象。当然,熟能生巧,更何况,在不断处理与练习过程中,进步与灵感也会不断过来找你。

最近看到市面上好多挂羊头卖狗肉的乱七八糟的玩意,笔者也曾经遇到不少,实在是踩了不少坑,走了不少弯路,而很多弯路,明明是不用去走的,金钱的付出且不说,时间,可能远比我们想象的更珍贵。

最后,送给所有读者一句话, “纸上得来终觉浅,绝知此事要躬行”,夸夸其谈容易,俯身躬行才是真正磨人与 锻炼人的,祝大家都能进步。

作者: 胡琛 (南京师范大学理论物理博士) 未经授权不得转载!

评论: 6
  • 好,非常好!写的很实在也很深刻!

    2018-08-21 14:51:30
  • @157371-608 欢迎加掘金小Q的微信号:myquant2018,邀你进掘金量化俱乐部微信群,与本文作者交流😉

    2018-08-21 15:25:35
  • 你好。假如我只想做某只自己的股票,跌到某个特定价位加仓10%,升到某个价位减仓10%。这个价格是固定的,能介绍一下代码吗?

    2019-03-30 13:23:35
  • @wayaqa 这个就是网格了,我做了个网格的交易策略,并实现了交易api,费用优惠,有兴趣可以私聊。

    2019-11-01 22:49:05
  • @七七 有兴趣网格交易。怎么私聊

    2019-11-05 22:12:47
  • 其实还不错了,写得挺好的

    2019-11-13 02:26:58

Looks like your connection to 掘金量化社区 - 量化交易者的策略交流学习社区 was lost, please wait while we try to reconnect.