Files
sfgrid/stock_trade_controller.py
T
2025-10-28 15:19:12 +08:00

48 lines
1.8 KiB
Python

import threading
import time
from strategy_db import TradeTarget
import strategy_db
from util import getInstrumentName, getStockPosition
from xtquant import xttrader, xtdata
from xtquant.xttype import StockAccount
class StockTradeController:
def __init__(self, tradeTarget: TradeTarget, xt_trader: xttrader.XtQuantTrader, account: StockAccount, enabled: bool = False):
super().__init__() #必须调用父类的初始化方法
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())
print(f"创建标的交易线程 {self.tradeTarget.stock_code} {getInstrumentName(self.tradeTarget.stock_code)} {tradeTarget}\n")
xtdata.subscribe_quote(tradeTarget.stock_code, period='tick', start_time='', end_time='', count=0, callback=self.onDataUpdate)
def enabledTrading(self, enabled: bool):
self.tradeTarget.enabled = enabled
self.tradeTarget.save()
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