|
|
|
@@ -9,7 +9,7 @@ from core.logger import LogLevel, PrintLog
|
|
|
|
|
from xtquant.xttrader import XtQuantTrader, XtQuantTraderCallback
|
|
|
|
|
from xtquant.xttype import StockAccount
|
|
|
|
|
from xtquant import xtconstant, xtdata
|
|
|
|
|
import core.eventbus as eBus
|
|
|
|
|
from eventbus import marketDataEventBus, EventMarketActiveSwitch, MarketDataUpdate, MarketOrderCreated, MarketOrderTraded
|
|
|
|
|
|
|
|
|
|
class QmtV(XtQuantTraderCallback):
|
|
|
|
|
def __init__(self) -> None:
|
|
|
|
@@ -118,7 +118,7 @@ class QmtV(XtQuantTraderCallback):
|
|
|
|
|
# ====== 市场回调方法 -- 以下方法由XtQuantData调用 ======
|
|
|
|
|
def onDataUpdate(self, data):
|
|
|
|
|
# 收集所有市场数据用于市场监控
|
|
|
|
|
eBus.event_bus.publish(eBus.MarketDataUpdate, data)
|
|
|
|
|
marketDataEventBus.publish(marketDataEventBus.MarketDataUpdate, data)
|
|
|
|
|
now = time.time()
|
|
|
|
|
if now - self.lastMarketDataUpdateTimestamp < 5:
|
|
|
|
|
self.isMarketActive = True
|
|
|
|
@@ -133,7 +133,7 @@ class QmtV(XtQuantTraderCallback):
|
|
|
|
|
if tmpMarketStatus != self.isMarketActive and tmpTime - self.lastMarketDataUpdateTimestamp < 5:
|
|
|
|
|
tmpMarketStatus = self.isMarketActive
|
|
|
|
|
PrintLog(LogLevel.INFO, f'- [市场状态变更] {self.isMarketActive}')
|
|
|
|
|
eBus.event_bus.publish(eBus.EventMarketActiveSwitch, self.isMarketActive)
|
|
|
|
|
marketDataEventBus.publish(EventMarketActiveSwitch, self.isMarketActive)
|
|
|
|
|
if tmpMarketStatus and self.isMarketActive and tmpTime - self.lastMarketDataUpdateTimestamp > 10: # 上次更新市场状态已经超过10秒
|
|
|
|
|
self.isMarketActive = False
|
|
|
|
|
PrintLog(LogLevel.INFO, f'- [市场状态变更] {self.isMarketActive}')
|
|
|
|
@@ -171,7 +171,7 @@ class QmtV(XtQuantTraderCallback):
|
|
|
|
|
:param trade: XtTrade对象
|
|
|
|
|
:return:
|
|
|
|
|
"""
|
|
|
|
|
eBus.event_bus.publish(eBus.MarketOrderTraded, trade)
|
|
|
|
|
marketDataEventBus.publish(MarketOrderTraded, trade)
|
|
|
|
|
# stockCode = trade.stock_code
|
|
|
|
|
# ctrl:SFGridStrategy = self.stock_trade_ctrl[stockCode]
|
|
|
|
|
# # 如果存在对应的StockTradeController,则调用其onDataUpdate方法
|
|
|
|
@@ -182,7 +182,7 @@ class QmtV(XtQuantTraderCallback):
|
|
|
|
|
|
|
|
|
|
def on_order_stock_async_response(self, response:XtOrderResponse):
|
|
|
|
|
# print(f"委托回调 on_order_stock_async_response 投资备注 {response.order_id} {response.seq} {response.error_msg}{response.strategy_name} {response.order_remark}")
|
|
|
|
|
eBus.event_bus.publish(eBus.MarketOrderCreated, response)
|
|
|
|
|
marketDataEventBus.publish(MarketOrderCreated, response)
|
|
|
|
|
|
|
|
|
|
# stockCode = response.order_remark
|
|
|
|
|
# ctrl:SFGridStrategy = self.stock_trade_ctrl[stockCode]
|
|
|
|
@@ -208,5 +208,3 @@ class QmtV(XtQuantTraderCallback):
|
|
|
|
|
"""
|
|
|
|
|
print(datetime.datetime.now(), status)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
qmtv = QmtV()
|
|
|
|
|