| | |
| | | import logging |
| | | import time |
| | | |
| | | import gm.api as gmapi |
| | | # import gm.api as gmapi |
| | | # gmapi.set_token(token) |
| | | |
| | | import constant |
| | | from code_attribute import gpcode_manager |
| | | from db.redis_manager import RedisManager, RedisUtils |
| | | from db.redis_manager_delegate import RedisManager, RedisUtils |
| | | from log_module.log import logger_juejin_trade |
| | | from utils import network_util, tool |
| | | |
| | |
| | | |
| | | account_id = "77916efb-b856-46ee-9680-71be0fe18a42" |
| | | token = "38fb624832c1949708c7600abaf1e863d27663b3" |
| | | gmapi.set_token(token) |
| | | |
| | | |
| | | |
| | | # gmapi.set_account_id(account_id) |
| | |
| | | @classmethod |
| | | def add_order_id(cls, code, account_id, order_id): |
| | | RedisUtils.sadd(cls.__get_redis(),f"juejin_order_id-{code}", json.dumps((account_id, order_id))) |
| | | cls.__get_redis().expire(f"juejin_order_id-{code}", tool.get_expire()) |
| | | RedisUtils.expire(cls.__get_redis(), f"juejin_order_id-{code}", tool.get_expire()) |
| | | |
| | | # 删除订单ID |
| | | @classmethod |
| | | def remove_order_id(cls, code, account_id, order_id): |
| | | cls.__get_redis().srem(f"juejin_order_id-{code}", json.dumps((account_id, order_id))) |
| | | RedisUtils.srem(cls.__get_redis(), f"juejin_order_id-{code}", json.dumps((account_id, order_id))) |
| | | |
| | | # 查询所有的订单号 |
| | | @classmethod |
| | |
| | | def order_volume(code, price, count): |
| | | if not constant.TRADE_ENABLE: |
| | | return |
| | | if code.find("00") != 0 and code.find("60") != 0: |
| | | if not tool.is_can_buy_code(code): |
| | | raise Exception("只支持00开头与60开头的代码下单") |
| | | code_str = code |
| | | if code[0:2] == '00': |
| | | if tool.is_sz_code(code): |
| | | code_str = f"SZSE.{code}" |
| | | elif code[0:2] == '60': |
| | | elif tool.is_sh_code(code): |
| | | code_str = f"SHSE.{code}" |
| | | start_time = time.time() |
| | | results = gmapi.order_volume(code_str, count, gmapi.OrderSide_Buy, gmapi.OrderType_Limit, gmapi.PositionEffect_Open, |
| | |
| | | logger_juejin_trade.info(f"{code}:下单失败:{result['ord_rej_reason_detail']}") |
| | | raise Exception(result["ord_rej_reason_detail"]) |
| | | else: |
| | | TradeOrderIdManager.add_order_id(code, result["account_id"], result["cl_ord_id"]) |
| | | TradeOrderIdManager().add_order_id(code, result["account_id"], result["cl_ord_id"]) |
| | | logger_juejin_trade.info(f"{code}:下单成功 ord_id:{result['cl_ord_id']}") |
| | | return result["symbol"].split(".")[1], result["account_id"], result["cl_ord_id"] |
| | | else: |
| | |
| | | |
| | | # 撤单 |
| | | def cancel_order(code): |
| | | orders_info = TradeOrderIdManager.list_order_ids(code) |
| | | orders_info = TradeOrderIdManager().list_order_ids(code) |
| | | orders = [] |
| | | if orders_info: |
| | | for order in orders_info: |
| | |
| | | gmapi.order_cancel(orders) |
| | | logger_juejin_trade.info(f"{code}:撤单成功,撤单数量:{len(orders)}") |
| | | for order in orders: |
| | | TradeOrderIdManager.remove_order_id(code, order["account_id"], order["cl_ord_id"]) |
| | | TradeOrderIdManager().remove_order_id(code, order["account_id"], order["cl_ord_id"]) |
| | | |
| | | |
| | | # 撤单 |