python @classmethod 的使用场合

官方的说法: 
classmethod(function)
中文说明:
classmethod是用来指定一个类的方法为类方法,没有此参数指定的类的方法为实例方法,使用方法如下:
class C:
@classmethod
def f(cls, arg1, arg2, ...): ...

 
 看后之后真是一头雾水。说的啥子东西呢???
 
自己到国外的论坛看其他的例子和解释,顿时就很明朗。 下面自己用例子来说明。
 
看下面的定义的一个时间类:
class Data_test(object):
day=0
month=0
year=0
def __init__(self,year=0,month=0,day=0):
self.day=day
self.month=month
self.year=year

def out_date(self):
print "year :"
print self.year
print "month :"
print self.month
print "day :"
print self.day



t=Data_test(2016,8,1)
t.out_date()




输出: 
year :
2016
month :
8
day :
1

符合期望。
 
如果用户输入的是 "2016-8-1" 这样的字符格式,那么就需要调用Date_test 类前做一下处理:
string_date='2016-8-1'
year,month,day=map(int,string_date.split('-'))
s=Data_test(year,month,day)

先把‘2016-8-1’ 分解成 year,month,day 三个变量,然后转成int,再调用Date_test(year,month,day)函数。 也很符合期望。
 
那我可不可以把这个字符串处理的函数放到 Date_test 类当中呢?
 
那么@classmethod 就开始出场了
class Data_test2(object):
day=0
month=0
year=0
def __init__(self,year=0,month=0,day=0):
self.day=day
self.month=month
self.year=year

@classmethod
def get_date(cls,
string_date):
#这里第一个参数是cls, 表示调用当前的类名
year,month,day=map(int,string_date.split('-'))
date1=cls(year,month,day)
#返回的是一个初始化后的类
return date1

def out_date(self):
print "year :"
print self.year
print "month :"
print self.month
print "day :"
print self.day

在Date_test类里面创建一个成员函数, 前面用了@classmethod装饰。 它的作用就是有点像静态类,比静态类不一样的就是它可以传进来一个当前类作为第一个参数。
 
那么如何调用呢?
r=Data_test2.get_date("2016-8-6")
r.out_date()
输出:
year :
2016
month :
8
day :
1

这样子等于先调用get_date()对字符串进行处理,然后才使用Data_test的构造函数初始化。
 
这样的好处就是你以后重构类的时候不必要修改构造函数,只需要额外添加你要处理的函数,然后使用装饰符 @classmethod 就可以了。
 
 
本文原创
转载请注明出处:http://30daydo.com/article/89
 
继续阅读 »
官方的说法: 
classmethod(function)
中文说明:
classmethod是用来指定一个类的方法为类方法,没有此参数指定的类的方法为实例方法,使用方法如下:
class C:
@classmethod
def f(cls, arg1, arg2, ...): ...

 
 看后之后真是一头雾水。说的啥子东西呢???
 
自己到国外的论坛看其他的例子和解释,顿时就很明朗。 下面自己用例子来说明。
 
看下面的定义的一个时间类:
class Data_test(object):
day=0
month=0
year=0
def __init__(self,year=0,month=0,day=0):
self.day=day
self.month=month
self.year=year

def out_date(self):
print "year :"
print self.year
print "month :"
print self.month
print "day :"
print self.day



t=Data_test(2016,8,1)
t.out_date()




输出: 
year :
2016
month :
8
day :
1

符合期望。
 
如果用户输入的是 "2016-8-1" 这样的字符格式,那么就需要调用Date_test 类前做一下处理:
string_date='2016-8-1'
year,month,day=map(int,string_date.split('-'))
s=Data_test(year,month,day)

先把‘2016-8-1’ 分解成 year,month,day 三个变量,然后转成int,再调用Date_test(year,month,day)函数。 也很符合期望。
 
那我可不可以把这个字符串处理的函数放到 Date_test 类当中呢?
 
那么@classmethod 就开始出场了
class Data_test2(object):
day=0
month=0
year=0
def __init__(self,year=0,month=0,day=0):
self.day=day
self.month=month
self.year=year

@classmethod
def get_date(cls,
string_date):
#这里第一个参数是cls, 表示调用当前的类名
year,month,day=map(int,string_date.split('-'))
date1=cls(year,month,day)
#返回的是一个初始化后的类
return date1

def out_date(self):
print "year :"
print self.year
print "month :"
print self.month
print "day :"
print self.day

