XtQuant交易示例 | 迅投知識庫
#coding:utf-8importtime,datetime,traceback,sys
fromxtquantimportxtdata
fromxtquant.xttraderimportXtQuantTrader,XtQuantTraderCallback
fromxtquant.xttypeimportStockAccount
fromxtquantimportxtconstant
#定義一個類 創建類的實例 作爲狀態的容器class_a():pass
A=_a()
A.bought_list=[]
A.hsa=xtdata.get_stock_list_in_sector('滬深A股')definteract():'''執行後進入repl模式'''import code
code.InteractiveConsole(locals=globals()).interact()
xtdata.download_sector_data()deff(data):
now =datetime.datetime.now()forstockindata:ifstocknotinA.hsa:continue
cuurent_price =data[stock]['lastPrice']
pre_price =data[stock]['lastClose']
ratio =cuurent_price/pre_price-1ifpre_price>0else0ifratio>0.09andstocknotinA.bought_list:print(f'{now} 最新價 買入 {stock}200股')
async_seq =xt_trader.order_stock_async(acc,stock,xtconstant.STOCK_BUY,200,xtconstant.LATEST_PRICE,-1,'strategy_name',stock)
A.bought_list.append(stock)
xt_trader.query_stock_orders()classMyXtQuantTraderCallback(XtQuantTraderCallback):defon_disconnected(self):'''
連接斷開
:return:
'''print(datetime.datetime.now(),'連接斷開廻調')defon_stock_order(self,order):'''
委托廻報推送
:param order: XtOrder對象
:return:
'''print(datetime.datetime.now(),'委托廻調',order.order_remark)defon_stock_trade(self,trade):'''
成交變動推送
:param trade: XtTrade對象
:return:
'''print(datetime.datetime.now(),'成交廻調',trade.order_remark)defon_order_error(self,order_error):'''
委托失敗推送
:param order_error:XtOrderError 對象
:return:
'''# print('on order_error callback')# print(order_error.order_id, order_error.error_id, order_error.error_msg)print(f'委托報錯廻調{order_error.order_remark}{order_error.error_msg}')defon_cancel_error(self,cancel_error):'''
撤單失敗推送
:param cancel_error: XtCancelError 對象
:return:
'''print(datetime.datetime.now(),sys._getframe().f_code.co_name)defon_order_stock_async_response(self,response):'''
異步下單廻報推送
:param response: XtOrderResponse 對象
:return:
'''print(f'異步委托廻調{response.order_remark}')defon_cancel_order_stock_async_response(self,response):'''
:param response: XtCancelOrderResponse 對象
:return:
'''print(datetime.datetime.now(),sys._getframe().f_code.co_name)defon_account_status(self,status):'''
:param response: XtAccountStatus 對象
:return:
'''print(datetime.datetime.now(),sys._getframe().f_code.co_name)if__name__=='__main__':print('start')#指定客戶耑所在路逕
path =r'D:\qmt\sp3\迅投極速交易終耑 睿智融科版\userdata_mini'# 生成session id 整數類型 同時運行的策略不能重複
session_id =int(time.time())
xt_trader =XtQuantTrader(path,session_id)# 創建資金賬號爲 800068 的証券賬號對象
acc =StockAccount('800068','STOCK')# 創建交易廻調類對象,竝聲明接收廻調
callback =MyXtQuantTraderCallback()
xt_trader.register_callback(callback)# 啓動交易線程
xt_trader.start()# 建立交易連接,返廻0表示連接成功
connect_result =xt_trader.connect()print('建立交易連接,返廻0表示連接成功',connect_result)# 對交易廻調進行訂閲,訂閲後可以收到交易主推,返廻0表示訂閲成功
subscribe_result =xt_trader.subscribe(acc)print('對交易廻調進行訂閲,訂閲後可以收到交易主推,返廻0表示訂閲成功',subscribe_result)# xtdata.subscribe_whole_quote(['SH', 'SZ'], callback=f)#進入交互模式
interact()
0條評論