| | |
| | | end_time=data["end_time"]) |
| | | SellRuleManager().add_rule(rule) |
| | | self.send_response({"code": 0, "data": {}}, client_id, request_id) |
| | | elif operate == outside_api_command_manager.OPERRATE_SET: |
| | | data = data["data"] |
| | | code = data["code"] |
| | | buy1_price = data.get("buy1_price") |
| | | if not buy1_price: |
| | | buy1_price = gpcode_manager.get_limit_up_price(code) |
| | | if not buy1_price: |
| | | raise Exception("尚未获取到涨停价") |
| | | rule = SellRule(id_= data["id"], code=data["code"], buy1_volume=data["buy1_volume"], buy1_price=buy1_price, |
| | | sell_volume=data["sell_volume"], sell_price_type=data["sell_price_type"], |
| | | end_time=data["end_time"]) |
| | | SellRuleManager().update_rule(rule) |
| | | self.send_response({"code": 0, "data": {}}, client_id, request_id) |
| | | elif operate == outside_api_command_manager.OPERRATE_DELETE: |
| | | data = data["data"] |
| | | SellRuleManager().del_rule(data["id"]) |
| | |
| | | __sell_lock_dict = {} |
| | | __mysql_excute_thread_pool = concurrent.futures.ThreadPoolExecutor(max_workers=10) |
| | | |
| | | |
| | | |
| | | def __new__(cls, *args, **kwargs): |
| | | if not cls.__instance: |
| | | cls.__instance = super(SellRuleManager, cls).__new__(cls, *args, **kwargs) |
| | |
| | | rule.day, rule.excuted, rule.end_time)) |
| | | self.__sell_rules_dict_cache[_id] = rule |
| | | |
| | | def update_rule(self, rule: SellRule): |
| | | if not rule.id_: |
| | | raise Exception("缺失id") |
| | | # 获取原来的数据 |
| | | old_rule: SellRule = self.get_by_id(rule.id_) |
| | | rule.day = old_rule.day |
| | | mysql_data.Mysqldb().execute( |
| | | "update sell_rules set code = '%s',buy1_volume = '%s', buy1_price='%s',sell_volume = '%s',sell_price_type='%s',end_time = '%s' where _id='%s'" % ( |
| | | rule.code, rule.buy1_volume, rule.buy1_price, rule.sell_volume, rule.sell_price_type, rule.end_time, |
| | | rule.id_)) |
| | | rule.excuted = old_rule.excuted |
| | | rule.create_time = old_rule.create_time |
| | | |
| | | self.__sell_rules_dict_cache[rule.id_] = rule |
| | | |
| | | # 删除规则 |
| | | def del_rule(self, _id): |
| | | mysql_data.Mysqldb().execute(f"delete from sell_rules where _id='{_id}'") |
| | |
| | | def excute_sell(self, _id): |
| | | if _id in self.__sell_rules_dict_cache: |
| | | self.__sell_rules_dict_cache[_id].excuted = 1 |
| | | self.__mysql_excute_thread_pool.submit(mysql_data.Mysqldb().execute, f"update sell_rules r set r.excuted=1 where r._id='{_id}'") |
| | | self.__mysql_excute_thread_pool.submit(mysql_data.Mysqldb().execute, |
| | | f"update sell_rules r set r.excuted=1 where r._id='{_id}'") |
| | | |
| | | # 请求卖出锁 |
| | | def require_sell_lock(self, _id): |