聚币网/coinegg API使用教程 附demo代码
现在聚币网已经被关闭了,但是所有的币都可以转移到CoinEgg网了,币种和以前一模一样,只是用户参与度减少了很多,市场不是一个有效的市场,但是这对于操盘手来说,更加是一个收益大的地方。
使用下面链接注册后,用户可以返30%的佣金。 其实也无所谓,佣金不会很多,一次也就几分钱到几毛钱,自己去官网注册也可以。看个人心情啦。
http://www.coinegg.com/user/register?inv=7d91a
后续会就coinegg写一个自动交易的系统出来
******* 8.28 更新 ***********
不少人反应签名不通过,经过调试,发现是加密前的字符拼接的顺序问题,这个拼接顺序要和你post上去的顺序要一致,才能通过。如果出现104的返回代码,说明是你的顺序问题,说明你的签名没有成功。
贴代码说明下: 使用字典循环,就可以知道正确的拼接顺序。 下面的代码是获取成交订单的。
def Trade_list(self, coin):
'''
Trade_list(挂单查询)
您指定时间后的挂单,可以根据类型查询,比如查看正在挂单和全部挂单
Path:/api/v1/trade_list/
Request类型:POST
参数
key - API key
signature - signature
nonce - nonce
since - unix timestamp(utc timezone) default == 0, i.e. 返回所有
coin - 币种简称,例如btc、ltc、xas
type - 挂单类型[open:正在挂单, all:所有挂单]
返回JSON dictionary
id - 挂单ID
datetime - date and time
type - "buy" or "sell"
price - price
amount_original - 下单时数量
amount_outstanding - 当前剩余数量
'''
url = self.host + '/api/v1/trade_list/'
time.sleep(random.random())
nonce = self.get_nonce_time()
types = 'all'
since = 0
parameters = {'key': self.public_key, 'nonce': str(nonce), 'type': types, 'coin': coin, 'signature': ''}
# print parameters
post_data = ''
for k, v in parameters.items():
if not isinstance(v, str):
#if type(v) is not types.StringType:
v = str(v)
post_data = post_data + k
post_data = post_data + '=' + v + '&'
#print 'post-data:\n',post_data
post_data = post_data[:-1]
post_data = post_data.replace('&signature=', '')
#print post_data
signature = hmac.new(self.md5, post_data, digestmod=hashlib.sha256).digest()
sig = self.toHex(signature)
parameters['signature'] = sig
#print parameters
r = requests.post(url=url, data=parameters)
s = r.json()
#print s
return s
如果还是没有解决的话就网站内私信我看看问题所在。
******************************************* 原文内容 ***************************************************
官方有API的文档,可是这个文档就像一个草稿一样,两个基本例子都没有。 所以自己摸索一下,自己写一个现成的例子给大家,可以有个参考。 下面的例子亲测成功。
首先看一下官方的API文档:
一、API使用说明
1、请求过程说明
1.1 构造请求数据,用户数据按照Jubi提供的接口规则,通过程序生成签名和要传输给Jubi的数据集合;
1.2 发送请求数据,把构造完成的数据集合通过POST/GET提交的方式传递给Jubi;
1.3 Jubi对请求数据进行处理,服务器在接收到请求后,会首先进行安全校验,验证通过后便会处理该次发送过来的请求;
1.4 返回响应结果数据,Jubi把响应结果以JSON的格式反馈给用户,具体的响应格式,错误代码参见接口部分;
1.5 对获取的返回结果数据进行处理;
2、安全认证
所有的private API都需要经过认证
Api的申请可以到财务中心 -> API,申请得到私钥和公钥,私钥Jubi将不做储存,一旦丢失将无法找回
注意:请勿向任何人泄露这两个参数,这像您的密码一样重要
2.签名机制
每次请求private api 都需要验证签名,发送的参数示例:
$param = array(
amount => 1,
price => 10000,
type => 'buy',
nonce => 141377098123
key => 5zi7w-4mnes-swmc4-egg9b-f2iqw-396z4-g541b
signature => 459c69d25c496765191582d9611028b9974830e9dfafd762854669809290ed82
);
nonce 可以理解为一个递增的整数:http://zh.wikipedia.org/wiki/Nonce
key 是申请到的公钥
signature是签名,是将amount price type nonce key等参数通过'&'字符连接起来通过md5(私钥)为key进行sha256算法加密得到的值.
首先聚币的行情是使用网络爬虫获取的,而说明中给出了一系列的参数,你需要做的就是把这些参数填充上去。
如果你只是想要获取行情,那么事情容易很多。
def real_time_ticker(coin):
url = 'https://www.jubi.com/api/v1/ticker/'
try:
data = requests.post(url, data={'coin': coin}).json()
except Exception ,e:
print e
return data
上面代码展示的时候获取实时的行情。委一和买一的价格,数量,和当前成交的数量,价格。
按照上面的格式,把参数coin填上去,比如要获取泽塔币, real_time_ticker('zet') 就会返回获取的数据。
{u'sell': u'0.179000', u'volume': 21828245.102822, u'buy': u'0.175010', u'last': u'0.179000', u'vol': 108290769.9171, u'high': u'0.289000', u'low': u'0.119141'}
所有的private API都需要经过认证, 就是说如果你要进行交易,委托,下单,你就需要使用私钥和公钥,并进行一系列的加密。
每次请求private api 都需要验证签名,发送的参数示例:
$param = array(
amount => 1,
price => 10000,
type => 'buy',
nonce => 141377098123
key => 5zi7w-4mnes-swmc4-egg9b-f2iqw-396z4-g541b
signature => 459c69d25c496765191582d9611028b9974830e9dfafd762854669809290ed82
);
nonce 可以理解为一个递增的整数:http://zh.wikipedia.org/wiki/Nonce
key 是申请到的公钥
signature是签名,是将amount price type nonce key等参数通过'&'字符连接起来通过md5(私钥)为key进行sha256算法加密得到的值.
比如下单:
Trade_add(下单)
Path:/api/v1/trade_add/
Request类型:POST
参数
key - API key
signature - signature
nonce - nonce
amount - 购买数量
price - 购买价格
type - 买单或者卖单
coin - 币种简称,例如btc、ltc、xas
id - 挂单ID
result - true(成功), false(失败)
{"result":true, "id":"11"}
返回JSON dictionary
id - 挂单ID
result - true(成功), false(失败)
返回结果示例:
{"result":true, "id":"11"}
首先解决nonce。
在维基百科中
在安全工程中,Nonce是一个在加密通信只能使用一次的数字。在认证协议中,它往往是一个随机或伪随机数,以避免重放攻击。Nonce也用于流密码以确保安全。如果需要使用相同的密钥加密一个以上的消息,就需要Nonce来确保不同的消息与该密钥加密的密钥流不同。
结合stackoverflow, nonce只是一个12位的随机数。
可以用以下方法获得这个随机数
def get_nonce(self):
lens=12
return ''.join([str(random.randint(0, 9)) for i in range(lens)])
聚币中的nonce的位数是12位,所以lens定义为12
或者可以直接用时间函数生成:
def get_nonce_time(self):
lens = 12
curr_stamp = time.time()*100
nonece=int(curr_stamp)
return nonece
然后是signature。
signature是签名,是将amount price type nonce key等参数通过'&'字符连接起来通过md5(私钥)为key进行sha256算法加密得到的值.
先把私钥进行md5处理
def getHash(self,s):
m=hashlib.md5()
m.update(s)
return m.hexdigest()
只要把私钥传入函数getHash就可以得到一个md5处理过的字符串。
私钥是聚币网给每个用户分配的字符串,是唯一的,这里假设为private_key=123456789吧,具体是多少,在你的聚币网设置里面可以找到。
sha_256key=self.getHash(private_key)
按照要求吧 你要post的数据字符串连起来
nonce=self.get_nonce_time
type='buy'
amount='10000'
key='xxxxxxxxxxx‘ #这个是聚币网给你的公钥,同样在设置里头可以找到
price='10' #你要设置的价格为10
coin='zet'
message = "amount=“+amount+”&nonce="+str(nonce)+"&type="+type+"&key="+key+'&price="+price+"&coin"+coin
signature = hmac.new(sha_256key, message, digestmod=hashlib.sha256).digest()
这样获得signature之后,就可以通过签名来进行post操作。
data_wrap={'nonce':nonce,'key':key_value,'signature':signature}
js=requests.post(url,data=data_wrap).json()
如果直接按照上面的代码去获取账户相关信息或者去挂单的话,会返回104的签名错误。 经过不断的排查,发现是signature的字符格式的问题。
构造一个str转换格式的函数:
def toHex(self,str):这个函数的作用就是把原来十六进制格式的字符完全转化成十六进制,把前面的0x去掉,不足2位的补全为2位。
lst =
for ch in str:
hv = hex(ord(ch)).replace('0x', '')
if len(hv) == 1:
hv = '0' + hv
lst.append(hv)
return reduce(lambda x, y: x + y, lst)
把经过处理的signature进行格式转换后,几次提交,终于发现可以获取到用户的账户信息,进行下单,撤单,等操作。
下面是一个获取账户信息的代码段:
def getAccount(self):
url='https://www.jubi.com/api/v1/balance/'
nonce_value=self.get_nonce_time()
print nonce_value
key_value=self.public_key
private_key=self.private_key
s='nonce='+str(nonce_value)+'&'+'key='+key_value
print s
#signature是签名,是将amount price type nonce key等参数通过'&'字符连接起来通过md5(私钥)为key进行sha256算法加密得到的值.
md5=self.getHash(private_key)
print md5
print type(md5)
msg=bytes(s).encode('utf-8')
key=bytes(md5).encode('utf-8')
signature =hmac.new(key,msg,digestmod=hashlib.sha256).digest()
print signature
print type(signature)
sig=self.toHex(signature)
print sig
data_wrap={'nonce':nonce_value,'key':key_value,'signature':sig}
print data_wrap
data_en=urllib.urlencode(data_wrap)
req=urllib2.Request(url,data=data_en)
resp=urllib2.urlopen(req).read()
print resp
def toHex(self,str):
lst =
for ch in str:
hv = hex(ord(ch)).replace('0x', '')
if len(hv) == 1:
hv = '0' + hv
lst.append(hv)
return reduce(lambda x, y: x + y, lst)
以上的代码运行后返回一下账户信息:
{"uid":123456,"nameauth":1,"moflag":1,"asset":,"btc_balance":0,"btc_lock":0,"drk_balance":0,"drk_lock":0,"blk_balance":0,"blk_lock":0,"vrc_balance":0,"vrc_lock":0,"tfc_balance":0,"tfc_lock":0,"jbc_balance":0,"jbc_lock":0,"ltc_balance":0,"ltc_lock":0,"doge_balance":0,"doge_lock":0,"xpm_balance":0,"xpm_lock":0,"ppc_balance":0,"ppc_lock":0,"wdc_balance":0,"wdc_lock":0,"vtc_balance":0,"vtc_lock":0,"max_balance":0,"max_lock":0,"ifc_balance":0,"ifc_lock":0,"zcc_balance":0,"zcc_lock":0,"zet_balance":0,"zet_lock":0,"eac_balance":0,"eac_lock":0,"fz_balance":0,"fz_lock":0,"skt_balance":0,"skt_lock":0,"plc_balance":0,"plc_lock":0,"mtc_balance":0,"mtc_lock":0,"qec_balance":0,"qec_lock":0,"lkc_balance":10,"lkc_lock":0,"met_balance":0,"met_lock":0,"ytc_balance":0,"ytc_lock":0,"hlb_balance":0,"hlb_lock":0,"game_balance":0,"game_lock":0,"rss_balance":0,"rss_lock":0,"rio_balance":0,"rio_lock":0,"ktc_balance":0,"ktc_lock":0,"pgc_balance":0,"pgc_lock":0,"mryc_balance":0,"mryc_lock":0,"eth_balance":0,"eth_lock":0,"etc_balance":0,"etc_lock":0,"dnc_balance":0,"dnc_lock":0,"gooc_balance":0,"gooc_lock":0,"xrp_balance":0,"xrp_lock":0,"nxt_balance":0,"nxt_lock":0,"lsk_balance":0,"lsk_lock":0,"xas_balance":0,"xas_lock":0,"peb_balance":0,"peb_lock":0,"nhgh_balance":0,"nhgh_lock":0,"xsgs_balance":0,"xsgs_lock":0,"ans_balance":0,"ans_lock":0,"bts_balance":0,"bts_lock":0,"cny_balance":0,"cny_lock":0}
聚币网个人邀请码:
514330
还没注册可以拿去用,对于我而言可以拿到你们交易费用的50%,不过一般交易费除非是超级大户,一般散户都很少。千分之一的交易手续费。
欢迎一起讨论:
Email:weigesysu@qq.com
原创内容,转载请注明出处
http://30daydo.com/article/181
收起阅读 »
python 计算当天指定某个时段的成交量
为什么需要这个功能? 因为平时复盘的时候,会切换当天的分时图,一般喜欢切换成5分钟图,这样子就对每个时刻的成交量有比较直观的认识。比如今天(2017-05-08)的无锡银行。
很无耻是吧? 我就像看看尾盘的20分钟内,主力动用了多少资金把股价从水下直接拉到涨停。 用程序处理,比用手工计算,要节省多时间了(前阵子的确是每笔粗略的相加)。
只要在main()中修改股票代码和你要获取成交量的时间,就可以获取你想要的数据。 还有一个数据就是该成交量占当天成交量的比例。
# -*-coding=utf-8-*-
__author__ = 'Rocky'
#计算某个股票的某个时间段的成交量
import tushare as ts
import pandas as pd
import datetime
pd.set_option('display.max_rows',None)
class amount_calculation():
def __init__(self,code):
self.df=ts.get_today_ticks(code)
#转换str为时间格式,便于下面用来比较时间的大小
self.df['time']=self.df['time'].map(lambda x:datetime.datetime.strptime(str(x),'%H:%M:%S'))
print '\n'
self.total= self.df['volume'].sum()
def calc(self,start,end):
s0=datetime.datetime.strptime(start,'%H:%M:%S')
e0=datetime.datetime.strptime(end,'%H:%M:%S')
new_df=self.df[(self.df['time']>=s0) & (self.df['time']<e0) ]
part=new_df['volume'].sum()
print part
rate=round(part*1.00/self.total*100,2)
print rate
return rate
def main():
obj=amount_calculation('600908')
#s1=obj.calc('09:24:00','10:30:00')
#s2=obj.calc('10:30:00','11:30:00')
#s3=obj.calc('13:00:00','14:00:00')
s4=obj.calc('14:35:00','15:05:00')
#print s1+s2+s3+s4
main()
运行上面代码,得到
114046
34.16
成交量为11.4万手,大概占当天成交量的34.16%, 半小时的时间。(1/8的时间,涨了1/3的成交量)
算出这个有什么用呢?
对于庄股,可以便于你计算出主力当天吸了多少货,或者出了多少货。 数据不会完全精确,但是能够知道交易的量级。 像上面的例子,大概就10w-12w手的样子。
更多文章
30天学会量化交易模型 Day01 收起阅读 »
python 求2个list列表的相关系数
比如 c=[2,4,6,8,10,12,14,16,18] ,和d=[4,8,12,20,24,28,32,36], 这两组数据,相关系数为1,因为二者的数据都在同一条直线上。 存在必然的因果关系。
其计算公式为:
实际上python的中pandas已经提供了很简单的内置函数,可以自己计算这个相关系数。 在《python数据分析》这本书就有,不过网上查到的资料就比较少。
参考代码:
c=[2,4,6,8,10,12,14,16,18]corr()就是计算相关系数的函数。
d= [i*2 for i in c]
print d
s1=Series(c) #转为series类型
s2=Series(d)
corr=s1.corr(s2) #计算相关系数
print corr
上面的例子中,计算出的corr的值为1,如果修改一下d的某个值,比如 d[0]=3 把d的第一个值改为3,那么相关系数就不为1,但是他的相关系数为0.987503379952, 也差不多接近1. 说明这两组数据也是相关性很大的。
c=[2,4,6,8,10,12,14,16,18]
d= [i*2 for i in c]
print d
d[0]=3 # 修改d[0]的值
s1=Series(c) #转为series类型
s2=Series(d)
corr=s1.corr(s2) #计算相关系数
print corr
原创地址:http://www.30daydo.com/article/178
欢迎转载,请注明出处。
收起阅读 »
2017年以来的新股的市盈率(动态)到目前为止是多少?
code name industry area pe
300554 N三超 矿物制品 江苏 29.61
300642 N透景 医疗保健 上海 61.54
603232 N格尔 软件服务 上海 90.56
300645 N正元 软件服务 浙江 25.91
603139 N康惠 中成药 陕西 55.73
603803 瑞斯康达 通信设备 北京 38.44
603081 大丰实业 专用机械 浙江 45.08
603225 新凤鸣 化纤 浙江 42.08
300641 正丹股份 化工原料 江苏 38.94
2863 今飞凯达 汽车配件 浙江 31.84
300604 长川科技 专用机械 浙江 95.26
300640 德艺文创 文教休闲 福建 35.7
603050 科林电气 电气设备 河北 47.81
603826 坤彩科技 染料涂料 福建 52.14
2861 瀛通通讯 通信设备 湖北 51.85
603797 联泰环保 环境保护 广东 58.78
300638 广和通 通信设备 深圳 52.89
300637 扬帆新材 化工原料 浙江 55.99
300639 凯普生物 医疗保健 广东 61.02
601366 利群股份 百货 山东 40.83
2860 星帅尔 电气设备 浙江 52.09
2862 实丰文化 文教休闲 广东 68.85
603078 江化微 化工原料 江苏 54.32
603906 龙蟠科技 化工原料 江苏 61.42
2859 洁美科技 元器件 浙江 49.76
603538 美诺华 化学制药 浙江 53.68
300632 光莆股份 半导体 福建 81.71
603586 金麒麟 汽车配件 山东 40.05
300633 开立医疗 医疗保健 深圳 66.58
603385 惠达卫浴 家居用品 河北 38.55
300636 同和药业 化学制药 江西 55.38
300635 达安股份 建筑施工 广东 56.56
601200 上海环境 环境保护 上海 47.28
603303 得邦照明 家用电器 浙江 28.1
603041 美思德 化工原料 江苏 49.15
601228 广州港 港口 广东 89.91
300630 普利制药 化学制药 海南 69.51
603833 欧派家居 家居用品 广东 46.35
603178 圣龙股份 汽车配件 浙江 53.06
603717 天域生态 环境保护 重庆 52.39
603388 元成股份 建筑施工 浙江 63.46
300629 新劲刚 矿物制品 广东 126.05
603768 常青股份 汽车配件 安徽 43.04
2774 快意电梯 运输设备 广东 58.63
2858 力盛赛车 文教休闲 上海 102.63
300631 久吾高科 环境保护 江苏 72.98
2857 三晖电气 电器仪表 河南 0
2855 捷荣技术 塑料 广东 69.55
603656 泰禾光电 专用机械 安徽 53.82
300627 华测导航 通信设备 上海 67.46
2856 美芝股份 装修装饰 深圳 63.78
300626 华瑞股份 电气设备 浙江 81.05
603133 碳元科技 元器件 江苏 72.88
300625 三雄极光 半导体 广东 45.17
603517 绝味食品 食品 湖南 43.74
603179 新泉股份 汽车配件 江苏 61.57
300628 亿联网络 通信设备 福建 55.24
300621 维业股份 装修装饰 深圳 64.14
300622 博士眼镜 其他商业 深圳 82.66
603811 诚意药业 化学制药 浙江 73.4
603960 克来机电 专用机械 上海 99.88
603903 中持股份 环境保护 北京 103.18
300623 捷捷微电 半导体 江苏 50.98
603630 拉芳家化 日用化工 广东 49.94
603665 康隆达 纺织 浙江 49.4
2852 道道全 食品 湖南 44.89
2853 皮阿诺 家居用品 广东 55.15
603955 大千生态 环境保护 江苏 59.15
300620 光库科技 元器件 广东 73.33
603991 至正股份 塑料 上海 84.99
603908 牧高笛 纺织 浙江 74.17
300616 尚品宅配 家居用品 广东 59.29
2851 麦格米特 电气设备 深圳 73
603578 三星新材 玻璃 浙江 105.85
603138 海量数据 软件服务 北京 135.21
300618 寒锐钴业 小金属 江苏 133.38
2850 科达利 机械基件 深圳 55.29
300619 金银河 专用机械 广东 246.98
300617 安靠智电 电气设备 江苏 65.97
603238 诺邦股份 纺织 浙江 62.94
603345 安井食品 食品 福建 54.28
600939 重庆建工 建筑施工 重庆 82.74
603817 海峡环保 环境保护 福建 83.99
300613 富瀚微 半导体 上海 67.63
300611 美力科技 机械基件 浙江 67.94
2849 威星智能 电器仪表 浙江 86.25
603603 博天环境 环境保护 北京 111.4
601212 白银有色 铜 甘肃 265.03
300609 汇纳科技 互联网 上海 82.01
300615 欣天科技 元器件 深圳 55.67
300612 宣亚国际 广告包装 北京 195.12
603839 安正时尚 服饰 浙江 37.3
603615 茶花股份 塑料 福建 57.4
603330 上海天洋 塑料 上海 64.02
300610 晨化股份 化工原料 江苏 54.18
300608 思特奇 软件服务 北京 61.78
2848 高斯贝尔 通信设备 湖南 65.19
603208 江山欧派 家居用品 浙江 38.24
603626 科森科技 专用机械 江苏 153.86
603040 新坐标 机械基件 浙江 80.74
300607 拓斯达 专用机械 广东 103.38
300605 恒锋信息 软件服务 福建 79.72
603637 镇海股份 建筑施工 浙江 72.58
300606 金太阳 矿物制品 广东 77.25
2847 盐津铺子 食品 湖南 70.34
603881 数据港 互联网 上海 118.22
300601 康泰生物 生物制药 深圳 112.28
603177 德创环保 环境保护 浙江 112.99
2846 英联股份 广告包装 广东 118.72
603677 奇精机械 机械基件 浙江 46.51
603360 百傲化学 化工原料 辽宁 44.71
300602 飞荣达 元器件 深圳 44.98
300603 立昂技术 通信设备 新疆 124.24
603089 正裕工业 汽车配件 浙江 43.63
603358 华达科技 汽车配件 江苏 30.03
2845 同兴达 元器件 深圳 110.36
603966 法兰泰克 机械基件 江苏 82.08
300578 会畅通讯 通信设备 上海 97.19
300600 瑞特股份 电气设备 江苏 55.45
2839 张家港行 银行 江苏 46.6
603429 集友股份 广告包装 安徽 92.59
601881 中国银河 证券 北京 24.02
300599 雄塑科技 塑料 广东 65.11
300597 吉大通信 通信设备 吉林 96.6
2843 泰嘉股份 钢加工 湖南 140.16
300592 华凯创意 软件服务 湖南 0
603037 凯众股份 汽车配件 上海 40.72
300598 诚迈科技 软件服务 江苏 69.49
603638 艾迪精密 专用机械 山东 38.92
2841 视源股份 元器件 广东 46.85
2842 翔鹭钨业 小金属 广东 63.53
603337 杰克股份 纺织机械 浙江 29.96
300596 利安隆 化工原料 天津 47.69
601858 中国科传 出版业 北京 95.28
300595 欧普康视 医疗保健 安徽 55.35
603668 天马科技 饲料 福建 58.17
603165 荣晟环保 造纸 浙江 48.2
603038 华立股份 装修装饰 广东 35.91
300589 江龙船艇 船舶 广东 113.92
603039 泛微网络 软件服务 上海 73.71
603690 至纯科技 专用机械 上海 79.65
300593 新雷能 电气设备 北京 77.11
603628 清源股份 电气设备 福建 107.13
2824 和胜股份 铝 广东 56.15
603639 海利尔 农药化肥 山东 44.23
300584 海辰药业 化学制药 江苏 76.64
300590 移为通信 通信设备 上海 55.19
300580 贝斯特 汽车配件 江苏 43.14
603579 荣泰健康 医疗保健 上海 45.21
2840 华统股份 食品 浙江 52.47
603266 天龙股份 塑料 浙江 48.58
603689 皖天然气 供气供热 安徽 61.81
300591 万里马 服饰 广东 126.22
603877 太平鸟 服饰 浙江 35.34
300583 赛托生物 生物制药 山东 67.33
603228 景旺电子 元器件 深圳 32.84
2838 道恩股份 塑料 山东 66.23
603032 德新交运 公路 新疆 84.36
300587 天铁股份 橡胶 浙江 54.16
603035 常熟汽饰 汽车配件 江苏 29.44
300588 熙菱信息 软件服务 新疆 758.5
603444 吉比特 互联网 福建 35.29
300586 美联新材 化工原料 广东 67.93
601375 中原证券 证券 河南 54.87
603186 华正新材 元器件 浙江 52.86
最后一列是pe,在dataframe中直接可以 avg_pe= df['pe'].mean() 就可以算出来。
目前是 72.22。 如果把数据拉到2016年1月以来所发新股的市盈率,这个均值为 76.63
请问贵吗? 那就得和全市场的平均市盈率比才知道。
目前全市场的市盈率平均值为 140.84 (使用的平均值,没有按照权重进行归一处理),使用的数据源为新浪财经。 所以目前次新股还是有投资价值的。 只是目前大家的情绪都比较悲观而已。
收起阅读 »
numpy 中的ndarray类型转为list类型 / list转为ndarray类型
而python的基本类型list 是[ 1 ,2, 3,4, 5]这样的。
那么二者可以互换
ndarray转换为list
d=np.array([1, 2, 3,4,5 ])或者直接调用list()
print d
e=d.tolist()
print e
d=np.array([1, 2, 3,4,5 ])
print d
e=list(d)
print e
而list转为ndarry就依照上面的代码就可以了
lst=[1, 2, 3,4,5 ]
d=np.array(lst)
原创地址:http://www.30daydo.com/article/174
转载请注明出处 收起阅读 »
ts.get_stock_basics() to_excel("base.xls") 保存dataframe 编码错误
基本代码片:
base=ts.get_stock_basics()
base.to_csv('2.xls')
出现的错误:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6 in position 1: ordinal not in range(128)
然后替换几种编码方式:
base.to_excel('base.xls',encoding='GBK')
base.to_excel('111.xls',encoding='utf8')
base.to_excel('111.xls‘)
不过问题还在。
而保存为csv文件却没有这个编码问题:
base.to_csv('base.csv)
于是采取了迂回战术, 先把数据保存为csv, 然后读取这个文件,然后 再保存为exel文件。
居然给我弄成功了!!
收起阅读 »
JoinQuant 遇到的问题总结 --定期更新
tushare 中的ts.get_stock_basics() 函数总是超时 返回不到结果的原因
import tushare as ts
ts.get_stock_basics()
不过经常会出现:
self.base=ts.get_stock_basics()这样的问题。
File "C:\Python27\lib\site-packages\tushare\stock\fundamental.py", line 44, in get_stock_basics
text = urlopen(request, timeout=10).read()
File "C:\Python27\lib\socket.py", line 351, in read
data = self._sock.recv(rbufsize)
File "C:\Python27\lib\httplib.py", line 567, in read
s = self.fp.read(amt)
File "C:\Python27\lib\socket.py", line 380, in read
data = self._sock.recv(left)
socket.timeout: timed out
这个是因为tushare的作者把get_stock_basics()的信息文件保存在他自己的服务器。
这一点可以翻看源码就知道。 地址为: http://218.244.146.57/static/all.csv
估计作者用的一般的服务器,所以一旦数据请求多了,你的IP也被服务器当做是DDOS攻击,屏蔽掉你的请求了。
所以如果你平时需要频繁调用这个函数,不如把这个文件下载到本地,然后使用函数 df=pd.read_csv('all.csv')
来得到你想要数据,这样一来,程序不会因为经常超时而中断,而且本地读取文件的数据很快。 这样会节约不少的时间。
在最新的tushare这个问题得到了解决。已经换一个数据源了。
PS:好多小问题都可以通过更新最新的tushare版本来得到解决。
升级命令:
pip install tushare --upgrade
收起阅读 »
中国各个省份/直辖市拥有的上市公司数目 附python代码
下面通过代码来统计这个数据, 其实很简单,用python只需几行代码就能够实现
def count_area():
base=ts.get_stock_basics()
count=base['area'].value_counts()
#这一句的意思,就是获取所有股票的上市地区的数据,然后计算出现的次数
print count
print type(count)
得出的是以下的数据:
浙江 360
江苏 337
北京 289
广东 267
上海 251
深圳 242
山东 176
福建 116
四川 110
安徽 98
湖北 95
湖南 91
河南 76
辽宁 75
河北 54
新疆 50
天津 46
陕西 46
重庆 45
吉林 42
山西 38
江西 37
广西 36
黑龙江 35
云南 32
甘肃 31
海南 29
内蒙 25
贵州 23
西藏 14
宁夏 12
青海 11
从数据来看,数量最多的是江浙一带(因为深圳从广东省的数据中分离出去了)。
这个也从正面反映每个地方的经济繁荣程度。 收起阅读 »
mac os x python安装matplotlib 库 出错: Operation not permitted
Password:
The directory '/Users/rocky/Library/Caches/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
The directory '/Users/rocky/Library/Caches/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
Requirement already satisfied: matplotlib in /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python
Requirement already satisfied: numpy>=1.5 in /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python (from matplotlib)
Requirement already satisfied: python-dateutil in /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python (from matplotlib)
Collecting tornado (from matplotlib)
Downloading tornado-4.4.3.tar.gz (463kB)
100% |████████████████████████████████| 471kB 84kB/s
Requirement already satisfied: pyparsing>=1.5.6 in /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python (from matplotlib)
Collecting nose (from matplotlib)
Downloading nose-1.3.7-py2-none-any.whl (154kB)
100% |████████████████████████████████| 163kB 75kB/s
Collecting singledispatch (from tornado->matplotlib)
Downloading singledispatch-3.4.0.3-py2.py3-none-any.whl
Collecting certifi (from tornado->matplotlib)
Downloading certifi-2017.1.23-py2.py3-none-any.whl (382kB)
100% |████████████████████████████████| 389kB 105kB/s
Collecting backports_abc>=0.4 (from tornado->matplotlib)
Downloading backports_abc-0.5-py2.py3-none-any.whl
Requirement already satisfied: six in /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python (from singledispatch->tornado->matplotlib)
Installing collected packages: singledispatch, certifi, backports-abc, tornado, nose
Running setup.py install for tornado ... done
Exception:
Traceback (most recent call last):
File "/Library/Python/2.7/site-packages/pip/basecommand.py", line 215, in main
status = self.run(options, args)
File "/Library/Python/2.7/site-packages/pip/commands/install.py", line 342, in run
prefix=options.prefix_path,
File "/Library/Python/2.7/site-packages/pip/req/req_set.py", line 784, in install
**kwargs
File "/Library/Python/2.7/site-packages/pip/req/req_install.py", line 851, in install
self.move_wheel_files(self.source_dir, root=root, prefix=prefix)
File "/Library/Python/2.7/site-packages/pip/req/req_install.py", line 1064, in move_wheel_files
isolated=self.isolated,
File "/Library/Python/2.7/site-packages/pip/wheel.py", line 377, in move_wheel_files
clobber(source, dest, False, fixer=fixer, filter=filter)
File "/Library/Python/2.7/site-packages/pip/wheel.py", line 316, in clobber
ensure_dir(destdir)
File "/Library/Python/2.7/site-packages/pip/utils/__init__.py", line 83, in ensure_dir
os.makedirs(path)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/os.py", line 150, in makedirs
makedirs(head, mode)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/os.py", line 157, in makedirs
mkdir(name, mode)
OSError: [Errno 1] Operation not permitted: '/System/Library/Frameworks/Python.framework/Versions/2.7/man'
分析了原因后,以为权限不够,所以就把这个目录:
/Users/rocky/Library/Caches/pip/
做了提权: sudo /Users/rocky/Library/Caches/pip/
然后重新运行sudo pip install matplotlib
然后没有上面提示的错误。 然后在主程序中继续运行,结果还是出现:matplotlib模块没找到。
删除后重装,问题依然存在。
于是尝试用easy_install 安装, sudo easy_install matplotlib
等待了大概10多分钟,居然安装成功了。 因为下载的服务器比较慢,所以等待的时间就有点长了。
收起阅读 »
Dataframe的数据print输出 显示为...省略号
def get_achievement(self):
fc=ts.forecast_data(2016,4)
print fc
上面这个简单的代码意思是获取已经发布的2016年第4季度的业绩预告的上市公司。
默认输出的结果是:
中间多了个省略号,就是中间若干的数据因为太多而没有被显示。 那么要怎样才能正常显示所有数据呢???
查看了pandas的官方文档。
pandas.set_option() 可以设置pandas相关的参数,从而改变默认参数。 打印pandas数据事,默认是输出100行,多的话会输出....省略号。
那么可以添加: pandas.set_option('display.max_rows',None)
这样就可以显示全部数据:
def get_achievement(self):
fc=ts.forecast_data(2016,4)
pandas.set_option('display.max_rows',None)
print fc
收起阅读 »
在英伟达 神盾tv shield TV 游戏盒子上用手柄玩王者荣耀?
对于游戏性能,目前最强悍的莫过于英伟达的shield TV , 中文翻译暂且叫做神盾tv吧, 有pro版和非pro版。 在操作上区别不大。
如果你在小米电视上打算玩王者荣耀, 会非常的卡。 而且点击后要等10多秒才会有反应,不过大部分时候程序会直接崩溃,退出。 所以在小米电视上大部分的大型游戏都不具备可玩性。(体积大于100MB的游戏都算大型游戏)
一下均为本人在英伟达shield TV上亲测。
首先如果刷的是官方的rom,默认自带google的应用商场,国内的话等于装饰。 所以需要手工安装一个国内的应用商场,下面我安装的是沙发管家。 那么要怎么安装呢?
有2种方法:
1. 你有sd卡的话,可以把沙发管家的安装程序拷贝到sd卡上,然后插入shield TV中。 在shield TV中使用ES文件管理器安装
2.
原创地址:http://www.30daydo.com/article/164
欢迎转载,请注明出处。
收起阅读 »
一个会击中99%的人的9条导致没出息的根源
几乎每一条套在我身上都可以。 感觉自己是一个失败的人生。
美国研究生留学
考虑一千次,不如去做一次!犹豫一万次,不如实践一次!华丽的跌倒,胜过无谓的徘徊!据哈佛大学研究:一个人没出息一定有以下这九大根源。
一、犹豫不决
比鲁莽更糟糕的是犹豫不决。
像墙头草一样摇摆不定的人,无论其他方面多么强大,在生命的竞赛中总是容易被那些坚定地人挤到一边。雷厉风行难免会犯错,但比什么也不敢做强。怀特·黑德说:“畏惧错误就是毁灭进步。”
二、拖延
计划很丰满,执行很骨感。
很多时候拖延就是逃避问题和懒惰。
把横在面前的困难放大,望而却步,抱着能拖一天是一天的心态找各种借口逃避:
“无聊的工作”、
“苛刻的老板”、
“我太忙”、
“隔一天在做也没关系”……
随之而来,我们会陷入“工作越来越无趣”,“人生越来越无聊”的泥潭中。
愈加懒惰,愈加消极,会掉入懊悔过去和幻想未来的陷阱中。
时间累积会产生更加强烈的负罪感和自我否定让人越来越焦虑。
著名思想家罗曼·罗兰说:“懒惰是很奇怪的东西,它让你以为那是安逸,是休息,是福气;但实际上它所给你的是无聊,是倦怠,是消沉。”
三、三分钟热度
世界上有80%的失败都源于半途而废。
"三分钟热度”的人不过是从来没有体验到坚持做一件事成功后带来的喜悦,因为坚持的过程总是枯燥又充满挫折的,人的天性又是好逸恶劳。
“每一年伊始笔记本的前几页都写满了宏伟的计划,后面几乎都是空白……”
“购买了一本好书,可惜得是到现在都还没开始读……”
“下决心健身减肥,差不多在5天之后就放弃了……”
几乎所有的人都有过“雄心勃勃地制定计划,心灰意冷地放弃计划”的经历。
四、害怕拒绝
厚重而脆弱的自尊。
大多数时候,我们在人际关系中感受到的“痛”,都和“感到被拒绝”有关。
有时这种拒绝是很显然的,比如爱人突然的离去;或者被朋友背板和疏远。
而有时这种拒绝也可以是很细微的,比如你给了对方一个微笑的眼神,对方却移开了目光;或者你鼓起勇气给对方发了一个条微信,对方却过很久才简短回复。
一个能放下自尊去做事情的人,是专注目标成果导向的人;而把自尊心放在第一位的人,在人际交往做事情的时候,总关注在他人对自己的态度。
所以,一个人越是百无一用的时候,越执念于那些无足轻重的底线与小自尊心。
五、自我设限
杀死自己的潜能力。
他们经常这样说:我想做A,但是我怕做不到,因为B,C,D,E种原因。
他们还没去做之前,就先否定自己,并给自己找了一堆不付出努力的理由。
所有的平庸与低成就都是自我设限的结果。
在自己的心里默认一个“高度”,这个“心理高度”常常暗示自己:这件事情我肯定没办法做好,就做到差不多就可以了。
这种心理暗示可以帮你阻挡任务失败带来的挫败感,暂时维护你的自我价值感,但是,却剥夺了你“往上再走一步”的成功机会。
拉罗什富科说:平庸的人总是在抱怨自己不懂的东西。
六、逃避现实
白日梦患者
逃避现实的人有5个特征。
1.经常做白日梦——逃避现实者更愿意营造一个属于自己的小世界。
2.喜欢随心所欲,无拘无束的生活——说白了就是向往游手好闲的生活。
3.沉迷游戏或是魔幻小说——它们可以引领你走进那个神奇浩繁的世界,让你逃避日常现实生活。
4.觉得现实世界很残酷——这是逃避现实者的常见特征,在追寻白日梦的时候常常会遭受来自现实生活的打击。
5.无法面对不确定环境——因为在你营造的白日梦里,你才能找到确定感和安全感。
人的悲剧在于眼高手低。大多数人激动时佛挡杀佛,幻想中睥睨天下,日常生活中却没法鼓起勇气和每个周末早上都要拿电钻钻墙的邻居很好谈一谈。
七、总找借口
错不在我。
人一旦犯了错,第一反应常常是自我辩护。
我回忆了三十几年来认识的喜欢找借口的人,发现他们都有一个共同的特点:没有强烈的事业心,没有执着的追求,人生没有一个坚定的信念。
所以,遇到压力、遇到困难,他们就不承担,也不想承担;遇到风险、遇到挑战,就退缩。
不承担,要退缩,就迫使他们找借口。因为找借口是最容易办到的事情,这是掩饰自己无知的方法,然后从中寻找自我安慰。
八、恐惧
谨小慎微的懦弱。
他们在工作中总有这样的感受:害怕被领导批评、害怕别人觉得自己无能、害怕被别人知道自己的缺点、在意他人的评价、害怕犯错、害怕自己的付出得不到回报。
我想起一句话:我不敢下苦功琢磨自己,怕终于知道自己并非珠玉;然而心中又存着一丝希冀,便又不肯甘心与瓦砾为伍。
其实就是心智的弱小,不愿意面对挫折感。
王朔曾经跟他女儿说:“煲汤比写诗重要,自己的手艺比男人重要,头发和胸和腰和屁股比脸蛋重要,内心强大到混蛋比什么都重要。”
九、拒绝学习
你不是寂寞,只是不想学习。
学习需要费脑子,自我成长需要不断和自己作斗争,多痛苦啊!
还不如舒舒服服躺在家玩手机看电影,然后等看到同龄人薪资比你高、生活过的比你好时,你又在朋友圈感叹时运不济。
“我从未见过,每天从早忙到玩,拖着疲惫身子回家的人过空虚寂寞冷。
大多数人的空虚寂寞冷,基本上都是吃饱了没事干闲的”。
收起阅读 »
Python 机器学习之 SVM 预测买卖
Python入门简单策略 sklearn 机器学习库的使用
回测系统自带的库有
numpy pandas TA-Lib scipy statsmodels sklearn cvxopt hmmlearn pykalman arch matplotlib
实盘需要在托管者所在机器安装策略需要的库
基于BotVS 量化平台,测试的标的物是 数字货币 ,当然BotVS 也支持 商品期货,源码如下:
from sklearn import svm收起阅读 »
import numpy as np
def main():
preTime = 0
n = 0
success = 0
predict = None
pTime = None
marketPosition = 0
initAccount = exchange.GetAccount()
Log("Running...")
while True:
r = exchange.GetRecords()
if len(r) < 60:
continue
bar = r[len(r)-1]
if bar.Time > preTime:
preTime = bar.Time
if pTime is not None and r[len(r)-2].Time == pTime:
diff = r[len(r)-2].Close - r[len(r)-3].Close
if diff > SpreadVal:
success += 1 if predict == 0 else 0
elif diff < -SpreadVal:
success += 1 if predict == 1 else 0
else:
success += 1 if predict == 2 else 0
pTime = None
LogStatus("预测次数", n, "成功次数", success, "准确率:", '%.3f %%' % round(float(success) * 100 / n, 2))
else:
Sleep(1000)
continue
inputs_X, output_Y = ,
sets = [None, None, None]
for i in xrange(1, len(r)-2, 1):
inputs_X.append([r[i].Open, r[i].Close])
Y = 0
diff = r[i+1].Close - r[i].Close
if diff > SpreadVal:
Y = 0
sets[0] = True
elif diff < -SpreadVal:
Y = 1
sets[1] = True
else:
Y = 2
sets[2] = True
output_Y.append(Y)
if None in sets:
Log("样本不足, 无法预测 ...")
continue
n += 1
clf = svm.LinearSVC()
clf.fit(inputs_X, output_Y)
predict = clf.predict(np.array([bar.Open, bar.Close]).reshape((1, -1)))
pTime = bar.Time
Log("预测当前Bar结束:", bar.Time, ['涨', '跌', '横'][predict])
if marketPosition == 0:
if predict == 0:
exchange.Buy(initAccount.Balance/2)
marketPosition = 1
elif predict == 1:
exchange.Sell(initAccount.Stocks/2)
marketPosition = -1
else:
nowAccount = exchange.GetAccount()
if marketPosition > 0 and predict != 0:
exchange.Sell(nowAccount.Stocks - initAccount.Stocks)
nowAccount = exchange.GetAccount()
marketPosition = 0
elif marketPosition < 0 and predict != 1:
while True:
dif = initAccount.Stocks - nowAccount.Stocks
if dif < 0.01:
break
ticker = exchange.GetTicker()
exchange.Buy(ticker.Sell + (ticker.Sell-ticker.Buy)*2, dif)
while True:
Sleep(1000)
orders = exchange.GetOrders()
for order in orders:
exchange.CancelOrder(order.Id)
if len(orders) == 0:
break
nowAccount = exchange.GetAccount()
marketPosition = 0
if marketPosition == 0:
LogProfit(_N(nowAccount.Balance - initAccount.Balance, 4), nowAccount)
[/i][/i]
Python-Pandas入门
data=pd.DataFrame(np.arange(16).reshape(4,4),index=['Ohio','Colorado','Utah','New York'],columns=['one','two','three','four'])
>>> data
one two three four
Ohio 0 1 2 3
Colorado 4 5 6 7
Utah 8 9 10 11
New York 12 13 14 15
data.ix[:'Utah',:2](引用列数为:one,two,2列不包含)
one two
Ohio 0 1
Colorado 4 5
Utah 8 9
data.ix[:'Utah',:'two'](引用列数为:one,two,two列被包含) 收起阅读 »
one two
Ohio 0 1
Colorado 4 5
Utah 8 9
sqlite 删除数据库中重复的行
本人SQL连入门都算不上,只能用到就去查相关的函数。
经过2个小时的不懈尝试,终于结合网上各种版本的删除数据重复行(网上太多坑呀 )
写出满足自己需求的sql语句
cmd='delete from STRATEGY where rowid not in (select max(rowid) from STRATEGY group by 代码);'
就是上面的这一句语句。
下面来简单说明一下,如果是DBA大牛请忽略。
首先表名字是STRATEGY,里面记录了一些股票,买入的原因,买入时间,股票名字和代码,当前股票的价格。当前的盈亏状态。
如果一天爬取同样的数据几次,机会自动追加到db数据中。 会造成大量的重复数据。
首先从后面往前递推
select max(rowid) from STRATEGY group by 代码
这个语句 选择出来一些rowid, rowid是你创建数据库的时候默认就生产了,因为我在前面生成这个数据库的时候没有设置ID,或者index。 suo所以数据库默认用的是rowid,类似于行号。从第一行开始 rowid=1
上面就是 STRATEGY按照“代码”列进行排序, 因为有相同的,max(rowid)
收起阅读 »
什么样的人不应该买房子
最近关于买房的话题,天天刷爆朋友圈。而且空气中,弥漫的是一种,刚需们再不买房就要死的恐慌气氛。
一个平时相处不错的同事,前两天终于把房子定下来了。这本来是人生中最快乐的一件事情,然而对她来说简直是烦恼的开始:几乎掏空父母的存款,自己又借了消费贷,以及各种凑钱,攒到首付。然后焦虑得不能自己,让人看着难过,于是我说,我借你点吧。至少不用去套信用卡。
这位同事,是非常普通的那类人:小城市家庭出身,男朋友也是类似情况。名校硕士毕业,然后各自在还算不错的单位工作。因为前几年,刚毕业然后一心扑在工作上,总觉得买房这件事情还比较遥远,就没有考虑。
直到今年,慌了。她是个比一般人都要理性很多的人,她说,她面临的情况是,以后一定会在北京生活,现在两方家长尽力,加上自己折腾一下,还能交得起首付,生怕万一什么330新政出来,房价真暴涨,自己连首付都付不起了。同时,她已经做好了最高位接盘的准备:没办法,这是刚需。只是承受不起彻底买不起的可能性。
然后,我们关于房价,父辈们的支持,自己的奋斗,以及社会阶层,等各种角度探讨了一番。
许多背景观点,都很一致,但是我们在什么样的人是否买房这件事情上,出现了极为激烈的分歧。彼此说服不了,但彼此都逻辑统一。
今天,我就关于什么样的人当下不该买房,聊聊我的观点吧。
很简单:30岁以下(超过一两岁也无妨),家庭条件一般(也不差,父母掏空家底能给你出首付的都算),身处底层但渴望改变自己命运的人。
其他都是前缀条件,意义不大。最关键就是最后这一句:身处底层但渴望改变自己命运的人。
以前有人说:每个人年轻的时候都有一个英雄梦想。后来我发现,根本不是这样,绝大多数人都没有,绝大多数人只是叶公好龙。
什么叫梦想,不是那些上个台留着眼泪,说:我喜欢唱歌,我会一直坚持我的音乐梦想,所以求各位BOSS通过我吧。
这种人叫梦想流氓,利用自己能说会道,到处打着惨兮兮的梦想故事骗同情然后获取利益的流氓。
有一个歌手,没什么才华,创作水准很一般,但他曾经通过选秀节目火过,随后又沉寂,但是当潮水褪去,围观者散场的时候,他却一直在各种坚持,从来不隐瞒自己想红,到处刷存在感,做各种生意,开火锅卖衣服,就是为了能接着唱歌。最后终于,靠在微博上编笑话段子,成了网红。几千万粉丝的网红赚钱很容易,转发个微博,打个广告,钱就哗哗的流进来。但是这时候,他还在说,可算红了,可以唱歌了。
这他妈的才叫梦想啊。(不过希望他能找到好的音乐创作者合作,现在那些歌还是太一般。能接着关注高火一阵,但留不下来的。)
什么是梦想:是人潮散尽的时候,是你不堪的生存着的时候,你还会让自己想方设法为它做点事情。
这样的人很少。
所以,我再说一下前面那个标准:什么样的人当下不该买房。
30岁以下(超过一两岁也无妨),家庭条件一般(也不差,父母掏空家底能给你出首付的都算),身处底层但渴望改变自己命运的人。
什么叫改变命运。我的理解很简单:出人头地。变得有钱。更学术一点的说法叫:升级自己的社会阶层。
要改变自己的社会阶层,这是我听过的活在这个世界上,最普遍,最难的一件事情。
他意味着:你得在适当的机会面前,彻底付出自己(两斤白酒去医院,五星酒店撅屁股,卖笑,拍马,谁比谁容易),去换取财富和资源,然后通过财富和资源的累积升级自己的社会阶层。
什么叫付出自己?就是别他妈把自己当人。
想要出人头地,越是底层的人,越不应该有尊严,他需要的是做事的机会,以及把这个事情做好的结果,而不是其他。
优雅?体面?
对于想要改变命运的人,这两个词是奋斗的目标,而绝不可能是现在。那些鼓吹着想要站着挣钱的人,你别被他们骗了,他们站着背后是已经掌握了多少资源。
可能看到这,很多人都会觉得,这我都懂啊,跟不买房有什么关系。
接下来,我要提出一个恐怖的观点:大多数人,你根本不属于自己,你根本不可能能付出自己。
你没有这个资格!
你属于什么?你属于父母殷切真诚但是愚昧落后的期待,你属于老板眼中可有可无但必须在岗的螺丝钉,你属于你老婆你儿子甚至你情人的移动POS机。
这些说完了么,没有。
如果此刻的你买房了,那你将有一个更吸血的身份:房奴。
不得不说,民间智慧的犀利:房奴。
是的,你根本不属于你自己,你是一个奴隶。你属于你的主人。
付出你自己?别喊口号了,你根本没有资格。
可能又会有同学问,那么很多人过去靠着咬咬牙买房了,从小房一路换到大房,人生赢家啊。
其实这里面有两个问题。
A:没错,过去十几年,房子从投资的角度来看确实是一个超级优秀的品种。但是,在过去的十几年里面,受益这个超级牛市的人,根本不是那些始终只有一套房子的人:哪怕它从小房子一路换成了别墅。
因为,他拥有的始终只是一套房子而已,一个根本很难套现的重资产,本质上,他也是刚需。
而我们回头想想,一个家庭拥有一个不错的房子,这不应该是一个社会基础现象吗?
什么叫有钱人?是拥有巨大规模的现金流!
B:过去十年,这种一路换房选手失去的,是机会成本。折腾房子是一件非常耗费精力的事情。如果过去十年里,他一直在折腾房子,那么基本可以肯定,他抽不出精力去关心他的事业,他的其他人生可能性。(因为他的性格里有比较强的判断直觉,和折腾能力,执行力,这是非常好的优点,但是他居然没有多买一套,让自己拥有现金流)。
一个不错素质的人折腾10年,最后只是得到一个本该就有的不错的房子,只是完成了社会的基础配置。算什么人生赢家啊。
一个不错的房子,在北京,按2000万算。这10年的折腾,不过就是这点成就。(对了,还有5成的房贷,他并不彻底拥有,还得为1000万的贷款继续卖命)一个高级房奴嘛!
这不就跟03年看好茅台,但是只买了100股一样。即使你看对了,做对了又怎么样?(如果你买了茅台不看还好,如果这十几年里,天天为茅台股价操碎心,这不是更不值得嘛)。
说了这么多,其实是想说,一个试图改变自己命运的底层年轻人,不应该过早的把自己栓上太多的镣铐。特别还掏空自己父母一辈子的积蓄。
可能有些同学会说,我买了房,然后不看了,努力工作云云。
这个看起来非常正能量的“暗下决心”,实际上非常无用。这里面的努力工作,其实就是把自己的职位工作干好(因为买房,需要还巨额贷款,好好工作看起来可能是最好的选择),但是,有一个可怕的真相是,极其少数的人可以通过在职场一路奋斗起来,从而改变自己的人生阶层。这种可能性基本等于零。
年薪百万在职场算非常顶尖了吧,然后放眼望去,它只能让你过的非常体面,但是对你的阶层跃迁并没有任何实质性的帮助。
除了你被禁锢在工作之内,同时,你还面临着生活质量的下降。更不用谈兴趣投资,教育投资。特别是兴趣投资,在我看来,兴趣投资,看起来最耗钱,但是最容易出现改变你人生机会的地方。
举个最简单的例子:让你花五万去系统学习健身(这个看起来好像最容易自学的领域),你舍得吗?多数人都不舍得。也不舍得。也花不起。
在资金极度受限制的情况下,再有上进心,开拓心的人,他能做的学习充电也只是自己埋头自学。
从现实角度来看,自学是这个世界上最没有效率的学习方法,没有之一!(往往中国人比较崇尚自学,能举出各种天才自学的例子,问题是,大哥,你是天才么?几乎所有天才也都是有名师的,只是你自己掩耳盗铃罢了)
自学意味着:用极低的效率在纷杂的信息里得先建立一个早已经成熟已久的框架。即使有所建树,也很难走的远,因为基础极其不扎实,属于:野路子。即使有成绩,除了天赋之外,也是耗费了多余正常学习的人的时间。时间是最有价值的品种,然而在这里成为了无成本投入。(都别说输在起跑线了,路上的时间也输光了,拿什么跟人比?拿什么阶层跃迁?)
崇尚自学,无视知识版权,贬低专家(这里指的是真正在其领域有建树的人),不相信科学,这是中国屌丝多,观念不开化的恶性循环原因之一。
失去了对金钱的掌控能力和支配能力,这是房奴(特别是深度房奴)面临的最严重,但也最难自觉的可怕事情。
这件事情,可能造成这个房奴一生彻底的平庸。
你需要的是自由。让自己属于自己。这样,你才有资格,在天时地利人和,七星连成一线的时刻,ALL IN 。赌上自己。改变人生。
改变人生,升级阶层,从来就不是一件容易的事情。
我知道很多人买房内心的小算盘:奋斗到最后,最不济,我还有一个房子可以住。不会无路可退。
可是事实是:房子是一个重资产,资金占用过大,并且同时你为他背上太大的债务,会导致你不敢不工作。甚至不敢随意换工作。
甚至于,随着房价的上涨,会让你拥有一种自己做对的错觉,以为自己的身价上涨了。从而使你对房价的关注度过高,而失去了其他致富能力和意愿。
最后一个理由,从投资品的角度来看,我们至少得承认一点,房子这是一个万众瞩目的品种,因此,基本上有能力参与的,都已经参与了。
那么这就意味着,在这个时刻入场,你将你的财富以及未来(身上背的债务)在这个社会阶层锚定了。
房价基本是同涨同跌,所以你希望通过房子涨价,自己因此提高身价,来改变自己的阶层。
想象一下,假设说,10年以后房子涨到一百万一平,而你的100平房子价值一亿,你以为你就中产阶级了么。
你见过在一个高楼看过去,满地的中产阶级吗?
相信我,那个时候,中产阶级的标准一定是5亿以上。
再回来,没买房的人慌了,卧槽,已经1百万一平了,那我现在10万一平,你让我别买,你是在害我吗?
不是的,如果未来10年中(这是一个非常长的周期)房价还能持续高增长,而社会稳定,那么说明,一定是货币超级大放水了(贬值)。
货币大放水,是什么意思?就是市场中凭空(央行)从天上掉下了好多钱(增量)。放心吧,这些钱会以各种名义(无论是基建还是别的)放出来。
这些钱得有人接(有人花,就有人挣),谁多接一些,谁就在这波货币大行情中发财了。这才是社会中最隐藏的,人少钱多的主线。
那些关注房子的人,无论是自怨自艾者,还是洋洋得意者,自然发现不了。而没有被房子变成奴隶的人,那些自由的,已经在社会的苦难之中锻炼出一身本领,嗅觉灵敏的人,此刻正是大展拳脚的机会。
这才是你人生中的主升浪。
比如2008年汶川地震之后的好多年,许多人做基建工程发财了,因为需求大,从业人少。(很多无能的人会找很多借口,比如这些领域需要很好的关系云云,事实上这个领域的生态链非常长,你只要有心,都有机会在里面分一杯羹。因为盘子太大了,投资规模太大了。)
把各个领域的财富想象成一个一个的蛋糕,你只有在人少的那一块吃,才有机会吃到比平均更多的机会。
财富积累,始终是在人少钱多的地方。
这个道理,地球爆炸了,也不会变。
希望你有一颗英雄的心,希望你还有一颗能做英雄的头脑。
而路遥说过一句话:每个人都有一个觉醒期,但是觉醒期的早晚决定了这个人的命运。
文:复盘哥 收起阅读 »
requests 使用默认 cookies
使用requests库的时候,可以初始化一次cookies信息,后面的回话就能够一直用这个cookies了。
session=requests.session()这里需要注意的是,第一次
#先创建一个seession
s=session.get('http://xueqiu.com',headers=self.headers)
#随意建立一个访问雪球的session,此时的session就自带了雪球的cookies
url='https://xueqiu.com/snowmart/push/stocks.json?product_id=19&page=3&count=5'
headers['Referer']='https://xueqiu.com/strategy/19'
headers['X-Requested-With']='XMLHttpRequest'
headers['DNT']='1'
data={'product_id':19,'page':3,'count':5}
resp=session.get(url,headers=self.headers,params=data).text
#如果这里用的request.get的话,就不能获取到网页返回的正确内容
print resp
s=session.get('http://xueqiu.com',headers=self.headers) #随意建立一个访问雪球的session,此时的session就自带了雪球的cookies
是必须的,如果没有只一次正常访问,cookies就不能保存下来供下一次正常使用。
2017-3-28 更新
一般来说,除非是为了每天定期跑的或者破解他人密码这些,可以不用管他们的登录问题,可以很直接的在浏览器中,把你自己账号的cookie信息写进到request的header里面,完全可以访问。
所以一旦cookie被别人获取了,他们就可以构造数据,去获取你账号的相关信息。 (cookie应该和你的电脑硬件没关系的吧? 因为我曾经在几台机器上用同一个cookie获取我登录了的账号,也是没有问题的)
举个栗子:
def csdn():
session=requests.session()
header={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36'}
url='[url]http://msg.csdn.net/'[/url]header['Cookie']='uuid_tt_dd=-5697318013068753627_20160111; _ga=GA1.2.795042232.1452766190; _message_m=quvq2wle24wa4awe UserInfo=zMhiNgesgIlEBQ3TOqLCtx4nUI360IIq3ciBzg4EKH%2FW8mSpTANpu5cTlRFLj2Tqh%2FZzQr2rNqDtT1SZz%2Be2%2FpDkGoQxDK3IVUZXvwZ%2FEP1I4UTg6MoZkH7LDO3sjrJJ; UserNick=%E9%87%8D%E5%A4%8D%E7%9A%84%E7%94%9F%E6%B4%BB; AU=0F1; UD=%E8%AE%B0%E5%BD%95%E8%87%AA%E5%AD%A6%E7%9A%84%E5%8E%86%E7%A8%8B+%E5%88%83%E8%8D%; BT=1490707396344; access-token=c2e12bff-5b27-4a91-953b-448ff6f6beac; _csdn_notify_admin_session=VE41a0d3TitrVGY2bGtXY09pZENwR1lHenhUU1NVaWc1b04wL1I3dCtDQVdadWpjMXBzdGRJL0RZR04wYldvZDBhTU96b2oycVVKeVI1UEVyUHFKbG1yNnB2b2pHRWVnWG1uc2JMM2R3YWthakRyTXZNaEpVU1NtUy9zQUJrNjd3R2lpbG5PK0paMnlyc1dyK0lTZUtRPT0tLXlPQUE1QzF5UmhDNjEvSFdtRFlQS2c9PQ%3D%3D--4569c5a32916dcf969a8b7e007c37abeb90be4f3; dc_tos=onj1dg; dc_session_id=1490707393375; Hm_lvt_6bcd52f51e9b3dce32bec4a3997715ac=1490024083,1490024559,1490374375,1490707368; Hm_lpvt_6bcd52f51e9b3dce32bec4a3997715ac=1490707638'
header['Cache-Control']='max-age=0'
header['Host']='msg.csdn.net'
header['Referer']='http://blog.csdn.net/username'
resp=requests.get(url,headers=header)
print resp.text
上面这段代码,只要你改一下cookie和 Refer 的连接,改成你自己的用户名。 你就可以访问你的csdn的消息,也就是别人在你的csdn博客访问的的留言,评论。
只是这个cookie只能在某个时间段生效,也就是存活期大概就一个星期左右。
抓包技术过硬,何须模拟登陆?
http://30daydo.com/publish/article/155
收起阅读 »
淘宝试用 每天自动申请 python程序
def taobao_shiyong():
d.screen.on()
d.press.home()
activity_name='com.taobao.taobao/com.taobao.tao.homepage.MainActivity3'
launch_app(activity_name)
mid_x=displayWidth/2
try:
d(text=u'我的淘宝').click()
time.sleep(3)
d(text='查看更多工具').click()
time.sleep(3)
d(scrollable=True).scroll.to(text=u'免费试用')
time.sleep(2)
d(text=u'免费试用').click()
time.sleep(3)
delta_y=144
full_y=1920
full_x=1080
fix_x=880
origin_y=222
d.swipe(fix_x,full_y-delta_y,fix_x,origin_y)
time.sleep(3)
#d.swipe(fix_x,952,fix_x,origin_y)
time.sleep(5)
sumakeji=displayWidth/8*3
jiayongdianqi=displayWidth/8*5
d.click(jiayongdianqi,1660)
time.sleep(3)
#each_dianpu()
#d.click(jiayongdianqi,300)
delta_each=400
time.sleep(3)
for dragtime in range(20):
for i in range(3):
d.click(919,600+i*delta_each)
time.sleep(8)
each_dianpu()
d.swipe(919,1600,919,400)
except:
print "Can't find items"
程序会一直运行,等到达到每天申请的最大次数。
收起阅读 »