| | |
| | | OPERRATE_SET = 1 # 设置 |
| | | OPERRATE_DELETE = 2 # 删除 |
| | | OPERRATE_GET = 3 # 获取 |
| | | OPERRATE_ADD = 4 # 新增 |
| | | |
| | | # 代码名单类型 |
| | | CODE_LIST_WHITE = "white" |
| | |
| | | API_TYPE_TRADE = "trade" # 交易 |
| | | API_TYPE_TRADE_STATE = "trade_state" # 交易状态 |
| | | API_TYPE_TRADE_MODE = "trade_mode" # 交易模式 |
| | | API_TYPE_SELL_RULE = "sell_rule" # 卖出规则 |
| | | API_TYPE_CODE_LIST = "code_list" # 代码名单 |
| | | API_TYPE_EXPORT_L2 = "export_l2" # 导出L2数据 |
| | | API_TYPE_INIT = "init" # 初始化 |
| | |
| | | |
| | | # 交易模式 |
| | | def OnTradeMode(self, client_id, request_id, data): |
| | | pass |
| | | |
| | | # 卖出规则 |
| | | def OnSellRule(self, client_id, request_id, data): |
| | | pass |
| | | |
| | | # 代码名单 |
| | |
| | | cls.action_callback.OnTradeState(client_id, request_id, data) |
| | | elif content_type == API_TYPE_TRADE_MODE: |
| | | cls.action_callback.OnTradeMode(client_id, request_id, data) |
| | | elif content_type == API_TYPE_SELL_RULE: |
| | | cls.action_callback.OnSellRule(client_id, request_id, data) |
| | | elif content_type == API_TYPE_CODE_LIST: |
| | | cls.action_callback.OnCodeList(client_id, request_id, data) |
| | | elif content_type == API_TYPE_EXPORT_L2: |
| | |
| | | from trade.huaxin import huaxin_trade_api as trade_api, huaxin_trade_api, huaxin_trade_data_update, \ |
| | | huaxin_trade_record_manager |
| | | from trade.l2_trade_factor import L2PlaceOrderParamsManager |
| | | from trade.sell_rule_manager import SellRuleManager |
| | | from trade.sell_rule_manager import SellRuleManager, SellRule |
| | | from trade.trade_manager import TradeTargetCodeModeManager |
| | | from utils import socket_util, data_export_util, middle_api_protocol, tool, huaxin_util, output_util |
| | | |
| | |
| | | data = data_json["data"] |
| | | request_id = data_json["request_id"] |
| | | datas = data["data"] |
| | | cls.__sell_thread_pool.submit(lambda : cls.__sell(datas)) |
| | | cls.__sell_thread_pool.submit(lambda: cls.__sell(datas)) |
| | | HuaXinL1TargetCodesManager.set_level_1_codes_datas(datas, request_id=request_id) |
| | | |
| | | @classmethod |
| | |
| | | except Exception as e: |
| | | self.send_response({"code": 1, "msg": str(e)}, client_id, request_id) |
| | | |
| | | def OnSellRule(self, client_id, request_id, data): |
| | | try: |
| | | operate = data["operate"] |
| | | if operate == outside_api_command_manager.OPERRATE_ADD: |
| | | data = data["data"] |
| | | rule = SellRule(code=data["code"], buy1_volume=data["buy1_volume"], sell_volume=data["sell_volume"], |
| | | 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_GET: |
| | | rules = SellRuleManager().list_rules() |
| | | fresults = [] |
| | | for rule in rules: |
| | | fresults.append(rule.to_dict()) |
| | | self.send_response({"code": 0, "data": fresults}, client_id, request_id) |
| | | except Exception as e: |
| | | self.send_response({"code": 1, "msg": str(e)}, client_id, request_id) |
| | | |
| | | pass |
| | | |
| | | # 代码名单 |
| | | def OnCodeList(self, client_id, request_id, data): |
| | | try: |
| | |
| | | |
| | | |
| | | class SellRule: |
| | | def __init__(self, id_=None, code=None, buy1_volume=None, sell_volume=None, day=None, create_time=None, excuted=0): |
| | | def __init__(self, id_=None, code=None, buy1_volume=None, sell_volume=None, day=None, create_time=None, excuted=0, |
| | | end_time=None): |
| | | self.day = day |
| | | self.create_time = create_time |
| | | self.sell_volume = sell_volume |
| | |
| | | self.code = code |
| | | self.id_ = id_ |
| | | self.excuted = 0 |
| | | self.end_time = end_time |
| | | |
| | | def to_json_str(self): |
| | | return json.dumps(vars(self)) |
| | |
| | | for rule in rules: |
| | | self.__sell_rules_dict_cache[rule.id_] = rule |
| | | |
| | | def __list_rules(self): |
| | | results = mysql_data.Mysqldb().select_all(f"select * from sell_rules r where r.day='{tool.get_now_date_str()}'") |
| | | def list_rules(self, day=tool.get_now_date_str()): |
| | | results = mysql_data.Mysqldb().select_all(f"select * from sell_rules r where r.day='{day}'") |
| | | fresults = [] |
| | | if results: |
| | | for r in results: |
| | |
| | | rule.day = r[4] |
| | | rule.create_time = r[5] |
| | | rule.excuted = r[6] |
| | | rule.end_time = r[7] |
| | | fresults.append(rule) |
| | | return fresults |
| | | |
| | |
| | | if not rule.day: |
| | | rule.day = tool.get_now_date_str() |
| | | mysql_data.Mysqldb().execute( |
| | | "insert into sell_rules(_id,code,buy1_volume,sell_volume,day,create_time,excuted) values ('%s','%s','%s','%s','%s',now() ,'%s') " % ( |
| | | rule.id_, rule.code, rule.buy1_volume, rule.sell_volume, rule.day, rule.excuted)) |
| | | "insert into sell_rules(_id,code,buy1_volume,sell_volume,day,create_time,excuted,end_time) values ('%s','%s','%s','%s','%s',now() ,'%s','%s') " % ( |
| | | rule.id_, rule.code, rule.buy1_volume, rule.sell_volume, rule.day, rule.excuted, rule.end_time)) |
| | | self.__sell_rules_dict_cache[_id] = rule |
| | | |
| | | # 删除规则 |