| | |
| | | from third_data.history_k_data_manager import TradeDateManager |
| | | from third_data.kpl_block_manager import KPLCodeJXBlocksManager |
| | | from trade import trade_record_log_util |
| | | from trade.trade_manager import TradeStateManager |
| | | from utils import socket_util, middle_api_protocol, tool |
| | | |
| | | |
| | |
| | | @return: |
| | | """ |
| | | result = strategy_params_settings.StrategyParamsSettingsManager().get_settings().to_json_str() |
| | | return {"code": 0, "data": json.loads(result)} |
| | | result = json.loads(result) |
| | | result["trade_state"] = 1 if TradeStateManager().is_can_buy_cache() else 0 |
| | | |
| | | return {"code": 0, "data": result} |
| | | |
| | | def __on_set_settings(self, data): |
| | | """ |
| | |
| | | """ |
| | | settings = strategy_params_settings.StrategyParamsSettingsManager().get_settings() |
| | | for k in data: |
| | | if k == "trade_state": |
| | | if data[k]: |
| | | TradeStateManager().open_buy() |
| | | else: |
| | | TradeStateManager().close_buy() |
| | | continue |
| | | settings.__setattr__(k, data[k]) |
| | | strategy_params_settings.StrategyParamsSettingsManager().set_settings(settings) |
| | | # 同步参数设置 |
| | |
| | | import constant |
| | | from third_data import kpl_util |
| | | from trade import trade_record_log_util |
| | | from trade.trade_manager import DealCodesManager, PlatePlaceOrderManager |
| | | from trade.trade_manager import DealCodesManager, PlatePlaceOrderManager, TradeStateManager |
| | | from utils import huaxin_util, tool |
| | | |
| | | BIG_ORDER_MAX_SPACE_TIME = 3 |
| | |
| | | if compute_result[0]: |
| | | if code in sv.成交代码: |
| | | return |
| | | if not TradeStateManager().is_can_buy_cache(): |
| | | async_log_util.info(logger_trade, f"交易已关闭") |
| | | return |
| | | |
| | | # 可以下单 |
| | | # 判断是否可以买 |
| | | order_ref = huaxin_util.create_order_ref() |
| | |
| | | STATE_NORMAL_BUY = 1 |
| | | |
| | | def __init__(self): |
| | | # 交易状态 |
| | | self.trade_state = 1 |
| | | # 买入金额 |
| | | self.buy_money = 2000 |
| | | # 最大买入票的数量 |
| | |
| | | |
| | | |
| | | if __name__ == "__main__": |
| | | print("======3个票涨停之后买_不买长得太高未放量") |
| | | statistic_average(r"C:\Users\Administrator\Desktop\3个票涨停之后买_不买长得太高未放量.txt") |
| | | print("======10到100亿") |
| | | statistic_average(r"C:\Users\Administrator\Desktop\10到100亿.txt") |
| | | print("======3个票涨停之后买") |
| | | statistic_average(r"C:\Users\Administrator\Desktop\3个票涨停之后买.txt") |
| | | # codes = set() |
| | |
| | | days = ["2025-05-12", "2025-05-13", "2025-05-14", "2025-05-15", "2025-05-16", "2025-05-19", "2025-05-20", |
| | | "2025-05-21", "2025-05-22", "2025-05-23", "2025-05-26", "2025-05-27", "2025-05-28", "2025-05-29", |
| | | "2025-05-30", "2025-06-03", "2025-06-04", "2025-06-05", "2025-06-06", "2025-06-09", "2025-06-10"] |
| | | # days = ["2025-06-03", "2025-06-04", "2025-06-05", "2025-06-06", "2025-06-09", "2025-06-10", |
| | | # "2025-06-11", "2025-06-12", "2025-06-13", "2025-06-16", "2025-06-17", "2025-06-18", "2025-06-19", |
| | | # "2025-06-20", "2025-06-23", "2025-06-24"] |
| | | days = ["2025-06-03", "2025-06-04", "2025-06-05", "2025-06-06", "2025-06-09", "2025-06-10", |
| | | "2025-06-11", "2025-06-12", "2025-06-13", "2025-06-16", "2025-06-17", "2025-06-18", "2025-06-19", |
| | | "2025-06-20", "2025-06-23", "2025-06-24", "2025-06-25"] |
| | | |
| | | # days = ["2025-05-23"] |
| | | |
| | | days = ["2025-05-12", "2025-05-13", "2025-05-14", "2025-05-15", "2025-05-16", "2025-05-19", "2025-05-20", |
| | | "2025-05-21", "2025-05-22", "2025-05-23", "2025-05-26"] |
| | | # |
| | | # days = ["2025-05-12", "2025-05-13", "2025-05-14", "2025-05-15", "2025-05-16", "2025-05-19", "2025-05-20", |
| | | # "2025-05-21", "2025-05-22", "2025-05-23", "2025-05-26"] |
| | | |
| | | days.reverse() |
| | | for day in days: |
| | |
| | | latest_trade_delegate_data = [] |
| | | |
| | | |
| | | # 关闭购买入口 |
| | | # 开启购买入口 |
| | | class TradeStateManager: |
| | | """ |
| | | 交易状态管理(开启/关闭交易) |
| | | """ |
| | | __instance = None |
| | | __db = 12 |
| | | redisManager = redis_manager.RedisManager(12) |
| | |
| | | # 开启购买入口 |
| | | def open_buy(self): |
| | | self.__trade_buy_state_cache = True |
| | | RedisUtils.setex_async(self.__db, "trade_buy_state", tool.get_expire(), 1) |
| | | RedisUtils.setex_async(self.__db, "ls_trade_buy_state", tool.get_expire(), 1) |
| | | |
| | | # 关闭购买入口 |
| | | def close_buy(self): |
| | | self.__trade_buy_state_cache = False |
| | | RedisUtils.setex_async(self.__db, "trade_buy_state", tool.get_expire(), 0) |
| | | RedisUtils.setex_async(self.__db, "ls_trade_buy_state", tool.get_expire(), 0) |
| | | |
| | | # 是否可以下单 |
| | | @classmethod |
| | | def is_can_buy(cls): |
| | | # 默认设置为可交易 |
| | | val = RedisUtils.get(cls.__get_redis(), "trade_buy_state") |
| | | val = RedisUtils.get(cls.__get_redis(), "ls_trade_buy_state") |
| | | if val is None: |
| | | return True |
| | | if int(val) == 1: |
| | |
| | | __CodesTradeStateManager = CodesTradeStateManager() |
| | | |
| | | if __name__ == "__main__": |
| | | PlatePlaceOrderManager().add_plates_code({"通信","计算机"}, "000333") |
| | | PlatePlaceOrderManager().add_plates_code({"通信", "计算机"}, "000333") |
| | | place_order_plate_codes = PlatePlaceOrderManager().get_plate_codes() |
| | | code_sets = [set(lst) for lst in place_order_plate_codes.values()] |
| | | # 2. 使用 set.union() 求并集 |