@ -21,6 +21,45 @@
from decimal import Decimal
from decimal import Decimal
import pymysql
import pymysql
def getTradingDates ( dbconfig , dbcursor , state , date ) :
# 1日 5日 10日 20日 30日周期日期
period_trading_dateMap = { } # 用于计算成交额
period_trading_dateMap2 = { } # 用于计算区间涨跌数量等,区间涨跌等需要查询个股
# 获取周期
sql_trade_period_qurey = ' select date,week,trade from trade_dates where trade = %s and date < %s order by date desc limit 30 '
sql_trade_period = state
dbcursor . execute ( sql_trade_period_qurey , ( sql_trade_period , date ) )
trading_period_dates = dbcursor . fetchall ( )
#前一个交易日
prevTradeDate = ' '
periodIndex = 0
period_trading_dateMap
for ttrading_date in trading_period_dates :
if periodIndex == 0 :
period_trading_dateMap [ ' 1 ' ] = ttrading_date [ 0 ]
elif periodIndex == 1 :
prevTradeDate = ttrading_date [ 0 ]
elif periodIndex == 4 :
period_trading_dateMap [ ' 5 ' ] = ttrading_date [ 0 ]
elif periodIndex == 5 :
period_trading_dateMap2 [ ' 5 ' ] = ttrading_date [ 0 ]
elif periodIndex == 9 :
period_trading_dateMap [ ' 10 ' ] = ttrading_date [ 0 ]
elif periodIndex == 10 :
period_trading_dateMap2 [ ' 10 ' ] = ttrading_date [ 0 ]
elif periodIndex == 19 :
period_trading_dateMap [ ' 20 ' ] = ttrading_date [ 0 ]
elif periodIndex == 20 :
period_trading_dateMap2 [ ' 20 ' ] = ttrading_date [ 0 ]
elif periodIndex == 29 :
period_trading_dateMap [ ' 30 ' ] = ttrading_date [ 0 ]
elif periodIndex == 30 :
period_trading_dateMap2 [ ' 30 ' ] = ttrading_date [ 0 ]
elif periodIndex > 30 :
break
periodIndex + = 1
return period_trading_dateMap
def main ( ) :
# #数据库A的连接信息; NAS数据库
# #数据库A的连接信息; NAS数据库
# db_a_config = {
# db_a_config = {
# 'host': '192.168.0.222',
# 'host': '192.168.0.222',
@ -56,7 +95,6 @@ db_b_config = {
' db ' : ' mojin ' ,
' db ' : ' mojin ' ,
' charset ' : ' utf8mb4 ' ,
' charset ' : ' utf8mb4 ' ,
}
}
try :
try :
# 连接数据库A
# 连接数据库A
db_a_conn = pymysql . connect ( * * db_a_config )
db_a_conn = pymysql . connect ( * * db_a_config )
@ -83,6 +121,7 @@ try:
for row in trading_dates :
for row in trading_dates :
# 1日 5日 10日 20日 30日周期日期
# 1日 5日 10日 20日 30日周期日期
period_trading_dateMap = { } # 用于计算成交额
period_trading_dateMap = { } # 用于计算成交额
period_trading_dateMap = getTradingDates ( db_a_conn , db_a_cursor , sql_trade , trans_date )
period_trading_dateMap2 = { } # 用于计算区间涨跌数量等,区间涨跌等需要查询个股
period_trading_dateMap2 = { } # 用于计算区间涨跌数量等,区间涨跌等需要查询个股
trading_date , week , trade = row
trading_date , week , trade = row
# 获取周期
# 获取周期
@ -142,14 +181,14 @@ try:
security_name = name
security_name = name
turnover = amount
turnover = amount
turnover_sort = sortIndex
turnover_sort = sortIndex
turnover_change = ' ' #todo
turnover_change = ' ' #todo 从交易数据中获取然后计算 ,一日、多日
sortIndex + = 1
sortIndex + = 1
rise_number = risenum
rise_number = risenum
flat_number = flatnum
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 = ' ' #todo 从
turnover_sort_change = ' ' #todo
turnover_sort_change = ' ' #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}
industries_tradeDaymap [ code ] = { ' business_date ' : business_date , ' security_code ' : security_code , ' turnover ' : turnover , ' turnover_change ' : turnover_change , ' turnover_sort ' : turnover_sort , ' rise_number ' : rise_number ,
industries_tradeDaymap [ code ] = { ' business_date ' : business_date , ' security_code ' : security_code , ' turnover ' : turnover , ' turnover_change ' : turnover_change , ' turnover_sort ' : turnover_sort , ' rise_number ' : rise_number ,
@ -224,7 +263,7 @@ try:
for total in datas :
for total in datas :
code , prevTotalTunrover = total
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 '
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 )
db_a_cursor . execute ( sql_stock_query , prevTradeDate )
datas = db_a_cursor . fetchall ( )
datas = db_a_cursor . fetchall ( )
@ -246,7 +285,7 @@ try:
industries_prevTradeDaymap [ code ] = { ' business_date ' : business_date , ' security_code ' : security_code , ' turnover ' : turnover , ' turnover_sort ' : turnover_sort , ' rise_number ' : rise_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 }
' turnover_ratio ' : turnover_ratio , ' flat_number ' : flat_number }
industries_tradeDaymap [ code ] [ ' turnover_change ' ] = industries_tradeDaymap [ code ] [ ' turnover ' ] - turnover
industries_tradeDaymap [ code ] [ ' turnover_change ' ] = industries_tradeDaymap [ code ] [ ' turnover ' ] - turnover
industries_tradeDaymap [ code ] [ ' turnover_sort_change ' ] = industries_tradeDaymap [ code ] [ ' turnover_sort ' ] - turnover_sort
# industries_tradeDaymap[code]['turnover_sort_change'] = industries_tradeDaymap[code]['turnover_sort'] - turnover_sort
print ( industries_tradeDaymap )
print ( industries_tradeDaymap )
@ -358,3 +397,7 @@ finally:
db_b_cursor . close ( )
db_b_cursor . close ( )
if db_b_conn :
if db_b_conn :
db_b_conn . close ( )
db_b_conn . close ( )
if __name__ == " __main__ " :
main ( )