| | |
| | | ########华鑫配置######## |
| | | 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 |
| | |
| | | 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() |
| | |
| | | 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' |
| | |
| | | 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的日志输出 |
| | |
| | | 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: |
| | |
| | | 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) |
| | | # 发给请求客户端的响应数据 |
| | |
| | | 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: |
| | |
| | | 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): |
| | | # 创业板的涨幅需要打折 |