在Date_test类里面创建一个成员函数, 前面用了@classmethod装饰。 它的作用就是有点像静态类,比静态类不一样的就是它可以传进来一个当前类作为第一个参数。
 
那么如何调用呢?
r=Data_test2.get_date("2016-8-6")
r.out_date()
输出:
year :
2016
month :
8
day :
1

这样子等于先调用get_date()对字符串进行处理,然后才使用Data_test的构造函数初始化。
 
这样的好处就是你以后重构类的时候不必要修改构造函数,只需要额外添加你要处理的函数,然后使用装饰符 @classmethod 就可以了。
 
 
本文原创
转载请注明出处:http://30daydo.com/article/89
  收起阅读 »

自学能力强大的人在任何领域都会无比强大!

每个人身边都会有牛人,似乎这些牛人从来不会为某一件事情而费劲,而某些人却为某些事情费尽九牛二虎之力也无法把事情解决。 大学时期班上总有那么几个家伙,可以经常打游戏,打球,泡妞,而最终期末考试成绩却还是名列前茅,让人羡慕妒忌恨。
 有部叫做《Hero》的美剧是讲正反两派都是一群有超能力的人,彼此为了某个巨大的阴谋互相撕逼。作为两边的头头,他们自己既不会飞,也不会手上冒火,更不会心灵控制等。但他们却有一种当他们盯着一个超能力者使用自己的力量时,马上能把这个能力复制到自己身上的能力,比如他看到一个人在徒手煎鸡蛋,过了一分钟之后他就说卧槽我也会了......他们只要看到了有人使用超能力,就能马上掌握在手,最后变得无所不能。
这种能力,就叫学习能力。一个会学习的人,在任何领域都能变得强大。

一个人最重要的能力,不是学历多牛逼,不是实习经历多光彩,而是拥有一种强大的学习能力。但很可惜,我们有部分人毕业之后就丧失了如何继续学习的“学习能力”。
那么到底怎样才叫会学习呢?

1.通过观察找到事物的共性

小学课本上有加减乘除的四则运算法则。例如:2*3 -(5-2)- 2=?。如果你去翻答案,可能只有一个孤零零的数字1摆在上面,并没有解题过程。这个时候你可以尝试着用答案来反推解题过程:

2*3 -(5-2)- 2=1,这个等式去掉括号如何才能成立?在试过了几种方向之后,最后会发现只有:2*3-5+2-2=1,这个等式才成立。

进而你会发现,当括号前面是 + 号的时候,去掉括号,括号里面的运算符号不变;

当括号前面是-号的时候,去掉括号,括号里面的运算符号要变成相反。

当你拿着这个结论去验算其他类似的题目,发现全部符合这个规律。这是一个最简单的“演绎归纳”的推理过程,而它背后的逻辑是,通过找到个别事物的特性从而反推找到整体的共性。

在日常的工作生活中,这种方法其实屡见不鲜。

谈恋爱的时候,男生为了讨好女生会在追求的过程中说各种甜言蜜语,可是等到追到手以后就变得不那么上心。这是通过几个个别事例总结出来的事实,然后情感热线专家们据此就会得出一个共性规律:

得不到时才是最好的,得到了就不会懂得珍惜。

在给领导做工作汇报的时候,通常时间都不会超过半个小时,因为领导总是有下一场会议要赶。这是你在做了几次汇报之后发现的一个事实,然后职场热线专家据此就会告诉你一个共性规律:

领导的时间都是有限的,所以汇报工作要精简抓住要点。

这个世界上所有的事情背后都有一套简单的运转规律。会学习的人,首先会通过观察找到事物背后的本质,继而发现共性,最终推论到全局。无论是科学研究,还是世故人情,无论是商业经济,还是生物进化,支撑着这些领域不断向前发展的可能是简单的几条规律,或者说,真理。

牛顿三大定律,摩尔定律,广义相对论,波士顿矩阵,达尔文进化论......这些实际上都是一个东西,规则。聪明人从大量事实中发现共性,总结规则;普通人顺应和利用这些规则,仅此而已。

2.活学活用,举一反百

你身边一定有那种各门考试都很好,但是一遇到没见过的问题就不知道该怎么解的“学霸”,这种叫“死学”。

会学习的人,讲究“活学”。“活学”最大的特征就是,善于跨界地去学习不同领域的知识,并善于各种灵活多变的知识组合,对各种事情进行高效的处理。你在A领域学习到的规则,发现在B领域也基本适用,再修改或者变通下也能在C领域、D领域部分适用。

