diff --git a/core/sfgrid/sfgrid_strategy.py b/core/sfgrid/sfgrid_strategy.py index d8506e1..17299d9 100644 --- a/core/sfgrid/sfgrid_strategy.py +++ b/core/sfgrid/sfgrid_strategy.py @@ -88,10 +88,11 @@ class SFGridStrategy: index: int = self.tradeTarget.grid_index # pyright: ignore[reportAssignmentType] orderRemark= "" status = "新建" if self.tradeTarget.status == 0 else "已建初始仓" - PrintLog(LogLevel.INFO, f'|- 市价更新[{self.tradeTarget.stock_code}-{self.tradeTarget.stock_name}] - 当前持仓: {self.tradeTarget.current_position} 当前价{lastPrice} 基准价格 {self.tradeTarget.getPriceGrid()[1]} 状态: {status} 启用交易线程: {'自动交易中' if self.tradeTarget.enabled else '交易已停止'}') - PrintLog(LogLevel.INFO, f'|- 市价更新[{self.tradeTarget.stock_code}-{self.tradeTarget.stock_name}] - 计划卖出价{self.tradeTarget.plan_sell_price}') - PrintLog(LogLevel.INFO, f'|- 市价更新[{self.tradeTarget.stock_code}-{self.tradeTarget.stock_name}] - 网格索引{index}, 网格价格{self.tradeTarget.getPriceGrid()[index]}') - PrintLog(LogLevel.INFO, f'|- 市价更新[{self.tradeTarget.stock_code}-{self.tradeTarget.stock_name}] - 计划买入价{self.tradeTarget.plan_buy_price}') + PrintLog(LogLevel.INFO, f'|- 市价更新[{self.tradeTarget.stock_code}-{self.tradeTarget.stock_name}] - 当前持仓: {self.tradeTarget.current_position} 当前价{lastPrice} 状态: {status} 启用交易线程: {'自动交易中' if self.tradeTarget.enabled else '交易已停止'}') + PrintLog(LogLevel.INFO, f'|- 市价更新[{self.tradeTarget.stock_code}-{self.tradeTarget.stock_name}] - 当前价 : \t{lastPrice}') + PrintLog(LogLevel.INFO, f'|- 市价更新[{self.tradeTarget.stock_code}-{self.tradeTarget.stock_name}] - 计划卖出价: \t{self.tradeTarget.plan_sell_price:.3f}') + PrintLog(LogLevel.INFO, f'|- 市价更新[{self.tradeTarget.stock_code}-{self.tradeTarget.stock_name}] - 网格价格({index}): \t{self.tradeTarget.getPriceGrid()[index]}') + PrintLog(LogLevel.INFO, f'|- 市价更新[{self.tradeTarget.stock_code}-{self.tradeTarget.stock_name}] - 计划买入价: \t{self.tradeTarget.plan_buy_price:.3f}') if self.tradeTarget.enabled and self.tradeTarget.status == 0 and lastPrice <= inTradeTarget.getPriceGrid()[1]: # 已启用,未建仓,准备建仓单信息 PrintLog(LogLevel.INFO, f'|- 市价更新[{self.tradeTarget.stock_code}-{self.tradeTarget.stock_name}] - 准备建仓单信息') orderPrice = inTradeTarget.getPriceGrid()[1] diff --git a/core/sfgrid/sfgrid_ui.py b/core/sfgrid/sfgrid_ui.py index dc3f44b..5e61ec1 100644 --- a/core/sfgrid/sfgrid_ui.py +++ b/core/sfgrid/sfgrid_ui.py @@ -22,6 +22,8 @@ class TradeTargetUI(ttk.Frame): self.stockCodeIdMap:dict[str, int] = {} self.strategy_ctrl:dict[int, SFGridStrategy] = {} # stock_code->trade_target self.listening_stock = [] + # 监控价格,默认值为10 + self.monitor_price = 10.0 self.init_trade_target_pool() @@ -61,7 +63,8 @@ class TradeTargetUI(ttk.Frame): else: # 非目标交易,发布市场数据更新事件用于市场监控 lastPrice = tickData['lastPrice'] - if lastPrice == 10 or stock_code in self.listening_stock: + # 使用用户设置的监控价格替代硬编码的10 + if lastPrice == self.monitor_price or stock_code in self.listening_stock: # PrintLog(LogLevel.INFO, f'股票代码: {stock_code} 监听中, 市场数据更新 {tickData["lastPrice"]}') # 发布市场数据更新事件用于市场监控 market_target = SFGridTradeTarget() @@ -125,11 +128,17 @@ class TradeTargetUI(ttk.Frame): command=self.btnHandlerStopSelectedTrade, width=12).pack(side=tk.LEFT, padx=2) ttk.Button(toolbar_frame, text="🛠 交易设置", command=self.btnHandlerTradeSettings, width=12).pack(side=tk.LEFT, padx=2) - # ttk.Button(toolbar_frame, text="🛠 网格修正(停用)", - # command=self.btnHandlerGridCorrect, - # width=12).pack(side=tk.LEFT, padx=2) + ttk.Button(toolbar_frame, text="▣ 边栏", - command=self.btnHandlerToggleMarketMonitor, width=12).pack(side=tk.RIGHT, padx=2) + command=self.btnHandlerToggleMarketMonitor, width=8).pack(side=tk.RIGHT, padx=2) + # 添加价格监控输入字段和确认按钮 + ttk.Button(toolbar_frame, text="确认", + command=self.btnHandlerSetMonitorPrice, width=8).pack(side=tk.RIGHT, padx=2) + self.monitor_price_entry = ttk.Entry(toolbar_frame, width=8) + self.monitor_price_entry.insert(0, str(self.monitor_price)) + self.monitor_price_entry.pack(side=tk.RIGHT, padx=2) + ttk.Label(toolbar_frame, text="价格").pack(side=tk.RIGHT, padx=(20, 2)) + ttk.Label(toolbar_frame, text="监控配置").pack(side=tk.RIGHT, padx=(20, 2)) # 表格区域 self.create_tables_area(main_frame) @@ -1115,4 +1124,26 @@ class TradeTargetUI(ttk.Frame): # 绑定回车键确认 stock_code_entry.bind('', lambda event: confirm_add()) - PrintLog(LogLevel.INFO, "点击添加交易标的按钮") \ No newline at end of file + PrintLog(LogLevel.INFO, "点击添加交易标的按钮") + + def btnHandlerSetMonitorPrice(self): + """设置监控价格""" + try: + # 获取输入的价格 + price_str = self.monitor_price_entry.get() + new_price = float(price_str) + + # 更新监控价格 + self.monitor_price = new_price + + # 清空当前监控的数据 + self.marketData.clear() + self.listening_stock.clear() + + # 清空市场监控表格 + for item in self.market_table.get_children(): + self.market_table.delete(item) + + PrintLog(LogLevel.INFO, f"监控价格已更新为: {new_price}") + except ValueError: + messagebox.showerror("错误", "请输入有效的数字")