日内操作 8月3日 & 4日 没有交易,维持不动

股票绫波丽 发表了文章 • 0 个评论 • 2919 次浏览 • 2016-08-05 00:54 • 来自相关话题

因为仓位太重,没办法动。
而且这两天都没有盯盘,所以全天也找不到机会挪仓。(因为本来计划要腾出1/3的 仓位出来的)
只是手拿的这些票基本都是超跌票,但是连一个像样的反弹都没有。 不想那么快就出掉。
 
在两天炒作的题材,(举牌(廊坊发展)/无人驾驶/集成电路) 持有的个股没有这个版块的,所以资金收益跑输创业板指(我一般和创业板比,大盘有点畸形,指数不可靠)。 查看全部
因为仓位太重,没办法动。
而且这两天都没有盯盘,所以全天也找不到机会挪仓。(因为本来计划要腾出1/3的 仓位出来的)
只是手拿的这些票基本都是超跌票,但是连一个像样的反弹都没有。 不想那么快就出掉。
 
在两天炒作的题材,(举牌(廊坊发展)/无人驾驶/集成电路) 持有的个股没有这个版块的,所以资金收益跑输创业板指(我一般和创业板比,大盘有点畸形,指数不可靠)。

说实话,没觉得德州扑克有什么好玩的

回复

量化交易-Ptrade-QMT李魔佛 发起了问题 • 1 人关注 • 0 个回复 • 3796 次浏览 • 2016-08-05 00:48 • 来自相关话题

日内操作 8月2日 冲高没跑,尾盘回落

股票绫波丽 发表了文章 • 0 个评论 • 2975 次浏览 • 2016-08-02 23:28 • 来自相关话题

冲高没跑,尾盘回落
 其中之一就是雪人股份和和顺电气,雪人冲高到6%,而和顺也冲高到4.5%。 
 
要养成自己一套的操作模式。
 
行情不好模式: 空仓。 或者减仓, 如果盘中个股早盘冲高,可以减为原来的1/4或者1/3,然后看看尾盘,能否接回来。(一般做T最好3个点以上的利差)
 
牛市: 满仓持股不动。 查看全部
冲高没跑,尾盘回落
 其中之一就是雪人股份和和顺电气,雪人冲高到6%,而和顺也冲高到4.5%。 
 
要养成自己一套的操作模式。
 
行情不好模式: 空仓。 或者减仓, 如果盘中个股早盘冲高,可以减为原来的1/4或者1/3,然后看看尾盘,能否接回来。(一般做T最好3个点以上的利差)
 
牛市: 满仓持股不动。

日内操作 8月1日 躺死

股票绫波丽 发表了文章 • 0 个评论 • 2838 次浏览 • 2016-08-01 23:42 • 来自相关话题

由于周五控制不了自己的手,把最后2成仓位都满上了。 
 
而满上的那2成仓位,又是新开的仓。 今天看盘就绿3个点,1分钟不到就冲到跌停,之后全天在水下波动。 没有任何起色。
 
所以今天及其被动。 如果大盘有波动,但自己却不能动弹,是一个操作失误。
 
无论怎样,都要保留一成仓位。
 
满仓ing。
 
日亏损: 2% 查看全部
由于周五控制不了自己的手,把最后2成仓位都满上了。 
 
而满上的那2成仓位,又是新开的仓。 今天看盘就绿3个点,1分钟不到就冲到跌停,之后全天在水下波动。 没有任何起色。
 
所以今天及其被动。 如果大盘有波动,但自己却不能动弹,是一个操作失误。
 
无论怎样,都要保留一成仓位。
 
满仓ing。
 
日亏损: 2%

github提交了commit为何看不到绿色的方块?

回复

Linux李魔佛 回复了问题 • 1 人关注 • 1 个回复 • 5652 次浏览 • 2016-08-01 23:36 • 来自相关话题

社保停交后,医保处于被冻结状态,不能使用。

默认分类李魔佛 发表了文章 • 0 个评论 • 8069 次浏览 • 2016-07-30 12:30 • 来自相关话题

 社保停交后,医保处于被冻结状态,不能使用。

医疗保险指通过国家立法,按照强制性社会保险原则基本医疗保险费应由用人单位和职工个人按时足额缴纳。不按时足额缴纳的,不计个人帐户,基本医疗保险统筹基金不予支付其医疗费用。

医疗保险是为补偿疾病所带来的医疗费用的一种保险。职工因疾病、负伤、生育时,由社会或企业提供必要的医疗服务或物质帮助的社会保险。如中国的公费医疗、劳保医疗。

中国职工的医疗费用由国家、单位和个人共同负担,以减轻企业负担,避免浪费。发生保险责任事故需要进行治疗是按比例付保险金。

医疗保险在退休时必须积累一定的缴费年限(含视同缴费年限),一般规定为20年-30年,并且实际缴费年限必须达到5年(或10年),才可以在退休以后免费终身享受医疗保险保障待遇。如果在退休时的累计缴费年限不足规定要求,可以按当时的费率标准补交所差的医疗保险缴费年限。

职工医疗保险补缴:

一、医保机构征缴部门根据医疗保险欠费情况,建立欠费数据信息,填制《社会保险费补缴通知单》,通知参保单位补缴欠费。

二、对因筹资困难,无法一次足额缴清欠费的参保单位,医保机构征缴部门与其签订社会保险补缴协议。如欠费单位发生被兼并、分立、破产等情况时,按下列方法签订补缴协议。

1、欠费单位被兼并的,与兼并方签订补缴协议。

2、欠费单位分立的,与各分立方签订补缴协议。

3、欠费单位进入破产程序的,与清算组签订清偿协议。

4、单位被拍卖出售或租赁的,与主管部门签订补缴协议。