能量守恒定律最初是物理学规则,但是同样适用于商业领域,于是有了“零和博弈”。

“物竞天择,适者生存”最初是生物进化学的理论,但是推演到任何一个高度竞争的领域都同样适用。在工作中,能力强的人会一路高升,能力差的人一定会被淘汰;在商业竞争中,质量好的商品会收到追捧,质量差的商品会被下架。

“市场供求曲线”最初是经济学的一条规则,但是你在谈恋爱的时候同样适用。

“活学”之人,必会“活用”,再复杂的问题到了他手里都会变的清晰和简单。碰到一个新问题,进行逻辑分析,找出相似性和共性。他们就进入到一个熟悉的领域,问题马上迎刃而解。
3.多领域发展

不管关于这一点是否有争议,但这个世界上“通才”似乎比“专才”往往更能适应竞争。只说一点,“通才”和“专才”最大的区别在于面对急剧变化的形势时的应变能力。

凯文凯利在《失控》说过:

要成长为新物种,你就要经历所有你不会去扮演的角色。

当一个环境开始急剧变化的时候,一定是内部和外部同时发生了改变。如果只是单一内部发生改变,以往过去的规则和经验或许足以应对和解决问题,但是一旦这个冲击变化来自于外部陌生的领域,经验主义就再也不适用了。最好的例子就是近几年来几乎中国所有的实体经济都开始朝着互联网+的方向发展。你会发现,线下超市被电商大规模冲击、逐步有自我学习能力的机器人开始工业和民用领域、工业4.0让制造业变得更加无缝对接、互联网反欺诈让隐形的欺诈者越来越难生存,移动支付让我们省去大量去银行门店处理事务的时间.......这些在过去让人们匪夷所思的事情,背后都蕴含着新的规则和逻辑。

点评:

不论你已经是一位很有名的专家或者专才了,我们都应该保持永久学习的好奇心态,因为世界变化太快。
 
来自知乎专栏
继续阅读 »
每个人身边都会有牛人,似乎这些牛人从来不会为某一件事情而费劲,而某些人却为某些事情费尽九牛二虎之力也无法把事情解决。 大学时期班上总有那么几个家伙,可以经常打游戏,打球,泡妞,而最终期末考试成绩却还是名列前茅,让人羡慕妒忌恨。
 有部叫做《Hero》的美剧是讲正反两派都是一群有超能力的人,彼此为了某个巨大的阴谋互相撕逼。作为两边的头头,他们自己既不会飞,也不会手上冒火,更不会心灵控制等。但他们却有一种当他们盯着一个超能力者使用自己的力量时,马上能把这个能力复制到自己身上的能力,比如他看到一个人在徒手煎鸡蛋,过了一分钟之后他就说卧槽我也会了......他们只要看到了有人使用超能力,就能马上掌握在手,最后变得无所不能。
这种能力,就叫学习能力。一个会学习的人,在任何领域都能变得强大。

一个人最重要的能力,不是学历多牛逼,不是实习经历多光彩,而是拥有一种强大的学习能力。但很可惜,我们有部分人毕业之后就丧失了如何继续学习的“学习能力”。
那么到底怎样才叫会学习呢?

1.通过观察找到事物的共性

小学课本上有加减乘除的四则运算法则。例如:2*3 -(5-2)- 2=?。如果你去翻答案,可能只有一个孤零零的数字1摆在上面,并没有解题过程。这个时候你可以尝试着用答案来反推解题过程:

2*3 -(5-2)- 2=1,这个等式去掉括号如何才能成立?在试过了几种方向之后,最后会发现只有:2*3-5+2-2=1,这个等式才成立。

进而你会发现,当括号前面是 + 号的时候,去掉括号,括号里面的运算符号不变;

当括号前面是-号的时候,去掉括号,括号里面的运算符号要变成相反。

当你拿着这个结论去验算其他类似的题目,发现全部符合这个规律。这是一个最简单的“演绎归纳”的推理过程,而它背后的逻辑是,通过找到个别事物的特性从而反推找到整体的共性。

在日常的工作生活中,这种方法其实屡见不鲜。

谈恋爱的时候,男生为了讨好女生会在追求的过程中说各种甜言蜜语,可是等到追到手以后就变得不那么上心。这是通过几个个别事例总结出来的事实,然后情感热线专家们据此就会得出一个共性规律:

得不到时才是最好的,得到了就不会懂得珍惜。

