from strategy_db import TradeTarget import strategy_db from util import getInstrumentName, getStockPosition from xtquant import xttrader, xtdata, xtconstant from xtquant.xttype import StockAccount import sfgrid_constants class StockTradeController: def __init__(self, tradeTarget: TradeTarget, xt_trader: xttrader.XtQuantTrader, account: StockAccount, enabled: bool = False): self.tradeTarget = tradeTarget self.xt_trader = xt_trader self.account = account self.currentPosition = getStockPosition(self.tradeTarget.stock_code, self.xt_trader, self.account) self.tradeRecords = strategy_db.TradeRecord.select().where(strategy_db.TradeRecord.stock_code == self.tradeTarget.stock_code).order_by(strategy_db.TradeRecord.trade_time.desc()) def enabledTrading(self, enabled: bool): self.tradeTarget.enabled = enabled self.tradeTarget.save() # 建仓状态检查 if self.tradeTarget.current_position == 0 and self.tradeTarget.status == 0: self.tradeTarget.grid_index = 1 self.tradeTarget.save() self.initBuyOrderId = self.xt_trader.order_stock( self.account, self.tradeTarget.stock_code, xtconstant.STOCK_BUY, sfgrid_constants.grid_volume, xtconstant.FIX_PRICE, sfgrid_constants.grid_price[self.tradeTarget.grid_index], 'sf_grid', f'{self.tradeTarget.stock_code}_init_buy') def isEnabled(self) -> bool: return self.tradeTarget.enabled def onDataUpdate(self, data): if self.isEnabled(): print(f"标的{self.tradeTarget.stock_code}-{self.tradeTarget.stock_name} 行情数据更新 {data[self.tradeTarget.stock_code]}\n") # Description: 程序启动后 def check_stock_position(self): volume = getStockPosition(self.tradeTarget.stock_code, self.xt_trader, self.account) pass # Description: 新标的,建基础仓 def init_stock_position(self): pass # Description: 双向下单 def two_way_order(self): pass