精华帖 (0) :: 良好帖 (0) :: 新手帖 (1) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-09-12
最后修改:2011-09-17
@Grab(group='com.gmongo', module='gmongo', version='0.9.1') import com.gmongo.GMongo import com.mongodb.* import java.text.*; def mongo = new GMongo() def db = mongo.getDB("stock_analysis") db.stocks.find().each{stock-> stockTrading=db.getCollection(stock.code+"."+stock.exchange) analysingEndDate="2011-09-02" //过滤上市不满2月的股票 if(stockTrading.find().count()>=44) { tradings=[] stockTrading.find().each{trading-> daily=[:] daily=[date: trading.date, close: trading.close, volume: trading.volume] tradings << daily } i=0 for(i=0;i<240;i++) { if(tradings[i].date<=analysingEndDate) { break; } } for(j=0;j<i;j++) { tradings =tradings-tradings[0] } tradings=tradings[0..20] if( stock.name.contains("ST")==false && tradings[0..10]*.close.min()*1.1<tradings[0].close && tradings[0..20]*.close.sum()/20<tradings[0].close && tradings[0..20]*.volume.sum()/21*2<tradings[0..4]*.volume.sum()/5) { //println "${stock.code}.${stock.exchange} ${stock.name} ${new DecimalFormat("##.##").format(price10DaysClose*100/price10DaysLowest-100)}%" println "${stock.code}.${stock.exchange} ${stock.name}" } } } 对过滤条件做个解释: 1) 不选ST stock.name.contains("ST")==false 2) 已分析日股价>过去10内低点的1.1倍 tradings[0..10]*.close.min()*1.1<tradings[0].close 3) 分析日股价>20日均价 tradings[0..20]*.close.sum()/20<tradings[0].close 4) 20日均量的2倍<近5日均量 tradings[0..20]*.volume.sum()/21*2<tradings[0..4]*.volume.sum()/5 ... 其他条件扩展应该是很简单的 分析结果: 600057.ss 象屿股份 600136.ss 道博股份 600302.ss 标准股份 600356.ss 恒丰纸业 600371.ss 万向德农 600396.ss 金山股份 600470.ss 六国化工 600552.ss 方兴科技 600748.ss 上实发展 600754.ss 锦江股份 600824.ss 益民集团 601116.ss 三江购物 000031.sz 中粮地产 000518.sz 四环生物 000668.sz 荣丰控股 002100.sz 天康生物 002242.sz 九阳股份 002335.sz 科华恒盛 002387.sz 黑牛食品 300129.sz 泰胜风能 输出完成 (耗时 33 秒) - 正常终止 后续工作:
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-09-12
股价信息数据是从哪来得,能介绍一下吗?
|
|
返回顶楼 | |
发表时间:2011-09-12
guoapeng 写道 股价信息数据是从哪来得,能介绍一下吗? 1) 股票清单:大智慧导出 2) 日数据:Yahoo Stock API |
|
返回顶楼 | |
发表时间:2011-09-12
guoapeng 写道 股价信息数据是从哪来得,能介绍一下吗? 日数据下载程序: @Grab(group='com.gmongo', module='gmongo', version='0.9.1') import com.gmongo.GMongo import com.mongodb.* //date=Date.parse("yyyy-MM-dd",table.find(date:"2011-09-11").next().date) def mongo = new GMongo() def db = mongo.getDB("stock_analysis") fileUrlList=new File("./tmp/url_list.tmp") fileRenameBatch=new File("./tmp/incremental_downloader.bat") fileRenameBatch.append("wget -i url_list.tmp\r\n") db.stocks.find().each{stock-> //构造URL: http://ichart.yahoo.com/table.csv?s=002250.sz&a=0&b=2&c=2011&d=8&e=2&f=2011 stockTrading=db[stock.code+"."+stock.exchange] lastStoredDate=null if(stockTrading.find().size()>0) { lastStoredDate=stockTrading.findOne().date } endDate=(new Date()-1) if(lastStoredDate!=null) {//增量下载 beginDate=(Date.parse("yyyy-MM-dd",stockTrading.findOne().date)+1) url="http://ichart.yahoo.com/table.csv?s=${stock.code}.${stock.exchange}&a=${beginDate.month}&b=${beginDate.day}&c=${beginDate.format("yyyy")}&d=${endDate.month}&e=${endDate.day}&f=${endDate.format("yyyy")}\r\n" fileUrlList.append(url) //table.csv@s=600000 cmd="mv \"table.csv@s=${stock.code}.${stock.exchange}&a=${beginDate.month}&b=${beginDate.day}&c=${beginDate.format("yyyy")}&d=${endDate.month}&e=${endDate.day}&f=${endDate.format("yyyy")}\" ${stock.code}.${stock.exchange}.dat\r\n" fileRenameBatch.append(cmd) println " 增量: ${stock.code} ${stock.name} ${beginDate.format("yyyy-MM-dd")} ${endDate.format("yyyy-MM-dd")}" }else{ //全量下载 url="http://ichart.yahoo.com/table.csv?s=${stock.code}.${stock.exchange}\r\n" fileUrlList.append(url) //table.csv@s=600000 cmd="mv \"table.csv@s=${stock.code}.${stock.exchange}\" ${stock.code}.${stock.exchange}.dat\r\n" fileRenameBatch.append(cmd) println " 全量: ${stock.code} ${stock.name}" } } |
|
返回顶楼 | |
发表时间:2011-09-14
基本上分析的不靠铺
|
|
返回顶楼 | |
发表时间:2011-09-14
这是什么语言啊?
|
|
返回顶楼 | |
发表时间:2011-09-14
langhua9527 写道 这是什么语言啊?
Groovy |
|
返回顶楼 | |
发表时间:2011-09-14
我宁可研究一下大智慧的选股公式了,还可以图形化输出。
|
|
返回顶楼 | |
发表时间:2011-09-14
一切分析都是浮云。
|
|
返回顶楼 | |
发表时间:2011-09-14
一切分析都是辅助,程序只是工具,用来减轻负担,缩小范围,个人看法
|
|
返回顶楼 | |