开始写策略了,建仓逻辑

This commit is contained in:
2025-10-28 18:12:15 +08:00
parent 3443271771
commit c928b79c83
2 changed files with 46 additions and 32 deletions
+23 -17
View File
@@ -6,11 +6,12 @@ import sfgrid_constants
from sfgrid_trade_controller import StockTradeController
from util import getInstrumentName, getStockPosition
from xtquant.xttrader import XtQuantTrader
from xtquant.xttype import StockAccount
from xtquant.xttype import StockAccount, XtOrder
from xtquant import xtdata
from xtquant.xttrader import XtQuantTraderCallback
import datetime
# 量化核心控制对象
class SFGridController(XtQuantTraderCallback):
def __init__(self, account_no: str, miniQmtPath: str):
super().__init__()
@@ -40,20 +41,6 @@ class SFGridController(XtQuantTraderCallback):
xtdata.unsubscribe_quote(self.seq)
def onDataUpdate(self, data):
# 遍历股池
for target in self.instrument_pool:
stock_code = target.stock_code
# 如果存在对应的StockTradeController,则调用其onDataUpdate方法
if stock_code not in self.stock_trade_ctrl:
print(f"股票代码 {stock_code} 未在交易控制器中找到,跳过处理。\n")
continue
if stock_code not in data:
print(f"股票代码 {stock_code} 未在行情数据中找到,跳过处理。\n")
continue
stock_controller: StockTradeController = self.stock_trade_ctrl[stock_code]
stock_controller.onDataUpdate(data)
def add_trade_target(self, stock_code):
try:
stock_name = getInstrumentName(stock_code)
@@ -179,9 +166,24 @@ class SFGridController(XtQuantTraderCallback):
print(f"标的交易控制器不存在 {tradeTarget.stock_code} {getInstrumentName(tradeTarget.stock_code)}\n")
# ====== 市场回调方法 -- 以下方法由XtQuantTrader调用 ======
# ====== 市场回调方法 -- 以下方法由XtQuantData调用 ======
def onDataUpdate(self, data):
# 遍历股池
for target in self.instrument_pool:
stock_code = target.stock_code
# 如果存在对应的StockTradeController,则调用其onDataUpdate方法
if stock_code not in self.stock_trade_ctrl:
print(f"股票代码 {stock_code} 未在交易控制器中找到,跳过处理。\n")
continue
if stock_code not in data:
print(f"股票代码 {stock_code} 未在行情数据中找到,跳过处理。\n")
continue
stock_controller: StockTradeController = self.stock_trade_ctrl[stock_code]
stock_controller.onDataUpdate(data)
# ====== 市场回调方法 -- 以下方法由XtQuantTrader调用 ======
def on_connected(self):
"""
连接成功推送
@@ -195,12 +197,16 @@ class SFGridController(XtQuantTraderCallback):
"""
print(datetime.datetime.now(), '连接断开回调')
def on_stock_order(self, order):
def on_stock_order(self, order:XtOrder):
"""
委托回报推送
:param order: XtOrder对象
:return:
"""
stockCode = order.stock_code
# 如果存在对应的StockTradeController,则调用其onDataUpdate方法
if stockCode not in self.stock_trade_ctrl:
self.stock_trade_ctrl[stockCode].onOrderUpdate(order)
print(datetime.datetime.now(), '委托回调 投资备注', order.order_remark)
def on_stock_trade(self, trade):