third_data/kpl_api.py | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
third_data/kpl_data_manager.py | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
trade/huaxin/trade_server.py | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
third_data/kpl_api.py
@@ -28,6 +28,7 @@ return None return result["ListJX"] if result["ListJX"] else result["List"] # 获取概念代码 def getCodesByPlate(plate_code): data = f"Order=1&a=ZhiShuStockList_W8&st=30&c=ZhiShuRanking&PhoneOSNew=1&old=1&DeviceID=a38adabd-99ef-3116-8bb9-6d893c846e23&VerSion=5.8.0.2&IsZZ=0&Token=0&Index=0&apiv=w32&Type=6&IsKZZType=0&UserID=0&PlateID={plate_code}&" @@ -66,3 +67,14 @@ raise Exception("请求出错") return response.text # 获取代码的精选板块 # 返回格式:[(板块代码,板块名称,涨幅百分比)] def getCodeJingXuanBlocks(code): data = f"a=GetStockIDPlate&apiv=w32&Type=2&c=StockL2Data&StockID={code}&PhoneOSNew=1&UserID=0&DeviceID=a38adabd-99ef-3116-8bb9-6d893c846e23&VerSion=5.8.0.2&Token=0&" response = __base_request("https://apphq.longhuvip.com/w1/api/index.php", data=data) if response.status_code != 200: raise Exception("请求出错") result = response.text result = json.loads(result) return result.get("ListJX") third_data/kpl_data_manager.py
@@ -14,6 +14,34 @@ from third_data.kpl_util import KPLPlatManager, KPLDataType # 代码精选板块管理 class KPLCodeJXBlockManager: __redisManager = redis_manager.RedisManager(3) __code_blocks = {} def __get_redis(self): return self.__redisManager.getRedis() def save_jx_blocks(self, code, blocks): if blocks is None: return # 保存前2条数据 self.__get_redis().setex(f"kpl_jx_blocks-{code}", tool.get_expire(), json.dumps(blocks)) self.__code_blocks[code] = blocks # 获取精选板块 def get_jx_blocks(self, code): if code in self.__code_blocks: return self.__code_blocks[code] val = self.__get_redis().get(f"kpl_jx_blocks-{code}") if val is None: return None else: val = json.loads(val) self.__code_blocks[code] = val return self.__code_blocks[code] class KPLCodeLimitUpReasonManager: __redisManager = redis_manager.RedisManager(3) trade/huaxin/trade_server.py
@@ -17,7 +17,8 @@ from l2.l2_data_manager_new import L2TradeDataProcessor from log_module.log import hx_logger_l2_upload, hx_logger_contact_debug, hx_logger_trade_callback, \ hx_logger_l2_orderdetail, hx_logger_l2_transaction, hx_logger_l2_market_data, logger_l2_trade_buy_queue from third_data import block_info from third_data import block_info, kpl_api from third_data.kpl_data_manager import KPLCodeJXBlockManager from trade import deal_big_money_manager, current_price_process_manager from trade.huaxin import huaxin_trade_api as trade_api, trade_api_server, huaxin_trade_api @@ -38,6 +39,7 @@ class MyBaseRequestHandle(socketserver.BaseRequestHandler): __inited = False __TradeBuyQueue = transaction_progress.TradeBuyQueue() __KPLCodeJXBlockManager = KPLCodeJXBlockManager() def setup(self): self.__init() @@ -177,7 +179,8 @@ current_price_process_manager.set_trade_price(code, datas[-1][1]) try: buyno_map = l2_data_util.local_today_buyno_map.get(code) hx_logger_l2_transaction.info(f"{code}的买入订单号数量:{len(buyno_map.keys()) if buyno_map else 0}") hx_logger_l2_transaction.info( f"{code}的买入订单号数量:{len(buyno_map.keys()) if buyno_map else 0}") buy_progress_index = None for i in range(len(datas) - 1, -1, -1): d = datas[i] @@ -248,6 +251,13 @@ # 处理买1,卖1信息 code_price_manager.Buy1PriceManager.process(code, buy_1_price, time_str, limit_up_price, sell_1_price, sell_1_volume // 100) pre_close_price = round(float(limit_up_price) / 1.1, 2) # 如果涨幅大于8%就读取板块 if (buy_1_price - pre_close_price) / pre_close_price > 0.08: if not self.__KPLCodeJXBlockManager.get_jx_blocks(code): blocks = kpl_api.getCodeJingXuanBlocks(code) self.__KPLCodeJXBlockManager.save_jx_blocks(code, blocks) hx_logger_l2_market_data.info(f"{code}#{data}") finally: sk.sendall(socket_util.load_header(json.dumps({"code": 0}).encode(encoding='utf-8')))