三、参保单位根据《社会保险费补缴通知单》或补缴协议办理补缴,医保机构征缴部门予以受理,并通知医保机构财务管理部门收款。

四、破产单位无法完全清偿的欠费,医保机构征缴部门受理单位破产清算组提出的申请,审核后送稽核监督部门处理。

五、医保机构征缴部门依据财务管理部门传来的职工医疗保险补缴欠费到账信息和稽核监督部门传来的核销信息,调整参保单位欠费信息。

 
 
也就是说,你工作了20年,但是突然想放松一下,间隔年一下,去个游山玩水,社保中断了交。 这个时候你的社保卡是冻结状态,这个时候你的社保卡不能到医院看病。 除非你去游山玩水期间,自己去交社保的钱,不中断。
 
这种政策真扯淡。 所以说,国家的这些政策,完全弊大于利。 医保上的钱,如果我自己全部自己拿着,去理财,福利收益20年怎么也可以翻一翻吧,一年年收益只需要几个点就够了。(1+1*x)**20=2, (其中x为年收益率,**20 是20次方,复利计算公司), 可以算出 x=3.5%, 指数运算差点忘记了擦。
而且我爱什么时候用就什么时候用, 不要考虑中断不中断。  反正呢,ZF想要把你的口袋的钱放到他们那里,所以这笔钱,你不能动,其实我心里已经把当做这笔钱花了出去,看病能拿回一点算一点, 心里一种强烈被剥削的感觉。
  查看全部


 社保停交后,医保处于被冻结状态,不能使用。

医疗保险指通过国家立法,按照强制性社会保险原则基本医疗保险费应由用人单位和职工个人按时足额缴纳。不按时足额缴纳的,不计个人帐户,基本医疗保险统筹基金不予支付其医疗费用。

医疗保险是为补偿疾病所带来的医疗费用的一种保险。职工因疾病、负伤、生育时,由社会或企业提供必要的医疗服务或物质帮助的社会保险。如中国的公费医疗、劳保医疗。

中国职工的医疗费用由国家、单位和个人共同负担,以减轻企业负担,避免浪费。发生保险责任事故需要进行治疗是按比例付保险金。

医疗保险在退休时必须积累一定的缴费年限(含视同缴费年限),一般规定为20年-30年,并且实际缴费年限必须达到5年(或10年),才可以在退休以后免费终身享受医疗保险保障待遇。如果在退休时的累计缴费年限不足规定要求,可以按当时的费率标准补交所差的医疗保险缴费年限。

职工医疗保险补缴:

一、医保机构征缴部门根据医疗保险欠费情况,建立欠费数据信息,填制《社会保险费补缴通知单》,通知参保单位补缴欠费。

二、对因筹资困难,无法一次足额缴清欠费的参保单位,医保机构征缴部门与其签订社会保险补缴协议。如欠费单位发生被兼并、分立、破产等情况时,按下列方法签订补缴协议。

1、欠费单位被兼并的,与兼并方签订补缴协议。

2、欠费单位分立的,与各分立方签订补缴协议。

3、欠费单位进入破产程序的,与清算组签订清偿协议。

4、单位被拍卖出售或租赁的,与主管部门签订补缴协议。

三、参保单位根据《社会保险费补缴通知单》或补缴协议办理补缴,医保机构征缴部门予以受理,并通知医保机构财务管理部门收款。

四、破产单位无法完全清偿的欠费,医保机构征缴部门受理单位破产清算组提出的申请,审核后送稽核监督部门处理。

五、医保机构征缴部门依据财务管理部门传来的职工医疗保险补缴欠费到账信息和稽核监督部门传来的核销信息,调整参保单位欠费信息。


 
 
也就是说,你工作了20年,但是突然想放松一下,间隔年一下,去个游山玩水,社保中断了交。 这个时候你的社保卡是冻结状态,这个时候你的社保卡不能到医院看病。 除非你去游山玩水期间,自己去交社保的钱,不中断。
 
这种政策真扯淡。 所以说,国家的这些政策,完全弊大于利。 医保上的钱,如果我自己全部自己拿着,去理财,福利收益20年怎么也可以翻一翻吧,一年年收益只需要几个点就够了。(1+1*x)**20=2, (其中x为年收益率,**20 是20次方,复利计算公司), 可以算出 x=3.5%, 指数运算差点忘记了擦。
而且我爱什么时候用就什么时候用, 不要考虑中断不中断。  反正呢,ZF想要把你的口袋的钱放到他们那里,所以这笔钱,你不能动,其实我心里已经把当做这笔钱花了出去,看病能拿回一点算一点, 心里一种强烈被剥削的感觉。
 

日内操作 7月29日 特停政策下游资休养生息

股票绫波丽 发表了文章 • 0 个评论 • 2668 次浏览 • 2016-07-30 11:06 • 来自相关话题

人福医药 一个涨停都收到咨询函。
 
何况其他?
 
为何自己目前还满仓运行?
 
错误
人福医药 一个涨停都收到咨询函。
 
何况其他?
 
为何自己目前还满仓运行?
 
错误

日内操作 7月28日 价投的天下 中小创的地狱

股票绫波丽 发表了文章 • 0 个评论 • 2533 次浏览 • 2016-07-29 11:23 • 来自相关话题

中小创跌得一塌糊涂。 不少家电,白酒类个股接连创新高。
 
板块相应出来了,可惜自己一直持有的中小创。
中小创跌得一塌糊涂。 不少家电,白酒类个股接连创新高。
 
板块相应出来了,可惜自己一直持有的中小创。

git 比较两个分支的不同

Linux李魔佛 发表了文章 • 0 个评论 • 5540 次浏览 • 2016-07-28 22:31 • 来自相关话题

git diff [branchA] [branchB]用以上这个命令可输出两个分支的区别,但是不同的文件太多,在命令行查看不是很方便,想输出到文件中查看,不知道如何加参数?

