@ -60,6 +60,98 @@ def getTradingDates(dbconfig,dbcursor,state,date):
periodIndex + = 1
return period_trading_dateMap
def getTrends ( dbconfig , dbcursor , startDate ) :
trendsMap = { }
industryMap = { }
sql_trade_period_qurey = ' select code,name from stock_index where trade_day = %s '
dbcursor . execute ( sql_trade_period_qurey , ' 2023-05-05 ' )
datas = dbcursor . fetchall ( )
for row in datas :
code , name = row
industryMap [ name ] = code
sql_trend_qurey = ' select blemind2,trend_value,trend_value_change,sort,sort_change from trends where trade_day = %s and type = %s '
dbcursor . execute ( sql_trend_qurey , ( startDate , ' 1 ' ) )
totalTrendsData = dbcursor . fetchall ( )
for row in totalTrendsData :
blemind2 , trend_value , trend_value_change , sort , sort_change = row
trendsMap [ industryMap [ blemind2 ] ] = { ' code ' : industryMap [ blemind2 ] , ' sort ' : sort , ' sort_change ' : sort_change , ' trend_value ' : trend_value , ' trend_value_change ' : trend_value_change ,
' sort5 ' : - 1 , ' sort5_change ' : - 1 , ' trend5_value ' : - 1 , ' trend5_value_change ' : - 1 ,
' sort10 ' : - 1 , ' sort10_change ' : - 1 , ' trend10_value ' : - 1 , ' trend10_value_change ' : - 1 ,
' sort20 ' : - 1 , ' sort20_change ' : - 1 , ' trend20_value ' : - 1 , ' trend20_value_change ' : - 1 ,
' sort30 ' : - 1 , ' sort30_change ' : - 1 , ' trend30_value ' : - 1 , ' trend30_value_change ' : - 1 }
sql_trend_qurey = ' select blemind2,trend_value,trend_value_change,sort,sort_change from trends where trade_day = %s and type = %s '
dbcursor . execute ( sql_trend_qurey , ( startDate , ' 5 ' ) )
totalTrendsData = dbcursor . fetchall ( )
for row in totalTrendsData :
blemind2 , trend_value , trend_value_change , sort , sort_change = row
if industryMap [ blemind2 ] not in trendsMap :
trendsMap [ industryMap [ blemind2 ] ] = { ' code ' : industryMap [ blemind2 ] , ' sort ' : - 1 , ' sort_change ' : - 1 , ' trend_value ' : - 1 , ' trend_value_change ' : - 1 ,
' sort5 ' : sort , ' sort5_change ' : sort_change , ' trend5_value ' : trend_value , ' trend5_value_change ' : trend_value_change ,
' sort10 ' : - 1 , ' sort10_change ' : - 1 , ' trend10_value ' : - 1 , ' trend10_value_change ' : - 1 ,
' sort20 ' : - 1 , ' sort20_change ' : - 1 , ' trend20_value ' : - 1 , ' trend20_value_change ' : - 1 ,
' sort30 ' : - 1 , ' sort30_change ' : - 1 , ' trend30_value ' : - 1 , ' trend30_value_change ' : - 1 }
else :
trendsMap [ industryMap [ blemind2 ] ] [ ' sort5 ' ] = sort
trendsMap [ industryMap [ blemind2 ] ] [ ' sort5_change ' ] = sort_change
trendsMap [ industryMap [ blemind2 ] ] [ ' trend5_value ' ] = trend_value
trendsMap [ industryMap [ blemind2 ] ] [ ' trend5_value_change ' ] = trend_value_change
sql_trend_qurey = ' select blemind2,trend_value,trend_value_change,sort,sort_change from trends where trade_day = %s and type = %s '
dbcursor . execute ( sql_trend_qurey , ( startDate , ' 10 ' ) )
totalTrendsData = dbcursor . fetchall ( )
for row in totalTrendsData :
blemind2 , trend_value , trend_value_change , sort , sort_change = row
if industryMap [ blemind2 ] not in trendsMap :
trendsMap [ industryMap [ blemind2 ] ] = { ' code ' : industryMap [ blemind2 ] , ' sort ' : - 1 , ' sort_change ' : - 1 , ' trend_value ' : - 1 , ' trend_value_change ' : - 1 ,
' sort5 ' : - 1 , ' sort5_change ' : - 1 , ' trend5_value ' : - 1 , ' trend5_value_change ' : - 1 ,
' sort10 ' : sort , ' sort10_change ' : sort_change , ' trend10_value ' : trend_value , ' trend10_value_change ' : trend_value_change ,
' sort20 ' : - 1 , ' sort20_change ' : - 1 , ' trend20_value ' : - 1 , ' trend20_value_change ' : - 1 ,
' sort30 ' : - 1 , ' sort30_change ' : - 1 , ' trend30_value ' : - 1 , ' trend30_value_change ' : - 1 }
else :
trendsMap [ industryMap [ blemind2 ] ] [ ' sort10 ' ] = sort
trendsMap [ industryMap [ blemind2 ] ] [ ' sort10_change ' ] = sort_change
trendsMap [ industryMap [ blemind2 ] ] [ ' trend10_value ' ] = trend_value
trendsMap [ industryMap [ blemind2 ] ] [ ' trend10_value_change ' ] = trend_value_change
sql_trend_qurey = ' select blemind2,trend_value,trend_value_change,sort,sort_change from trends where trade_day = %s and type = %s '
dbcursor . execute ( sql_trend_qurey , ( startDate , ' 20 ' ) )
totalTrendsData = dbcursor . fetchall ( )
for row in totalTrendsData :
blemind2 , trend_value , trend_value_change , sort , sort_change = row
if industryMap [ blemind2 ] not in trendsMap :
trendsMap [ industryMap [ blemind2 ] ] = { ' code ' : industryMap [ blemind2 ] , ' sort ' : - 1 , ' sort_change ' : - 1 , ' trend_value ' : - 1 , ' trend_value_change ' : - 1 ,
' sort5 ' : - 1 , ' sort5_change ' : - 1 , ' trend5_value ' : - 1 , ' trend5_value_change ' : - 1 ,
' sort10 ' : - 1 , ' sort10_change ' : - 1 , ' trend10_value ' : - 1 , ' trend10_value_change ' : - 1 ,
' sort20 ' : sort , ' sort20_change ' : sort_change , ' trend20_value ' : trend_value , ' trend20_value_change ' : trend_value_change ,
' sort30 ' : - 1 , ' sort30_change ' : - 1 , ' trend30_value ' : - 1 , ' trend30_value_change ' : - 1 }
else :
trendsMap [ industryMap [ blemind2 ] ] [ ' sort20 ' ] = sort
trendsMap [ industryMap [ blemind2 ] ] [ ' sort20_change ' ] = sort_change
trendsMap [ industryMap [ blemind2 ] ] [ ' trend20_value ' ] = trend_value
trendsMap [ industryMap [ blemind2 ] ] [ ' trend20_value_change ' ] = trend_value_change
sql_trend_qurey = ' select blemind2,trend_value,trend_value_change,sort,sort_change from trends where trade_day = %s and type = %s '
dbcursor . execute ( sql_trend_qurey , ( startDate , ' 30 ' ) )
totalTrendsData = dbcursor . fetchall ( )
for row in totalTrendsData :
blemind2 , trend_value , trend_value_change , sort , sort_change = row
if industryMap [ blemind2 ] not in trendsMap :
trendsMap [ industryMap [ blemind2 ] ] = { ' code ' : industryMap [ blemind2 ] , ' sort ' : - 1 , ' sort_change ' : - 1 , ' trend_value ' : - 1 , ' trend_value_change ' : - 1 ,
' sort5 ' : - 1 , ' sort5_change ' : - 1 , ' trend5_value ' : - 1 , ' trend5_value_change ' : - 1 ,
' sort10 ' : - 1 , ' sort10_change ' : - 1 , ' trend10_value ' : - 1 , ' trend10_value_change ' : - 1 ,
' sort20 ' : - 1 , ' sort20_change ' : - 1 , ' trend20_value ' : - 1 , ' trend20_value_change ' : - 1 ,
' sort30 ' : sort , ' sort30_change ' : sort_change , ' trend30_value ' : trend_value , ' trend30_value_change ' : trend_value_change }
else :
trendsMap [ industryMap [ blemind2 ] ] [ ' sort30 ' ] = sort
trendsMap [ industryMap [ blemind2 ] ] [ ' sort30_change ' ] = sort_change
trendsMap [ industryMap [ blemind2 ] ] [ ' trend30_value ' ] = trend_value
trendsMap [ industryMap [ blemind2 ] ] [ ' trend30_value_change ' ] = trend_value_change
return trendsMap
def getPeriodTurnOver ( dbconfig , dbcursor , startDate , endDate ) :
periodTurnOverMap = { }
total = Decimal ( ' 0.00 ' )
@ -291,6 +383,8 @@ def main():
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
trendDatas = getTrends ( db_a_conn , db_a_cursor , trading_date )
totalTunrover = Decimal ( ' 0.00 ' )
#查询日交易的所有成交额,用于计算占比等
sql_stock_query = ' select code,sum(amount) as turnover from stock_index where trade_day = %s '
@ -326,6 +420,28 @@ def main():
# 总成交额
# totalTunrover += turnover
# 动量趋势
sort = trendDatas [ code ] [ ' sort ' ] if code in trendDatas else Decimal ( ' -1 ' )
sort_change = trendDatas [ code ] [ ' sort_change ' ] if code in trendDatas else Decimal ( ' -1 ' )
sort5 = trendDatas [ code ] [ ' sort5 ' ] if code in trendDatas else Decimal ( ' -1 ' )
sort5_change = trendDatas [ code ] [ ' sort5_change ' ] if code in trendDatas else Decimal ( ' -1 ' )
sort10 = trendDatas [ code ] [ ' sort10 ' ] if code in trendDatas else Decimal ( ' -1 ' )
sort10_change = trendDatas [ code ] [ ' sort10_change ' ] if code in trendDatas else Decimal ( ' -1 ' )
sort20 = trendDatas [ code ] [ ' sort20 ' ] if code in trendDatas else Decimal ( ' -1 ' )
sort20_change = trendDatas [ code ] [ ' sort20_change ' ] if code in trendDatas else Decimal ( ' -1 ' )
sort30 = trendDatas [ code ] [ ' sort30 ' ] if code in trendDatas else Decimal ( ' -1 ' )
sort30_change = trendDatas [ code ] [ ' sort30_change ' ] if code in trendDatas else Decimal ( ' -1 ' )
trend_value = trendDatas [ code ] [ ' trend_value ' ] if code in trendDatas else Decimal ( ' -1 ' )
trend_value_change = trendDatas [ code ] [ ' trend_value_change ' ] if code in trendDatas else Decimal ( ' -1 ' )
trend5_value = trendDatas [ code ] [ ' trend5_value ' ] if code in trendDatas else Decimal ( ' -1 ' )
trend5_value_change = trendDatas [ code ] [ ' trend5_value_change ' ] if code in trendDatas else Decimal ( ' -1 ' )
trend10_value = trendDatas [ code ] [ ' trend10_value ' ] if code in trendDatas else Decimal ( ' -1 ' )
trend10_value_change = trendDatas [ code ] [ ' trend10_value_change ' ] if code in trendDatas else Decimal ( ' -1 ' )
trend20_value = trendDatas [ code ] [ ' trend20_value ' ] if code in trendDatas else Decimal ( ' -1 ' )
trend20_value_change = trendDatas [ code ] [ ' trend20_value_change ' ] if code in trendDatas else Decimal ( ' -1 ' )
trend30_value = trendDatas [ code ] [ ' trend30_value ' ] if code in trendDatas else Decimal ( ' -1 ' )
trend30_value_change = trendDatas [ code ] [ ' trend30_value_change ' ] if code in trendDatas else Decimal ( ' -1 ' )
# turnover_change = '' #todo
# turnover_ratio_change = '' #todo
# turnover_sort_change = ''#todo
@ -397,7 +513,12 @@ def main():
' rise5_number ' : rise5_number , ' flat5_number ' : flat5_number , ' losses5_number ' : losses5_number , ' rise5_number_change ' : rise5_number_change , ' flat5_number_change ' : flat5_number_change , ' losses5_number_change ' : losses5_number_change ,
' rise10_number ' : rise10_number , ' flat10_number ' : flat10_number , ' losses10_number ' : losses10_number , ' rise10_number_change ' : rise10_number_change , ' flat10_number_change ' : flat10_number_change , ' losses10_number_change ' : losses10_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 ,
' sort ' : sort , ' sort_change ' : sort_change , ' trend_value ' : trend_value , ' trend_value_change ' : trend_value_change ,
' sort5 ' : sort5 , ' sort5_change ' : sort5_change , ' trend5_value ' : trend5_value , ' trend5_value_change ' : trend5_value_change ,
' sort10 ' : sort10 , ' sort10_change ' : sort10_change , ' trend10_value ' : trend10_value , ' trend10_value_change ' : trend10_value_change ,
' sort20 ' : sort20 , ' sort20_change ' : sort20_change , ' trend20_value ' : trend20_value , ' trend20_value_change ' : trend20_value_change ,
' sort30 ' : sort30 , ' sort30_change ' : sort30_change , ' trend30_value ' : trend30_value , ' trend30_value_change ' : trend30_value_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) "