这里使用单例模式,确保Trader中的RPC实例和账户信息唯一:
class Singleton(object):
_instance = None
def __new__(class_, *args, **kwargs):
if not isinstance(class_._instance, class_):
class_._instance = object.__new__(class_, *args, **kwargs)
return class_._instance
class Trader(Singleton):
xt_trader = None
account = None
def set_trader(self, qmt_dir, session_id):
self.xt_trader = XtQuantTrader(qmt_dir, session_id)
# 启动交易线程
self.xt_trader.start()
# 建立交易连接,返回0表示连接成功
connect_result = self.xt_trader.connect()
return connect_result
def set_account(self, account_id, account_type):
self.account = StockAccount(account_id, account_type=account_type)
return self.account
@property
def get_account(self):
return self.account
@property
def get_trader(self):
return self.xt_trader