完善部分逻辑
This commit is contained in:
+34
-13
@@ -48,7 +48,12 @@ class TradeTargetUI(ttk.Frame):
|
||||
tradeTarget:SFGridTradeTarget = temp
|
||||
pos = qmtv.getStockPosition(tradeTarget.stock_code)
|
||||
tradeTarget.current_position = 0 if pos is None else pos.volume # type: ignore
|
||||
self.targetAvgPrice[tradeTarget.get_id()] = pos.avg_price if pos is not None else 0.0
|
||||
if pos is None:
|
||||
self.targetAvgPrice[tradeTarget.get_id()] = 0.0
|
||||
else:
|
||||
self.targetAvgPrice[tradeTarget.get_id()] = pos.avg_price
|
||||
PrintLog(LogLevel.INFO, f'- [成功]获取持仓信息: {tradeTarget.stock_code} {tradeTarget.targetName()} {tradeTarget.current_position} {pos.avg_price}')
|
||||
|
||||
self.updateTradeTarget(tradeTarget, True) # 初始化的时候
|
||||
|
||||
PrintLog(LogLevel.INFO, f'- [成功]交易标的信息初始化, 共 {len(self.tradeTargetData)} 个标的')
|
||||
@@ -100,9 +105,12 @@ class TradeTargetUI(ttk.Frame):
|
||||
self.tradeTargetData[id] = target
|
||||
|
||||
if id not in self.strategy_ctrl:
|
||||
self.targetAvgPrice[id] = 0.0
|
||||
self.stockCodeIdMap[target.stock_code] = id # type: ignore
|
||||
self.strategy_ctrl[id] = SFGridStrategy(target) # pyright: ignore[reportArgumentType]
|
||||
if id in self.targetAvgPrice:
|
||||
pos = qmtv.getStockPosition(target.stock_code)
|
||||
if pos is not None:
|
||||
self.targetAvgPrice[id] = pos.avg_price
|
||||
|
||||
# UI CREATE
|
||||
def create_ui(self):
|
||||
@@ -189,14 +197,14 @@ class TradeTargetUI(ttk.Frame):
|
||||
# 专业化的列配置
|
||||
column_configs = {
|
||||
"ID": (50, tk.CENTER),
|
||||
"股票代码": (90, tk.CENTER),
|
||||
"股票代码": (80, tk.CENTER),
|
||||
"股票名称": (80, tk.E),
|
||||
"市场价": (70, tk.E),
|
||||
"当前持仓": (80, tk.E),
|
||||
"建仓成本": (70, tk.E),
|
||||
"平均成本": (70, tk.E),
|
||||
"网格匹配次数": (90, tk.E),
|
||||
"网格收益": (90, tk.E),
|
||||
"建仓成本": (60, tk.E),
|
||||
"平均成本": (60, tk.E),
|
||||
"网格匹配次数": (60, tk.E),
|
||||
"网格收益": (60, tk.E),
|
||||
"交易状态": (80, tk.CENTER)
|
||||
}
|
||||
|
||||
@@ -326,12 +334,21 @@ class TradeTargetUI(ttk.Frame):
|
||||
# 发布事件通知主控制器添加标的
|
||||
self.addTradeTarget(stock_code)
|
||||
|
||||
def get_trade_enabled_indicator(self, enabled: bool) -> str:
|
||||
def get_trade_enabled_indicator(self, target: SFGridTradeTarget) -> str:
|
||||
"""获取交易状态指示器"""
|
||||
if enabled:
|
||||
return "▶ 运行中"
|
||||
if target.status == -1:
|
||||
return "未配置交易参数"
|
||||
elif target.status == 0:
|
||||
if target.enabled:
|
||||
return "▶ 运行中(未建初始仓)"
|
||||
else:
|
||||
return "⏸ 已停止(未建初始仓)"
|
||||
else:
|
||||
return "⏸ 已停止"
|
||||
if target.enabled:
|
||||
return "▶ 运行中"
|
||||
else:
|
||||
return "⏸ 已停止"
|
||||
|
||||
|
||||
def populate_trade_table(self):
|
||||
"""填充交易标的表格数据"""
|
||||
@@ -343,10 +360,10 @@ class TradeTargetUI(ttk.Frame):
|
||||
f"{self.targetMarketPrice[id]:.3f}" if id in self.targetMarketPrice else '-', # "市场价"
|
||||
target.current_position, # "当前持仓"
|
||||
'-' if target.init_price is None else f"{target.init_price:.3f}", # "建仓成本"
|
||||
'-' if id not in self.targetMarketPrice else f"{self.targetAvgPrice[id]:.3f}", # "平均成本"
|
||||
f"{self.targetAvgPrice[id]:.3f}", # "平均成本"
|
||||
target.grid_match_count, # "网格匹配次数"
|
||||
f"{target.grid_total_profit:.3f}", # "网格收益"
|
||||
self.get_trade_enabled_indicator(target.enabled) # type: ignore
|
||||
self.get_trade_enabled_indicator(target) # type: ignore
|
||||
]
|
||||
|
||||
self.trade_table.insert('', tk.END, values=values)
|
||||
@@ -818,6 +835,10 @@ class TradeTargetUI(ttk.Frame):
|
||||
if not target:
|
||||
return
|
||||
|
||||
if target.status < 0:
|
||||
messagebox.showinfo("提示", f"{target.stock_code} ({target.stock_name}) 未配置交易参数, 请做交易设置。")
|
||||
return
|
||||
|
||||
if target.enabled: # type: ignore
|
||||
messagebox.showinfo("提示", f"{target.stock_code} ({target.stock_name}) 已经在运行中")
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user