完成添加,删除,开启,停止方法的重构
This commit is contained in:
+2
-7
@@ -1,18 +1,13 @@
|
|||||||
import time
|
|
||||||
import tkinter as tk
|
import tkinter as tk
|
||||||
from tkinter import ttk
|
from tkinter import ttk
|
||||||
from core.logger import LogLevel, PrintLog
|
from core.logger import LogLevel, PrintLog
|
||||||
from core.sfgrid.sfgrid_ui import TradeTargetUI
|
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:
|
class MainWindow:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.root = tk.Tk()
|
self.root = tk.Tk()
|
||||||
self.root.title("三疯交易系统")
|
self.root.title("神之一手 - 交易系统")
|
||||||
self.root.geometry("1400x700")
|
self.root.geometry("1400x700")
|
||||||
|
|
||||||
# 当前选中的策略Tab索引
|
# 当前选中的策略Tab索引
|
||||||
|
|||||||
@@ -36,8 +36,6 @@ class SFGridController:
|
|||||||
|
|
||||||
|
|
||||||
def registerEventHandler(self):
|
def registerEventHandler(self):
|
||||||
event_bus.subscribe(ActionEventEnableTrade, self.onEnableTrade)
|
|
||||||
event_bus.subscribe(ActionEventDisableTrade, self.onDisableTrade)
|
|
||||||
event_bus.subscribe(ActionEventAddTradeTarget, self.onAddTradeTarget)
|
event_bus.subscribe(ActionEventAddTradeTarget, self.onAddTradeTarget)
|
||||||
event_bus.subscribe(ActionEventDeleteTradeTarget, self.onDeleteTradeTarget)
|
event_bus.subscribe(ActionEventDeleteTradeTarget, self.onDeleteTradeTarget)
|
||||||
event_bus.subscribe(ActionEventGridFix, self.onGridFix)
|
event_bus.subscribe(ActionEventGridFix, self.onGridFix)
|
||||||
@@ -90,14 +88,6 @@ class SFGridController:
|
|||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
PrintLog(LogLevel.ERROR, f'新增交易标的失败 {stock_code} {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):
|
def onGridFix(self, data: GridFixData):
|
||||||
"""处理网格修正事件"""
|
"""处理网格修正事件"""
|
||||||
@@ -139,23 +129,6 @@ class SFGridController:
|
|||||||
# else:
|
# else:
|
||||||
# PrintLog(LogLevel.INFO, f"\t创建标的交易控制器 {tradeTarget.stock_code} {getInstrumentName(tradeTarget.stock_code)}")
|
# 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调用 ======
|
# ====== 市场回调方法 -- 以下方法由XtQuantData调用 ======
|
||||||
# def onDataUpdate(self, data):
|
# def onDataUpdate(self, data):
|
||||||
# # 收集所有市场数据用于市场监控
|
# # 收集所有市场数据用于市场监控
|
||||||
|
|||||||
@@ -352,7 +352,6 @@ class TradeTargetUI(ttk.Frame):
|
|||||||
]
|
]
|
||||||
|
|
||||||
self.trade_table.insert('', tk.END, values=values)
|
self.trade_table.insert('', tk.END, values=values)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def get_status_text(self, status):
|
def get_status_text(self, status):
|
||||||
@@ -408,13 +407,16 @@ class TradeTargetUI(ttk.Frame):
|
|||||||
)
|
)
|
||||||
|
|
||||||
if result:
|
if result:
|
||||||
|
PrintLog(LogLevel.INFO, f'启动标的交易 {target.targetName()}')
|
||||||
target.enabled = True # type: ignore
|
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):
|
id = target.get_id()
|
||||||
eBus.event_bus.publish(ActionEventEnableTrade, target)
|
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):
|
def pause_selected_trade(self):
|
||||||
"""暂停选中的交易"""
|
"""暂停选中的交易"""
|
||||||
@@ -434,8 +436,18 @@ class TradeTargetUI(ttk.Frame):
|
|||||||
)
|
)
|
||||||
|
|
||||||
if result:
|
if result:
|
||||||
target.enabled = False # type: ignore
|
PrintLog(LogLevel.INFO, f'暂停标的交易 {target.targetName()}')
|
||||||
eBus.event_bus.publish(ActionEventDisableTrade, target.get_id())
|
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}")
|
# self.add_log("INFO", f"已暂停交易: {target.stock_code} - {target.stock_name}")
|
||||||
# messagebox.showinfo("暂停成功", 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, "点击添加交易标的按钮")
|
PrintLog(LogLevel.INFO, "点击添加交易标的按钮")
|
||||||
|
|
||||||
|
|
||||||
def refresh_table(self):
|
def refresh_table(self):
|
||||||
"""刷新表格数据"""
|
"""刷新表格数据"""
|
||||||
# 保存当前选中的项
|
# 保存当前选中的项
|
||||||
|
|||||||
Reference in New Issue
Block a user