===================================
补充:找到答案:// >> 后加输出文件的路径、文件名和后缀名 git diff [branchA] [branchB] >>d:/diff/exportname.diff
  查看全部

git diff [branchA] [branchB]用以上这个命令可输出两个分支的区别,但是不同的文件太多,在命令行查看不是很方便,想输出到文件中查看,不知道如何加参数?

===================================
补充:找到答案:// >> 后加输出文件的路径、文件名和后缀名 git diff [branchA] [branchB] >>d:/diff/exportname.diff
 

git冲突 解决

Linux李魔佛 发表了文章 • 0 个评论 • 4479 次浏览 • 2016-07-28 22:06 • 来自相关话题

Fatal: cannot do a partial commit during a merge
 
在提交单个文件的时候出现这个错误.

意思是不能部分提交代码.




原因是git认为你有部分代码没有做好提交的准备,比如没有添加


解决方法是

1. 提交全部


git commit -a 





2. 如果不想提交全部,那么可以通过添加 -i 选项

git commit file/to/path -i -m "merge"




上述情况一般出现在解决本地working copy冲突时出现, 本地文件修改(手工merge)完成后,要添加并提交,使得本地版本处于clean的状态.

这样以后git pull就不再会报错.
 
 
 
冲突处理

当两条分支对同一个文件的同一个文本块进行了不同的修改,并试图合并时,Git不能自动合并的,称之为冲突(conflict)。解决冲突需要人工处理。

比如当前在master分支,想把dev分支merge过来,结果产生了一个冲突,打开文件内容可以看到这么一个冲突:[复制代码]
<<<<<<< HEAD test in master ======= test in dev >>>>>>> dev
[复制代码]  

<<<<<<<标记冲突开始,后面跟的是当前分支中的内容。

HEAD指向当前分支末梢的提交。

=======之后,>>>>>>>之前是要merge过来的另一条分支上的代码。

>>>>>>>之后的dev是该分支的名字。

对于简单的合并,手工编辑,然后去掉这些标记,最后像往常的提交一样先add再commit即可。 查看全部
Fatal: cannot do a partial commit during a merge
 
在提交单个文件的时候出现这个错误.

意思是不能部分提交代码.




原因是git认为你有部分代码没有做好提交的准备,比如没有添加


解决方法是

1. 提交全部


git commit -a 





2. 如果不想提交全部,那么可以通过添加 -i 选项

git commit file/to/path -i -m "merge"




上述情况一般出现在解决本地working copy冲突时出现, 本地文件修改(手工merge)完成后,要添加并提交,使得本地版本处于clean的状态.

这样以后git pull就不再会报错.
 
 
 
冲突处理

当两条分支对同一个文件的同一个文本块进行了不同的修改,并试图合并时,Git不能自动合并的,称之为冲突(conflict)。解决冲突需要人工处理。

比如当前在master分支,想把dev分支merge过来,结果产生了一个冲突,打开文件内容可以看到这么一个冲突:[复制代码]
<<<<<<< HEAD test in master ======= test in dev >>>>>>> dev
[复制代码]  

<<<<<<<标记冲突开始,后面跟的是当前分支中的内容。

HEAD指向当前分支末梢的提交。

=======之后,>>>>>>>之前是要merge过来的另一条分支上的代码。

>>>>>>>之后的dev是该分支的名字。

对于简单的合并,手工编辑,然后去掉这些标记,最后像往常的提交一样先add再commit即可。

怎么segmentfault上的问题都这么入门级别的?

python李魔佛 发表了文章 • 0 个评论 • 2282 次浏览 • 2016-07-28 16:37 • 来自相关话题

遇到一些问题,上去segmentfault上搜索答案,以为segmentfault是中文版的stackoverflow。 结果大失所望。
基本都是一些菜鸟的问题。
 
搜索关键字: python
出来的是





 
结果都是怎么安装python,选择python2还是python3 这一类的问题。 着实无语。
看来在中国肯义务分享技术的人并不像国外那么多,那么慷慨。
(也有可能大神们都在忙于做项目,没空帮助小白们吧) 查看全部
遇到一些问题,上去segmentfault上搜索答案,以为segmentfault是中文版的stackoverflow。 结果大失所望。
基本都是一些菜鸟的问题。
 
搜索关键字: python
出来的是

segenfault.PNG

 
结果都是怎么安装python,选择python2还是python3 这一类的问题。 着实无语。
看来在中国肯义务分享技术的人并不像国外那么多,那么慷慨。
(也有可能大神们都在忙于做项目,没空帮助小白们吧)

如何使用pandas把某些行的数据进行算术处理?

回复

量化交易-Ptrade-QMT李魔佛 发起了问题 • 1 人关注 • 0 个回复 • 5815 次浏览 • 2016-07-28 15:35 • 来自相关话题

每天输出一篇高质量文章 ---始于2016年7月28日

30天新尝试李魔佛 发表了文章 • 0 个评论 • 2774 次浏览 • 2016-07-28 12:36 • 来自相关话题

以30天为一个短周期,定期回顾。 
平时太多的输入,但是输出很少。 这好比学校里学了很多东西,但是不做作业,不考试,这样永远无法知道学生的水平。
 
即使质量不高,我也要坚持。 百篇里能出一篇也不错。
 

 
 
以30天为一个短周期,定期回顾。 
平时太多的输入,但是输出很少。 这好比学校里学了很多东西,但是不做作业,不考试,这样永远无法知道学生的水平。
 
即使质量不高,我也要坚持。 百篇里能出一篇也不错。
 

 
 

AttributeError: 'module' object has no attribute 'pyplot'

回复

python李魔佛 回复了问题 • 1 人关注 • 1 个回复 • 9045 次浏览 • 2016-07-28 12:31 • 来自相关话题

