V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
yellowtail
V2EX  ›  Python

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

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

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

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

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

    但还是说一句,我感觉编程这东西,是帮你把重复的变为复用的,把实现的变为易用的;
    如果是类似我有一个想法,我觉得先把想法做出一步会好些;
    xuanwu
        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 就是为了对接此类需求, 有兴趣可以试试
    yuikns
        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
    mf2019d
        22
    mf2019d  
       2018-11-08 08:02:11 +08:00 via iPhone
    什么叫空闲时间“只有” 5/6 小时。疯了。
    你这时间太多
    xpresslink
        23
    xpresslink  
       2018-11-08 17:41:50 +08:00
    正打算自己写点程序,捕捉一些交易机会。前不久刚照着网上教程的步骤敲完了第一个回测程序,很有成就感,未来想继续自己学一点机器学习的皮毛给交易程序调参抓一些交易机会,尽量实现稳定盈利,虽然很远,但总相信自己可以看到尽头。
    从这段话可以看出楼主出现了幻觉。
    yellowtail
        24
    yellowtail  
    OP
       2018-11-08 21:58:50 +08:00
    @yuikns 啊 好傻的错误 我把 localhost 打成了 local 检查好几遍没发现...太大意了 非常感谢程序跑起来了很开心~不知道怎么贴图上来..最后的意思是说想实现一个 df['close']['df['13']>=df['34'] anddf['3']>=df['13']]的效果 后来看了 type 不是 bool 数用不了 and 就重新做了两个空组倒腾了
    yellowtail
        25
    yellowtail  
    OP
       2018-11-08 21:59:32 +08:00
    @mf2019d 也许吧~
    yellowtail
        26
    yellowtail  
    OP
       2018-11-08 22:02:08 +08:00
    @xuanwu 学编程不单是自动交易还有点保密需求,正打算人找人联系计算机系的学生。。如果这段时间不顺利的话
    largecat
        27
    largecat  
       2018-11-11 08:23:48 +08:00 via Android
    每天空闲时间只有 5-6 个小时,还有一个小时吃饭,

    你们单位真好,
    canwushuang
        28
    canwushuang  
       2018-11-14 17:48:58 +08:00
    @yellowtail import time 加入等待或者把分时数据下载后再加载。因为 tushare 是在线请求数据的所以需要等待,运气好数据快在执行可视化那步就可以在视窗中展现,如果数据没准备好,就会报错。另外,先看 python 基础,同步补充高数着重概率统计,矩阵,微积分,当然线性代数一定要好。
    yellowtail
        29
    yellowtail  
    OP
       2018-11-20 19:38:33 +08:00
    @canwushuang 概率和矩阵应该可以用来快速算衍生品价格 微积分是用来干嘛的 我真的想不到
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   991 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 20:39 · PVG 04:39 · LAX 13:39 · JFK 16:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.