怎样用Python写一个股票自动交易助手的程序

>> 股票自动交易软件
股票自动交易软件
所属分类:
下载地址:
自动交易.rar文件大小:7.51 kB
分享有礼! 》
请点击右侧的分享按钮,把本代码分享到各社交媒体。
通过您的分享链接访问Codeforge,每来2个新的IP,您将获得0.1 积分的奖励。
通过您的分享链接,每成功注册一个用户,该用户在Codeforge上所获得的每1个积分,您都将获得0.2 积分的分成奖励。
实现中投软件股票的自动交易成交而不需要天天让人来看盘,这样很辛苦的,我炒股票的人事解放体力,不可多得的一份软件,有兴趣的朋友可以扩充,不过有关技术请注明出处,谢谢.新程触控一体机,教育智能平板适合炒股的大公司使用,可以交互式让炒家看股票软件的
Sponsored links
源码文件列表
温馨提示: 点击源码文件名可预览文件内容哦 ^_^
frmMain.frm1.63 kB01-05-12 10:56
frmMain.frx1.06 kB01-05-12 10:56
LIGHTON.ICO1.05 kB24-04-98 19:58
1.64 kB01-05-12 10:54
MSSCCPRJ.SCC201.00 B26-04-12 17:18
&快捷方式&0.00 B410 64%
组1.vbg50.00 B28-04-12 11:24
自动交易雷达监视.exe20.00 kB01-05-12 10:57
自动交易雷达监视.vbp742.00 B01-05-12 10:56
自动交易雷达监视.vbw86.00 B01-05-12 10:57
&自动交易&0.00 B14-06-13 16:13
(提交有效评论获得积分)
评论内容不能少于15个字,不要超出160个字。
j97221好东西,一直在找这个,终于找到了
honglong121随便看看,还没打开看
hello很不错的样子。自动交易是很有意思的。
huolongnvshen收藏一下,还没看
评价成功,多谢!
下载自动交易.rar
CodeForge积分(原CF币)全新升级,功能更强大,使用更便捷,不仅可以用来下载海量源代码马上还可兑换精美小礼品了
您的积分不足,优惠套餐快速获取 30 积分
10积分 / ¥100
30积分 / ¥200原价 ¥300 元
100积分 / ¥500原价 ¥1000 元
订单支付完成后,积分将自动加入到您的账号。以下是优惠期的人民币价格,优惠期过后将恢复美元价格。
支付宝支付宝付款
微信钱包微信付款
更多付款方式:、
您本次下载所消耗的积分将转交上传作者。
同一源码,30天内重复下载,只扣除一次积分。
鲁ICP备号-3 runtime:Elapsed:164.562ms - init:0.2;find:2.8;t:3.1;tags:1.0;related:37.2;comment:65.2; 27.69
登录 CodeForge
还没有CodeForge账号?
Switch to the English version?
^_^"呃 ...
Sorry!这位大神很神秘,未开通博客呢,请浏览一下其他的吧【原创】用python开发股票自动技术分析的软件(一)
我的图书馆
【原创】用python开发股票自动技术分析的软件(一)
python是个强大的工具,还有很多插件包可以用,所以完全可以考虑用python来编程实现股票的自动技术分析。
第一步就是实现股票历史数据的获取,这个有安装包TuShare可以用。首先是安装TuShare,直接在cmd中pip install
tushare。如果想确认安装成功,可以新建个python文件,输入
import tushare as ts
print ts.__version__
然后F5,肯定报错,提示缺少什么模块就到cmd中pip
install 模块名字就行。
TuShare的教程
但是到了pandas会有问题,pip
install搞不定,这个需要
matplotllib,openpyxl,setuptools,numpy,six,python-dateutil作为前置安装包。
我已经装了numpy和matplotlib,就少个python-dateutil,其他的可以pip
search 包名字,如果不报错就说明已经安装了。
注意一下dateutil的安装应该是pip install
python-dateutil(不能光输入dateutil)
最后安装pandas,需要到下载whl文件,然后在cmd模式中切换到解压缩文件夹中,pip
install 包名字.whl ,然后就ok了。
对于技术分析,可以用TA-lib的模块包,也是到上个url处下载whl文件,安装即可。
后续写下大致的思路
用python开发股票自动技术分析的软件(一)
用python开发股票自动技术分析的软件(二)
用python开发股票自动技术分析的软件(三)
用python开发股票自动技术分析的软件(四)
TA的最新馆藏[转]&[转]&只需一步,快速开始
后使用快捷导航没有帐号?
查看: 2054|回复: 26
用python写一个下载股票数据的脚本
累计签到:79 天连续签到:1 天&
马上注册加入鱼C,享用更多服务吧^_^
才可以下载或查看,没有帐号?
初学python,感谢小甲鱼和鱼C,让我对python有了初步的了解和热情。
闲话不多说,没什么技术含量,分享一下我的思路。
1,首先我到上海交易所和深圳交易所的官网下载了最新的股票信息(一共有多少只,股票的号码等)
2,然后把所有的号码放到一个pickle里。
3,通过雅虎的API下载(这个查了好久资料,考虑了各种API最后还是觉得雅虎的比较简单,对我这种初学者容易使用)
最后要说一下,代码写得比较烂.....哈哈,初学者比较容易满足
附上代码:
import urllib.request as ur
import pickle
import time
print(time.ctime())
pickle_file=open('pickel_stock_list.pickel','rb')
stock_list=pickle.load(pickle_file)
def download_date(stock_name):
& && &&&if stock_name[0]=='6':
& && && && && & stock_name=stock_name+r'.ss'
& && &&&else:
& && && && && & stock_name=stock_name+r'.sz'
& && && && && &
& && &&&url='http://table./table.csv?s=%s'%(stock_name)
& && &&&date = ur.urlopen(url).read().decode('utf-8')
& && &&&save_file_name = stock_name+r'.csv'
& && &&&open_file = open(save_file_name,'w')
& && &&&save_file = open_file.write(date)
& && &&&open_file.close()
& && &&&print(time.ctime()+'successful writen'+stock_name)
while i&len(stock_list):
& && &&&download_date(stock_list[i])
& && &&&i+=1
pickle_file.close()
希望继续完善,能让更多的鱼油使用上。&
支持楼主!
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的
按钮,否则您的代码可能会被“吃掉”!
累计签到:49 天连续签到:1 天&
哈哈 好巧 我今天也做了个类似的。做股票的话推荐你tushare包,一般人我不告诉他
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的
按钮,否则您的代码可能会被“吃掉”!
累计签到:49 天连续签到:1 天&
本帖最后由 Lnan95 于
01:13 编辑
给力啊!论速度比tushare包快
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的
按钮,否则您的代码可能会被“吃掉”!
累计签到:79 天连续签到:1 天&
哈哈 好巧 我今天也做了个类似的。做股票的话推荐你tushare包,一般人我不告诉他
哈哈,谢谢,我去试试。
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的
按钮,否则您的代码可能会被“吃掉”!
累计签到:79 天连续签到:1 天&
运行了一遍,发现一些问题:
1.虽然所有的股票号码都是从证券交易所下载的, 但雅虎API可能没找到某些股票的信息,会报错
2.代码可以改善一下,改成返回值正常(例如200)才开始下载,返回其他值的话,就输出股票代码,方便从其他渠道获得该股票的数据。
3.我觉得可以输出一个,下载完成百分比的数据。方便知道下载进度
暂时发现这么多
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的
按钮,否则您的代码可能会被“吃掉”!
累计签到:79 天连续签到:1 天&
重新改了下
import urllib.request as req
import urllib.parse as par
import pickle
import time
print(time.ctime())
with open('pickel_stock_list.pickel','rb') as pickle_file:
& & & & stock_list=pickle.load(pickle_file)
proxy_support = req.ProxyHandler({'httm':'120.24.44.250:80'})
opener = req.build_opener(proxy_support)
req.install_opener(opener)
def download_data(stock_name):
& & & & if stock_name[0]=='6':
& & & & & & & & stock_name=stock_name+'.ss'
& & & & else:
& & & & & & & & stock_name=stock_name+'.sz'
& & & & global url
& & & & url = 'http://table./table.csv?s=%s'%(stock_name)& & & &
& & & & response=req.Request(url,data=None,headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0. Safari/537.36 LBBROWSER'})
& & & & stock_data=req.urlopen(response)
& & & & data = stock_data.read().decode('utf-8')
& & & & if stock_data.getcode()==200:
& & & & & & & & save_file_name = stock_name+r'.csv'
& & & & & & & & with open(save_file_name,'w') as save_file:
& & & & & & & & & & & & & & & & save_file.write(data)
& & & & & & & & print(stock_name,'done')
& & & & else:
& & & & & & & & with open('file_log.txt','a+') as file_log:
& & & & & & & & & & & & file_log.write(stock_name+'找不到相关资料\n')
k = len(stock_list)
while i&k:
& & & & try:
& & & & & & & & download_data(stock_list[i])
& & & & except:
& & & & & & & & print(i,url,stock_list[i],'第',j,'条信息找不到相关资料')
& & & & & & & & j+=1
& & & & finally:
& & & & & & & & i = i + 1
& & & & & & & & if i != 0:
& & & & & & & & & & & & print('%.2f'%((i / k)*100),r'%')
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的
按钮,否则您的代码可能会被“吃掉”!
累计签到:79 天连续签到:1 天&
1,增加了显示下载百分比。
2,找不到网址,不会报错打断循环。会自动用另外一个文件记录下来,并继续循环。
3,打开网址下,获得网页状态。并判断是否下载。
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的
按钮,否则您的代码可能会被“吃掉”!
累计签到:79 天连续签到:1 天&
第二版的代码运行了一遍,又发现一些问题:
1.当getcode() != 200是,并没有运行 download_data(stock_name) 函数下的else代码,而是报错运行except的代码。
2.不知道是不是代理只有一个的原因,运行一段时间后,会报错‘远程主机强制关闭连接’,所以还是要加上代理列表。
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的
按钮,否则您的代码可能会被“吃掉”!
累计签到:79 天连续签到:1 天&
重新厘清一下思路:
从得到股票代码开始
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的
按钮,否则您的代码可能会被“吃掉”!
累计签到:79 天连续签到:1 天&
file_list=['SZA股列表.txt','创业板.txt','中小板.txt','SSA股.txt']
all_stock_list=[]
def add_list(i):
& & file_name = file_list[i]
& & with open('%s'%file_name,'r') as al:
& && &&&stock_list = al.read().splitlines()
& && &&&for each in stock_list:
& && && && &if each in all_stock_list:
& && && && && & pass
& && && && &else:
& && && && && & all_stock_list.append(each)
def all_stock():
& & while n&len(file_list):
& && &&&add_list(n)
& && &&&n += 1
& & print(len(all_stock_list))
& & return all_stock_list
all_stock()
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的
按钮,否则您的代码可能会被“吃掉”!
累计签到:49 天连续签到:1 天&
按编辑框上面的&&再输入代码,会看得舒服些
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的
按钮,否则您的代码可能会被“吃掉”!
累计签到:79 天连续签到:1 天&
断断续续下了一些,还是有些不全。有些还不知道是什么原因没有下载下来。
特意写了个脚本来检查,还差哪些没有下载下来的。
用其它办法补全。
import os
import pickle
with open('pickel_stock_list.pickel','rb') as stock_list_file:
& & stock_list = pickle.load(stock_list_file) #所有股票的的列表
#print(stock_list[0])###########
had_download_stock_list = os.listdir(path='stock_data')
def new_list():#已经下载了的文件& &
& & i=0
& & while i &len(had_download_stock_list):
& && &&&had_download_stock_list[i]=had_download_stock_list[i][0:6]
& && &&&#print(had_download_stock_list[i])###########
& && &&&i += 1
& & return had_download_stock_list
have_download = new_list() #初始化已下载的文件列表
not_in_list=[]&&#初始化未下载的列表
def compair_list():
& & i=0
& & while i & len(stock_list):
& && &&&if stock_list[i] not in have_download:#如果所有股票列表中的一个股票不在已下载的文件列表中
& && && && &not_in_list.append(stock_list[i])
& && &&&else:
& && && && &pass
& && &&&i+=1
if __name__ == '__main__':
& & compair_list()
& & print(not_in_list)
复制代码
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的
按钮,否则您的代码可能会被“吃掉”!
累计签到:79 天连续签到:1 天&
按编辑框上面的再输入代码,会看得舒服些
谢谢啊,还不知道有这功能。哈哈
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的
按钮,否则您的代码可能会被“吃掉”!
累计签到:79 天连续签到:1 天&
断断续续下了一些,还是有些不全。有些还不知道是什么原因没有下载下来。
特意写了个脚本来检查,还差哪些 ...
差43个,离成功很近了
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的
按钮,否则您的代码可能会被“吃掉”!
累计签到:341 天连续签到:1 天&
本人小白,请问楼主学了多少python了呢
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的
按钮,否则您的代码可能会被“吃掉”!
累计签到:79 天连续签到:1 天&
本人小白,请问楼主学了多少python了呢
刚成为小白,基本的都没学会。
不过学习最好的方法是 ~对它有感觉~&&哈哈
很喜欢PYTHON
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的
按钮,否则您的代码可能会被“吃掉”!
累计签到:79 天连续签到:1 天&
本帖最后由 kio 于
00:46 编辑
最终版了,算是封贴版了。
首先,为了让代码更容易理解,我把获得股票列表和IP代理的模块分开写了,然后在主程序导入。
从证券交易所下载了股票的文件,有上证A股,深证A股,创业板,中小板。我分别用四个TXT文件保存了,然后从TXT文件只获得数据。
file_list=['SZA股列表.txt','创业板.txt','中小板.txt','SSA股.txt']
all_stock_list=[]
def add_list(i):
& & file_name = file_list[i]
& & with open('%s'%file_name,'r') as al:
& && &&&stock_list = al.read().splitlines()
& && &&&for each in stock_list:
& && && && &if each in all_stock_list:
& && && && && & pass
& && && && &else:
& && && && && & all_stock_list.append(each)
def all_stock():
& & n=0
& & while n&len(file_list):
& && &&&add_list(n)
& && &&&n += 1
& & return all_stock_list
if __name__ == '__main__':
& & all_stock()
& & print(len(all_stock()))复制代码
第二步,获取IP代理:
import urllib.request as req
import re
import random
url = '/'
response = req.Request(url,data=None,headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0. Safari/537.36 LBBROWSER'})
html = req.urlopen(response).read().decode('utf-8')
def proxy_lsit():
& & proxy_patten = re.compile(r'&td&(\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3})&/td&')
& & proxy_list = proxy_patten.findall(html)
& & port_patten = re.compile(r'&td&(\d{2,5})&/td&')
& & port_list = port_patten.findall(html)
& & return list(zip(proxy_list[:79],port_list[:79]))
if __name__ == '__main__':
& & proxy_lsit = proxy_lsit()
& & pl = random.choice(proxy_lsit)
& & print(pl)
复制代码
最后是主程序,基本是能用的技术已经用上了,还有找不到的数据,是因为雅虎的API没有相关的数据,已经一条条的验证了,如果各位能找到其它API可以下载历史数据的,麻烦告诉我一声,谢谢了。
import urllib.request as req
import check
import get_proxy
import random
import time
import os
print(time.ctime())
stock_list = pair_list()
proxy_l = get_proxy.proxy_lsit()
def stock(i):
& & & & stock_name = stock_list[i]
& & & & if stock_name[0]=='6':
& & & & & & & & stock_name=stock_name+r'.ss'
& & & & else:
& & & & & & & & stock_name=stock_name+r'.sz'
& & & & return stock_name
def download_date(i):
& & & & proxy = random.choice(proxy_l)
& & & & proxy_support = req.ProxyHandler({'httm':'%s.%s'%(proxy[0],proxy[1])})
& & & & opener = req.build_opener(proxy_support)
& & & & req.install_opener(opener)
& & & &
& & & & stock_name = stock(i)
& & & & url = url='http://table./table.csv?s=%s'%(stock_name)
& & & & response = req.Request(url,data=None,headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0. Safari/537.36 LBBROWSER'})
& & & & data = req.urlopen(response).read().decode('utf-8')
& & & &
& & & & save_file_name = stock_name + r'.csv'
& & & & with open(save_file_name,'w') as save_file:
& & & & & & & & save_file.write(data)
i = 0
try:
& & & & while i & len(stock_list):
& & & & & & & & download_date(i)
& & & & & & & & time.sleep(1)
except Exception as e:
& & & & print(e)
finally:
& & & & i +=1复制代码
正式封贴,开始学习@Lnan95同学的tushare包,谢谢Lnan95!
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的
按钮,否则您的代码可能会被“吃掉”!
累计签到:40 天连续签到:1 天&
学习了,另外,我发现可以直接用req.urlretrieve(url,'.\\data\\'+save_file_name)下载文件,后面.\\datas是制定的下载目录。
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的
按钮,否则您的代码可能会被“吃掉”!
累计签到:40 天连续签到:1 天&
# -*- coding: utf-8 -*-
import urllib.request as req
import check
#import get_proxy
#import random
import time
import sys
#print(time.ctime())
stock_list = check.all_stock()
#proxy_l = get_proxy.proxy_lsit()
#print(proxy_l)
def stock(i):
& && &&&stock_name = stock_list[i]
& && &&&if stock_name[0]=='6':
& && && && && & stock_name=stock_name+r'.ss'
& && &&&else:
& && && && && & stock_name=stock_name+r'.sz'
& && &&&return stock_name
def download_date(i):
& && &&&'''proxy = random.choice(proxy_l)
& && &&&proxy_support = req.ProxyHandler({'httm':'%s.%s'%(proxy[0],proxy[1])})
& && &&&opener = req.build_opener(proxy_support)
& && &&&req.install_opener(opener)'''
& && &&&#没有用代理,代理不稳定,下载成功了
& && &&&error_list=[]
& && &&&stock_name = stock(i)
& && &&&print (stock_name)
& && &&&url = 'http://table./table.csv?s=%s'%(stock_name)
& && &&&#response = req.Request(url,data=None,headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0. Safari/537.36 LBBROWSER'})
& && &&&#print('yes')& && &&&
& && &&&#data = req.urlopen(url).read().decode('utf-8')
& && &&&save_file_name = stock_name + r'.csv'
& && &&&#print(type(save_file_name))& && &&&
& && &&&#print(save_file_name)
& && &&&try:& && && &
& && && && &req.urlretrieve(url,'.\\data\\'+save_file_name)
& && &&&#这个yahoo的网址是直接下载文件的,所以可以直接用urlretrieve方法
& && &&&except req.HTTPError as e:
& && && && &print(e)& && && && &
& && && && &error_list.append(i)
& && && && &print('%i下载出错'%stock_name)
& && && && &temp=open('.\\data\\error_log.txt','a')
& && && && &temp.write(stock_name)
& && && && &temp.close
& && &&&#如果返回http错误,那么一般是404,返回代码并追加到文件中,继续执行
& && &&&def errorlist():
& && && && &return(error_list)
& && &&&#定义了一个错误列表返回方法,返回一个没有下载的代码列表
& && &&&#with open(path+save_file_name,'w') as save_file:
& && && &#& && & save_file.write('table.csv')
path = os.path.abspath(os.path.dirname(sys.argv[0]))#将一个规范化的绝对路径赋值为一个变量
t=os.listdir(path+'\\data')
#这是为了中断后重新开始用的,所以i设置为目录下文件数,代表已经下载的数量
#print(stock_list)
& && &&&while i & len(stock_list):
& && && && && & download_date(i)
& && && && && & print(&%i已完成,共有%i个&%(i+1,len(stock_list)))
& && && && && & #显示完成数量
& && && && && & time.sleep(1)
& && && && && & i=i+1& && && && && &
& && && && && &
except Exception as e:
& && &&&print(e)
& && &&&i +=1
print(download_date.errorlist())
#显示错误股票列表
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的
按钮,否则您的代码可能会被“吃掉”!
累计签到:40 天连续签到:1 天&
# -*- coding: utf-8 -*-
&&&
Created on Fri Apr 29 09:01:43 2016
@author: Zheng.Wei
&&&
import urllib.request as req
import check
#import get_proxy
#import random
import time
import os
import sys
#print(time.ctime())
stock_list = check.all_stock()
#proxy_l = get_proxy.proxy_lsit()
#print(proxy_l)
def stock(i):
& && &&&stock_name = stock_list[i]
& && &&&if stock_name[0]=='6':
& && && && && & stock_name=stock_name+r'.ss'
& && &&&else:
& && && && && & stock_name=stock_name+r'.sz'
& && &&&return stock_name
def download_date(i):
& && &&&'''proxy = random.choice(proxy_l)
& && &&&proxy_support = req.ProxyHandler({'httm':'%s.%s'%(proxy[0],proxy[1])})
& && &&&opener = req.build_opener(proxy_support)
& && &&&req.install_opener(opener)'''
& && &&&#没有用代理,代理不稳定,下载成功了
& && &&&error_list=[]
& && &&&stock_name = stock(i)
& && &&&print (stock_name)
& && &&&url = 'http://table./table.csv?s=%s'%(stock_name)
& && &&&#response = req.Request(url,data=None,headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0. Safari/537.36 LBBROWSER'})
& && &&&#print('yes')& && &&&
& && &&&#data = req.urlopen(url).read().decode('utf-8')
& && &&&
& && &&&save_file_name = stock_name + r'.csv'
& && &&&#print(type(save_file_name))& && &&&
& && &&&#print(save_file_name)
& && &&&try:& && && &
& && && && &req.urlretrieve(url,'.\\data\\'+save_file_name)
& && &&&#这个yahoo的网址是直接下载文件的,所以可以直接用urlretrieve方法
& && &&&except req.HTTPError as e:
& && && && &print(e)& && && && &
& && && && &error_list.append(i)
& && && && &print('%i下载出错'%stock_name)
& && && && &temp=open('.\\data\\error_log.txt','a')
& && && && &temp.write(stock_name)
& && && && &temp.close
& && &&&#如果返回http错误,那么一般是404,返回代码并追加到文件中,继续执行
& && &&&
& && &&&def errorlist():
& && && && &return(error_list)
& && &&&#定义了一个错误列表返回方法,返回一个没有下载的代码列表
& && &&&#with open(path+save_file_name,'w') as save_file:
& && && &#& && & save_file.write('table.csv')
path = os.path.abspath(os.path.dirname(sys.argv[0]))#将一个规范化的绝对路径赋值为一个变量
t=os.listdir(path+'\\data')
i=len(t)
#这是为了中断后重新开始用的,所以i设置为目录下文件数,代表已经下载的数量
#i = 0
#print(stock_list)
try:
& && &&&while i & len(stock_list):
& && && && && & download_date(i)
& && && && && & print(&%i已完成,共有%i个&%(i+1,len(stock_list)))
& && && && && & #显示完成数量
& && && && && & time.sleep(1)
& && && && && & i=i+1& && && && && &
& && && && && &
except Exception as e:
& && &&&print(e)
finally:
& && &&&i +=1
print(download_date.errorlist())
#显示错误股票列表复制代码
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的
按钮,否则您的代码可能会被“吃掉”!
•••(
Powered by}

我要回帖

更多关于 股票自动化交易软件 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信