日内操作 7月27日 大盘暴跌

股票绫波丽 发表了文章 • 0 个评论 • 2515 次浏览 • 2016-07-27 16:28 • 来自相关话题

1500个股票跌到-5%以上。
几周的努力都付诸东流。 股市注定是一个1盈2平7亏得地方。
而我,大概率的落到了7亏得那大部分人里。
 
不想说太多技术的东西。
 
午盘开盘前,11点多的时候可以跑掉,但是心里总是心存侥幸。 希望下午尾盘能有机会V上去。 股市里最怕的就是这种希望,没有凭借概率说话。
 
没有概率上的胜率,只能期盼奇迹。 但是,奇迹是小概率事件,期待奇迹的发生,不是一个胜者该做的。 
 
多回顾,多反省,多空仓。 纪律和模式的重要性,会让你能够避免失血过多而在股市存活下来。 查看全部
1500个股票跌到-5%以上。
几周的努力都付诸东流。 股市注定是一个1盈2平7亏得地方。
而我,大概率的落到了7亏得那大部分人里。
 
不想说太多技术的东西。
 
午盘开盘前,11点多的时候可以跑掉,但是心里总是心存侥幸。 希望下午尾盘能有机会V上去。 股市里最怕的就是这种希望,没有凭借概率说话。
 
没有概率上的胜率,只能期盼奇迹。 但是,奇迹是小概率事件,期待奇迹的发生,不是一个胜者该做的。 
 
多回顾,多反省,多空仓。 纪律和模式的重要性,会让你能够避免失血过多而在股市存活下来。

所能承受的困惑

30天新尝试低调的哥哥 发表了文章 • 0 个评论 • 2501 次浏览 • 2016-07-25 21:42 • 来自相关话题

不满足现状,空想着改变。
但是行动力不足以改变任何东西,日复一日,年复一年。所以,平庸的人就是这么诞生的了。
 
百人里面才会有甚少的一两个人,有突破的意志,能以跃出浅潭浊水,潜龙出海。
 
 
不满足现状,空想着改变。
但是行动力不足以改变任何东西,日复一日,年复一年。所以,平庸的人就是这么诞生的了。
 
百人里面才会有甚少的一两个人,有突破的意志,能以跃出浅潭浊水,潜龙出海。
 
 

ubuntu的pycharm中文注释显示乱码 ?

回复

python李魔佛 回复了问题 • 1 人关注 • 1 个回复 • 10491 次浏览 • 2016-07-25 12:22 • 来自相关话题

问一下,现在的“话题”可以由普通注册人员自行添加么?

默认分类低调的哥哥 回复了问题 • 2 人关注 • 2 个回复 • 4641 次浏览 • 2016-07-25 08:41 • 来自相关话题

tushare 源码分析 之 fundamental.py

量化交易-Ptrade-QMT李魔佛 发表了文章 • 0 个评论 • 14562 次浏览 • 2016-07-22 08:56 • 来自相关话题

python的tushare用来做数据分析是一个不错的工具。
 
下面来具体看看里面的一些具体的函数是怎么实现的。
 
fundamental.py  这个文件是获取企业的基本面信息的。 
 
比如 在主程序 main中,import tushare as ts
df=ts.get_stock_basics()那么我们来看看get_stock_basics函数的实现。def get_stock_basics():
"""
获取沪深上市公司基本情况
Return
--------
DataFrame
code,代码
name,名称
industry,细分行业
area,地区
pe,市盈率
outstanding,流通股本
totals,总股本(万)
totalAssets,总资产(万)
liquidAssets,流动资产
fixedAssets,固定资产
reserved,公积金
reservedPerShare,每股公积金
eps,每股收益
bvps,每股净资
pb,市净率
timeToMarket,上市日期
"""
request = Request(ct.ALL_STOCK_BASICS_FILE)
text = urlopen(request, timeout=10).read()
text = text.decode('GBK')
text = text.replace('--', '')
df = pd.read_csv(StringIO(text), dtype={'code':'object'})
df = df.set_index('code')
return df
上面通过urlib2的Request函数获取url的信息,然后保存为df格式然后返回。
url路径在这个变量里面: 
ct.ALL_STOCK_BASICS_FILE
 
跳转到这个变量





 
ALL_STOCK_BASICS_FILE = '%s%s/static/all.csv'%(P_TYPE['http'], DOMAINS['oss'])
 
P_TYPE 和DOMAINS 是字典变量, 在同一个文件内可以找到他们的值:P_TYPE = {'http': 'http://', 'ftp': 'ftp://'}

DOMAINS = {'sina': 'sina.com.cn', 'sinahq': 'sinajs.cn',
'ifeng': 'ifeng.com', 'sf': 'finance.sina.com.cn',
'vsf': 'vip.stock.finance.sina.com.cn',
'idx': 'www.csindex.com.cn', '163': 'money.163.com',
'em': 'eastmoney.com', 'sseq': 'query.sse.com.cn',
'sse': 'www.sse.com.cn', 'szse': 'www.szse.cn',
'oss': '218.244.146.57', 'idxip':'115.29.204.48',
'shibor': 'www.shibor.org', 'mbox':'www.cbooo.cn'}
 
然后把上面的字典值抽取出来:
 
那么url就是 http://218.244.146.57/static/all.csv , 你可以试试在浏览器里直接输入。 看到了吗?
可以直接下载一个all.csv格式的文件,打开后可以看到里面很多企业基本面的信息。
 






 
 