在给领导做工作汇报的时候,通常时间都不会超过半个小时,因为领导总是有下一场会议要赶。这是你在做了几次汇报之后发现的一个事实,然后职场热线专家据此就会告诉你一个共性规律:

领导的时间都是有限的,所以汇报工作要精简抓住要点。

这个世界上所有的事情背后都有一套简单的运转规律。会学习的人,首先会通过观察找到事物背后的本质,继而发现共性,最终推论到全局。无论是科学研究,还是世故人情,无论是商业经济,还是生物进化,支撑着这些领域不断向前发展的可能是简单的几条规律,或者说,真理。

牛顿三大定律,摩尔定律,广义相对论,波士顿矩阵,达尔文进化论......这些实际上都是一个东西,规则。聪明人从大量事实中发现共性,总结规则;普通人顺应和利用这些规则,仅此而已。

2.活学活用,举一反百

你身边一定有那种各门考试都很好,但是一遇到没见过的问题就不知道该怎么解的“学霸”,这种叫“死学”。

会学习的人,讲究“活学”。“活学”最大的特征就是,善于跨界地去学习不同领域的知识,并善于各种灵活多变的知识组合,对各种事情进行高效的处理。你在A领域学习到的规则,发现在B领域也基本适用,再修改或者变通下也能在C领域、D领域部分适用。

能量守恒定律最初是物理学规则,但是同样适用于商业领域,于是有了“零和博弈”。

“物竞天择,适者生存”最初是生物进化学的理论,但是推演到任何一个高度竞争的领域都同样适用。在工作中,能力强的人会一路高升,能力差的人一定会被淘汰;在商业竞争中,质量好的商品会收到追捧,质量差的商品会被下架。

“市场供求曲线”最初是经济学的一条规则,但是你在谈恋爱的时候同样适用。

“活学”之人,必会“活用”,再复杂的问题到了他手里都会变的清晰和简单。碰到一个新问题,进行逻辑分析,找出相似性和共性。他们就进入到一个熟悉的领域,问题马上迎刃而解。
3.多领域发展

不管关于这一点是否有争议,但这个世界上“通才”似乎比“专才”往往更能适应竞争。只说一点,“通才”和“专才”最大的区别在于面对急剧变化的形势时的应变能力。

凯文凯利在《失控》说过:

要成长为新物种,你就要经历所有你不会去扮演的角色。

当一个环境开始急剧变化的时候,一定是内部和外部同时发生了改变。如果只是单一内部发生改变,以往过去的规则和经验或许足以应对和解决问题,但是一旦这个冲击变化来自于外部陌生的领域,经验主义就再也不适用了。最好的例子就是近几年来几乎中国所有的实体经济都开始朝着互联网+的方向发展。你会发现,线下超市被电商大规模冲击、逐步有自我学习能力的机器人开始工业和民用领域、工业4.0让制造业变得更加无缝对接、互联网反欺诈让隐形的欺诈者越来越难生存,移动支付让我们省去大量去银行门店处理事务的时间.......这些在过去让人们匪夷所思的事情,背后都蕴含着新的规则和逻辑。

点评:

不论你已经是一位很有名的专家或者专才了,我们都应该保持永久学习的好奇心态,因为世界变化太快。
 
来自知乎专栏 收起阅读 »

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

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

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

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

日内操作 8月1日 躺死

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

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


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

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

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

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

医疗保险在退休时必须积累一定的缴费年限(含视同缴费年限),一般规定为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日 特停政策下游资休养生息

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

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

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

git 比较两个分支的不同

git

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冲突 解决

git
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上的问题都这么入门级别的?

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

segenfault.PNG

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

segenfault.PNG

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

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

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

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

 
 

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

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

所能承受的困惑

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

tushare 源码分析 之 fundamental.py

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 
注册后送积分,只有足够的积分才能够调用一些高权限的接口

待续。
继续阅读 »
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

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 笔记 (新人会遇到的坑)

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

sql.PNG

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

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

sql.PNG

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

 
  收起阅读 »

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

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

 
继续阅读 »
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

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
继续阅读 »
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

定期更新:
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月之后

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

汇金持股.PNG

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

汇金持股.PNG

 
 
保持关注。
 

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

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

雪人7-11.PNG

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

雪人7-11.PNG

 
雪人股份 后续分析 6月30日 收起阅读 »

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

 
代码如下片段
 
__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')
 
就可以了。
  收起阅读 »

判断网页内容是否经过gzip压缩 python代码

同一个网页某些页面会通过gzip压缩网页内容,给正常的爬虫造成一定的错误干扰。
 
