fix: 完成转换;但是现存5、10等周期排序计算错误问题

master
laixingyu 3 years ago
parent 6fdf7b7a70
commit c9a4d89744

@ -70,7 +70,7 @@ def getPeriodTurnOver(dbconfig,dbcursor,startDate,endDate):
code,turnover = row code,turnover = row
total = turnover total = turnover
sql_trade_period_qurey = 'select code,sum(amount) as turnover from stock_index where trade_day >= %s and trade_day < %s group by code' sql_trade_period_qurey = 'select code,sum(amount) as turnover from stock_index where trade_day >= %s and trade_day < %s group by code order by amount DESC '
dbcursor.execute(sql_trade_period_qurey,(startDate,endDate)) dbcursor.execute(sql_trade_period_qurey,(startDate,endDate))
totalTurnOvers = dbcursor.fetchall() totalTurnOvers = dbcursor.fetchall()
for row in totalTurnOvers: for row in totalTurnOvers:
@ -78,7 +78,7 @@ def getPeriodTurnOver(dbconfig,dbcursor,startDate,endDate):
periodTurnOverMap[code] = {'code':code,'turnover':turnover,'total':total} periodTurnOverMap[code] = {'code':code,'turnover':turnover,'total':total}
return periodTurnOverMap return periodTurnOverMap
def getPeriodDiff(dbconfig,dbcursor,startDate,endDate): def getPeriodDiff(dbconfig,dbcursor,startDate,endDate,hasData):
periodStartDataMap = {} periodStartDataMap = {}
periodEndDataMap = {} periodEndDataMap = {}
periodDiffMap = {} periodDiffMap = {}
@ -93,37 +93,45 @@ def getPeriodDiff(dbconfig,dbcursor,startDate,endDate):
sql_trade_period_qurey = 'select s.code as code,s.close as close,s.open as open,sb.blemind2 as blemind2 from stocks s left join stock_basis sb on s.code = sb.code where s.trade_day = %s' sql_trade_period_qurey = 'select s.code as code,s.close as close,s.open as open,sb.blemind2 as blemind2 from stocks s left join stock_basis sb on s.code = sb.code where s.trade_day = %s'
dbcursor.execute(sql_trade_period_qurey,startDate) dbcursor.execute(sql_trade_period_qurey,startDate)
datas = dbcursor.fetchall() datas = dbcursor.fetchall()
datasLen = 0
for row in datas: for row in datas:
code,close,open,blemind2 = row code,close,open,blemind2 = row
if close is None:
close = Decimal('0')
periodStartDataMap[code] = {'code':code,'close':close,'open':open,'blemind2':blemind2} periodStartDataMap[code] = {'code':code,'close':close,'open':open,'blemind2':blemind2}
datasLen +=1
if datasLen <= 0:
return
hasData = True
sql_trade_period_qurey = 'select s.code as code,s.close as close,s.open as open,sb.blemind2 as blemind2 from stocks s left join stock_basis sb on s.code = sb.code where s.trade_day = %s' sql_trade_period_qurey = 'select s.code as code,s.close as close,s.open as open,sb.blemind2 as blemind2 from stocks s left join stock_basis sb on s.code = sb.code where s.trade_day = %s'
dbcursor.execute(sql_trade_period_qurey,endDate) dbcursor.execute(sql_trade_period_qurey,endDate)
datas = dbcursor.fetchall() datas = dbcursor.fetchall()
for row in datas: for row in datas:
code,close,open,blemind2 = row code,close,open,blemind2 = row
if close is None:
close = Decimal('0')
periodEndDataMap[code] = {'code':code,'close':close,'open':open,'blemind2':blemind2} periodEndDataMap[code] = {'code':code,'close':close,'open':open,'blemind2':blemind2}
if code in periodStartDataMap: if code in periodStartDataMap:
if industryMap[blemind2] in periodDiffMap: if industryMap[blemind2] in periodDiffMap:
print('close: ',close, ' bclose: ',periodStartDataMap[code]['close'] ) # print('close: ',close, ' bclose: ',periodStartDataMap[code]['close'] )
if close - periodStartDataMap[code]['close'] > 0 : if Decimal(close) - periodStartDataMap[code]['close'] > 0 :
periodDiffMap[industryMap[blemind2]]['rise'] += 1 periodDiffMap[industryMap[blemind2]]['rise'] += 1
elif close - periodStartDataMap[code]['close'] == 0 : elif Decimal(close) - periodStartDataMap[code]['close'] == 0 :
periodDiffMap[industryMap[blemind2]]['flat'] += 1 periodDiffMap[industryMap[blemind2]]['flat'] += 1
else: else:
periodDiffMap[industryMap[blemind2]]['fall'] += 1 periodDiffMap[industryMap[blemind2]]['fall'] += 1
else: else:
if close - periodStartDataMap[code]['close'] > 0 : if Decimal(close) - periodStartDataMap[code]['close'] > 0 :
periodDiffMap[industryMap[blemind2]] = {'rise':1,'flat':0,'fall':0} periodDiffMap[industryMap[blemind2]] = {'rise':1,'flat':0,'fall':0}
elif close - periodStartDataMap[code]['close'] == 0 : elif close - periodStartDataMap[code]['close'] == 0 :
periodDiffMap[industryMap[blemind2]] = {'rise':0,'flat':1,'fall':0} periodDiffMap[industryMap[blemind2]] = {'rise':0,'flat':1,'fall':0}
else: else:
periodDiffMap[industryMap[blemind2]] = {'rise':0,'flat':0,'fall':1} periodDiffMap[industryMap[blemind2]] = {'rise':0,'flat':0,'fall':1}
else: else:
print('close: ',close) # print('close: ',close)
if close > 0 : if Decimal(close) > 0 :
periodDiffMap[industryMap[blemind2]] = {'rise':1,'flat':0,'fall':0} periodDiffMap[industryMap[blemind2]] = {'rise':1,'flat':0,'fall':0}
elif close == 0 : elif Decimal(close) == 0 :
periodDiffMap[industryMap[blemind2]] = {'rise':0,'flat':1,'fall':0} periodDiffMap[industryMap[blemind2]] = {'rise':0,'flat':1,'fall':0}
else: else:
periodDiffMap[industryMap[blemind2]] = {'rise':0,'flat':0,'fall':1} periodDiffMap[industryMap[blemind2]] = {'rise':0,'flat':0,'fall':1}
@ -194,10 +202,10 @@ def main():
stock_basic_map = {} stock_basic_map = {}
#转换数据的日期(单日) #转换数据的日期(单日)
trans_date = '2023-07-20' trans_date = '2022-03-07'
#查询交易日数据 #查询交易日数据
sql_trade_qurey = 'select date,week,trade from trade_dates where trade = %s and date = %s' sql_trade_qurey = 'select date,week,trade from trade_dates where trade = %s and date > %s'
sql_trade = "trading" sql_trade = "trading"
db_a_cursor.execute(sql_trade_qurey,(sql_trade,trans_date)) db_a_cursor.execute(sql_trade_qurey,(sql_trade,trans_date))
trading_dates = db_a_cursor.fetchall() trading_dates = db_a_cursor.fetchall()
@ -246,28 +254,40 @@ def main():
print('start transfer statistics ',trading_date , ' data.') print('start transfer statistics ',trading_date , ' data.')
# 获取前一日数据 # 获取前一日数据
prevIndustryDataMap = getPreData(db_a_conn,db_a_cursor,period_trading_dateMap['1']) prevIndustryDataMap = getPreData(db_b_conn,db_b_cursor,period_trading_dateMap['1'])
hasPrevIndustryData = len(prevIndustryDataMap) hasPrevIndustryData = len(prevIndustryDataMap)
# 获取多日成交额汇总数据 # 获取多日成交额汇总数据
turnOver5 = getPeriodTurnOver(db_a_conn,db_a_cursor,period_trading_dateMap['5'],trading_date) turnOver5 = getPeriodTurnOver(db_a_conn,db_a_cursor,period_trading_dateMap['5'],trading_date)
for data in turnOver5: hasTurnOver5 = False if turnOver5 is None else len(turnOver5) > 0
industries_tradeDaymap[data]['turnover5'] = turnOver5[data]['turnover'] # for data in turnOver5:
# industries_tradeDaymap[data]['turnover5'] = turnOver5[data]['turnover']
turnOver10 = getPeriodTurnOver(db_a_conn,db_a_cursor,period_trading_dateMap['10'],trading_date) turnOver10 = getPeriodTurnOver(db_a_conn,db_a_cursor,period_trading_dateMap['10'],trading_date)
for data in turnOver10: hasTurnOver10 = False if turnOver10 is None else len(turnOver10) > 0
industries_tradeDaymap[data]['turnover10'] = turnOver5[data]['turnover'] # for data in turnOver10:
# industries_tradeDaymap[data]['turnover10'] = turnOver5[data]['turnover']
turnOver20 = getPeriodTurnOver(db_a_conn,db_a_cursor,period_trading_dateMap['20'],trading_date) turnOver20 = getPeriodTurnOver(db_a_conn,db_a_cursor,period_trading_dateMap['20'],trading_date)
for data in turnOver20: hasTurnOver20 = False if turnOver20 is None else len(turnOver20) > 0
industries_tradeDaymap[data]['turnover20'] = turnOver5[data]['turnover'] # for data in turnOver20:
# industries_tradeDaymap[data]['turnover20'] = turnOver5[data]['turnover']
turnOver30 = getPeriodTurnOver(db_a_conn,db_a_cursor,period_trading_dateMap['30'],trading_date) turnOver30 = getPeriodTurnOver(db_a_conn,db_a_cursor,period_trading_dateMap['30'],trading_date)
for data in turnOver30: hasTurnOver30 = False if turnOver30 is None else len(turnOver30) > 0
industries_tradeDaymap[data]['turnover30'] = turnOver5[data]['turnover'] # for data in turnOver30:
# industries_tradeDaymap[data]['turnover30'] = turnOver5[data]['turnover']
# 获取涨跌幅数据并统计涨跌幅 # 获取涨跌幅数据并统计涨跌幅
periodUpDownMap5 = getPeriodDiff(db_a_conn,db_a_cursor,period_trading_dateMap['5'],trading_date) hasPeriodUpDownMap5 = False
periodUpDownMap10 = getPeriodDiff(db_a_conn,db_a_cursor,period_trading_dateMap['10'],trading_date) periodUpDownMap5 = getPeriodDiff(db_a_conn,db_a_cursor,period_trading_dateMap['5'],trading_date,hasPeriodUpDownMap5)
periodUpDownMap20 = getPeriodDiff(db_a_conn,db_a_cursor,period_trading_dateMap['20'],trading_date) hasPeriodUpDownMap5 = False if periodUpDownMap5 is None else len(periodUpDownMap5) > 0
periodUpDownMap30 = getPeriodDiff(db_a_conn,db_a_cursor,period_trading_dateMap['30'],trading_date) hasPeriodUpDownMap10 = False
periodUpDownMap10 = getPeriodDiff(db_a_conn,db_a_cursor,period_trading_dateMap['10'],trading_date,hasPeriodUpDownMap10)
hasPeriodUpDownMap10 = False if periodUpDownMap10 is None else len(periodUpDownMap10) > 0
hasPeriodUpDownMap20 = False
periodUpDownMap20 = getPeriodDiff(db_a_conn,db_a_cursor,period_trading_dateMap['20'],trading_date,hasPeriodUpDownMap20)
hasPeriodUpDownMap20 = False if periodUpDownMap20 is None else len(periodUpDownMap20) > 0
hasPeriodUpDownMap30 = False
periodUpDownMap30 = getPeriodDiff(db_a_conn,db_a_cursor,period_trading_dateMap['30'],trading_date,hasPeriodUpDownMap30)
hasPeriodUpDownMap30 = False if periodUpDownMap30 is None else len(periodUpDownMap30) > 0
totalTunrover = Decimal('0.00') totalTunrover = Decimal('0.00')
#查询日交易的所有成交额,用于计算占比等 #查询日交易的所有成交额,用于计算占比等
@ -277,7 +297,7 @@ def main():
for total in datas: for total in datas:
code , totalTunrover = total code , totalTunrover = total
#查询日交易数据 以成交额进行排序 #查询日交易数据 以成交额进行排序
sql_stock_query = 'select code,name,trade_day, open,close,high,low,differrange,volume,amount,limitupnum,limitdownnum,suspendnum,risenum,fallnum,flatnum,componentnum,mv,pettm,pettm_mid,liqmv,rcnthigh,rcntlow from stock_index where trade_day = %s order by volume DESC' sql_stock_query = 'select code,name,trade_day, open,close,high,low,differrange,volume,amount,limitupnum,limitdownnum,suspendnum,risenum,fallnum,flatnum,componentnum,mv,pettm,pettm_mid,liqmv,rcnthigh,rcntlow from stock_index where trade_day = %s order by amount DESC'
db_a_cursor.execute(sql_stock_query,trading_date) db_a_cursor.execute(sql_stock_query,trading_date)
datas = db_a_cursor.fetchall() datas = db_a_cursor.fetchall()
sortIndex = 1 sortIndex = 1
@ -292,15 +312,13 @@ def main():
security_name = name security_name = name
turnover = amount turnover = amount
turnover_sort = sortIndex turnover_sort = sortIndex
turnover_change = turnover - prevIndustryDataMap[code]['turnover'] if hasPrevIndustryData else turnover #todo 从交易数据中获取然后计算 ,一日、多日 turnover_change = Decimal(prevIndustryDataMap[code]['turnover']) - turnover if hasPrevIndustryData else turnover #todo 从交易数据中获取然后计算 ,一日、多日
sortIndex +=1 sortIndex +=1
rise_number = risenum
flat_number = flatnum
# print(type(turnover),type(totalTunrover),type(turnover*Decimal('100.00'))) # print(type(turnover),type(totalTunrover),type(turnover*Decimal('100.00')))
ratio = (turnover*Decimal('100.00') )/ totalTunrover ratio = (turnover*Decimal('100.00') )/ totalTunrover
turnover_ratio = ratio turnover_ratio = ratio
turnover_ratio_change = '' #todo turnover_ratio_change = turnover_ratio - Decimal(prevIndustryDataMap[code]['turnover_ratio']) if hasPrevIndustryData else turnover_ratio #todo
turnover_sort_change = ''#todo turnover_sort_change = turnover_sort - Decimal(prevIndustryDataMap[code]['turnover_sort']) if hasPrevIndustryData else turnover_sort #todo
# industries_tradeDaymap[code] = {business_date,security_code,turnover_sort,rise_number,flat_number} # industries_tradeDaymap[code] = {business_date,security_code,turnover_sort,rise_number,flat_number}
# 总成交额 # 总成交额
@ -309,58 +327,60 @@ def main():
# turnover_change = '' #todo # turnover_change = '' #todo
# turnover_ratio_change = '' #todo # turnover_ratio_change = '' #todo
# turnover_sort_change = ''#todo # turnover_sort_change = ''#todo
turnover5 = turnOver5[code]['turnover'] #todo turnover5 = Decimal(turnOver5[code]['turnover']) if hasTurnOver5 else turnover #todo
turnover5_change = turnover5 - prevIndustryDataMap[code]['turnover5'] if hasPrevIndustryData else turnover5 #todo turnover5_change = turnover5 - Decimal(prevIndustryDataMap[code]['turnover5']) if hasPrevIndustryData else turnover5 #todo
turnover5_ratio = (turnover5*Decimal('100.00') )/ turnOver5[code]['total'] #todo turnover5_ratio = (turnover5*Decimal('100.00') )/ Decimal(turnOver5[code]['total']) if hasTurnOver5 else ratio #todo
turnover5_ratio_change = '' #todo turnover5_ratio_change = turnover5_ratio - Decimal(prevIndustryDataMap[code]['turnover5_ratio']) if hasPrevIndustryData else turnover5_ratio #todo
turnover5_sort = '' #todo turnover5_sort = Decimal(prevIndustryDataMap[code]['turnover5_sort']) if hasPrevIndustryData else turnover_sort #todo
turnover5_sort_change = ''#todo turnover5_sort_change = Decimal(prevIndustryDataMap[code]['turnover5_sort']) - turnover5_sort if hasPrevIndustryData else turnover5_sort #todo
turnover10 = turnOver10[code]['turnover'] #todo turnover10 = Decimal(turnOver10[code]['turnover']) if hasTurnOver10 else turnover #todo
turnover10_change = turnover10 - prevIndustryDataMap[code]['turnover10'] if hasPrevIndustryData else turnover10 #todo turnover10_change = turnover10 - Decimal(prevIndustryDataMap[code]['turnover10']) if hasPrevIndustryData else turnover10 #todo
turnover10_ratio = (turnover10*Decimal('100.00') )/ turnOver10[code]['total'] #todo turnover10_ratio = (turnover10*Decimal('100.00') )/ Decimal(turnOver10[code]['total']) if hasTurnOver10 else ratio #todo
turnover10_ratio_change = '' #todo turnover10_ratio_change = turnover10_ratio - Decimal(prevIndustryDataMap[code]['turnover10_ratio']) if hasPrevIndustryData else turnover10_ratio #todo
turnover10_sort = '' #todo turnover10_sort = Decimal(prevIndustryDataMap[code]['turnover10_sort']) if hasPrevIndustryData else turnover_sort #todo
turnover10_sort_change = ''#todo turnover10_sort_change = Decimal(prevIndustryDataMap[code]['turnover10_sort']) - turnover10_sort if hasPrevIndustryData else turnover10_sort #todo
turnover20 = turnOver20[code]['turnover'] #todo turnover20 = Decimal(turnOver20[code]['turnover']) if hasTurnOver20 else turnover #todo
turnover20_change = turnover20 - prevIndustryDataMap[code]['turnover20'] if hasPrevIndustryData else turnover20 #todo turnover20_change = turnover20 - Decimal(prevIndustryDataMap[code]['turnover20']) if hasPrevIndustryData else turnover20 #todo
turnover20_ratio = (turnover20*Decimal('100.00') )/ turnOver20[code]['total'] #todo turnover20_ratio = (turnover20*Decimal('100.00') )/ Decimal(turnOver20[code]['total']) if hasTurnOver20 else ratio #todo
turnover20_ratio_change = '' #todo turnover20_ratio_change = turnover20_ratio - Decimal(prevIndustryDataMap[code]['turnover20_ratio']) if hasPrevIndustryData else turnover20_ratio #todo
turnover20_sort = '' #todo turnover20_sort = Decimal(prevIndustryDataMap[code]['turnover20_sort']) if hasPrevIndustryData else turnover_sort #todo
turnover20_sort_change = ''#todo turnover20_sort_change = Decimal(prevIndustryDataMap[code]['turnover20_sort']) - turnover20_sort if hasPrevIndustryData else turnover20_sort #todo
turnover30 = turnOver30[code]['turnover'] #todo turnover30 = Decimal(turnOver30[code]['turnover']) if hasTurnOver30 else turnover #todo
turnover30_change = turnover30 - prevIndustryDataMap[code]['turnover30'] if hasPrevIndustryData else turnover30 #todo turnover30_change = turnover30 - Decimal(prevIndustryDataMap[code]['turnover30']) if hasPrevIndustryData else turnover30 #todo
turnover30_ratio = (turnover30*Decimal('100.00') )/ turnOver30[code]['total'] #todo turnover30_ratio = (turnover30*Decimal('100.00') )/ Decimal(turnOver30[code]['total']) if hasTurnOver30 else ratio #todo
turnover30_ratio_change = '' #todo turnover30_ratio_change = turnover30_ratio - Decimal(prevIndustryDataMap[code]['turnover30_ratio']) if hasPrevIndustryData else turnover30_ratio #todo
turnover30_sort = '' #todo turnover30_sort = Decimal(prevIndustryDataMap[code]['turnover30_sort']) if hasPrevIndustryData else turnover_sort #todo
turnover30_sort_change = ''#todo turnover30_sort_change = Decimal(prevIndustryDataMap[code]['turnover30_sort']) - turnover30_sort if hasPrevIndustryData else turnover30_sort #todo
rise_number_change = ''#todo rise_number = risenum
flat_number = flatnum
losses_number = fallnum losses_number = fallnum
losses_number_change = '' #todo rise_number_change = rise_number - Decimal(prevIndustryDataMap[code]['rise_number']) if hasPrevIndustryData else rise_number #todo
flat_number_change = '' #todo losses_number_change = losses_number - Decimal(prevIndustryDataMap[code]['losses_number']) if hasPrevIndustryData else losses_number #todo
rise5_number = periodUpDownMap5[code]['rise'] #todo flat_number_change = flat_number - Decimal(prevIndustryDataMap[code]['flat_number']) if hasPrevIndustryData else flat_number #todo
rise5_number_change = ''#todo rise5_number = Decimal(periodUpDownMap5[code]['rise']) #todo
losses5_number = periodUpDownMap5[code]['fall'] #todo rise5_number_change = rise5_number - Decimal(periodUpDownMap5[code]['rise']) if hasPeriodUpDownMap5 else rise5_number #todo
losses5_number_change = '' #todo losses5_number = Decimal(periodUpDownMap5[code]['fall']) #todo
flat5_number = periodUpDownMap5[code]['flat'] #todo losses5_number_change = losses5_number - Decimal(periodUpDownMap5[code]['fall']) if hasPeriodUpDownMap5 else losses5_number #todo
flat5_number_change = '' #todo flat5_number = Decimal(periodUpDownMap5[code]['flat']) #todo
rise10_number = periodUpDownMap10[code]['rise'] #todo flat5_number_change = flat5_number - Decimal(periodUpDownMap5[code]['flat']) if hasPeriodUpDownMap5 else flat5_number #todo
rise10_number_change = ''#todo rise10_number = Decimal(periodUpDownMap10[code]['rise']) #todo
losses10_number = periodUpDownMap10[code]['fall'] #todo rise10_number_change = rise10_number - Decimal(periodUpDownMap10[code]['rise']) if hasPeriodUpDownMap10 else rise10_number #todo
losses10_number_change = '' #todo losses10_number = Decimal(periodUpDownMap10[code]['fall']) #todo
flat10_number = periodUpDownMap10[code]['flat'] #todo losses10_number_change = losses10_number - Decimal(periodUpDownMap10[code]['fall']) if hasPeriodUpDownMap10 else losses10_number #todo
flat10_number_change = '' #todo flat10_number = Decimal(periodUpDownMap10[code]['flat']) #todo
rise20_number = periodUpDownMap20[code]['rise'] #todo flat10_number_change = flat10_number - Decimal(periodUpDownMap10[code]['flat']) if hasPeriodUpDownMap10 else flat10_number #todo
rise20_number_change = ''#todo rise20_number = Decimal(periodUpDownMap20[code]['rise']) #todo
losses20_number = periodUpDownMap20[code]['fall'] #todo rise20_number_change = rise20_number - Decimal(periodUpDownMap20[code]['rise']) if hasPeriodUpDownMap20 else rise20_number#todo
losses20_number_change = '' #todo losses20_number = Decimal(periodUpDownMap20[code]['fall']) #todo
flat20_number = periodUpDownMap20[code]['flat'] #todo losses20_number_change = losses20_number - Decimal(periodUpDownMap20[code]['fall']) if hasPeriodUpDownMap20 else losses20_number #todo
flat20_number_change = '' #todo flat20_number = Decimal(periodUpDownMap20[code]['flat']) #todo
rise30_number = periodUpDownMap30[code]['rise'] #todo flat20_number_change = flat20_number - Decimal(periodUpDownMap20[code]['flat']) if hasPeriodUpDownMap20 else flat20_number #todo
rise30_number_change = ''#todo rise30_number = Decimal(periodUpDownMap30[code]['rise']) #todo
losses30_number = periodUpDownMap30[code]['fall'] #todo rise30_number_change = rise30_number - Decimal(periodUpDownMap30[code]['rise']) if hasPeriodUpDownMap30 else rise30_number #todo
losses30_number_change = '' #todo losses30_number = Decimal(periodUpDownMap30[code]['fall']) #todo
flat30_number = periodUpDownMap30[code]['flat'] #todo losses30_number_change = losses30_number - Decimal(periodUpDownMap30[code]['fall']) if hasPeriodUpDownMap30 else losses30_number #todo
flat30_number_change = '' #todo flat30_number = Decimal(periodUpDownMap30[code]['flat']) #todo
flat30_number_change = flat30_number - Decimal(periodUpDownMap30[code]['flat']) if hasPeriodUpDownMap30 else flat30_number #todo
# create_time = # create_time =
# sql_insert = f"INSERT INTO dong_cai_secondary_industry (business_date,sort,security_code,security_name,security_type,number_ingredients,opening_price,closing_price,volume,turnover,total_capitalization,free_capitalization,change_percentage,highest_price,lowest_price,rise_number,losses_number,flat_number,rise_stop_number,losses_stop_number,stop_number,recently_high,recently_low,pe_ttm,pe_center_ttm) VALUES ( %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s,%s, %s, %s, %s)" # sql_insert = f"INSERT INTO dong_cai_secondary_industry (business_date,sort,security_code,security_name,security_type,number_ingredients,opening_price,closing_price,volume,turnover,total_capitalization,free_capitalization,change_percentage,highest_price,lowest_price,rise_number,losses_number,flat_number,rise_stop_number,losses_stop_number,stop_number,recently_high,recently_low,pe_ttm,pe_center_ttm) VALUES ( %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s,%s, %s, %s, %s)"
# db_b_cursor.execute(sql_insert, (business_date,sort,security_code,security_name,security_type,number_ingredients,opening_price,closing_price,volume,turnover,total_capitalization,free_capitalization,change_percentage,highest_price,lowest_price,rise_number,losses_number,flat_number,rise_stop_number,losses_stop_number,stop_number,recently_high,recently_low,pe_ttm,pe_center_ttm)) # db_b_cursor.execute(sql_insert, (business_date,sort,security_code,security_name,security_type,number_ingredients,opening_price,closing_price,volume,turnover,total_capitalization,free_capitalization,change_percentage,highest_price,lowest_price,rise_number,losses_number,flat_number,rise_stop_number,losses_stop_number,stop_number,recently_high,recently_low,pe_ttm,pe_center_ttm))
@ -377,42 +397,13 @@ def main():
'rise20_number':rise20_number,'flat20_number':flat20_number,'losses20_number':losses20_number,'rise20_number_change':rise20_number_change,'flat20_number_change':flat20_number_change,'losses20_number_change':losses20_number_change, 'rise20_number':rise20_number,'flat20_number':flat20_number,'losses20_number':losses20_number,'rise20_number_change':rise20_number_change,'flat20_number_change':flat20_number_change,'losses20_number_change':losses20_number_change,
'rise30_number':rise30_number,'flat30_number':flat30_number,'losses30_number':losses30_number,'rise30_number_change':rise30_number_change,'flat30_number_change':flat30_number_change,'losses30_number_change':losses30_number_change} 'rise30_number':rise30_number,'flat30_number':flat30_number,'losses30_number':losses30_number,'rise30_number_change':rise30_number_change,'flat30_number_change':flat30_number_change,'losses30_number_change':losses30_number_change}
# 构建数据并存入数据库
sql_insert = f"INSERT INTO dong_cai_secondary_industry_statistics (business_date,security_code,security_name,turnover,turnover_change,turnover_ratio,turnover_ratio_change,turnover_sort,turnover_sort_change, turnover5,turnover5_change,turnover5_ratio,turnover5_ratio_change,turnover5_sort,turnover5_sort_change,turnover10,turnover10_change,turnover10_ratio,turnover10_ratio_change,turnover10_sort,turnover10_sort_change,turnover20,turnover20_change,turnover20_ratio,turnover20_ratio_change,turnover20_sort,turnover20_sort_change, turnover30,turnover30_change,turnover30_ratio,turnover30_ratio_change,turnover30_sort,turnover30_sort_change,rise_number,rise_number_change,losses_number,losses_number_change,flat_number,flat_number_change, rise5_number,rise5_number_change,losses5_number,losses5_number_change,flat5_number,flat5_number_change, rise10_number,rise10_number_change,losses10_number,losses10_number_change,flat10_number,flat10_number_change, rise20_number,rise20_number_change,losses20_number,losses20_number_change,flat20_number,flat20_number_change, rise30_number,rise30_number_change,losses30_number,losses30_number_change,flat30_number,flat30_number_change) VALUES ( %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s,%s, %s, %s, %s ,%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s,%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"
db_b_cursor.execute(sql_insert, (business_date,security_code,security_name,turnover,turnover_change,turnover_ratio,turnover_ratio_change,turnover_sort,turnover_sort_change, turnover5,turnover5_change,turnover5_ratio,turnover5_ratio_change,turnover5_sort,turnover5_sort_change,turnover10,turnover10_change,turnover10_ratio,turnover10_ratio_change,turnover10_sort,turnover10_sort_change,turnover20,turnover20_change,turnover20_ratio,turnover20_ratio_change,turnover20_sort,turnover20_sort_change, turnover30,turnover30_change,turnover30_ratio,turnover30_ratio_change,turnover30_sort,turnover30_sort_change,rise_number,rise_number_change,losses_number,losses_number_change,flat_number,flat_number_change, rise5_number,rise5_number_change,losses5_number,losses5_number_change,flat5_number,flat5_number_change, rise10_number,rise10_number_change,losses10_number,losses10_number_change,flat10_number,flat10_number_change, rise20_number,rise20_number_change,losses20_number,losses20_number_change,flat20_number,flat20_number_change, rise30_number,rise30_number_change,losses30_number,losses30_number_change,flat30_number,flat30_number_change))
# 计算获取多日数据
prevTotalTunrover = Decimal('0.00')
sql_stock_query = 'select code,sum(amount) as turnover from stock_index where trade_day = %s '
db_a_cursor.execute(sql_stock_query,prevTradeDate)
datas = db_a_cursor.fetchall()
for total in datas:
code,prevTotalTunrover = total
#遍历前一日或多日交易数据获取成交量计算变化再从dong_cai_secondary_industry_statistics获取及排名数据获取变化值; 如果没有,当前值就是最新的值
sql_stock_query = 'select code,name,trade_day, open,close,high,low,differrange,volume,amount,limitupnum,limitdownnum,suspendnum,risenum,fallnum,flatnum,componentnum,mv,pettm,pettm_mid,liqmv,rcnthigh,rcntlow from stock_index where trade_day = %s order by volume DESC'
db_a_cursor.execute(sql_stock_query,prevTradeDate)
datas = db_a_cursor.fetchall()
industries_prevTradeDaymap = {}
for stock_index_data in datas:
code,name,trade_day, open,close,high,low,differrange,volume,amount,limitupnum,limitdownnum,suspendnum,risenum,fallnum,flatnum,componentnum,mv,pettm,pettm_mid,liqmv,rcnthigh,rcntlow = stock_index_data
business_date = trading_date
security_code = code
security_name = name
turnover = amount
turnover_sort = sortIndex
sortIndex +=1
rise_number = risenum
flat_number = flatnum
ratio = (turnover*Decimal('100')) / prevTotalTunrover
turnover_ratio = ratio
# industries_tradeDaymap[code] = {business_date,security_code,turnover_sort,rise_number,flat_number}
industries_prevTradeDaymap[code] = {'business_date':business_date,'security_code':security_code,'turnover':turnover,'turnover_sort':turnover_sort,'rise_number':rise_number,
'turnover_ratio':turnover_ratio,'flat_number':flat_number}
industries_tradeDaymap[code]['turnover_change'] = industries_tradeDaymap[code]['turnover'] - turnover
# industries_tradeDaymap[code]['turnover_sort_change'] = industries_tradeDaymap[code]['turnover_sort'] - turnover_sort
print(industries_tradeDaymap) # print(industries_tradeDaymap)
#提交数据到数据库B中 #提交数据到数据库B中
db_b_conn.commit() db_b_conn.commit()

Loading…
Cancel
Save