| | |
| | | return |
| | | if sinfo in self.__buy_sinfo_set: |
| | | raise Exception(f'下单请求已经提交:{sinfo}') |
| | | async_log_util.info(logger_local_huaxin_trade_debug, |
| | | f"进入买入方法:code-{code} sinfo-{sinfo}") |
| | | self.__buy_sinfo_set.add(sinfo) |
| | | self.req_id += 1 |
| | | # 请求报单 |
| | |
| | | try: |
| | | req_rid_dict[sinfo] = (client_id, request_id, sk, local_order_id) |
| | | self.__tradeSimpleApi.buy(code, volume, price, sinfo) |
| | | |
| | | except Exception as e: |
| | | send_response(json.dumps({"code": 1, "msg": str(e)}), TYPE_ORDER, client_id, |
| | | request_id) |
| | | |
| | | async_log_util.info(logger_local_huaxin_trade_debug, |
| | | f"买入结束:code-{code} sinfo-{sinfo}") |
| | | elif direction == 2: |
| | | try: |
| | | price_type = data["price_type"] |
| | |
| | | raise Exception("没有找到系统订单号") |
| | | req_rid_dict[sinfo] = (client_id, request_id, sk) |
| | | self.__tradeSimpleApi.cancel_buy(code, orderSysID, sinfo) |
| | | async_log_util.info(logger_local_huaxin_trade_debug, |
| | | f"撤单结束:code-{code} order_sys_id-{orderSysID} sinfo-{sinfo}") |
| | | except Exception as e: |
| | | send_response(json.dumps({"code": 1, "msg": str(e)}), TYPE_CANCEL_ORDER, client_id, |
| | | request_id) |
| | |
| | | |
| | | # 开始撤单 |
| | | def start_cancel(self, code, buy_no, total_datas, buy_order_no_map, local_operate_map, m_val_num): |
| | | thresh_num = int(m_val_num * 1.5) |
| | | thresh_num = int(m_val_num * 1.8) |
| | | place_order_index = self.__SecondCancelBigNumComputer.get_real_place_order_index_cache(code) |
| | | if place_order_index is None: |
| | | raise Exception("未获取到下单真实位置") |
| | |
| | | break |
| | | if buy_nums > thresh_num: |
| | | need_cancel = False |
| | | return need_cancel, f"成交进度位({transaction_index})-真实下单位({place_order_index}) 纯买手数:{buy_nums}/1.5倍m值手数:{thresh_num}" |
| | | return need_cancel, f"成交进度位({transaction_index})-真实下单位({place_order_index}) 纯买手数:{buy_nums}/1.8倍m值手数:{thresh_num}" |
| | | |
| | | |
| | | # --------------------------------封单额变化撤------------------------ |
| | |
| | | import time |
| | | |
| | | from l2 import cancel_buy_strategy |
| | | from log_module import async_log_util |
| | | from log_module.log import hx_logger_trade_debug, logger_system |
| | | from trade import trade_huaxin, trade_manager |
| | | from trade.huaxin import huaxin_trade_api, huaxin_trade_record_manager |
| | |
| | | |
| | | def add_delegate_list(source, delay=0): |
| | | __add_data({"type": "delegate_list", "delay": delay}) |
| | | hx_logger_trade_debug.info(f"请求委托列表,来源:{source}") |
| | | async_log_util.info(hx_logger_trade_debug, f"请求委托列表,来源:{source}") |
| | | |
| | | |
| | | def add_deal_list(): |
| | |
| | | |
| | | |
| | | # 撤单 |
| | | def cancel_order(code): |
| | | def cancel_order(code, msg=''): |
| | | orders_info = __TradeOrderIdManager.list_order_ids_cache(code) |
| | | orders_info = copy.deepcopy(orders_info) |
| | | orders = [] |
| | |
| | | order_info = json.loads(order) |
| | | orders.append({'orderSysID': order_info[1], 'accountId': order_info[0]}) |
| | | if orders: |
| | | async_log_util.info(logger_trade, f"{code}:华鑫开始执行撤单") |
| | | async_log_util.info(logger_trade, f"{code}:华鑫开始执行撤单 {msg}") |
| | | for order in orders: |
| | | huaxin_trade_api.cancel_order(1, code, order["orderSysID"]) |
| | | __TradeOrderIdManager.remove_order_id(code, order["accountId"], order["orderSysID"]) |
| | |
| | | if local_orders_info: |
| | | local_orders_info = copy.deepcopy(local_orders_info) |
| | | for order_id in local_orders_info: |
| | | async_log_util.info(logger_trade, f"{code}:华鑫开始执行撤单") |
| | | async_log_util.info(logger_trade, f"{code}:华鑫开始执行撤单 {msg}") |
| | | huaxin_trade_api.cancel_order(1, code, '', localOrderID=order_id) |
| | | __TradeOrderIdManager.remove_local_order_id(code, order_id) |
| | | async_log_util.info(logger_trade, f"{code}:华鑫执行撤单结束") |
| | |
| | | # 交易管理器 |
| | | import datetime |
| | | import json |
| | | import threading |
| | | import time |
| | | |
| | | import dask |
| | |
| | | |
| | | # 设置交易状态 |
| | | def set_trade_state(self, code, state): |
| | | logger_trade.info("set_trade_state {}-{}".format(code, state)) |
| | | async_log_util.info(logger_trade, "set_trade_state {}-{}".format(code, state)) |
| | | tool.CodeDataCacheUtil.set_cache(self.__trade_state_cache, code, state) |
| | | RedisUtils.setex_async(self.__db, "trade-state-{}".format(code), tool.get_expire(), state) |
| | | |
| | |
| | | guiTrade.cancel_buy(code) |
| | | async_log_util.info(logger_trade, "{}撤单方法结束".format(code)) |
| | | __cancel_success(code) |
| | | # 再次撤单 |
| | | if constant.TRADE_WAY == constant.TRADE_WAY_HUAXIN: |
| | | threading.Thread(target=lambda: trade_huaxin.cancel_order(code, msg="再次撤单"), daemon=True).start() |
| | | # 不需要再次撤单了 |
| | | # try: |
| | | # cancel_buy_again(code) |