Administrator
2024-01-04 126ad1b3c790661f022b775c558d4a0791a5c2b2
买入条件参数修改/持仓修改
5个文件已修改
74 ■■■■■ 已修改文件
log_module/log.py 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
third_data/kpl_data_manager.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
trade/huaxin/huaxin_trade_record_manager.py 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
trade/huaxin/huaxin_trade_server.py 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
utils/buy_condition_util.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
log_module/log.py
@@ -165,6 +165,10 @@
                   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)
@@ -344,6 +348,8 @@
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")
third_data/kpl_data_manager.py
@@ -401,7 +401,7 @@
    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)
trade/huaxin/huaxin_trade_record_manager.py
@@ -8,17 +8,40 @@
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:
@@ -94,10 +117,6 @@
            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)):
@@ -106,7 +125,11 @@
                        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
@@ -442,14 +465,4 @@
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()
trade/huaxin/huaxin_trade_server.py
@@ -41,7 +41,7 @@
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
@@ -53,7 +53,7 @@
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
@@ -1075,10 +1075,18 @@
                                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]
                    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:
@@ -1133,7 +1141,8 @@
            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)
utils/buy_condition_util.py
@@ -10,7 +10,7 @@
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
# 获取量比的等级获取量