| | |
| | | |
| | | @classmethod |
| | | def l2_market_data(cls, code, data): |
| | | |
| | | def update_kpl_jx_block(code_, buy_1_price_, limit_up_price_): |
| | | # ----------------------------------板块相关------------------------------ |
| | | try: |
| | | if code_ in cls.__updating_jx_blocks_codes: |
| | | return |
| | | cls.__updating_jx_blocks_codes.add(code_) |
| | | cls.__KPLCodeJXBlockManager.load_jx_blocks(code_, buy_1_price_, limit_up_price_, |
| | | kpl_data_manager.KPLLimitUpDataRecordManager.get_current_reasons()) |
| | | # 更新板块信息 |
| | | latest_current_limit_up_records = kpl_data_manager.get_latest_current_limit_up_records() |
| | | |
| | | codes_delegate = set(CodesTradeStateManager().get_codes_by_trade_states_cache( |
| | | {trade_constant.TRADE_STATE_BUY_DELEGATED, trade_constant.TRADE_STATE_BUY_PLACE_ORDER})) |
| | | codes_success = set(CodesTradeStateManager().get_codes_by_trade_states_cache( |
| | | {trade_constant.TRADE_STATE_BUY_SUCCESS})) |
| | | |
| | | CodePlateKeyBuyManager.update_can_buy_blocks(code_, |
| | | kpl_data_manager.KPLLimitUpDataRecordManager.latest_origin_datas, |
| | | kpl_data_manager.KPLLimitUpDataRecordManager.total_datas, |
| | | latest_current_limit_up_records, |
| | | block_info.get_before_blocks_dict(), |
| | | kpl_data_manager.KPLLimitUpDataRecordManager.get_current_limit_up_reason_codes_dict(), |
| | | codes_delegate, codes_success) |
| | | finally: |
| | | cls.__updating_jx_blocks_codes.discard(code_) |
| | | |
| | | time_str = f"{data['dataTimeStamp']}" |
| | | if time_str.startswith("9"): |
| | | time_str = "0" + time_str |
| | | time_str = time_str[:6] |
| | | time_str = f"{time_str[0:2]}:{time_str[2:4]}:{time_str[4:6]}" |
| | | time_str = l2_huaxin_util.convert_time(time_str) |
| | | buy_1_price, buy_1_volume = data["buy"][0] |
| | | sell_1_price, sell_1_volume = data["sell"][0] |
| | | limit_up_price = gpcode_manager.get_limit_up_price_as_num(code) |
| | | # 涨幅 |
| | | price = data['lastPrice'] |
| | | |
| | | code_price_manager.CurrentPriceManager.set_current_price(code, price) |
| | | |
| | | code_price_manager.Buy1PriceManager().set_latest_buy1_money(code, buy_1_price, buy_1_volume) |
| | | |
| | |
| | | except Exception as e: |
| | | logger_debug.exception(e) |
| | | |
| | | if limit_up_price is not None: |
| | | pre_close_price = CodePrePriceManager.get_price_pre_cache(code) |
| | | if pre_close_price is not None: |
| | | average_rate = None |
| | | try: |
| | | average_price = data["totalValueTrade"] / data["totalVolumeTrade"] |
| | | pre_close_price = CodePrePriceManager.get_price_pre_cache(code) |
| | | average_rate = round((average_price - pre_close_price) / pre_close_price, 4) |
| | | except: |
| | | pass |