57 lines
2.1 KiB
Python
57 lines
2.1 KiB
Python
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 |