1
yellowtail OP import tushare as ts
import pandas as pd import pymongo import json % matplotlib inline data = ts.get_today_ticks("000089") szjc2=json.loads(data.to_json(orient='records')) ljt1107=pymongo.MongoClient('local',27017) db=ljt1107['szjc2'] col=db['1107'] col.insert(szjc2) print data df=pd.DataFrame() df['price']=data['price'] df['change']=df['price']-df['price'].shift(1) df df['3']=df['price'].rolling(window=3,center=False).mean() df['13']=df['price'].rolling(window=13,center=False).mean() df['34']=df['price'].rolling(window=34,center=False).mean() df df=df.dropna() df['pos']=0 df['tst']=0 df['tst1']=0 df['tst'][df['3']>=df['13']] = 10000 df['tst1'][df['13']>=df['34']]= 10000 df['pos'][df['tst1']==df['tst']] = 10000 #print type(df['3']<=df['13']) df['pos'][df['3']<=df['13']] = -10000 df['pos']=df['pos'].shift(1).fillna(0) df['pnl']=df['change']*df['pos'] df['fee']=0 df['fee'][df['pos']!=df['pos'].shift(1)]=df['price']*20000*0 df['netpnl']=df['pnl']-df['fee'] df df['cumpnl']=df['netpnl'].cumsum() df['cumpnl'].plot() print df |
2
yellowtail OP 时而能跑,时而不行,提示 local:27017: [Errno 11004] getaddrinfo failed 有时代码的也报错 df['close']出问题,为了让 dataframe 的 df 得到一个满足两个条件的行号的方法也很笨...
|
3
ballshapesdsd 2018-11-07 21:23:27 +08:00 3
真想深入学就别看什么教程,视频,买本好书好好看
|
4
des 2018-11-07 21:26:38 +08:00 via Android
这代码。。。先老老实实看基础吧
|
5
yellowtail OP @des 上班也不能看书,时间有限也没法写例子..
|
6
des 2018-11-07 21:35:41 +08:00 via Android 1
@yellowtail
总有电脑可以用吧,找个好点的教程 视频也不是不能看,主要视频知信息量比较少,也有很多错误的,也就适合初入门对语言建立认知有用 建议是用互交式的 repl 学习,能够立即看到结果,也方便学习探索。这样学起来会快很多 |
7
des 2018-11-07 21:38:25 +08:00 via Android
@yellowtail
就是点开窗口里面有 >>> ,然后可以输入的东西 |
8
red0range 2018-11-07 21:40:08 +08:00
每天能用的空闲时间只有 5、6 小时。
//真入行了每天顶多 2 小时空闲时间。。。 |
9
des 2018-11-07 21:44:54 +08:00 via Android
@yellowtail
顺便送你个方便你研究的函数 dir |
10
yellowtail OP @red0range 什么真入行?证券还是编程
|
11
red0range 2018-11-07 21:59:44 +08:00
@yellowtail 看了一下你的问题,似乎你只想用编程做交易,方向不太一样,提供不了太多帮助。
指的是互联网行业开发工作。 |
12
innoink 2018-11-07 22:07:17 +08:00 via Android
编程和学做木匠差不多,有个师傅手把手教着,效率能高 10 倍
|
13
WordTian 2018-11-07 22:09:50 +08:00 via Android
自动化交易。。。
你还是找本 python 的入门书,系统性看一遍吧 然后再去写交易的脚本,就会好很多 |
14
yellowtail OP @innoink 太多行业都是这样
|
15
yellowtail OP @ballshapesdsd 我不想深入学,只需要实现功能就行,只是发现不深入学似乎没办法了,也许多认识一些程序员朋友也好吧
|
16
yellowtail OP @WordTian 看完了 a bit of python 不细致,仅仅留了印象,导致现在眼高手低下不了台了
|
17
jiangnanyanyu 2018-11-07 22:19:43 +08:00 via Android
刷书本吧,视频什么的就算了,等你打好基础,视频可以 2x 播放
|
18
Xs0ul 2018-11-07 22:22:36 +08:00 1
看你的代码,应该在 jupyter notebook 里写的。所以有时能跑有时不能跑,八成是因为运行的顺序乱了
|
19
freakxx 2018-11-07 22:24:50 +08:00 1
这东西看你要实现到什么程度,
你是想走编程,那么就按路线走; 如果只是为了用程序实现某个功能,那么写到哪是哪,就像你现在写的, 到了有瓶颈,有了速度追求,再去修改也无妨; 但还是说一句,我感觉编程这东西,是帮你把重复的变为复用的,把实现的变为易用的; 如果是类似我有一个想法,我觉得先把想法做出一步会好些; |
20
xuanwu 2018-11-08 02:00:11 +08:00
建议首先细化需求并文档化. 像之前这位就很详尽描述了需求, 有兴趣的看了以后自然会更进: https://www.v2ex.com/t/493732
需求分析确定后, 再谈实现方案细节. 组里开了个"万事屋": https://github.com/program-in-chinese/house_of_10000_business 就是为了对接此类需求, 有兴趣可以试试 |
21
yuikns 2018-11-08 02:27:24 +08:00
我觉得非职业能利用代码工具也极好的。
具体到这个。 一个是乱序问题,我觉得直接 run all,自己控制下顺序没啥问题。jupyter 自带 另一个是报的错误,local:27017: [Errno 11004] getaddrinfo failed 这个意思是你的程序解析从 local => ip 挂了。要是你没有特别配置,local 本身是有问题的。要是你用的 mongo server 是本地,应该是 localhost, 或者干脆写 ip: 127.0.0.1 最后,满足两个条件那个不太明白意思,你是说想要 lambda 么? https://stackoverflow.com/questions/37428218/how-to-properly-apply-a-lambda-function-into-a-pandas-data-frame-column |
22
mf2019d 2018-11-08 08:02:11 +08:00 via iPhone
什么叫空闲时间“只有” 5/6 小时。疯了。
你这时间太多 |
23
xpresslink 2018-11-08 17:41:50 +08:00
正打算自己写点程序,捕捉一些交易机会。前不久刚照着网上教程的步骤敲完了第一个回测程序,很有成就感,未来想继续自己学一点机器学习的皮毛给交易程序调参抓一些交易机会,尽量实现稳定盈利,虽然很远,但总相信自己可以看到尽头。
从这段话可以看出楼主出现了幻觉。 |
24
yellowtail OP @yuikns 啊 好傻的错误 我把 localhost 打成了 local 检查好几遍没发现...太大意了 非常感谢程序跑起来了很开心~不知道怎么贴图上来..最后的意思是说想实现一个 df['close']['df['13']>=df['34'] anddf['3']>=df['13']]的效果 后来看了 type 不是 bool 数用不了 and 就重新做了两个空组倒腾了
|
25
yellowtail OP @mf2019d 也许吧~
|
26
yellowtail OP @xuanwu 学编程不单是自动交易还有点保密需求,正打算人找人联系计算机系的学生。。如果这段时间不顺利的话
|
27
largecat 2018-11-11 08:23:48 +08:00 via Android
每天空闲时间只有 5-6 个小时,还有一个小时吃饭,
你们单位真好, |
28
canwushuang 2018-11-14 17:48:58 +08:00
@yellowtail import time 加入等待或者把分时数据下载后再加载。因为 tushare 是在线请求数据的所以需要等待,运气好数据快在执行可视化那步就可以在视窗中展现,如果数据没准备好,就会报错。另外,先看 python 基础,同步补充高数着重概率统计,矩阵,微积分,当然线性代数一定要好。
|
29
yellowtail OP @canwushuang 概率和矩阵应该可以用来快速算衍生品价格 微积分是用来干嘛的 我真的想不到
|