那么可以在代码中添加一个判断,判断网页内容是否经过gzip压缩,是的话多一个处理就可以了。
 

gzip.PNG

 
同一个网页某些页面会通过gzip压缩网页内容,给正常的爬虫造成一定的错误干扰。
 
那么可以在代码中添加一个判断,判断网页内容是否经过gzip压缩,是的话多一个处理就可以了。
 

gzip.PNG

 

深港通标的个股 -- 年内定会开通

为什么谈论这个? 因为最近盘中会发现不断有大单进入这些个股。 属于个股异动,但是股价确没有跟着大单上涨。 所以个人感觉后续会有一波好行情。
 

深港通.PNG

 
为什么谈论这个? 因为最近盘中会发现不断有大单进入这些个股。 属于个股异动,但是股价确没有跟着大单上涨。 所以个人感觉后续会有一波好行情。
 

深港通.PNG

 

linux locate 搜索挂载的分区文件


一般linux的locate命令会忽略挂载分区的文件,所以即使你挂载分区后使用updatedb也没用。
可以修改updatedb的配置文件来修改
sudo gedit /etc/updatedb.conf

把文件中的
PRUNEPATHS="/tmp /var/spool /media /home/.ecryptfs"

/media 去掉就可以了。
这个参数是设置忽略哪些查找的路径。
 
继续阅读 »

一般linux的locate命令会忽略挂载分区的文件,所以即使你挂载分区后使用updatedb也没用。
可以修改updatedb的配置文件来修改
sudo gedit /etc/updatedb.conf

把文件中的
PRUNEPATHS="/tmp /var/spool /media /home/.ecryptfs"

/media 去掉就可以了。
这个参数是设置忽略哪些查找的路径。
  收起阅读 »

股市中的数学 (1)

数学源于生活,在股市中也处处用得着。 
 
股价连续n个涨停板后的涨幅是 = (1.1的n次方 -1 )
比如, 新股连续一周涨停板,那么一周的涨幅就是 1.1(**5)-1=61%
 
1 day's raise is 10.00
2 day's raise is 21.00
3 day's raise is 33.10
4 day's raise is 46.41
5 day's raise is 61.05

 
 
 
继续阅读 »
数学源于生活,在股市中也处处用得着。 
 
股价连续n个涨停板后的涨幅是 = (1.1的n次方 -1 )
比如, 新股连续一周涨停板,那么一周的涨幅就是 1.1(**5)-1=61%
 
1 day's raise is 10.00
2 day's raise is 21.00
3 day's raise is 33.10
4 day's raise is 46.41
5 day's raise is 61.05

 
 
  收起阅读 »

定向增发与非公开发行

股市经常看公告,会有定向增发和非公开发行这样的字眼,解释如下:
定向增发与非公开发行目前已经是一个概念了。
定向增发是指上市公司向符合条件的少数特定投资者非公开发行股份的行为,规定要求发行对象不得超过10人,发行价不得低于公告前20个交易市价的90%,发行股份12个月内(认购后变成控股股东或拥有实际控制权的36个月内) 不得转让。

2006年证监会推出的《再融资管理办法》中,关于非公开发行,除了规定发行对象不得超过10人,发行价不得低于市价的90%,发行股份12个月内(大股东认购的为36个月)不得转让,以及募资用途需符合国家产业政策、上市公司及其高管不得有违规行为等外,没有其他条件。
 
感觉不公开的东西才是好东东~
 
非定向增发的估计都是没人要的。。
继续阅读 »
股市经常看公告,会有定向增发和非公开发行这样的字眼,解释如下:
定向增发与非公开发行目前已经是一个概念了。
定向增发是指上市公司向符合条件的少数特定投资者非公开发行股份的行为,规定要求发行对象不得超过10人,发行价不得低于公告前20个交易市价的90%,发行股份12个月内(认购后变成控股股东或拥有实际控制权的36个月内) 不得转让。

2006年证监会推出的《再融资管理办法》中,关于非公开发行,除了规定发行对象不得超过10人,发行价不得低于市价的90%,发行股份12个月内(大股东认购的为36个月)不得转让,以及募资用途需符合国家产业政策、上市公司及其高管不得有违规行为等外,没有其他条件。
 
感觉不公开的东西才是好东东~
 
非定向增发的估计都是没人要的。。 收起阅读 »

python 编写火车票抢票软件

项目:python 编写火车票抢票软件
实现日期:2016.7.30
项目:python 编写火车票抢票软件
实现日期:2016.7.30