代码简化

This commit is contained in:
2025-11-04 12:01:18 +08:00
parent c6d253b293
commit 2fdc57e2b8
2 changed files with 32 additions and 78 deletions
+11 -11
View File
@@ -7,7 +7,7 @@ import xtquant.xtconstant as xtconstant
sys.stdout.reconfigure(encoding='utf-8') # 设置标准输出编码为UTF-8 # type: ignore
import core.strategy_db as strategy_db
import sfgrid_constants
from core.sfgrid_trade_controller import StockTradeController
from core.sfgrid_strategy import SFGridStrategy
from core.util import getInstrumentName, getStockPosition
from xtquant.xttrader import XtQuantTrader
from xtquant.xttype import StockAccount, XtAsset, XtOrder, XtOrderResponse, XtPosition, XtTrade
@@ -92,7 +92,7 @@ class SFGridController(XtQuantTraderCallback):
# 更新标的池
self.refresh_targets()
# 添加交易控制器
stockTradeController = StockTradeController(new_target, self.xt_trader, self.account, new_target.enabled) # type: ignore
stockTradeController = SFGridStrategy(new_target, self.xt_trader, self.account, new_target.enabled) # type: ignore
self.stock_trade_ctrl[stock_code] = stockTradeController
except Exception as e:
@@ -115,7 +115,7 @@ class SFGridController(XtQuantTraderCallback):
tradeTarget.current_position = getStockPosition(tradeTarget.stock_code, xtTrader, account) # type: ignore
result = tradeTarget.save()
print(f' |- 同步当前持仓信息 {tradeTarget.stock_code}, {tradeTarget.current_position}, result = {result}')
stockTradeController = StockTradeController(tradeTarget, self.xt_trader, self.account, tradeTarget.enabled) # type: ignore
stockTradeController = SFGridStrategy(tradeTarget, self.xt_trader, self.account, tradeTarget.enabled) # type: ignore
self.stock_trade_ctrl[tradeTarget.stock_code] = stockTradeController
print(f'- [成功]交易标的信息初始化, 共 {len(self.instrument_pool)} 个标的')
@@ -180,14 +180,14 @@ class SFGridController(XtQuantTraderCallback):
tradeTarget = self.instrument_pool[index]
# check existing thread
if tradeTarget.stock_code in self.stock_trade_ctrl:
tradeController: StockTradeController = self.stock_trade_ctrl[tradeTarget.stock_code]
tradeController: SFGridStrategy = self.stock_trade_ctrl[tradeTarget.stock_code]
if tradeController.isEnabled():
print(f"标的交易控制器已存在且正在运行 {tradeTarget.stock_code} {getInstrumentName(tradeTarget.stock_code)}\n")
else:
print(f"标的交易控制器已存在但未运行,重新启动 {tradeTarget.stock_code} {getInstrumentName(tradeTarget.stock_code)}\n")
tradeController.enabledTrading(True)
else:
stockTradeController = StockTradeController(tradeTarget, self.xt_trader, self.account, tradeTarget.enabled) # type: ignore
stockTradeController = SFGridStrategy(tradeTarget, self.xt_trader, self.account, tradeTarget.enabled) # type: ignore
self.stock_trade_ctrl[tradeTarget.stock_code] = stockTradeController
print(f"\t创建标的交易控制器 {tradeTarget.stock_code} {getInstrumentName(tradeTarget.stock_code)}")
@@ -195,7 +195,7 @@ class SFGridController(XtQuantTraderCallback):
def pause_stock_trade(self, index: int):
tradeTarget = self.instrument_pool[index]
if tradeTarget.stock_code in self.stock_trade_ctrl:
tradeController: StockTradeController = self.stock_trade_ctrl[tradeTarget.stock_code]
tradeController: SFGridStrategy = self.stock_trade_ctrl[tradeTarget.stock_code]
if tradeController.isEnabled():
print(f"暂停标的交易 {tradeTarget.stock_code} {getInstrumentName(tradeTarget.stock_code)}\n")
tradeController.enabledTrading(False)
@@ -222,7 +222,7 @@ class SFGridController(XtQuantTraderCallback):
if stock_code not in self.stock_trade_ctrl or stock_code not in data:
# print(f"股票代码 {stock_code} 未在交易控制器中找到,跳过处理。\n")
continue
stock_controller: StockTradeController = self.stock_trade_ctrl[stock_code]
stock_controller: SFGridStrategy = self.stock_trade_ctrl[stock_code]
stock_controller.onDataUpdate(data)
@@ -247,7 +247,7 @@ class SFGridController(XtQuantTraderCallback):
:return:
"""
stockCode = order.stock_code
ctrl:StockTradeController = self.stock_trade_ctrl[stockCode]
ctrl:SFGridStrategy = self.stock_trade_ctrl[stockCode]
# 如果存在对应的StockTradeController,则调用其onDataUpdate方法
if ctrl is not None and order.strategy_name == ctrl.getName():
ctrl.onOrderTrade(trade=order) # type: ignore
@@ -256,7 +256,7 @@ class SFGridController(XtQuantTraderCallback):
def test_sim_trade(self, index: int, orderType: int):
tradeTarget:strategy_db.TradeTarget = self.instrument_pool[index]
ctrl:StockTradeController = self.stock_trade_ctrl[tradeTarget.stock_code]
ctrl:SFGridStrategy = self.stock_trade_ctrl[tradeTarget.stock_code]
trade: XtTrade = None # type: ignore
if orderType == xtconstant.STOCK_BUY:
trade = XtTrade(
@@ -277,7 +277,7 @@ class SFGridController(XtQuantTraderCallback):
:return:
"""
stockCode = trade.stock_code
ctrl:StockTradeController = self.stock_trade_ctrl[stockCode]
ctrl:SFGridStrategy = self.stock_trade_ctrl[stockCode]
# 如果存在对应的StockTradeController,则调用其onDataUpdate方法
if ctrl is not None and trade.strategy_name == ctrl.getName():
ctrl.onOrderTrade(trade)
@@ -286,7 +286,7 @@ class SFGridController(XtQuantTraderCallback):
def on_order_stock_async_response(self, response:XtOrderResponse):
stockCode = response.order_remark
ctrl:StockTradeController = self.stock_trade_ctrl[stockCode]
ctrl:SFGridStrategy = self.stock_trade_ctrl[stockCode]
# 如果存在对应的StockTradeController,则调用其onDataUpdate方法
if ctrl is not None and response.strategy_name == ctrl.getName():
ctrl.onAsyncOrderResponse(response)