#encoding:utf-8
import sys
import numpy as np
#verion1: get all companies data from tushare and store them in Mongodb
import pymongo
import datetime
import tushare as ts
import time
import json
import pandas as pd
from collections import OrderedDict
import pytz
import types
import requests
from io import BytesIO, StringIO
import os
import click
import re
from os import listdir
from os.path import isfile, join
from os import walk
from pandas import DataFrame
import constants
import math
import time
import numpy
'''
手动插入每天股票信息,每天进行操作,把当天的数据存入todaydata文件夹中,然后执行完本脚本以后,把
todaydata数据手动移动到newdata中
'''
class DayOperation:
todaydata=constants.todaydata
def __init__(self,Ip,port):
self.ip=Ip
self.port=port
#股票按照时间进行索引存储,便于计算指数
def storagebyTime(self):
onlyfiles = [ f for f in listdir(self.todaydata) if isfile(join(self.todaydata,f)) ]
for f in onlyfiles:
fdate=f[0:10]
kind=f[11]
if kind=='i':
continue
self.pricetime[fdate].drop()
#read from using pandas
totaltables=self.pricetime.collection_names()
for f in onlyfiles:
fdate=f[0:10]
kind=f[11]
if kind=='i':
continue
#self.pricetime[fdate].drop()
df = pd.read_csv(self.todaydata+"/"+f)
if len(f) < 12:
continue
if fdate in totaltables:
print fdate+u"的股票数据已经存在"
continue
#df.index = df.code
print u"插入"+fdate+u"的股票数据"
records = json.loads(df.T.to_json()).values()
self.pricetime[fdate].insert_many(records)
def storagedayprice(self):
# get stock data in newdata dir
onlyfiles = [ f for f in listdir(self.todaydata) if isfile(join(self.todaydata,f)) ]
#read from using pandas
#print self.connection.collection_names()
for f in onlyfiles:
fdate=f[0:10]
kind=f[11]
if kind=='i':
continue
df = pd.read_csv(self.todaydata+"/"+f)
if len(f) < 12:
continue
codes=df.code
series={}
for i in range(0,len(codes)):
code=df.iloc[i].code
series["open"]=df.iloc[i].open
series["high"]=df.iloc[i].high
series["low"]=df.iloc[i].low
series["close"]=df.iloc[i].close
series["change"]=df.iloc[i].change
series["volume"]=df.iloc[i].volume
series["money"]=df.iloc[i].money
series["traded_market_value"]=df.iloc[i].traded_market_value
series["market_value"]=df.iloc[i].market_value
series["adjust_price"]=df.iloc[i].adjust_price
series["report_type"]=df.iloc[i].report_type
series["PE_TTM"]=df.iloc[i].PE_TTM
series["PS_TTM"]=df.iloc[i].PS_TTM
series["PC_TTM"]=df.iloc[i].PC_TTM
series["PB"]=df.iloc[i].PB
series["adjust_price_f"]=df.iloc[i].adjust_price_f
series['date'] = datetime.datetime.strptime(df.iloc[i].date, "%Y-%m-%d")
name=code
#检查一下今天数据是否存在
countstock=self.oriprice[name].find({"date":series['date']}).count()
if countstock ==0:
print (u"插入股票"+name+" "+str(series["date"])+u"数据")
self.oriprice[name].insert_one(series)
else:
print(u"股票"+name+" "+str(series['date'])+u"已经存在")
# get stock data in newdata dir
onlyfiles = [ f for f in listdir(self.todaydata) if isfile(join(self.todaydata,f)) ]
#read from using pandas
#print self.connection.collection_names()
for f in onlyfiles:
fdate=f[0:10]
kind=f[11]
if kind=='d':
continue
df = pd.read_csv(self.todaydata+"/"+f)
if len(f) < 12:
continue
codes=df.index_code
series={}
for i in range(0,len(codes)):
code=df.iloc[i].index_code
series["open"]=df.iloc[i].open
series["high"]=df.iloc[i].high
series["low"]=df.iloc[i].low
series["close"]=df.iloc[i].close
series["change"]=df.iloc[i].change
series["volume"]=df.iloc[i].volume
series["money"]=df.iloc[i].money
series['date'] = datetime.datetime.strptime(df.iloc[i].date, "%Y-%m-%d")
name=code
#check exits
countstock=self.index[name].find({"date":series['date']}).count()
if countstock ==0:
print (u"插入指数"+name+str(series["date"])+u"数据")
self.index[name].insert_one(series)
else:
print(u"指数"+name+" "+str(series['date'])+u"已经存在")
#每天计算一次,计算行业的指数
def ComputeIndustryIndexDay(self):
alldatabase=self.pricetime.collection_names()
timelist = []
for t in alldatabase:
timelist.append(datetime.datetime.strptime(t, "%Y-%m-%d"))
#按照时间先后顺序排列
timelist.sort()
#每个指数初始化为1000
allindustry=self.industry.collection_names()
for i in allindustry:
indexname = i+"detail"
self.industryindex[indexname].drop()
for i in allindustry:
indexstart = 1000
codes = self.industry[i].find()
listcodes=[]
for code in codes:
listcodes.append(code)
for d in timelist:
day=d.strftime('%Y-%m-%d')
detail=self.pricetime[day].find()
series={"code":[],"change":[],"market":[],"pe":[]}
for de in detail:
series["code"].append(de["code"])
series["change"].append(de["change"])
series["market"].append(de["market_value"])
series["pe"].append(de["PE_TTM"])
#print len(series["code"])
totaldata=zip(series['change'],series["market"],series["pe"])
stockdf = pd.DataFrame(data=list(totaldata),index=series["code"],columns = ['change','market',"pe"])
#原始数据存在重复的行,这里去掉重复数据
stockdf=stockdf.drop_duplicates()
todaydiff = 0
summarket = 0
totalpe = 0
n = 0
for code in listcodes:
if code.keys()[0][0]=='3' or code.keys()[0][0]=='0' or code.keys()[0][0]=='6':
c = code.keys()[0]
else:
c =code.keys()[1]
if c[0]=='3' or c[0]=='0':
tmp = 'sz'+c
else:
tmp='sh'+c
if tmp in stockdf.index:
if isinstance(stockdf.ix[tmp].change, np.float) and isinstance(stockdf.ix[tmp].market, np.float):
todaydiff =todaydiff+stockdf.ix[tmp].change*stockdf.ix[tmp].market
summarket =summarket+stockdf.ix[tmp].market
if isinstance(stockdf.ix[tmp].pe, np.float) and stockdf.ix[tmp].pe > 0 and stockdf.ix[tmp].pe < 500:
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
A股数据库,使用flask后端,采集数据并存入数据库,以及API.zip (409个子文件)
supervisord.conf 9KB
ownselect.html 6KB
index.html 5KB
index.html 4KB
research.html 3KB
stockclass.html 2KB
base.html 1KB
stockdetail.html 514B
404.html 145B
worker-xquery.js 3.36MB
ace.js 662KB
mode-php.js 588KB
map.js 441KB
echarts.js 355KB
worker-javascript.js 337KB
worker-html.js 330KB
mode-jsoniq.js 320KB
mode-xquery.js 317KB
worker-css.js 290KB
worker-coffee.js 220KB
keybinding-vim.js 201KB
worker-php.js 148KB
mode-html_elixir.js 124KB
mode-html_ruby.js 118KB
mode-ejs.js 117KB
mode-luapage.js 114KB
mode-soy_template.js 111KB
mode-markdown.js 111KB
mode-razor.js 110KB
worker-xml.js 110KB
mode-rhtml.js 107KB
mode-velocity.js 107KB
mode-twig.js 104KB
worker-lua.js 103KB
mode-smarty.js 103KB
mode-coldfusion.js 102KB
mode-handlebars.js 101KB
mode-django.js 101KB
mode-curly.js 100KB
mode-html.js 98KB
mode-jade.js 86KB
mode-pgsql.js 78KB
worker-json.js 71KB
mode-mask.js 69KB
ext-language_tools.js 66KB
mode-autohotkey.js 66KB
mode-haml.js 64KB
mode-objectivec.js 63KB
mode-svg.js 57KB
mode-jsp.js 57KB
mode-ftl.js 50KB
mode-liquid.js 49KB
mode-swig.js 47KB
mode-erlang.js 45KB
ext-emmet.js 42KB
keybinding-emacs.js 40KB
mode-powershell.js 38KB
mode-scala.js 38KB
mode-groovy.js 38KB
lsl.js 37KB
mode-sjs.js 37KB
mode-java.js 36KB
mode-gobstones.js 35KB
wordCloud.js 35KB
mode-wollok.js 35KB
mode-less.js 34KB
mode-tsx.js 34KB
mode-typescript.js 34KB
mode-lsl.js 31KB
mode-javascript.js 31KB
mode-css.js 30KB
scatter.js 29KB
force.js 29KB
mode-mel.js 28KB
theme-ambiance.js 28KB
mode-vala.js 27KB
mode-live_script.js 27KB
mode-actionscript.js 24KB
mode-kotlin.js 24KB
mode-dart.js 24KB
mode-scss.js 23KB
mode-xml.js 23KB
mode-nix.js 23KB
mode-elixir.js 23KB
mode-sqlserver.js 23KB
ruby.js 23KB
mode-matlab.js 23KB
mode-protobuf.js 21KB
css.js 21KB
mode-glsl.js 21KB
mode-ocaml.js 21KB
ext-settings_menu.js 21KB
mode-stylus.js 20KB
html.js 20KB
chord.js 19KB
mode-apache_conf.js 19KB
mode-ruby.js 18KB
mode-sass.js 18KB
mode-c_cpp.js 18KB
mode-drools.js 17KB
共 409 条
- 1
- 2
- 3
- 4
- 5
资源评论
马coder
- 粉丝: 1198
- 资源: 6602
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功