完成添加,删除,开启,停止方法的重构

This commit is contained in:
2025-11-11 18:09:42 +08:00
parent 54fd7c9545
commit 0dbd8e8dde
3 changed files with 22 additions and 43 deletions
+2 -7
View File
@@ -1,18 +1,13 @@
import time
import tkinter as tk
from tkinter import ttk
from core.logger import LogLevel, PrintLog
from core.sfgrid.sfgrid_ui import TradeTargetUI
import config
from xtquant import xtdata
from xtquant.xttrader import XtQuantTrader, XtQuantTraderCallback
import datetime
from xtquant.xttype import StockAccount, XtAsset, XtOrder, XtOrderResponse, XtPosition, XtTrade
class MainWindow:
def __init__(self):
self.root = tk.Tk()
self.root.title("三疯交易系统")
self.root.title("神之一手 - 交易系统")
self.root.geometry("1400x700")
# 当前选中的策略Tab索引
-27
View File
@@ -36,8 +36,6 @@ class SFGridController:
def registerEventHandler(self):
event_bus.subscribe(ActionEventEnableTrade, self.onEnableTrade)
event_bus.subscribe(ActionEventDisableTrade, self.onDisableTrade)
event_bus.subscribe(ActionEventAddTradeTarget, self.onAddTradeTarget)
event_bus.subscribe(ActionEventDeleteTradeTarget, self.onDeleteTradeTarget)
event_bus.subscribe(ActionEventGridFix, self.onGridFix)
@@ -90,14 +88,6 @@ class SFGridController:
except Exception as e:
PrintLog(LogLevel.ERROR, f'新增交易标的失败 {stock_code} {e}')
def onEnableTrade(self, id: int):
pass
# self.start_stock_trade(id)
def onDisableTrade(self, id: int):
pass
# self.pause_stock_trade(id)
def onGridFix(self, data: GridFixData):
"""处理网格修正事件"""
@@ -139,23 +129,6 @@ class SFGridController:
# else:
# PrintLog(LogLevel.INFO, f"\t创建标的交易控制器 {tradeTarget.stock_code} {getInstrumentName(tradeTarget.stock_code)}")
# def pause_stock_trade(self, id: int):
# localTarget: TradeTarget = self.instrument_pool[id]
# print(f'暂停标的交易 {localTarget.stock_code} - enabled {localTarget.enabled}')
# if localTarget.stock_code in self.stock_trade_ctrl:
# tradeController: SFGridStrategy = self.stock_trade_ctrl[localTarget.stock_code]
# tradeTarget = tradeController.enabledTrading(False)
# orders = queryPendingOrder(localTarget.stock_code, tradeController.getName(), self.xt_trader, self.account) # type: ignore
# for order in orders:
# qmtv.xttrader.cancel_order_stock_async(qmtv.account, order.order_id)
# print(f'取消未成交订单 {len(orders)}')
# self.instrument_pool[id] = tradeTarget
# event_bus.publish(ResultEventTradeDisabled, tradeTarget)
# else:
# print(f"标的交易控制器不存在 {localTarget.stock_code} {localTarget.stock_name}\n")
# ====== 市场回调方法 -- 以下方法由XtQuantData调用 ======
# def onDataUpdate(self, data):
# # 收集所有市场数据用于市场监控
+20 -9
View File
@@ -352,7 +352,6 @@ class TradeTargetUI(ttk.Frame):
]
self.trade_table.insert('', tk.END, values=values)
def get_status_text(self, status):
@@ -408,13 +407,16 @@ class TradeTargetUI(ttk.Frame):
)
if result:
PrintLog(LogLevel.INFO, f'启动标的交易 {target.targetName()}')
target.enabled = True # type: ignore
eBus.event_bus.publish(ActionEventEnableTrade, target.get_id())
# self.add_log("INFO", f"已启动交易: {target.stock_code} - {target.stock_name}")
# messagebox.showinfo("启动成功", f"已启动 {target.stock_code} ({target.stock_name}) 的交易")
def on_trade_enabled(self, target: SFGridTradeTarget):
eBus.event_bus.publish(ActionEventEnableTrade, target)
id = target.get_id()
if id in self.strategy_ctrl:
tradeController: SFGridStrategy = self.strategy_ctrl[target.get_id()]
tradeTarget = tradeController.enabledTrading(True)
self.tradeTargetData[id] = tradeTarget
else:
PrintLog(LogLevel.INFO, f"\t创建标的交易控制器 {target.targetName()}")
def pause_selected_trade(self):
"""暂停选中的交易"""
@@ -434,8 +436,18 @@ class TradeTargetUI(ttk.Frame):
)
if result:
target.enabled = False # type: ignore
eBus.event_bus.publish(ActionEventDisableTrade, target.get_id())
PrintLog(LogLevel.INFO, f'暂停标的交易 {target.targetName()}')
id = target.get_id()
if id in self.strategy_ctrl:
tradeController: SFGridStrategy = self.strategy_ctrl[target.get_id()]
tradeTarget = tradeController.enabledTrading(False)
orders = qmtv.queryPendingOrder(target.stock_code, tradeController.getName()) # type: ignore
for order in orders:
qmtv.xttrader.cancel_order_stock_async(qmtv.account, order.order_id)
print(f'取消未成交订单 {len(orders)}')
self.tradeTargetData[id] = tradeTarget
else:
print(f"标的交易控制器不存在 {target.stock_code} {target.stock_name}\n")
# self.add_log("INFO", f"已暂停交易: {target.stock_code} - {target.stock_name}")
# messagebox.showinfo("暂停成功", f"已暂停 {target.stock_code} ({target.stock_name}) 的交易")
@@ -516,7 +528,6 @@ class TradeTargetUI(ttk.Frame):
PrintLog(LogLevel.INFO, "点击添加交易标的按钮")
def refresh_table(self):
"""刷新表格数据"""
# 保存当前选中的项