| | |
| | | filter=lambda record: record["extra"].get("name") == "trade_record", |
| | | rotation="00:00", compression="zip", enqueue=True) |
| | | |
| | | logger.add(self.get_path("trade", "position_api_request"), |
| | | filter=lambda record: record["extra"].get("name") == "position_api_request", |
| | | rotation="00:00", compression="zip", enqueue=True) |
| | | |
| | | logger.add(self.get_path("score", "place_order_score"), |
| | | filter=lambda record: record["extra"].get("name") == "place_order_score", |
| | | rotation="00:00", compression="zip", enqueue=True) |
| | |
| | | |
| | | logger_trade_record = __mylogger.get_logger("trade_record") |
| | | |
| | | logger_trade_position_api_request = __mylogger.get_logger("position_api_request") |
| | | |
| | | logger_place_order_score = __mylogger.get_logger("place_order_score") |
| | | |
| | | logger_kpl_limit_up_reason_change = __mylogger.get_logger("kpl_limit_up_reason_change") |
| | |
| | | |
| | | def get_limit_up(): |
| | | while True: |
| | | if tool.is_trade_time(): |
| | | if tool.is_trade_time() and int(tool.get_now_time_str().replace(':', '')) > int("092530"): |
| | | try: |
| | | results = kpl_api.getLimitUpInfoNew() |
| | | result = json.loads(results) |
| | |
| | | import json |
| | | |
| | | from db.redis_manager_delegate import RedisUtils, RedisManager |
| | | from utils import tool |
| | | from utils import tool, huaxin_util |
| | | from db import mysql_data_delegate as mysql_data, redis_manager_delegate as redis_manager |
| | | from third_data.history_k_data_util import HistoryKDatasUtils |
| | | |
| | | |
| | | # 委托列表 |
| | | class DelegateRecordManager: |
| | | # 当前处于委托状态的数据 |
| | | __current_delegate_records_cache = [] |
| | | mysqldb = mysql_data.Mysqldb() |
| | | __instance = None |
| | | |
| | | def __new__(cls, *args, **kwargs): |
| | | if not cls.__instance: |
| | | cls.__instance = super(DelegateRecordManager, cls).__new__(cls, *args, **kwargs) |
| | | cls.__load_data() |
| | | return cls.__instance |
| | | |
| | | @classmethod |
| | | def __load_data(cls): |
| | | fresults, max_update_time = cls.list_by_day(tool.get_now_date_str("%Y%m%d"), None, |
| | | orderStatus=[huaxin_util.TORA_TSTP_OST_Cached, |
| | | huaxin_util.TORA_TSTP_OST_Accepted]) |
| | | __current_delegate_records_cache = fresults |
| | | |
| | | # 获取当前处于委托状态的订单 |
| | | def list_current_delegates(self): |
| | | if self.__current_delegate_records_cache: |
| | | return copy.deepcopy(self.__current_delegate_records_cache) |
| | | return None |
| | | |
| | | @classmethod |
| | | def add(cls, datas): |
| | | __current_delegate_records_cache = datas |
| | | try: |
| | | if datas: |
| | | for d in datas: |
| | |
| | | max_update_time = None |
| | | if results: |
| | | for r in results: |
| | | if not max_update_time: |
| | | max_update_time = r[18] |
| | | if r[18] > max_update_time: |
| | | max_update_time = r[18] |
| | | |
| | | temp = {} |
| | | for i in range(len(r)): |
| | |
| | | else: |
| | | temp[key_list[i]] = r[i] |
| | | fresults.append(temp) |
| | | return fresults, max_update_time.strftime("%Y-%m-%d %H:%M:%S") if max_update_time else None |
| | | if not max_update_time: |
| | | max_update_time = temp["updateTime"] |
| | | if r[18] > max_update_time: |
| | | max_update_time = temp["updateTime"] |
| | | return fresults, max_update_time |
| | | finally: |
| | | pass |
| | | |
| | |
| | | |
| | | |
| | | if __name__ == "__main__": |
| | | deal_list = DealRecordManager().list_sell_by_code_cache("603759") |
| | | deal_order_system_id_infos = {} |
| | | if deal_list: |
| | | for d in deal_list: |
| | | if d["orderSysID"] not in deal_order_system_id_infos: |
| | | deal_order_system_id_infos[d["orderSysID"]] = [d["volume"], d["tradeTime"]] |
| | | else: |
| | | deal_order_system_id_infos[d["orderSysID"]][0] += d["volume"] |
| | | deal_list = [deal_order_system_id_infos[k] for k in deal_order_system_id_infos] |
| | | deal_list.sort(key=lambda x: x[1]) |
| | | print([k[0] for k in deal_list]) |
| | | DelegateRecordManager() |
| | |
| | | from log_module import async_log_util, log_export |
| | | from log_module.log import hx_logger_contact_debug, hx_logger_trade_callback, \ |
| | | hx_logger_l2_orderdetail, hx_logger_l2_transaction, hx_logger_l2_market_data, logger_l2_g_cancel, logger_debug, \ |
| | | logger_system, logger_trade |
| | | logger_system, logger_trade, logger_trade_position_api_request |
| | | from third_data import block_info, kpl_data_manager, kpl_util |
| | | from third_data.code_plate_key_manager import KPLCodeJXBlockManager, CodePlateKeyBuyManager |
| | | from third_data.history_k_data_util import JueJinApi, HistoryKDatasUtils |
| | |
| | | |
| | | from trade.huaxin import huaxin_trade_api as trade_api, huaxin_trade_api, huaxin_trade_data_update, \ |
| | | huaxin_trade_record_manager, huaxin_trade_order_processor |
| | | from trade.huaxin.huaxin_trade_record_manager import PositionManager, DealRecordManager |
| | | from trade.huaxin.huaxin_trade_record_manager import PositionManager, DealRecordManager, DelegateRecordManager |
| | | from trade.l2_trade_factor import L2PlaceOrderParamsManager |
| | | from trade.sell import sell_manager |
| | | from trade.sell.sell_rule_manager import SellRuleManager, SellRule |
| | |
| | | deal_order_system_id_infos[d["orderSysID"]] = [d["volume"], d["tradeTime"]] |
| | | else: |
| | | deal_order_system_id_infos[d["orderSysID"]][0] += d["volume"] |
| | | # 获取9:30之前的卖委托 |
| | | current_delegates = DelegateRecordManager().list_current_delegates() |
| | | if current_delegates: |
| | | for d in current_delegates: |
| | | if d["orderSysID"] not in deal_order_system_id_infos: |
| | | deal_order_system_id_infos[d["orderSysID"]] = [d["volume"], d["insertTime"]] |
| | | deal_list = [deal_order_system_id_infos[k] for k in deal_order_system_id_infos] |
| | | deal_list.sort(key=lambda x: x[1]) |
| | | |
| | | fdata["sell_orders"] =[k[0] for k in deal_list] |
| | | break |
| | | async_log_util.info(logger_trade_position_api_request, f"{fdata}") |
| | | result = {"code": 0, "data": fdata} |
| | | self.send_response(result, client_id, request_id) |
| | | except Exception as e: |
| | |
| | | elif ctype == "get_kpl_limit_up_datas": |
| | | # 获取开盘啦涨停队列 |
| | | try: |
| | | datas = kpl_data_manager.KPLDataManager.get_from_file(kpl_util.KPLDataType.LIMIT_UP, tool.get_now_date_str()) |
| | | datas = kpl_data_manager.KPLDataManager.get_from_file(kpl_util.KPLDataType.LIMIT_UP, |
| | | tool.get_now_date_str()) |
| | | self.send_response({"code": 0, "data": datas}, client_id, request_id) |
| | | except Exception as e: |
| | | self.send_response({"code": 1, "msg": str(e)}, client_id, request_id) |
| | |
| | | def get_zyltgb_threshold(market_sitation: int): |
| | | if market_sitation == MarketSituationManager.SITUATION_GOOD: |
| | | return 100 * 100000000, 10 * 100000000, 50 * 100000000 |
| | | return 50 * 100000000, 10 * 100000000, 20 * 100000000 |
| | | return 50 * 100000000, 10 * 100000000, 25 * 100000000 |
| | | |
| | | |
| | | # 获取量比的等级获取量 |