Administrator
2024-12-04 e90601a93ef11d553ae1c8666ab9be8c587b1f49
增加L2订阅列表接口/华鑫交易登录参数修改
4个文件已修改
50 ■■■■ 已修改文件
constant.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
huaxin_client/trade_client.py 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
servers/data_server.py 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
trade/current_price_process_manager.py 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
constant.py
@@ -186,7 +186,7 @@
########华鑫配置########
if not is_windows() or True:
    # 下单1手
    BUY_MONEY_PER_CODE = 500 if constant.IS_A else 5000
    BUY_MONEY_PER_CODE = 500 if constant.IS_A else 20000
    L2_SOURCE_TYPE = L2_SOURCE_TYPE_HUAXIN
    JUEJIN_LOCAL_API = False
    TRADE_WAY = TRADE_WAY_HUAXIN
huaxin_client/trade_client.py
@@ -516,11 +516,11 @@
    def OnRspGetConnectionInfo(self, pConnectionInfoField: "CTORATstpConnectionInfoField",
                               pRspInfoField: "CTORATstpRspInfoField", nRequestID: "int") -> "void":
        if pRspInfoField.ErrorID == 0:
            logger.info('inner_ip_address[%s]' % pConnectionInfoField.InnerIPAddress)
            logger.info('inner_port[%d]' % pConnectionInfoField.InnerPort)
            logger.info('outer_ip_address[%s]' % pConnectionInfoField.OuterIPAddress)
            logger.info('outer_port[%d]' % pConnectionInfoField.OuterPort)
            logger.info('mac_address[%s]' % pConnectionInfoField.MacAddress)
            logger_trade.info('inner_ip_address[%s]' % pConnectionInfoField.InnerIPAddress)
            logger_trade.info('inner_port[%d]' % pConnectionInfoField.InnerPort)
            logger_trade.info('outer_ip_address[%s]' % pConnectionInfoField.OuterIPAddress)
            logger_trade.info('outer_port[%d]' % pConnectionInfoField.OuterPort)
            logger_trade.info('mac_address[%s]' % pConnectionInfoField.MacAddress)
            # 请求登录
            login_req = traderapi.CTORATstpReqUserLoginField()
@@ -556,7 +556,8 @@
            login_req.UserProductInfo = 'jiabei'
            login_req.DynamicPassword = 'rxoB195F'
            # 按照监管要求填写终端信息
            login_req.TerminalInfo = f'PC;IIP=NA;IPORT=NA;LIP={LOCAL_IP};MAC=5C6F69CC2B40;HD=004bc76004aff0882b9052ba0eb00506;@jiabei'
            # a0:36:9f:ea:fb:bc
            login_req.TerminalInfo = f'PC;IIP=NA;IPORT=NA;LIP={LOCAL_IP};MAC=A0369FEAFBBC;HD=00e3aeeed512b6782d0043b96480e04e;@jiabei'
            # 以下内外网IP地址若不填则柜台系统自动采集,若填写则以终端填值为准报送
            # login_req.MacAddress = '5C-87-9C-96-F3-E3'
            # login_req.InnerIPAddress = '10.0.1.102'
servers/data_server.py
@@ -36,7 +36,7 @@
from output import code_info_output, limit_up_data_filter, output_util, kp_client_msg_manager
from trade import bidding_money_manager, trade_manager, l2_trade_util, trade_record_log_util, trade_constant, \
    trade_data_manager
    trade_data_manager, current_price_process_manager
import concurrent.futures
# 禁用http.server的日志输出
@@ -812,7 +812,7 @@
                        datas = self.__kplDataManager.get_data(KPLDataType.JINGXUAN_RANK)
                        fdatas = datas
                    # 返回是否在流入前几
                    temp_datas=[]
                    temp_datas = []
                    for d in fdatas:
                        temp = list(d)
                        if d[1] in in_blocks:
@@ -871,6 +871,33 @@
            except  Exception as e:
                response_data = json.dumps({"code": 1, "data": str(1)})
        elif url.path == "/get_l2_subscript_codes":
            # 获取L2订阅的代码
            ps_dict = dict([(k, v[0]) for k, v in parse_qs(url.query).items()])
            try:
                records = LimitUpDataConstant.history_limit_up_datas
                # 获取历史涨停
                if not records:
                    KPLLimitUpDataRecordManager.load_total_datas()
                    records = KPLLimitUpDataRecordManager.total_datas
                if not records:
                    records = []
                codes = set([x[3] for x in records])
                fdatas = []
                if codes:
                    block_top_in_list = RealTimeKplMarketData.top_in_list_cache
                    in_blocks = [x[1] for x in block_top_in_list]
                    yesterday_codes = kpl_data_manager.get_yesterday_limit_up_codes()
                    if yesterday_codes is None:
                        yesterday_codes = set()
                    for code in codes:
                        index = current_price_process_manager.compute_code_order(code, in_blocks[:30], yesterday_codes)
                        if 0 <= index <= 1000:
                            fdatas.append((code, gpcode_manager.get_code_name(code)))
                response_data = json.dumps({"code": 0, "data": fdatas})
            except  Exception as e:
                response_data = json.dumps({"code": 1, "data": str(1)})
        async_log_util.info(logger_request_api, f"结束请求{tool.get_thread_id()}-{url}")
        self.send_response(200)
        # 发给请求客户端的响应数据
trade/current_price_process_manager.py
@@ -24,7 +24,7 @@
latest_add_codes = set()
def __compute_code_order(code, top_in_blocks=None, yesterday_limit_up_codes=None, today_history_limit_up_codes =None):
def compute_code_order(code, top_in_blocks=None, yesterday_limit_up_codes=None, today_history_limit_up_codes =None):
    """
    计算代码的排序
    @param code:
@@ -102,7 +102,7 @@
            pricePre = gpcode_manager.CodePrePriceManager.get_price_pre_cache(code)
            if pricePre is not None:
                # 是否是想买单
                order_index = __compute_code_order(code, top_in_blocks, yesterday_limit_up_codes, today_history_limit_up_codes)
                order_index = compute_code_order(code, top_in_blocks, yesterday_limit_up_codes, today_history_limit_up_codes)
                rate = round((price - pricePre) * 100 / pricePre, 2)
                if tool.is_ge_code(code):
                    # 创业板的涨幅需要打折