update
This commit is contained in:
@@ -8,7 +8,7 @@ from core.constants import OrderTypeBuy, OrderTypeInit, OrderTypeSell
|
||||
from core.util import is_trading_time
|
||||
|
||||
from xtquant import xtconstant
|
||||
from xtquant.xttype import XtOrder, XtOrderResponse, XtTrade
|
||||
from xtquant.xttype import XtOrderResponse, XtTrade
|
||||
import threading
|
||||
import core.eventbus as eBus
|
||||
|
||||
@@ -18,6 +18,7 @@ class SFGridStrategy:
|
||||
def __init__(self, tradeTarget: model.SFGridTradeTarget):
|
||||
self.tradeTarget:model.SFGridTradeTarget = tradeTarget
|
||||
self.enabledTrading(tradeTarget.enabled) # type: ignore
|
||||
event_bus.subscribe(eBus.MarketOrderCreated, self.onOrderCreateAsync)
|
||||
event_bus.subscribe(eBus.MarketOrderTraded, self.onOrderTrade)
|
||||
self.refreshPlanPrice()
|
||||
self.dataUpdateLock = threading.Lock()
|
||||
@@ -91,7 +92,7 @@ class SFGridStrategy:
|
||||
PrintLog(LogLevel.INFO, f'|- 市价更新[{self.tradeTarget.stock_code}-{self.tradeTarget.stock_name}] - 计划买入价{self.tradeTarget.plan_buy_price}, 计划卖出价{self.tradeTarget.plan_sell_price}')
|
||||
if self.tradeTarget.enabled and self.tradeTarget.status == 0 and lastPrice <= inTradeTarget.getPriceGrid()[1]: # 已启用,未建仓,准备建仓单信息
|
||||
PrintLog(LogLevel.INFO, f'|- 市价更新[{self.tradeTarget.stock_code}-{self.tradeTarget.stock_name}] - 准备建仓单信息')
|
||||
orderPrice = inTradeTarget.getPriceGrid()[index]
|
||||
orderPrice = inTradeTarget.getPriceGrid()[1]
|
||||
orderType = xtconstant.STOCK_BUY
|
||||
orderRemark = OrderTypeInit
|
||||
elif self.tradeTarget.enabled and self.tradeTarget.status == 1 and self.tradeTarget.plan_buy_price > 0 and lastPrice <= self.tradeTarget.plan_buy_price:
|
||||
@@ -139,17 +140,15 @@ class SFGridStrategy:
|
||||
self.dataUpdateLock.release()
|
||||
print(f'|- 市价更新[{self.tradeTarget.stock_code}-{self.tradeTarget.stock_name}] - END')
|
||||
|
||||
def onOrderCreate(self, order:XtOrder):
|
||||
if order.strategy_name == self.getName():
|
||||
print(f"委托创建通知 onOrderCreate[{self.tradeTarget.stock_code}-{self.tradeTarget.stock_name}]: {order.order_id}")
|
||||
self.tradeTarget.current_order_no = order.order_id
|
||||
self.saveProxy()
|
||||
|
||||
def onOrderCreateAsync(self, response:XtOrderResponse):
|
||||
if response.strategy_name == self.getName():
|
||||
print(f"委托创建通知 onOrderCreateAsync[{self.tradeTarget.stock_code}-{self.tradeTarget.stock_name}]: {response.order_id}")
|
||||
self.tradeTarget.current_order_no = response.order_id
|
||||
self.saveProxy()
|
||||
self.dataUpdateLock.acquire()
|
||||
try:
|
||||
if response.strategy_name == self.getName() and response.seq == self.tradeTarget.current_order_no:
|
||||
print(f"委托创建通知 onOrderCreateAsync[{self.tradeTarget.stock_code}-{self.tradeTarget.stock_name}]: {response.order_id}")
|
||||
self.tradeTarget.current_order_no = response.order_id
|
||||
self.saveProxy()
|
||||
finally:
|
||||
self.dataUpdateLock.release()
|
||||
|
||||
def onOrderTrade(self, trade:XtTrade):
|
||||
if trade.strategy_name != self.getName():
|
||||
|
||||
@@ -54,7 +54,7 @@ class TradeTargetUI(ttk.Frame):
|
||||
tradeTarget = self.tradeTargetData[id]
|
||||
lastPrice = float("{:.3f}".format(tickData['lastPrice']))
|
||||
tradeTarget.market_price = lastPrice # type: ignore
|
||||
self.updateTradeTarget(tradeTarget, False)
|
||||
self.updateTradeTarget(tradeTarget, False, True)
|
||||
else:
|
||||
# 非目标交易,发布市场数据更新事件用于市场监控
|
||||
lastPrice = tickData['lastPrice']
|
||||
@@ -82,7 +82,7 @@ class TradeTargetUI(ttk.Frame):
|
||||
self.tradeTargetData[id] = target
|
||||
|
||||
|
||||
def updateTradeTarget(self, target: SFGridTradeTarget, save: bool = True):
|
||||
def updateTradeTarget(self, target: SFGridTradeTarget, save: bool = True, priceChange:bool = False):
|
||||
if save:
|
||||
target.save()
|
||||
|
||||
@@ -98,6 +98,8 @@ class TradeTargetUI(ttk.Frame):
|
||||
self.strategy_ctrl[id] = SFGridStrategy(target) # pyright: ignore[reportArgumentType]
|
||||
else:
|
||||
self.strategy_ctrl[id].updateTradeTarget(target)
|
||||
if priceChange:
|
||||
self.strategy_ctrl[id].onDataUpdate(target)
|
||||
|
||||
# UI CREATE
|
||||
def create_ui(self):
|
||||
|
||||
Reference in New Issue
Block a user