获取业绩报表
def get_report_data(year, quarter):
    """
        获取业绩报表数据
    Parameters
    --------
    year:int 年度 e.g:2014
    quarter:int 季度 :1、2、3、4,只能输入这4个季度
       说明:由于是从网站获取的数据,需要一页页抓取,速度取决于您当前网络速度
       
    Return
    --------
    DataFrame
        code,代码
        name,名称
        eps,每股收益
        eps_yoy,每股收益同比(%)
        bvps,每股净资产
        roe,净资产收益率(%)
        epcf,每股现金流量(元)
        net_profits,净利润(万元)
        profits_yoy,净利润同比(%)
        distrib,分配方案
        report_date,发布日期
    """
 
函数主要通过 request = Request(url) 在财经网站获取信息。request = Request(ct.REPORT_URL%(ct.P_TYPE['http'], ct.DOMAINS['vsf'], ct.PAGES['fd'],year, quarter, pageNo, ct.PAGE_NUM[1]))
text = urlopen(request, timeout=10).read()
Request里面的参数是一个可变量,通过循环的列表来获取所有的公司业绩报表。
通过定位参数里的变量,可以得到随意一个url, 比如 REPORT_URL = '%s%s/q/go.php/vFinanceAnalyze/kind/mainindex/%s?s_i=&s_a=&s_c=&reportdate=%s&quarter=%s&p=%s&num=%s'
 
那么url =http://vip.stock.finance.sina.com.cn/q/go.php/vFinanceAnalyze/kind/mainindex/index.phtml?s_i=&s_a=&s_c=&reportdate=2014&quarter=1&p=1&num=38
 
那么直接在浏览器输入看看 是什么数据
 





 
看到了2014年第一节度的每个公司的业绩(因为有些是新股,所以2014的数据显示不全)
 
 
注意 df=ts.get_report_data(2016,4)
#第四季度就是年报
 根据作者的意思,这个参数写4就是年报。 (可以自己根据网址内容去到新浪财经去验证)

新版tushare注册码
https://tushare.pro/register?reg=217168 
注册后送积分,只有足够的积分才能够调用一些高权限的接口

待续。 查看全部
python的tushare用来做数据分析是一个不错的工具。
 
下面来具体看看里面的一些具体的函数是怎么实现的。
 
fundamental.py  这个文件是获取企业的基本面信息的。 
 
比如 在主程序 main中,
import tushare as ts
df=ts.get_stock_basics()
那么我们来看看get_stock_basics函数的实现。
def get_stock_basics():
"""
获取沪深上市公司基本情况
Return
--------
DataFrame
code,代码
name,名称
industry,细分行业
area,地区
pe,市盈率
outstanding,流通股本
totals,总股本(万)
totalAssets,总资产(万)
liquidAssets,流动资产
fixedAssets,固定资产
reserved,公积金
reservedPerShare,每股公积金
eps,每股收益
bvps,每股净资
pb,市净率
timeToMarket,上市日期
"""
request = Request(ct.ALL_STOCK_BASICS_FILE)
text = urlopen(request, timeout=10).read()
text = text.decode('GBK')
text = text.replace('--', '')
df = pd.read_csv(StringIO(text), dtype={'code':'object'})
df = df.set_index('code')
return df

上面通过urlib2的Request函数获取url的信息,然后保存为df格式然后返回。
url路径在这个变量里面: 
ct.ALL_STOCK_BASICS_FILE
 
跳转到这个变量

goto.png

 
ALL_STOCK_BASICS_FILE = '%s%s/static/all.csv'%(P_TYPE['http'], DOMAINS['oss'])
 
P_TYPE 和DOMAINS 是字典变量, 在同一个文件内可以找到他们的值:
P_TYPE = {'http': 'http://', 'ftp': 'ftp://'}

DOMAINS = {'sina': 'sina.com.cn', 'sinahq': 'sinajs.cn',
'ifeng': 'ifeng.com', 'sf': 'finance.sina.com.cn',
'vsf': 'vip.stock.finance.sina.com.cn',
'idx': 'www.csindex.com.cn', '163': 'money.163.com',
'em': 'eastmoney.com', 'sseq': 'query.sse.com.cn',
'sse': 'www.sse.com.cn', 'szse': 'www.szse.cn',
'oss': '218.244.146.57', 'idxip':'115.29.204.48',
'shibor': 'www.shibor.org', 'mbox':'www.cbooo.cn'}

 
然后把上面的字典值抽取出来:
 
那么url就是 http://218.244.146.57/static/all.csv , 你可以试试在浏览器里直接输入。 看到了吗?
可以直接下载一个all.csv格式的文件,打开后可以看到里面很多企业基本面的信息。
 

allcsv.PNG


 
 
获取业绩报表
def get_report_data(year, quarter):
    """
        获取业绩报表数据
    Parameters
    --------
    year:int 年度 e.g:2014
    quarter:int 季度 :1、2、3、4,只能输入这4个季度
       说明:由于是从网站获取的数据,需要一页页抓取,速度取决于您当前网络速度
       
    Return
    --------
    DataFrame
        code,代码
        name,名称
        eps,每股收益
        eps_yoy,每股收益同比(%)
        bvps,每股净资产
        roe,净资产收益率(%)
        epcf,每股现金流量(元)
        net_profits,净利润(万元)
        profits_yoy,净利润同比(%)
        distrib,分配方案
        report_date,发布日期
    """
 
函数主要通过 request = Request(url) 在财经网站获取信息。
request = Request(ct.REPORT_URL%(ct.P_TYPE['http'], ct.DOMAINS['vsf'], ct.PAGES['fd'],year, quarter, pageNo, ct.PAGE_NUM[1]))
text = urlopen(request, timeout=10).read()

Request里面的参数是一个可变量,通过循环的列表来获取所有的公司业绩报表。
通过定位参数里的变量,可以得到随意一个url, 比如 REPORT_URL = '%s%s/q/go.php/vFinanceAnalyze/kind/mainindex/%s?s_i=&s_a=&s_c=&reportdate=%s&quarter=%s&p=%s&num=%s'
 
