求5天平均成交量及最后一天成交量
>>> import pymssql as pm
>>> import pymssql as pms
>>> import numpy as np
>>> conn=pms.connect(host='.',database='stocks')
>>> cur=conn.cursor()
>>> ret=cur.execute("select stk_id,jv from stocks_pool")
>>> rows=pd.DataFrame(cur,columns=["stk_id","jv"])
>>> result[["jv"]]=result[["jv"]].astype(float)
>>> def get_result(code,startdate,enddate):
lg=bs.login(user_id='anonymous',password='123456')
rs = bs.query_history_k_data_plus("%s"% code,
"date,code,open,high,low,close,preclose,volume,amount,adjustflag,turn,tradestatus,pctChg,isST",
start_date=startdate, end_date=enddate,
frequency="d", adjustflag="3")
data_list=[]
while (rs.error_code=='0') & rs.next():
data_list.append(rs.get_row_data())
result = pd.DataFrame(data_list, columns=rs.fields)
bs.logout ()
return result
>>> startdate="2019-8-1"
>>> enddate="2019-9-27"
>>> code="sz.000983"
>>> data=get_result(code,startdate,enddate)
>>> data[['volume']]=data[['volume']].astype('int64')
>>> data['volume'][-6:-1].mean() ## 求倒数第二至倒数第六共5个数据的平均值。切片要理解清楚
##正式求解,完整代码:
>>> for i in range(len(rows)):
stk_id=str(rows['stk_id'][i])
if stk_id[0]=='6':
code='sh.'+stk_id
else:
code='sz.'+stk_id
code=code.strip()
print(len(code))
data=get_result(code,startdate,enddate)
data[['volume']]=data[['volume']].astype('int64')
vol_avg=data['volume'][-6:-1].mean()
vol=np.array(data['volume'])[-1]
cur.execute("update stocks_pool set vol='%d',vol_avg='%d' where stk_id='%s'"%(vol,vol_avg,stk_id))
###查看结果
>>> sql=" select stk_id,jv,vol,vol_avg,vol/vol_avg as ratio from stocks_pool order by ratio"
>>> cur.execute(sql)
>>> rslt=pd.DataFrame(cur.fetchall(),columns=['stk_id','jv','vol','vol_avg','ratio'])
>>> len(rslt)
81
>>> rslt.head()

浙公网安备 33010602011771号