俗话说富贵险中求,那是没有办法的事。那么,在 A 股市场中,有没有一些股票能让我们稳稳当当的坐着,还能把钱赚了?
为了选出这些对象,我们给定下面的条件:首先,这支股票的价格在中长期整体上必须一直上涨;第二,允许它价格回调,但不能折磨我们的小心脏;第三,它在最近短期内仍然整体上是上涨的;第四...暂时就不加第四了,以妨要求过高,最终找不着对象。
然而问题来了,上面的条件都是一种抽象的描述,怎么落实?量化分析。我不希望得用我自己的人工智能看几天 K 线把股票给选出来。以上想法各人落实起来,量化的方式也许是不一致的,下面我们实现一种。
首先,我们需要三条均线,ma60,ma120, ma250,这三条均线必须依次排列,短高长低无交叉。这就保证了整体上涨的趋势被提取了出来。
最后,我们需要计算短期涨跌幅,并按上涨幅度排序。
是不是超简单?下面是我们需要的一系列指标:
Factor ma60 = new SMAFactor(60);
Factor ma120 = new SMAFactor(120);
Factor ma250 = new SMAFactor(250);
Factor pf = new PERIODFLUCTUATEFactor(20);
然后每日回测的时候,把均线排列不符合要求的股票去除,最后剩下符合我们要求的股票:
public void handleData(BackTestContext context, BarData data) throws Exception {
List<String> toRemove = new ArrayList<String>();
for(String stock:context.universe) {
double v60 = ma60.get(stock);
double v120 = ma120.get(stock);
double v250 = ma250.get(stock);
if(v60>v120 && v120>v250) {
addStock(stock);
} else {
toRemove.add(stock);
}
}
for(String stock:toRemove) {
context.universe.remove(stock);
}
}
在回测结束后,从最终的股票集中,选出近期仍然有上涨趋势的股票:
public void afterTestLoop() throws Exception {
log.info(context.universe);
for(String stock:context.universe) {
double p = pf.get(stock);
if(p>0) {
selector.add(new SelectedStock(stock, p));
}
}
List<SelectedStock> list = selector.captureTop();
log.info(list);
}
结果就出来了:
泸州老窖( 000568 )
华帝股份( 002035 )
大龙肉食( 002726 )
华域汽车( 600741 )
涪陵电力( 600452 )
万华化学( 600309 )
贵州茅台( 600519 )
格力电器( 000651 )
上汽集团( 600104 )
重庆啤酒( 600132 )
是的,我们想要的就是符合下面要求的均线排列( 000568 ),码的越齐,挑的越高越好!
当时我就惊呆了,其中至少有 4 支股票在我去年年初的长期持股的计划单里,然而呢?可是呢?一点波动就把我动摇了。那么,还有没有更稳当的股票?
那就需要大家去镭矿验证一下了。简单的修改一下上面用到的周期参数,就能得到您自己订制的股票集。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.