自学编程过程产生了一点怀疑,请帮忙给一点意见,谢谢。

2018-11-07 21:01:42 +08:00
 yellowtail
工科非专业出生,之前在学校写过一个简单的仪器采数实时绘图(在同学帮助下)的程序,刚毕业,目前在证券营业部打杂,看不到什么前景,每天能用的空闲时间只有 5、6 小时。正打算自己写点程序,捕捉一些交易机会。前不久刚照着网上教程的步骤敲完了第一个回测程序,很有成就感,未来想继续自己学一点机器学习的皮毛给交易程序调参抓一些交易机会,尽量实现稳定盈利,虽然很远,但总相信自己可以看到尽头。
这两天用 pymongo 遇到了一些简单的问题,但是解决不了,开始觉得弯路走的太多了,遥遥无期,自己摸索出问题,下一个呢?没有系统性的解决问题的方法,总按照教程依葫芦画瓢不是长远之道,也不知道如何继续。
3585 次点击
所在节点    Python
29 条回复
yellowtail
2018-11-07 21:12:32 +08:00
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
yellowtail
2018-11-07 21:16:37 +08:00
时而能跑,时而不行,提示 local:27017: [Errno 11004] getaddrinfo failed 有时代码的也报错 df['close']出问题,为了让 dataframe 的 df 得到一个满足两个条件的行号的方法也很笨...
ballshapesdsd
2018-11-07 21:23:27 +08:00
真想深入学就别看什么教程,视频,买本好书好好看
des
2018-11-07 21:26:38 +08:00
这代码。。。先老老实实看基础吧
yellowtail
2018-11-07 21:28:18 +08:00
@des 上班也不能看书,时间有限也没法写例子..
des
2018-11-07 21:35:41 +08:00
@yellowtail
总有电脑可以用吧,找个好点的教程
视频也不是不能看,主要视频知信息量比较少,也有很多错误的,也就适合初入门对语言建立认知有用

建议是用互交式的 repl 学习,能够立即看到结果,也方便学习探索。这样学起来会快很多
des
2018-11-07 21:38:25 +08:00
@yellowtail
就是点开窗口里面有 >>> ,然后可以输入的东西
red0range
2018-11-07 21:40:08 +08:00
每天能用的空闲时间只有 5、6 小时。

//真入行了每天顶多 2 小时空闲时间。。。
des
2018-11-07 21:44:54 +08:00
@yellowtail
顺便送你个方便你研究的函数 dir
yellowtail
2018-11-07 21:46:38 +08:00
@red0range 什么真入行?证券还是编程
red0range
2018-11-07 21:59:44 +08:00
@yellowtail 看了一下你的问题,似乎你只想用编程做交易,方向不太一样,提供不了太多帮助。
指的是互联网行业开发工作。
innoink
2018-11-07 22:07:17 +08:00
编程和学做木匠差不多,有个师傅手把手教着,效率能高 10 倍
WordTian
2018-11-07 22:09:50 +08:00
自动化交易。。。
你还是找本 python 的入门书,系统性看一遍吧
然后再去写交易的脚本,就会好很多
yellowtail
2018-11-07 22:15:09 +08:00
@innoink 太多行业都是这样
yellowtail
2018-11-07 22:17:26 +08:00
@ballshapesdsd 我不想深入学,只需要实现功能就行,只是发现不深入学似乎没办法了,也许多认识一些程序员朋友也好吧
yellowtail
2018-11-07 22:18:38 +08:00
@WordTian 看完了 a bit of python 不细致,仅仅留了印象,导致现在眼高手低下不了台了
jiangnanyanyu
2018-11-07 22:19:43 +08:00
刷书本吧,视频什么的就算了,等你打好基础,视频可以 2x 播放
Xs0ul
2018-11-07 22:22:36 +08:00
看你的代码,应该在 jupyter notebook 里写的。所以有时能跑有时不能跑,八成是因为运行的顺序乱了
freakxx
2018-11-07 22:24:50 +08:00
这东西看你要实现到什么程度,
你是想走编程,那么就按路线走;

如果只是为了用程序实现某个功能,那么写到哪是哪,就像你现在写的,
到了有瓶颈,有了速度追求,再去修改也无妨;

但还是说一句,我感觉编程这东西,是帮你把重复的变为复用的,把实现的变为易用的;
如果是类似我有一个想法,我觉得先把想法做出一步会好些;
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 就是为了对接此类需求, 有兴趣可以试试

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/505528

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX