BondStructure.py 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. # -*- coding:utf-8 -*-
  2. __author__ = 'weijie'
  3. from EmQuantAPI import *
  4. from datetime import timedelta, datetime
  5. import time
  6. import traceback
  7. from StockPojo import StockPojo
  8. from dbOperation import dbOperation
  9. from dbOperationStock import dbOperationStock
  10. import db_config
  11. import pandas as pd
  12. import json
  13. import array
  14. import requests
  15. class BondStructure:
  16. def toGet(self):
  17. try:
  18. getDataTime = time.strftime('%Y-%m-%d',time.localtime(time.time()))
  19. data = c.sector("610020", getDataTime)
  20. menu_one = "概念板块"
  21. menu_two = "可转债新"
  22. if data.ErrorCode != 0:
  23. print("request sector Error, ", data.ErrorMsg)
  24. else:
  25. print("sector输出结果======分隔线======")
  26. # print(data.Data)
  27. stockPojoList = []
  28. db = dbOperation(db_config.db_zhaiquan)
  29. for inx, code in enumerate(data.Data):
  30. if(inx % 2 != 1):
  31. stockPojo = StockPojo()
  32. stockPojo.code = code
  33. else:
  34. stockPojo.name = code
  35. stockPojoList.append(stockPojo)
  36. countNum = db.query_one("select count(1) count from t_stock_base_info where code = '" + stockPojo.code + "' and name = '"+stockPojo.name+"' ")
  37. if int(countNum['count']) == 0:
  38. #判断是否是改名字的
  39. countNumn = db.query_one("select count(1) count from t_stock_base_info where code = '" + stockPojo.code + "' ")
  40. if int(countNumn['count']) == 0:
  41. # css使用范例
  42. cssData = c.css(stockPojo.code, "LISTDATE", "TradeDate="+getDataTime+", Ispandas=1")
  43. cssData.reset_index(inplace=True)
  44. jsonData = cssData.to_json()
  45. text = json.loads(jsonData)
  46. for i in range(len(text['LISTDATE'])):
  47. if(str(text['LISTDATE'][str(i)]) == "None"):
  48. stockPojo.listDate = "待上市"
  49. else:
  50. stockPojo.listDate = text['LISTDATE'][str(i)].replace("/", "-")
  51. db.insert("insert into t_stock_base_info(code,name,list_date,menu_one,menu_two) values('" + stockPojo.code + "', '" + stockPojo.name + "','" + stockPojo.listDate + "','" + menu_one + "','" + menu_two +"')")
  52. # 创建实时表
  53. restTableName = "data_rt_" + stockPojo.code.replace(".", "_").lower()
  54. restTableSql = "CREATE TABLE `" + restTableName + "` ( `id` int(11) NOT NULL AUTO_INCREMENT, `date` varchar(128) NOT NULL COMMENT '日期', `time` varchar(128) NOT NULL COMMENT '交易时间', `now` decimal(64,6) NOT NULL COMMENT '最新价', `high` decimal(64,6) NOT NULL COMMENT '最高价', `low` decimal(64,6) NOT NULL COMMENT '最低价', `open` decimal(64,6) NOT NULL COMMENT '开盘价', `preclose` decimal(64,6) NOT NULL COMMENT '前收盘价', `roundlot` varchar(128) NOT NULL COMMENT '现手', `change` varchar(128) NOT NULL COMMENT '涨跌', `pctchange` varchar(128) NOT NULL COMMENT '涨跌幅', `volume` varchar(128) NOT NULL COMMENT '成交量', `amount` varchar(128) NOT NULL COMMENT '成交额', `volumeratio` varchar(128) NOT NULL COMMENT '量比', `commissionratio` varchar(128) NOT NULL COMMENT '委比', `commissiondiff` varchar(128) NOT NULL COMMENT '委差', `tradestatus` varchar(128) NOT NULL COMMENT '交易状态', `outvolume` varchar(128) NOT NULL COMMENT '外盘', `involume` varchar(128) NOT NULL COMMENT '内盘', `highlimit` varchar(128) NOT NULL COMMENT '涨停价', `lowlimit` varchar(128) NOT NULL COMMENT '跌停价', `speed` varchar(128) NOT NULL COMMENT '涨速', `averageprice` varchar(128) NOT NULL COMMENT '均价', `buyprice1` varchar(128) NOT NULL COMMENT '买1价', `buyprice2` varchar(128) NOT NULL COMMENT '买2价', `buyprice3` varchar(128) NOT NULL COMMENT '买3价', `buyprice4` varchar(128) NOT NULL COMMENT '买4价', `buyprice5` varchar(128) NOT NULL COMMENT '买5价', `buyvolume1` varchar(128) NOT NULL COMMENT '买1量', `buyvolume2` varchar(128) NOT NULL COMMENT '买2量', `buyvolume3` varchar(128) NOT NULL COMMENT '买3量', `buyvolume4` varchar(128) NOT NULL COMMENT '买4量', `buyvolume5` varchar(128) NOT NULL COMMENT '买5量', `sellprice1` varchar(128) NOT NULL COMMENT '卖1价', `sellprice2` varchar(128) NOT NULL COMMENT '卖2价', `sellprice3` varchar(128) NOT NULL COMMENT '卖3价', `sellprice4` varchar(128) NOT NULL COMMENT '卖4价', `sellprice5` varchar(128) NOT NULL COMMENT '卖5价', `sellvolume1` varchar(128) NOT NULL COMMENT '卖1量', `sellvolume2` varchar(128) NOT NULL COMMENT '卖2量', `sellvolume3` varchar(128) NOT NULL COMMENT '卖3量', `sellvolume4` varchar(128) NOT NULL COMMENT '卖4量', `sellvolume5` varchar(128) NOT NULL COMMENT '卖5量', `closedtime` varchar(128) NOT NULL COMMENT '盘后时间', `closedvolume` varchar(128) NOT NULL COMMENT '盘后成交量', `closedamount` varchar(128) NOT NULL COMMENT '盘后成交额', `addTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `dateOne` bigint(15) DEFAULT '0', `dateFive` bigint(15) DEFAULT '0', `dateFifteen` bigint(15) DEFAULT '0', `dateThirty` bigint(15) DEFAULT '0', `dateSixty` bigint(15) DEFAULT '0', `realTime` bigint(15) DEFAULT '0', PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;"
  55. db.created_table(restTableSql, restTableName)
  56. # 创建历史表
  57. histTableName = "data_hist_" + stockPojo.code.replace(".", "_").lower()
  58. histTableSql = "CREATE TABLE `" + histTableName + "` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键id', `open` decimal(64,6) NOT NULL COMMENT '开盘价', `close` decimal(64,6) NOT NULL COMMENT '收盘价', `high` decimal(64,6) NOT NULL COMMENT '最高价', `low` decimal(64,6) NOT NULL COMMENT '最低价', `preclose` decimal(64,6) NOT NULL COMMENT '前收盘价', `average` varchar(128) NOT NULL COMMENT '均价', `change` varchar(128) NOT NULL COMMENT '涨跌', `pctchange` varchar(128) NOT NULL COMMENT '涨跌幅', `volume` varchar(128) NOT NULL COMMENT '成交量', `highlimit` varchar(128) NOT NULL COMMENT '是否涨停', `amount` varchar(128) NOT NULL COMMENT '成交金额', `turn` varchar(128) NOT NULL COMMENT '换手率', `tradestatus` varchar(128) NOT NULL COMMENT '交易状态', `lowlimit` varchar(128) NOT NULL COMMENT '是否跌停', `amplitude` varchar(128) NOT NULL COMMENT '振幅', `tnum` varchar(128) NOT NULL COMMENT '成交笔数', `tafactor` varchar(128) NOT NULL COMMENT '复权因子(后)', `fronttafactor` varchar(128) NOT NULL COMMENT '前复权因子(定点复权)', `isststock` varchar(128) NOT NULL COMMENT '是否为ST股票', `isxststock` varchar(128) NOT NULL COMMENT '是否为*ST股票', `date_year` bigint(20) DEFAULT '0' COMMENT '年期', `date_month` bigint(20) DEFAULT '0' COMMENT '月期', `date_week` bigint(20) DEFAULT '0' COMMENT '周', `realTime` bigint(20) DEFAULT '0' COMMENT '日', `dates` varchar(128) DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE) ENGINE=InnoDB DEFAULT CHARSET=utf8;"
  59. db.created_table(histTableSql, histTableName)
  60. # 往业务库中插入一条数据
  61. plate = ""
  62. # dbStock = dbOperationStock(db_config.db_stock)
  63. # insertStockSql = "insert into stock(stock_name,stock_code,stock_type,stock_gid,stock_plate,is_show,stock_or_bond,add_time)values('" + stockPojo.name + "','" + stockPojo.code + "','" + stockPojo.code[-2:].lower()+ "','" + stockPojo.code[-2:].lower() + stockPojo.code[:-3].lower() +"','" + plate + "',0,1,now())"
  64. # dbStock.insert(insertStockSql)
  65. # dbStock.close()
  66. url = 'http://taifooksec.com/api/stock/addStock.do'
  67. stock = {}
  68. stock['stockName'] = stockPojo.name
  69. stock['stockCode'] = stockPojo.code
  70. stock['stockSpell'] = ''
  71. stock['stockType'] = stockPojo.code[-2:].lower()
  72. stock['stockGid'] = stockPojo.code[-2:].lower() + stockPojo.code[:-3].lower()
  73. stock['stockPlate'] = plate
  74. stock['isLock'] = 0
  75. stock['isShow'] = 0
  76. stock['buyLimit'] = 1
  77. stock['isLimitUpBuy'] = 0
  78. stock['isStopTradingBuy'] = 0
  79. stock['nowPrice'] = ""
  80. stock['change'] = ""
  81. stock['pctChange'] = ""
  82. stock['stockOrBond'] = "1"
  83. stock['issueNum'] = ""
  84. headers = {'Content-Type': 'application/json'}
  85. response = requests.post(url=url, headers=headers, data=json.dumps(stock))
  86. else:
  87. db.update("update t_stock_base_info set name = '"+stockPojo.name+"' where code = '" + stockPojo.code + "' ")
  88. plate = ""
  89. # dbStock = dbOperationStock(db_config.db_stock)
  90. # insertStockSql = "insert into stock(stock_name,stock_code,stock_type,stock_gid,stock_plate,is_show,stock_or_bond,add_time)values('" + stockPojo.name + "','" + stockPojo.code + "','" + stockPojo.code[-2:].lower()+ "','" + stockPojo.code[-2:].lower() + stockPojo.code[:-3].lower() +"','" + plate + "',0,0,now())"
  91. # dbStock.insert(insertStockSql)
  92. # dbStock.close()
  93. url = 'http://taifooksec.com/api/stock/addStock.do'
  94. stock = {}
  95. stock['stockName'] = stockPojo.name+"_edit"
  96. stock['stockCode'] = stockPojo.code
  97. stock['stockSpell'] = ''
  98. stock['stockType'] = stockPojo.code[-2:].lower()
  99. stock['stockGid'] = stockPojo.code[-2:].lower() + stockPojo.code[:-3].lower()
  100. stock['stockPlate'] = plate
  101. stock['isLock'] = 0
  102. stock['isShow'] = 0
  103. stock['buyLimit'] = 1
  104. stock['isLimitUpBuy'] = 0
  105. stock['isStopTradingBuy'] = 0
  106. stock['nowPrice'] = ""
  107. stock['change'] = ""
  108. stock['pctChange'] = ""
  109. stock['stockOrBond'] = "0"
  110. stock['issueNum'] = ""
  111. headers = {'Content-Type': 'application/json'}
  112. response = requests.post(url=url, headers=headers, data=json.dumps(stock))
  113. else :
  114. print("表已存在不需要重新创建" + str(stockPojo.code))
  115. db.close()
  116. except Exception as ee:
  117. print("error >>>",ee)
  118. traceback.print_exc()
  119. else:
  120. print("债券表初始化完成")