将最近10天的最高量是否出现在最近两天纳入K线形态
| | |
| | | |
| | | # 是否具有辨识度 |
| | | 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线形态 |
| | |
| | | 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) |
| | |
| | | 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): |
| | | # 交易 |
| | |
| | | pass |
| | | |
| | | def OnGetCodePositionInfo(self, client_id, request_id, data): |
| | | pass |
| | | |
| | | def OnCommonRequest(self, client_id, request_id, data): |
| | | pass |
| | | |
| | | |
| | |
| | | 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) |
| | |
| | | |
| | | # 撤卖单 |
| | | 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: |
| | |
| | | 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): |
| | |
| | | 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): |
| | |
| | | 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数据 |