那么url =http://vip.stock.finance.sina.com.cn/q/go.php/vFinanceAnalyze/kind/mainindex/index.phtml?s_i=&s_a=&s_c=&reportdate=2014&quarter=1&p=1&num=38
 
那么直接在浏览器输入看看 是什么数据
 

财报.PNG

 
看到了2014年第一节度的每个公司的业绩(因为有些是新股,所以2014的数据显示不全)
 
 
注意
        df=ts.get_report_data(2016,4)
#第四季度就是年报

 根据作者的意思,这个参数写4就是年报。 (可以自己根据网址内容去到新浪财经去验证)

新版tushare注册码
https://tushare.pro/register?reg=217168 
注册后送积分,只有足够的积分才能够调用一些高权限的接口

待续。

30天学会量化交易模型 Day05

量化交易-Ptrade-QMT李魔佛 发表了文章 • 7 个评论 • 12792 次浏览 • 2016-07-19 22:52 • 来自相关话题

tushare数据写入SQLite
 这一节 我们学习如何把得到的数据写入数据库。
 
虽然也可以写入excel或者json,不过考虑到后面用的的排序和其他python脚本的调用,最后选择了轻量级的数据库SQLiite作为首选。# -*-coding=utf-8-*-
#数据库的操作
'''
http://30daydo.com
weigesysu@qq.com
'''
import sqlite3, time, datetime

__author__ = 'rocky'


class SqliteDb():


def __init__(self,dbtable):
'''
self.today = time.strftime("%Y-%m-%d")
self.DBname = self.today + '.db'
self.conn = sqlite3.connect(self.DBname)
'''
today = time.strftime("%Y-%m-%d")
DBname = today + '.db'
self.conn = sqlite3.connect(DBname)
self.dbtable=dbtable
create_tb = "CREATE TABLE %s (date varchar(10),id varchar(6), name varchar(30), p_change REAL,turnover REAL);" %self.dbtable
self.conn.execute(create_tb)
self.conn.commit()

def store_break_high(self,price_high_data):

#data 是创新高的个股信息 dataframe
#print today
#create_tb = 'CREATE TABLE STOCK (date TEXT,id text PRIMARY KEY, p_change REAL,turnover REAL);'

#conn.commit()
#print "(%s,%s,%f,%f)" %(price_high_data[0], price_high_data[1], price_high_data[2], price_high_data[3])
insert_data_cmd = "INSERT INTO %s(date,id,name,p_change,turnover) VALUES(\"%s\",\"%s\",\"%s\",%f,%f);" %(self.dbtable,price_high_data[0], price_high_data[1], price_high_data[2], price_high_data[3],price_high_data[4])
self.conn.execute(insert_data_cmd)
#self.conn.execute('INSERT INTO STOCK(date,id,name,p_change,turnover) VALUES(?,?,?,?,?)',(price_high_data[0], price_high_data[1], price_high_data[2], price_high_data[3],price_high_data[4]))
self.conn.commit()


def close(self):
self.conn.close()
上面创建的表名是 以日期为命名的(前面的下划线是因为数据库的命名规则不能以数字为首)
 
上一篇:30天学会量化交易模型 Day04 (tushare获取破新高的股票)
http://www.30daydo.com/article/70 查看全部
tushare数据写入SQLite
 这一节 我们学习如何把得到的数据写入数据库。
 
虽然也可以写入excel或者json,不过考虑到后面用的的排序和其他python脚本的调用,最后选择了轻量级的数据库SQLiite作为首选。
# -*-coding=utf-8-*-
#数据库的操作
'''
http://30daydo.com
weigesysu@qq.com
'''
import sqlite3, time, datetime

__author__ = 'rocky'


class SqliteDb():


def __init__(self,dbtable):
'''
self.today = time.strftime("%Y-%m-%d")
self.DBname = self.today + '.db'
self.conn = sqlite3.connect(self.DBname)
'''
today = time.strftime("%Y-%m-%d")
DBname = today + '.db'
self.conn = sqlite3.connect(DBname)
self.dbtable=dbtable
create_tb = "CREATE TABLE %s (date varchar(10),id varchar(6), name varchar(30), p_change REAL,turnover REAL);" %self.dbtable
self.conn.execute(create_tb)
self.conn.commit()

def store_break_high(self,price_high_data):

#data 是创新高的个股信息 dataframe
#print today
#create_tb = 'CREATE TABLE STOCK (date TEXT,id text PRIMARY KEY, p_change REAL,turnover REAL);'

#conn.commit()
#print "(%s,%s,%f,%f)" %(price_high_data[0], price_high_data[1], price_high_data[2], price_high_data[3])
insert_data_cmd = "INSERT INTO %s(date,id,name,p_change,turnover) VALUES(\"%s\",\"%s\",\"%s\",%f,%f);" %(self.dbtable,price_high_data[0], price_high_data[1], price_high_data[2], price_high_data[3],price_high_data[4])
self.conn.execute(insert_data_cmd)
#self.conn.execute('INSERT INTO STOCK(date,id,name,p_change,turnover) VALUES(?,?,?,?,?)',(price_high_data[0], price_high_data[1], price_high_data[2], price_high_data[3],price_high_data[4]))
self.conn.commit()


def close(self):
self.conn.close()

上面创建的表名是 以日期为命名的(前面的下划线是因为数据库的命名规则不能以数字为首)
 
上一篇:30天学会量化交易模型 Day04 (tushare获取破新高的股票)
http://www.30daydo.com/article/70

SQL 笔记 (新人会遇到的坑)

Linux李魔佛 发表了文章 • 0 个评论 • 2644 次浏览 • 2016-07-18 22:31 • 来自相关话题

