clacRestGroupData.py 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. # -*- coding:utf-8 -*-
  2. import time
  3. import datetime
  4. from StockRestPojo import StockRestPojo
  5. from dbOperation import dbOperation
  6. from dbOperationStock import dbOperationStock
  7. import db_config
  8. from threading import Thread
  9. from time import sleep
  10. import asyncio
  11. import json
  12. # from CsqDataPojo import CsqDataPojo
  13. async def updateStockInfo(code, stockRestPojo):
  14. db = dbOperationStock(db_config.db_stock)
  15. sql = "update stock set `now` = '" + str(stockRestPojo.now) + "', `change` = '" + str(stockRestPojo.change) + "', `pct_change` = '" + str(stockRestPojo.pctchange) + "' where stock_code = '" + str(code) + "'"
  16. db.update(sql)
  17. db.close()
  18. async def analysis(dbConfig):
  19. db = dbOperation(dbConfig)
  20. sql = "select id id, data_content dataContent from t_csq_data where status = 0 limit 1"
  21. csqDataPojoList = db.query_list(sql)
  22. for csqDataPojo in csqDataPojoList:
  23. db.update("update t_csq_data set status = 1 where id = '" + str(csqDataPojo['id']) + "'")
  24. restData = eval(csqDataPojo['dataContent'])
  25. for key,value in restData.items():
  26. if "None".strip() == str(value[0]).strip():
  27. print("无效数据跳过")
  28. break
  29. else:
  30. stockRestPojo = StockRestPojo()
  31. stockRestPojo.date = str(value[0])
  32. stockRestPojo.time = str(value[1])
  33. stockRestPojo.now = str(value[2])
  34. stockRestPojo.high = str(value[3])
  35. stockRestPojo.low = str(value[4])
  36. stockRestPojo.open = str(value[5])
  37. stockRestPojo.preclose = str(value[6])
  38. stockRestPojo.roundlot = str(value[7])
  39. stockRestPojo.change = str(value[8])
  40. stockRestPojo.pctchange = str(value[9])
  41. stockRestPojo.volume = str(value[10])
  42. stockRestPojo.amount = str(value[11])
  43. stockRestPojo.volumeratio = str(value[12])
  44. stockRestPojo.commissionratio = str(value[13])
  45. stockRestPojo.commissiondiff = str(value[14])
  46. stockRestPojo.tradestatus = str(value[15])
  47. stockRestPojo.outvolume = str(value[16])
  48. stockRestPojo.involume = str(value[17])
  49. stockRestPojo.highlimit = str(value[18])
  50. stockRestPojo.lowlimit = str(value[19])
  51. stockRestPojo.speed = str(value[20])
  52. stockRestPojo.averageprice = str(value[21])
  53. stockRestPojo.buyprice1 = str(value[22])
  54. stockRestPojo.buyprice2 = str(value[23])
  55. stockRestPojo.buyprice3 = str(value[24])
  56. stockRestPojo.buyprice4 = str(value[25])
  57. stockRestPojo.buyprice5 = str(value[26])
  58. stockRestPojo.buyvolume1 = str(value[27])
  59. stockRestPojo.buyvolume2 = str(value[28])
  60. stockRestPojo.buyvolume3 = str(value[29])
  61. stockRestPojo.buyvolume4 = str(value[30])
  62. stockRestPojo.buyvolume5 = str(value[31])
  63. stockRestPojo.sellprice1 = str(value[32])
  64. stockRestPojo.sellprice2 = str(value[33])
  65. stockRestPojo.sellprice3 = str(value[34])
  66. stockRestPojo.sellprice4 = str(value[35])
  67. stockRestPojo.sellprice5 = str(value[36])
  68. stockRestPojo.sellvolume1 = str(value[37])
  69. stockRestPojo.sellvolume2 = str(value[38])
  70. stockRestPojo.sellvolume3 = str(value[39])
  71. stockRestPojo.sellvolume4 = str(value[40])
  72. stockRestPojo.sellvolume5 = str(value[41])
  73. stockRestPojo.closedtime = str(value[42])
  74. stockRestPojo.closedvolume = str(value[43])
  75. stockRestPojo.closedamount = str(value[44])
  76. datTime = time.mktime(time.strptime(str(value[0]) + str(value[1]), "%Y%m%d%H%M%S"))
  77. stockRestPojo.realTime = str(int(datTime))
  78. min_ = time.localtime(datTime).tm_min # 获取分钟
  79. sec_ = time.localtime(datTime).tm_sec # 获取秒数
  80. # 1分钟数据
  81. if sec_ != 0:
  82. tempDatTime = datTime + 60 - sec_
  83. stockRestPojo.dateOne = str(int(tempDatTime))
  84. else:
  85. stockRestPojo.dateOne = str(int(datTime))
  86. # 5分钟数据
  87. if sec_ != 0 or min_%5 != 0:
  88. tempDatTime = datTime + (5 * 60) - sec_ - (min_%5 * 60)
  89. stockRestPojo.dateFive = str(int(tempDatTime))
  90. else:
  91. stockRestPojo.dateFive = str(int(datTime))
  92. # 15分钟数据
  93. if sec_ != 0 or min_%15 != 0:
  94. tempDatTime = datTime + (15 * 60) - sec_ - (min_%15 * 60)
  95. stockRestPojo.dateFifteen = str(int(tempDatTime))
  96. else:
  97. stockRestPojo.dateFifteen = str(int(datTime))
  98. # 30分钟数据
  99. if sec_ != 0 or min_%30 != 0:
  100. tempDatTime = datTime + (30 * 60) - sec_ - (min_%30 * 60)
  101. stockRestPojo.dateThirty = str(int(tempDatTime))
  102. else:
  103. stockRestPojo.dateThirty = str(int(datTime))
  104. # 60分钟数据
  105. if sec_ != 0 or min_%60 != 0:
  106. tempDatTime = datTime + (60 * 60) - sec_ - (min_%60 * 60)
  107. stockRestPojo.dateSixty = str(int(tempDatTime))
  108. else:
  109. stockRestPojo.dateSixty = str(int(datTime))
  110. sql = "insert into data_rt_" + str(key.replace(".", "_").lower()) + "(`realTime`,`date`,`time`,`now`,`high`,`low`,`open`,`preclose`,`roundlot`,`change`,`pctchange`,`volume`,`amount`,`volumeratio`,`commissionratio`,`commissiondiff`,`tradestatus`,`outvolume`,`involume`,`highlimit`,`lowlimit`,`speed`,`averageprice`,`buyprice1`,`buyprice2`,`buyprice3`,`buyprice4`,`buyprice5`,`buyvolume1`,`buyvolume2`,`buyvolume3`,`buyvolume4`,`buyvolume5`,`sellprice1`,`sellprice2`,`sellprice3`,`sellprice4`,`sellprice5`,`sellvolume1`,`sellvolume2`,`sellvolume3`,`sellvolume4`,`sellvolume5`,`closedtime`,`closedvolume`,`closedamount`,`dateOne`,`dateFive`,`dateFifteen`,`dateThirty`,`dateSixty`,`addTime`) values('" + str(stockRestPojo.realTime) + "','" + str(stockRestPojo.date) + "','" + str(stockRestPojo.time) + "','" + str(stockRestPojo.now) + "','" + str(stockRestPojo.high) + "','" + str(stockRestPojo.low) + "','" + str(stockRestPojo.open) + "','" + str(stockRestPojo.preclose) + "','" + str(stockRestPojo.roundlot) + "','" + str(stockRestPojo.change) + "','" + str(stockRestPojo.pctchange) + "','" + str(stockRestPojo.volume) + "','" + str(stockRestPojo.amount) + "','" + str(stockRestPojo.volumeratio) + "','" + str(stockRestPojo.commissionratio) + "','" + str(stockRestPojo.commissiondiff) + "','" + str(stockRestPojo.tradestatus) + "','" + str(stockRestPojo.outvolume) + "','" + str(stockRestPojo.involume) + "','" + str(stockRestPojo.highlimit) + "','" + str(stockRestPojo.lowlimit) + "','" + str(stockRestPojo.speed) + "','" + str(stockRestPojo.averageprice) + "','" + str(stockRestPojo.buyprice1) + "','" + str(stockRestPojo.buyprice2) + "','" + str(stockRestPojo.buyprice3) + "','" + str(stockRestPojo.buyprice4) + "','" + str(stockRestPojo.buyprice5) + "','" + str(stockRestPojo.buyvolume1) + "','" + str(stockRestPojo.buyvolume2) + "','" + str(stockRestPojo.buyvolume3) + "','" + str(stockRestPojo.buyvolume4) + "','" + str(stockRestPojo.buyvolume5) + "','" + str(stockRestPojo.sellprice1) + "','" + str(stockRestPojo.sellprice2) + "','" + str(stockRestPojo.sellprice3) + "','" + str(stockRestPojo.sellprice4) + "','" + str(stockRestPojo.sellprice5) + "','" + str(stockRestPojo.sellvolume1) + "','" + str(stockRestPojo.sellvolume2) + "','" + str(stockRestPojo.sellvolume3) + "','" + str(stockRestPojo.sellvolume4) + "','" + str(stockRestPojo.sellvolume5) + "','" + str(stockRestPojo.closedtime) + "','" + str(stockRestPojo.closedvolume) + "','" + str(stockRestPojo.closedamount) + "','" + str(stockRestPojo.dateOne) + "','" + str(stockRestPojo.dateFive) + "','" + str(stockRestPojo.dateFifteen) + "','" + str(stockRestPojo.dateThirty) + "','" + str(stockRestPojo.dateSixty) +"', now());"
  111. db.insert(sql)
  112. if stockRestPojo.now != 0:
  113. await asyncio.gather(
  114. updateStockInfo(key, stockRestPojo)
  115. )
  116. db.dele("delete from t_csq_data where id = '" + str(csqDataPojo['id']) + "'")
  117. db.close()
  118. async def main():
  119. await asyncio.gather(
  120. analysis(db_config.db_gupiao)
  121. )
  122. try:
  123. #定时任务 每3秒钟触发一次
  124. asyncio.run(main())
  125. except Exception as ee:
  126. print("error >>>",ee)