Administrator
2023-11-27 296259e0a6c8ddd2e6eeb34cf70900b6c048f3fa
将最近10天的最高量是否出现在最近两天纳入K线形态
3个文件已修改
36 ■■■■ 已修改文件
code_attribute/code_nature_analyse.py 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
outside_api_command_manager.py 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
trade/huaxin/huaxin_trade_server.py 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
code_attribute/code_nature_analyse.py
@@ -217,8 +217,9 @@
    # 是否具有辨识度
    p9 = is_special(record_datas)
    p10 = is_latest_10d_max_volume_at_latest_2d(record_datas)
    return p1, p2, p3, p4, p5, p6, p7, p8, p9
    return p1, p2, p3, p4, p5, p6, p7, p8, p9, p10
# 是否具有K线形态
@@ -292,6 +293,21 @@
    return False
# 10天内的最高量是否集中在最近两天
def is_latest_10d_max_volume_at_latest_2d(record_datas):
    datas = copy.deepcopy(record_datas)
    datas.sort(key=lambda x: x["bob"])
    datas = datas[-10:]
    max_volume_info = None
    for i in range(0, len(datas)):
        if not max_volume_info:
            max_volume_info = (i, datas[i]["volume"])
        else:
            if max_volume_info[1] < datas[i]["volume"]:
                max_volume_info = (i, datas[i]["volume"])
    return len(datas) - max_volume_info[0] <= 2
# 120 天内是否长得太高
def is_up_too_high_in_120d(record_datas):
    datas = copy.deepcopy(record_datas)
outside_api_command_manager.py
@@ -60,6 +60,7 @@
API_TYPE_CODE_L2_LISTEN_ACTIVE_COUNT = "l2_listen_active_count"  # L2有效监听数量
API_TYPE_SAVE_RUNNING_DATA = "save_running_data"  # 保存运行时数据
API_TYPE_GET_CODE_POSITION_INFO = "get_code_position_info"  # 获取代码持仓信息
API_TYPE_COMMON_REQUEST = "common_request"  # 通用请求
class ActionCallback(object):
    # 交易
@@ -117,6 +118,9 @@
        pass
    def OnGetCodePositionInfo(self, client_id, request_id, data):
        pass
    def OnCommonRequest(self, client_id, request_id, data):
        pass
@@ -228,6 +232,10 @@
                            cls.action_callback.OnSaveRunningData(client_id, request_id)
                        elif content_type == API_TYPE_GET_CODE_POSITION_INFO:
                            cls.action_callback.OnGetCodePositionInfo(client_id, request_id, data)
                        elif content_type == API_TYPE_COMMON_REQUEST:
                            cls.action_callback.OnCommonRequest(client_id, request_id, data)
                    except Exception as e:
                        logging.exception(e)
trade/huaxin/huaxin_trade_server.py
@@ -498,7 +498,7 @@
    # 撤卖单
    def __cancel_sell_order(self, code, order_ref):
        for i in range(0,10):
        for i in range(0, 10):
            time.sleep(0.2)
            order_entity = huaxin_trade_order_processor.TradeResultProcessor.get_huaxin_order_by_order_ref(order_ref)
            if order_entity:
@@ -1000,6 +1000,11 @@
            logging.exception(e)
            self.send_response(json.dumps({"code": 1, "msg": f"数据处理出错:{e}"}), client_id, request_id)
    def OnCommonRequest(self, client_id, request_id, data):
        # 通用请求
        ctype = data["ctype"]
        # 获取子类型
class MyL2DataCallback(l2_data_transform_protocol.L2DataCallBack):
    def OnL2Order(self, code, datas, timestamp):
@@ -1052,7 +1057,6 @@
    huaxin_trade_data_update.add_position_list()
def run(queue_strategy_r_trade_w, queue_l1_w_strategy_r, queue_strategy_w_trade_r, queue_strategy_w_trade_r_for_read,
        order_queues, transaction_queues,
        market_queue):
@@ -1065,7 +1069,7 @@
        manager = outside_api_command_manager.ApiCommandManager()
        manager.init(middle_api_protocol.SERVER_HOST,
                     middle_api_protocol.SERVER_PORT,
                     OutsideApiCommandCallback(),trade_client_count=30)
                     OutsideApiCommandCallback(), trade_client_count=30)
        manager.run(blocking=False)
        # 监听L2数据