自学的SQL,有些坑,自己经历过的。记录下来,我觉得以后的人肯定会踩到的。 
这里记录下来,说不定除了能够提醒自己,还能够帮助别人。
 
1. SQL的表名命名规则跟C,C++的变量命名规则一样,只能包含数字,字母,下划线。 而且不能够以数字开头。
(之前曾经很傻的用日期作为表名,结果一堆报错的。





 
如果硬要用日期,不妨在前面放一个下划线。

 
  查看全部
自学的SQL,有些坑,自己经历过的。记录下来,我觉得以后的人肯定会踩到的。 
这里记录下来,说不定除了能够提醒自己,还能够帮助别人。
 
1. SQL的表名命名规则跟C,C++的变量命名规则一样,只能包含数字,字母,下划线。 而且不能够以数字开头。
(之前曾经很傻的用日期作为表名,结果一堆报错的。

sql.PNG

 
如果硬要用日期,不妨在前面放一个下划线。

 
 

python sqlite 插入的数据含有变量,结果不一致

回复

python李魔佛 回复了问题 • 1 人关注 • 1 个回复 • 7547 次浏览 • 2016-07-18 07:50 • 来自相关话题

使用pandas的dataframe数据进行操作的总结

python李魔佛 发表了文章 • 0 个评论 • 5648 次浏览 • 2016-07-17 16:47 • 来自相关话题

t = df.iloc[0]<class 'pandas.core.series.Series'>
 
#使用iloc后,t已经变成了一个子集。 已经不再是一个dataframe数据。 所以你使用 t['high'] 返回的是一个值。此时t已经没有index了,如果这个时候调用 t.index
 
t=df[:1]
class 'pandas.core.frame.DataFrame'>
 
#这是返回的是一个DataFrame的一个子集。 此时 你可以继续用dateFrame的一些方法进行操作。
 
 
 
 
 
删除dataframe中某一行
 
df.drop()
 
df的内容如下:





 
    df.drop(df[df[u'代码']==300141.0].index,inplace=True)
    print df
 
输出如下





 
记得参数inplace=True, 因为默认的值为inplace=False,意思就是你不添加的话就使用Falase这个值。
这样子原来的df不会被修改, 只是会返回新的修改过的df。 这样的话需要用一个新变量来承接它
new_df=df.drop(df[df[u'代码']==300141.0].index)
 

判断DataFrame为None
  if df is None:
print "None len==0"
return False
  查看全部
t = df.iloc[0]<class 'pandas.core.series.Series'>
 
#使用iloc后,t已经变成了一个子集。 已经不再是一个dataframe数据。 所以你使用 t['high'] 返回的是一个值。此时t已经没有index了,如果这个时候调用 t.index
 
t=df[:1]
class 'pandas.core.frame.DataFrame'>
 
#这是返回的是一个DataFrame的一个子集。 此时 你可以继续用dateFrame的一些方法进行操作。
 
 
 
 
 
删除dataframe中某一行
 
df.drop()
 
df的内容如下:

drop.PNG

 
    df.drop(df[df[u'代码']==300141.0].index,inplace=True)
    print df
 
输出如下

after_drop.PNG

 
记得参数inplace=True, 因为默认的值为inplace=False,意思就是你不添加的话就使用Falase这个值。
这样子原来的df不会被修改, 只是会返回新的修改过的df。 这样的话需要用一个新变量来承接它
new_df=df.drop(df[df[u'代码']==300141.0].index)
 

判断DataFrame为None
 
    if df is None:
print "None len==0"
return False

 

30天学会量化交易模型 Day04

量化交易-Ptrade-QMT李魔佛 发表了文章 • 4 个评论 • 21064 次浏览 • 2016-07-16 21:28 • 来自相关话题

tushare获取破新高的股票

 股市有句话,新高后有新高。
因为新高后说明消化了前面的套牢盘。 所以这个时候的阻力很小。
 
下面使用一个例子来用代码获取当天创新高的股票。
 






使用的是tushare#-*-coding=utf-8-*-
__author__ = 'rocky'
'''
http://30daydo.com
weigesysu@qq.com
'''
#获取破指定天数内的新高 比如破60日新高
import tushare as ts
import datetime
info=ts.get_stock_basics()

def loop_all_stocks():
for EachStockID in info.index:
if is_break_high(EachStockID,60):
print "High price on",
print EachStockID,
print info.ix[EachStockID]['name'].decode('utf-8')



def is_break_high(stockID,days):
end_day=datetime.date(datetime.date.today().year,datetime.date.today().month,datetime.date.today().day)
days=days*7/5
#考虑到周六日非交易
start_day=end_day-datetime.timedelta(days)

start_day=start_day.strftime("%Y-%m-%d")
end_day=end_day.strftime("%Y-%m-%d")
df=ts.get_h_data(stockID,start=start_day,end=end_day)

period_high=df['high'].max()
#print period_high
today_high=df.iloc[0]['high']
#这里不能直接用 .values
#如果用的df【:1】 就需要用.values
#print today_high
if today_high>=period_high:
return True
else:
return False

loop_all_stocks()
可以修改 函数 is_break_high(EachStockID,60) 中的60 为破多少天内的新高。
 
上一篇:30天学会量化交易模型 Day03
http://www.30daydo.com/article/15
 
下一篇: 30天学会量化交易模型 Day05 (tushare数据写入SQLite)
http://www.30daydo.com/article/73 查看全部
tushare获取破新高的股票

 股市有句话,新高后有新高
因为新高后说明消化了前面的套牢盘。 所以这个时候的阻力很小。
 
下面使用一个例子来用代码获取当天创新高的股票。
 

createhigh.PNG


使用的是tushare
#-*-coding=utf-8-*-
__author__ = 'rocky'
'''
http://30daydo.com
weigesysu@qq.com
'''
#获取破指定天数内的新高 比如破60日新高
import tushare as ts
import datetime
info=ts.get_stock_basics()

def loop_all_stocks():
for EachStockID in info.index:
if is_break_high(EachStockID,60):
print "High price on",
print EachStockID,
print info.ix[EachStockID]['name'].decode('utf-8')



def is_break_high(stockID,days):
end_day=datetime.date(datetime.date.today().year,datetime.date.today().month,datetime.date.today().day)
days=days*7/5
#考虑到周六日非交易
start_day=end_day-datetime.timedelta(days)

start_day=start_day.strftime("%Y-%m-%d")
end_day=end_day.strftime("%Y-%m-%d")
df=ts.get_h_data(stockID,start=start_day,end=end_day)

period_high=df['high'].max()
#print period_high
today_high=df.iloc[0]['high']
#这里不能直接用 .values
#如果用的df【:1】 就需要用.values
#print today_high
if today_high>=period_high:
return True
else:
return False

loop_all_stocks()

可以修改 函数 is_break_high(EachStockID,60) 中的60 为破多少天内的新高。
 
上一篇:30天学会量化交易模型 Day03
http://www.30daydo.com/article/15
 
下一篇: 30天学会量化交易模型 Day05 (tushare数据写入SQLite)
http://www.30daydo.com/article/73

安卓系统常用命令 adb shell

Android李魔佛 发表了文章 • 0 个评论 • 3781 次浏览 • 2016-07-16 16:44 • 来自相关话题

定期更新:
1. 安卓关机(非重启): adb shell svc power shutdown
 
2. android开机的时候跳过初始化设置 (setup wizard): adb shell input text 1396611460
 
3.
定期更新:
1. 安卓关机(非重启): adb shell svc power shutdown
 
2. android开机的时候跳过初始化设置 (setup wizard): adb shell input text 1396611460
 
3.

汇金(国家队)最近增持的个股 2016年4月之后

股票李魔佛 发表了文章 • 0 个评论 • 2322 次浏览 • 2016-07-14 22:59 • 来自相关话题

无意中查询了一下数据,发现汇金增持了4家公司。 其余的均保持不变。
有点意思,个人猜测,有可能是养老金悄悄进入的市场。
 





 
 
保持关注。
 
无意中查询了一下数据,发现汇金增持了4家公司。 其余的均保持不变。
有点意思,个人猜测,有可能是养老金悄悄进入的市场。
 

汇金持股.PNG

 
 
保持关注。
 

pycharm 添加了中文注释后无法运行?

回复

python李魔佛 回复了问题 • 1 人关注 • 1 个回复 • 6146 次浏览 • 2016-07-14 17:56 • 来自相关话题

雪人股份 继续跟踪 7月12日

股票李魔佛 发表了文章 • 0 个评论 • 2386 次浏览 • 2016-07-12 08:26 • 来自相关话题

最近2个交易日雪人股份的股价涨幅有20%。 看看龙虎榜,结合之前的跟庄分析雪人股份 大宗交易分析 寻找主力痕迹, 福州五一路,最近2个交易日出货3000万,但是也继续买入了2000多万,而之前的大宗交易,入了大概4000万的货,所以福州五一路后记还会有一段拉伸。 而那个马甲的长城福州五一路的货全部出完了。大概就1500万。
 
所以后期还是可以再介入一波。
 





 
雪人股份 后续分析 6月30日 查看全部
最近2个交易日雪人股份的股价涨幅有20%。 看看龙虎榜,结合之前的跟庄分析雪人股份 大宗交易分析 寻找主力痕迹, 福州五一路,最近2个交易日出货3000万,但是也继续买入了2000多万,而之前的大宗交易,入了大概4000万的货,所以福州五一路后记还会有一段拉伸。 而那个马甲的长城福州五一路的货全部出完了。大概就1500万。
 
所以后期还是可以再介入一波。
 

雪人7-11.PNG

 
雪人股份 后续分析 6月30日

ubuntu命令行的路径太长 如何缩短显示?

回复

Linux李魔佛 回复了问题 • 1 人关注 • 1 个回复 • 6373 次浏览 • 2016-07-10 17:38 • 来自相关话题

python 爬虫下载的图片打不开?

python李魔佛 发表了文章 • 0 个评论 • 6842 次浏览 • 2016-07-09 17:33 • 来自相关话题

 
代码如下片段
 
__author__ = 'rocky'
import urllib,urllib2,StringIO,gzip
url="http://image.xitek.com/photo/2 ... ot%3B
filname=url.split("/")[-1]
req=urllib2.Request(url)
resp=urllib2.urlopen(req)
content=resp.read()
#data = StringIO.StringIO(content)
#gzipper = gzip.GzipFile(fileobj=data)
#html = gzipper.read()
f=open(filname,'w')
f.write()
f.close()

运行后生成的文件打开后不显示图片。
 
后来调试后发现,如果要保存为图片格式, 文件的读写需要用'wb', 也就是上面代码中
f=open(filname,'w') 改一下 改成

f=open(filname,'wb')
 
就可以了。
  查看全部
 
代码如下片段
 
__author__ = 'rocky'
import urllib,urllib2,StringIO,gzip
url="http://image.xitek.com/photo/2 ... ot%3B
filname=url.split("/")[-1]
req=urllib2.Request(url)
resp=urllib2.urlopen(req)
content=resp.read()
#data = StringIO.StringIO(content)
#gzipper = gzip.GzipFile(fileobj=data)
#html = gzipper.read()
f=open(filname,'w')
f.write()
f.close()

运行后生成的文件打开后不显示图片。
 
后来调试后发现,如果要保存为图片格式, 文件的读写需要用'wb', 也就是上面代码中
f=open(filname,'w') 改一下 改成

f=open(filname,'wb')
 
就可以了。