diff --git a/core/main_ui.py b/core/main_ui.py index 87c2607..df9eed5 100644 --- a/core/main_ui.py +++ b/core/main_ui.py @@ -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索引 diff --git a/core/sfgrid/sfgrid_controller.py b/core/sfgrid/sfgrid_controller.py index bbcf010..e011675 100644 --- a/core/sfgrid/sfgrid_controller.py +++ b/core/sfgrid/sfgrid_controller.py @@ -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): # # 收集所有市场数据用于市场监控 diff --git a/core/sfgrid/sfgrid_ui.py b/core/sfgrid/sfgrid_ui.py index 7f19c43..558f652 100644 --- a/core/sfgrid/sfgrid_ui.py +++ b/core/sfgrid/sfgrid_ui.py @@ -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): """刷新表格数据""" # 保存当前选中的项