def margin_sz_dtl(engine, ddate): tbl = "invest_margin_sz_dtl" try: df = ts.sz_margin_details(ddate) df = df.set_index('opDate', drop='true') df.to_sql(tbl, engine, if_exists='append') except BaseException, e: print e tsl.log(tbl + " error on " + ddate)
def load_data_stock(data_date): ''' :param stock_code:传递股票代码,将其装载进入mysql :return: ''' rs = ts.sz_margin_details(date=data_date) #获取数据 pd.DataFrame.to_sql(rs, table_name, con=conn, flavor='mysql', if_exists='append', index=False)
def import_sz_margin_detail(startdate, enddate): engine = create_engine("mssql+pyodbc://sa:123456@test") tstartdate = datetime.datetime.strptime(startdate,'%Y-%m-%d') tenddate = datetime.datetime.strptime(enddate,'%Y-%m-%d') delta = datetime.timedelta(days=1) while (tstartdate <= tenddate): df = ts.sz_margin_details(datetime.datetime.strftime(tstartdate,'%Y-%m-%d')) if df is not None and len(df) > 0: df.to_sql('tb_sz_margin_detail', engine, if_exists='append') print datetime.datetime.strftime(tstartdate,'%Y-%m-%d'), ' success' else: print datetime.datetime.strftime(tstartdate,'%Y-%m-%d'), ' null' tstartdate = tstartdate + delta
def get_margin_details(start, end): logging.info('geting sh_margin data') sh_margin = ts.sh_margin_details(start=start, end=end) logging.info('sh_margin data getted') logging.info(end + ' length is ' + str(len(sh_margin[sh_margin['opDate']==end]))) period_range = pd.period_range(start=start, end=end, freq='D') sz_margin_list = [] for d in period_range: logging.info('geting ' + str(d) + ' data') sz_margin_detail = ts.sz_margin_details(str(d)) sz_margin_detail['opDate'] = str(d) sz_margin_list.append(sz_margin_detail) sz_margin = pd.concat(sz_margin_list) return pd.concat([sh_margin, sz_margin])
def setSzMarginDetails(self,endTime =None,startTime = None, isSave = False,tableName = REFERENCE_SH_MARGINS_DETAILS): dateList = getdatelist(startTime,endTime) dfAll = None try: for dateItem in dateList: df = ts.sz_margin_details(dateItem) if dfAll is None: dfAll = df.copy() else: dfAll = dfAll.append(df) dfAll.drop_duplicates() if isSave is True: df.to_sql(tableName,self.engine_sql, if_exists='append') except IOError,e: print e
def sz_margin_details(start, end, **kwargs): if end < _rzrq_start: return None args = { "start": start.strftime("%Y-%m-%d"), "end": end.strftime("%Y-%m-%d"), "freq": "D" } rng = pd.date_range(**args) day_frames = [] for d in rng: #print d.strftime("%Y-%m-%d") day_df = ts.sz_margin_details(d.strftime("%Y-%m-%d")) if len(day_df): day_frames.append(day_df) return pd.concat(day_frames, ignore_index=True)
def get_rzrq_sz_details(date): """ 获取深市融资融券明细数据 Parameters -------- date 日期,e.g. '2010-03-31' Return -------- DataFrame date 日期 code 股票代码 name 股票名称 rzye 融资余额(元) rzmre 融资买入额(元) rzche 融资偿还额(元) rqyl 融券余量 rqmcl 融券卖出量 rqchl 融券偿还量 rqylje 融券余量金额(元) rzrqye 融资融券余额(元) """ rzrq = ts.sz_margin_details(date) # Rename Columns columns_map = { 'stockCode': 'code', 'securityAbbr': 'name', 'rqye': 'rqylje', 'opDate': 'date' } rzrq.rename(columns=columns_map, inplace=True) # Add Missing Columns rzrq['rzche'] = np.nan rzrq['rqchl'] = np.nan # Swith Columns date = rzrq.pop('date') rzrq.insert(0, 'date', date) rzye = rzrq.pop('rzye') rzrq.insert(3, 'rzye', rzye) rzche = rzrq.pop('rzche') rzrq.insert(5, 'rzche', rzche) rqyl = rzrq.pop('rqyl') rzrq.insert(6, 'rqyl', rqyl) rqchl = rzrq.pop('rqchl') rzrq.insert(8, 'rqchl', rqchl) return rzrq
def Get_szMargin(code,date): global margin_dict global margin_lock each_margin=ts.sz_margin_details(date) if each_margin.empty: return #pdb.set_trace() else: if code not in list(each_margin.stockCode): return else: try: margin_lock.acquire() margin_dict[date]=each_margin[each_margin.stockCode==code] margin_lock.release() except Exception,e: print('geting szmargin failed for:',e)
def get_sz_margin_details(start): """ 投资参考 系列 融资融券(深市):深市融资融券明细数据 """ df = ts.sz_margin_details(start) print(df) if df is not None: if start is None: start = datetime.date.today() if len(df) > 0: df.insert(0, 'start', start) res = df.to_sql(invest_stock_ref_sz_margin_details, engine, if_exists='replace') msg = 'ok' if res is None else res print('获取沪市融资融券明细数据: 开始时间:{0} {1}'.format(start, msg) + '\n') else: print('获取沪市融资融券明细数据: 开始时间:{0} {1}'.format(start, 'None') + '\n')
def updateMarginDetailSZ(con, date: datetime = None, retry_count: int = 4): import share.model.dao.reference.MarginDetailSZ as Model dateFormat = "%Y-%m-%d" if date is None: date = datetime.now() logging.debug("Updating MarginsSZ detail of {date}".format( date=date.strftime(dateFormat))) df = ts.sz_margin_details(date=date.strftime(dateFormat), retry_count=retry_count) res = [] for _, row in df.iterrows(): obj = Model.rowToORM(row) if obj is not None: res.append(obj) Base.metadata.create_all(con.engine) con.save_all(res) return
def getSzMarginDetails(cursor): dateList = getDate('2010-05-17', '2017-12-31') print(len(dateList)) for i in dateList: try: # 深市融资融券明细一次只能获取一天的明细数据,如果不输入参数,则为最近一个交易日的明细数据 print(i) df = ts.sz_margin_details(str(i), pause=0.01) # 处理缺失值 df = df.fillna(0) #print(df) dfLen = len(df) uuidList = [] # 添加uuid for l in range(0, dfLen): uuidList.append(uuid.uuid1()) df['uuid'] = uuidList for k in range(0, dfLen): df2 = df[k:k + 1] cursor.execute( "insert into stock_sz_margin_details(uuid, op_date, code, name, rzmre, rzye, " "rqmcl, rqyl, rqye, rzrqye) " "values('%s','%s' ,'%s', '%s','%.4f' , '%.4f', " "'%.4f', '%.4f', '%.4f', '%.4f')" % (str(list(df2['uuid'])[0]), str(list( df2['opDate'])[0]), str(list(df2['stockCode'])[0]), str(list(df2['securityAbbr'])[0]), round(float(df2['rzmre']), 4), round( float(df2['rzye']), 4), round(float(df2['rqmcl']), 4), round(float(df2['rqyl']), 4), round( float(df2['rqye']), 4), round(float(df2['rzrqye']), 4))) cursor.execute("commit") except Exception as e: pass print(e)
def getData(self, mongo, func): if (func == 'profit_data'): df = fd.profit_data(top=self.top) elif (func == 'xsg_data'): df = fd.xsg_data() elif (func == 'new_stocks'): df = fd.new_stocks() elif (func == 'sh_margins'): df = ts.sh_margins(self.start, self.end) elif (func == 'sz_margins'): df = ts.sz_margins(self.start, self.end) elif (func == 'sz_margin_details'): df = ts.sz_margin_details(self.end) else: df = {} print("func:") print(func) print("type:") print(type(df)) insert_string = df.to_json(orient='records') items = json.loads(insert_string)
def MarginDetails(tradeDate): selectedCol = ['stockCode','opDate','rzye','rzmre','rqyl','rqmcl']; df = ts.sh_margin_details(start=tradeDate,end=tradeDate); if df.shape[0]>0: df = df[selectedCol]; pass; dfSz = ts.sz_margin_details(date=tradeDate); if dfSz.shape[0]>0: df = df.append(dfSz[selectedCol]); pass; if df.shape[0]==0: return df; df.rename(columns = {'opDate':'tradeDate'}, inplace=True); df['secID'] = df['stockCode'].apply(lambda x: gTicker2SecID[x] if x in gTicker2SecID else None); df = df[df['secID'].map(lambda x:x is not None)]; df.drop('stockCode',axis=1,inplace=True); #df.set_index(['secID','tradeDate'],inplace=True); return df;
def MarginDetails(tradeDate): selectedCol = ['stockCode', 'opDate', 'rzye', 'rzmre', 'rqyl', 'rqmcl'] df = ts.sh_margin_details(start=tradeDate, end=tradeDate) if df.shape[0] > 0: df = df[selectedCol] pass dfSz = ts.sz_margin_details(date=tradeDate) if dfSz.shape[0] > 0: df = df.append(dfSz[selectedCol]) pass if df.shape[0] == 0: return df df.rename(columns={'opDate': 'tradeDate'}, inplace=True) df['secID'] = df['stockCode'].apply(lambda x: gTicker2SecID[x] if x in gTicker2SecID else None) df = df[df['secID'].map(lambda x: x is not None)] df.drop('stockCode', axis=1, inplace=True) #df.set_index(['secID','tradeDate'],inplace=True); return df
def sz_margin_details(request): try: date = request.POST.get('date', '') data = ts.sz_margin_details(date) res = { 'columns': [ '标的证券代码', '标的证券简称', '融资买入额(元)', '融资余额(元)', '融券卖出量', '融券余量', '融券余量(元)', '融资融券余额(元)', '信用交易日期', ], 'data': json.loads(json.dumps(data.values, cls=DateEncoder)) } except (BaseException): return HttpResponse(BaseException) else: return HttpResponse(json.dumps(res), content_type="application/json")
def get_financing_securities_detail_sz(date, retry_count=RETRY_COUNT, pause=PAUSE): assert date is not None, 'date must be not None or \'\'' logger.info( 'Begin get financing securities details sz data. Date is %s.' % date) data_dicts = [] try: data_df = ts.sz_margin_details(date=date, retry_count=retry_count, pause=pause) except Exception: logger.exception( 'Begin get financing securities details sz data. Date is %s' % date) else: if data_df is None or data_df.empty: logger.warn( 'Empty get financing securities details sz data date, date is %s.' % date) else: data_dicts = [{ 'stock_code': row[0], 'security_abbr': row[1], 'rzmre': row[2], 'rzye': row[3], 'rqmcl': row[4], 'rqyl': row[5], 'rqye': row[6], 'rzrqye': row[7], 'op_date': row[8] } for row in data_df.values] logger.info( 'Success get financing securities details sz data, date is: %s.' % date) return data_dicts
def Getszmargins(self): datateeeeeee = ts.sz_margin_details() self.SaveCSV(datateeeeeee, 'szmargindetails.csv')
def dealMarginData(self, startDate, endDate): dbtable_sh = self.magin_sh dbtable_sz = self.magin_sz engine = self.engine #生成目录字典 allTimedf = self.getAllTrdingDate(startDate, endDate) if len(allTimedf) > 0: allTimelist = list(allTimedf) #获取每天融资融券数据 for atl in allTimelist: #上海融资融券数据 marginSh_df = pd.DataFrame() #深圳融资融券数据 marginSz_df = pd.DataFrame() #深圳融资融券数据 marginTmp_df = pd.DataFrame() #获取沪市融资融券汇总数据 allsh_df = ts.sh_margins(start=atl, end=atl) marginTmp_df['mt_rzye'] = allsh_df['rzye'] marginTmp_df['mt_rzmre'] = allsh_df['rzmre'] marginTmp_df['mt_rzche'] = 0 marginTmp_df['mt_rqyl'] = allsh_df['rqyl'] marginTmp_df['mt_rqylje'] = allsh_df['rqylje'] marginTmp_df['mt_rqmcl'] = allsh_df['rqmcl'] marginTmp_df['mt_rqchl'] = 0 marginTmp_df['mt_rzrqjyzl'] = allsh_df['rzrqjyzl'] marginTmp_df['mt_code'] = '000002' marginTmp_df['mt_name'] = u'上海A股' marginTmp_df['mt_date'] = atl marginSh_df = marginSh_df.append(marginTmp_df) #获取沪市融资融券个股数据 allsh_df = ts.sh_margin_details(start=atl, end=atl) marginTmp_df = pd.DataFrame() marginTmp_df['mt_code'] = allsh_df['stockCode'] marginTmp_df['mt_name'] = allsh_df['securityAbbr'] marginTmp_df['mt_date'] = allsh_df['opDate'] marginTmp_df['mt_rzye'] = allsh_df['rzye'] marginTmp_df['mt_rzmre'] = allsh_df['rzmre'] marginTmp_df['mt_rzche'] = allsh_df['rzche'] marginTmp_df['mt_rqyl'] = allsh_df['rqyl'] marginTmp_df['mt_rqylje'] = 0 marginTmp_df['mt_rqmcl'] = allsh_df['rqmcl'] marginTmp_df['mt_rqchl'] = allsh_df['rqchl'] marginTmp_df['mt_rzrqjyzl'] = 0 marginSh_df = marginSh_df.append(marginTmp_df) marginSh_series = marginSh_df['mt_date'].astype('str') marginSh_index = marginSh_series.values marginSh_df = marginSh_df.set_index(marginSh_index) #获取深市融资融券汇总数据 allsz_df = ts.sz_margins(start=atl, end=atl) marginTmp_df = pd.DataFrame() marginTmp_df['mt_rzmre'] = allsz_df['rzmre'] marginTmp_df['mt_rzye'] = allsz_df['rzye'] marginTmp_df['mt_rqmcl'] = allsz_df['rqmcl'] marginTmp_df['mt_rqyl'] = allsz_df['rqyl'] marginTmp_df['mt_rqye'] = allsz_df['rqye'] marginTmp_df['mt_rzrqye'] = allsz_df['rzrqye'] marginTmp_df['mt_code'] = '399107' marginTmp_df['mt_name'] = u'深圳A股' marginTmp_df['mt_date'] = atl marginSz_df = marginSz_df.append(marginTmp_df) #获取深市融资融券个股数据 allsz_df = ts.sz_margin_details(atl) #清空tmp表 marginTmp_df = pd.DataFrame() marginTmp_df['mt_code'] = allsz_df['stockCode'] marginTmp_df['mt_name'] = allsz_df['securityAbbr'] marginTmp_df['mt_date'] = allsz_df['opDate'] marginTmp_df['mt_rzmre'] = allsz_df['rzmre'] marginTmp_df['mt_rzye'] = allsz_df['rzye'] marginTmp_df['mt_rqmcl'] = allsz_df['rqmcl'] marginTmp_df['mt_rqyl'] = allsz_df['rqyl'] marginTmp_df['mt_rqye'] = allsz_df['rqye'] marginTmp_df['mt_rzrqye'] = allsz_df['rzrqye'] marginSz_df = marginSz_df.append(marginTmp_df) marginSz_series = marginSz_df['mt_date'].astype('str') marginSz_index = marginSz_series.values marginSz_df = marginSz_df.set_index(marginSz_index) marginSh_df.to_sql(dbtable_sh, con=engine, if_exists='append') marginSz_df.to_sql(dbtable_sz, con=engine, if_exists='append') print atl m = 1
import itertools import importlib # sys.setdefaultencoding('gbk') SZfolder = r'G:/TimeSeriesData/RZRQ/SHSZDailytxt/' Dates = pd.date_range(start='2018-04-22', end='2018-05-03', freq='D') for item in Dates: nDay = datetime.datetime.strftime(item, '%Y-%m-%d') try: ndayfilename = SZfolder + 'sz' + nDay.replace('-', '') + '.txt' if not (os.path.exists(ndayfilename)): SZRZRQ = ts.sz_margin_details(date=nDay) if len(SZRZRQ) > 2: print(SZRZRQ[-5:]) SZRZRQ.to_csv(ndayfilename, sep=',', encoding='utf-8') print(ndayfilename) else: print('Len <2, no margin data for ' + nDay) else: print(ndayfilename + ' available,no need to download!!') except: pass try: ndayfilename = SZfolder + 'sh' + nDay.replace('-', '') + '.txt' if not (os.path.exists(ndayfilename)): SHRZRQ = ts.sh_margin_details(start=nDay, end=nDay)
rzye:融资余额(元) rqmcl: 融券卖出量 rqyl: 融券余量 rqye: 融券余量(元) rzrqye:融资融券余额(元) 调用方法: print(ts.sz_margins(start='2017-01-01', end='2018-04-19')) 深市融资融券明细数据 参数说明: date:日期 format:YYYY-MM-DD 默认为空’‘,数据返回最近交易日明细数据 retry_count:当网络异常后重试次数,默认为3 pause:重试时停顿秒数,默认为0 返回值说明: stockCode:标的证券代码 securityAbbr:标的证券简称 rzmre: 融资买入额(元) rzye:融资余额(元) rqmcl: 融券卖出量 rqyl: 融券余量 rqye: 融券余量(元) rzrqye:融资融券余额(元) opDate:信用交易日期 print(ts.sz_margin_details()) ''' print(ts.sz_margin_details())
#coding=utf-8 ''' Created on 2015年6月4日 @author: Administrator ''' import tushare as ts # 分配预案 #每到季报、年报公布的时段,就经常会有上市公司利润分配预案发布,而一些高送转高分红的股票往往会成为市场炒作的热点。 df = ts.profit_data(top=60) df.sort('shares',ascending=False) df[df.shares>=10]#选择每10股送转在10以上的 # 业绩预告 ts.forecast_data(2014,2)#获取2014年中报的业绩预告数据 # 限售股解禁 # 以月的形式返回限售股解禁情况,通过了解解禁股本的大小,判断股票上行的压力。可通过设定年份和月份参数获取不同时段的数据。 ts.xsg_data() # 新股数据 ts.new_stocks() # 融资融券 ts.sh_margins(start='2015-01-01', end='2015-04-19') ts.sz_margins(start='2015-01-01', end='2015-04-19') #如果不设symbol参数或者开始和结束日期时段设置过长,数据获取可能会比较慢,建议分段分步获取,比如一年为一个周期 ts.sh_margin_details(start='2015-01-01', end='2015-04-19', symbol='601989') ts.sz_margin_details('2015-04-20')
rqmcl: 融券卖出量 rqyl: 融券余量 rqye: 融券余量(元) rzrqye:融资融券余额(元) ''' ts.sz_margins(start='2015-01-01', end='2015-04-19') ''' 深市融资融券明细数据 参数说明: date:日期 format:YYYY-MM-DD 默认为空’‘,数据返回最近交易日明细数据 retry_count:当网络异常后重试次数,默认为3 pause:重试时停顿秒数,默认为0 返回值说明: stockCode:标的证券代码 securityAbbr:标的证券简称 rzmre: 融资买入额(元) rzye:融资余额(元) rqmcl: 融券卖出量 rqyl: 融券余量 rqye: 融券余量(元) rzrqye:融资融券余额(元) opDate:信用交易日期 ''' ts.sz_margin_details('2015-04-20')
df_sz50 = ts.get_sz50s() #获取上证50成份股 df_zz500 = ts.get_zz500s() #获取中证500成份股 #==============================================================================投资参考============================================================================== df_dividend = ts.profit_data(top=60) df_dividend.sort('shares',ascending=False) '''分配预案''' df_forecast = ts.forecast_data(2017,4) '''业绩预告''' df_restrict = ts.xsg_data() '''限售股解禁''' df_fund = ts.fund_holdings(2017, 2) '''基金持股''' df_sh = ts.sh_margin_details(start='2015-01-01', end='2015-04-19', symbol='601989') '''上交所融资融券明细''' df_sz = ts.sz_margins(start='2015-01-01', end='2015-04-19') df_sz_detail = ts.sz_margin_details('2015-04-20') '''深交所融资融券总额''' #==============================================================================新闻============================================================================== ts.get_latest_news() #默认获取最近80条新闻数据,只提供新闻类型、链接和标题 ts.get_latest_news(top=5,show_content=True) #显示最新5条新闻,并打印出新闻内容 '''即时新闻''' ts.get_notices('600028') '''个股新闻''' ts.guba_sina(True) '''新浪股吧''' #==============================================================================海外数据源============================================================================== import pandas.io.data as web DAX = web.DataReader(name='^GDAXI',data_source='yahoo',start='2000-1-1')#读取德国DAX指数 #data_source='yahoo'/'google'/'fred'圣路易斯储蓄银行/'famafrench'/'pandas.io.web'世界银行 #write_code
def getSzMarginsDetails(self): file_name = self.startDate+'_'+self.endDate+'_sz_margins_details.csv' path = self.index + self.index_sz_margins_details + file_name data = ts.sz_margin_details(date = self.startDate) data.to_csv(path, encoding='utf-8') print(file_name)
retry_count:当网络异常后重试次数,默认为3 pause:重试时停顿秒数,默认为0 :return: opDate:信用交易日期(index) rzmre: 融资买入额(元) rzye:融资余额(元) rqmcl: 融券卖出量 rqyl: 融券余量 rqye: 融券余量(元) rzrqye:融资融券余额(元) """ # 深市融资融券明细数据 # 深市融资融券明细一次只能获取一天的明细数据,如果不输入参数,则为最近一个交易日的明细数据 print ts.sz_margin_details('2017-10-27') """ :param: date:日期 format:YYYY-MM-DD 默认为空’‘,数据返回最近交易日明细数据 retry_count:当网络异常后重试次数,默认为3 pause:重试时停顿秒数,默认为0 :return: stockCode:标的证券代码 securityAbbr:标的证券简称 rzmre: 融资买入额(元) rzye:融资余额(元) rqmcl: 融券卖出量 rqyl: 融券余量 rqye: 融券余量(元) rzrqye:融资融券余额(元)
#业绩预告(2017年第4季度) Forecast_data = ts.forecast_data(2017, 4) #分配预案(最近公布60条数据) Profit_data = ts.profit_data(top=60) #限售解禁(2017-12解禁股票) Xsg_data = ts.xsg_data(year=2017, month=12) #基金持股(2017年第4季度) Fund_holdings = ts.fund_holdings(2017, 3) #融资融券 Sh_margins = ts.sh_margins(start='2017-12-01', end='2017-12-15') #总的 Sh_margin_details = ts.sh_margin_details(start='2017-12-01', end='2017-12-15', symbol='601989') #指定股票 Sz_margins = ts.sz_margins(start='2017-12-01', end='2017-12-14') #总 Sz_margin_details = ts.sz_margin_details('2017-12-14') #个股列表 #新股上市 New_stocks = ts.new_stocks() ''' 数据储存:csv,mysql ''' #csv import os filename = 'D:/VNPY/bigfile.csv' for code in ['000875', '600848', '000981']: df = ts.get_hist_data(code) if os.path.exists(filename): df.to_csv(filename, mode='a', header=None,
def szmarginsdetails(date_list): for date in date_list: DTS = ts.sz_margin_details(date=date) DTS.to_csv('D:\\ts\\tzck\\szmargin\\SZ_margin%s.csv'%date,encoding='gbk')
temp_day = ts.sh_margin_details(start=date, end=date) temp_daymid = np.array(temp_day) print(date + '---part 1') for i in range(len(temp_daymid)): resu0 = temp_daymid[i] try: sql_insert = "insert into stock_rzrq_detail(state_dt,bd_code,rzye,rqyl)values('%s','%s','%.2f','%.2f')" % ( str(date), str(resu0[1]), float( resu0[3]), float(resu0[6])) cursor.execute(sql_insert) db.commit() except Exception as exp: print(exp) continue temp = ts.sz_margin_details(date) resu3_all = np.array(temp) print(date + '---part 2') for resu3 in resu3_all: try: sql_insert3 = "insert into stock_rzrq_detail(state_dt,bd_code,rzye,rqyl)values('%s','%s','%.2f','%.2f')" % ( str(date), str(resu3[0]), float( resu3[3]), float(resu3[5])) cursor.execute(sql_insert3) db.commit() except Exception as inner_exp: print(inner_exp) continue except Exception as exp: print(exp) continue