Revert "[Mod]add trader api of xtp"

This reverts commit 8a2489ebf9.
This commit is contained in:
vn.py 2019-04-25 19:15:01 +08:00
parent ee4f690e26
commit 1aa3b53726

View File

@ -9,9 +9,6 @@ from vnpy.api.xtp.vnxtp import (
XTPSpecificTickerStruct,
XTPTickByTickStruct,
XTPTickerPriceInfo,
XTPQueryOrderReq,
XTPQueryTraderReq,
XTPOrderInsertInfo,
XTP_EXCHANGE_TYPE,
XTP_LOG_LEVEL,
XTP_PROTOCOL_TYPE,
@ -21,17 +18,11 @@ from vnpy.api.xtp.vnxtp import (
XTP_TICKER_TYPE_BOND,
XTP_TICKER_TYPE_OPTION,
XTP_PROTOCOL_TCP,
XTP_PROTOCOL_UDP,
XTP_TERT_RESTART,
XTP_SIDE_BUY,
XTP_SIDE_SELL,
XTP_PRICE_LIMIT,
XTP_PRICE_BEST5_OR_CANCEL,
XTP_BUSINESS_TYPE_CASH
XTP_PROTOCOL_UDP
)
from vnpy.event import EventEngine
from vnpy.trader.constant import Exchange, Product, Direction, OrderType
from vnpy.trader.constant import Exchange, Product
from vnpy.trader.gateway import BaseGateway
from vnpy.trader.object import (CancelRequest, OrderRequest, SubscribeRequest,
TickData, ContractData, OrderData, TradeData,
@ -54,18 +45,6 @@ PRODUCT_XTP2VT = {
XTP_TICKER_TYPE_OPTION: Product.OPTION
}
DIRECTION_VT2XTP = {
Direction.LONG: XTP_SIDE_BUY,
Direction.SHORT: XTP_SIDE_SELL
}
DIRECTION_XTP2VT = {v: k for k, v in DIRECTION_VT2XTP.items()}
ORDERTYPE_VT2XTP = {
OrderType.LIMIT: XTP_PRICE_LIMIT,
OrderType.MARKET: XTP_PRICE_BEST5_OR_CANCEL
}
ORDERTYPE_XTP2VT = {v: k for k, v in ORDERTYPE_VT2XTP.items()}
symbol_name_map = {}
@ -88,7 +67,6 @@ class XtpGateway(BaseGateway):
super().__init__(event_engine, "XTP")
self.quote_api = XtpQuoteApi(self)
self.trader_api = XtpTraderApi(self)
def connect(self, setting: dict):
""""""
@ -97,47 +75,38 @@ class XtpGateway(BaseGateway):
client_id = setting['客户号']
quote_ip = setting['行情地址']
quote_port = setting['行情端口']
trader_ip = setting['交易地址']
trader_port = setting['交易端口']
trade_ip = setting['交易地址']
trade_port = setting['交易端口']
quote_protocol = setting["行情协议"]
self.quote_api.connect(userid, password, client_id,
quote_ip, quote_port, quote_protocol)
self.trader_api.connect(userid, password, client_id,
trader_ip, trader_port)
def close(self):
""""""
self.quote_api.close()
self.trader_api.close()
pass
def subscribe(self, req: SubscribeRequest):
""""""
self.quote_api.subscrbie(req)
def send_order(self, req: OrderRequest) -> str:
""""""
return self.trader_api.send_order(req)
pass
def cancel_order(self, req: CancelRequest):
""""""
self.trader_api.cancel_order(req)
pass
def query_account(self):
""""""
self.trader_api.query_account()
pass
def query_position(self):
""""""
self.trader_api.query_position()
pass
class XtpQuoteApi(API.QuoteSpi):
def __init__(self, gateway: BaseGateway):
""""""
super().__init__()
self.gateway = gateway
self.gateway_name = gateway.gateway_name
@ -197,17 +166,12 @@ class XtpQuoteApi(API.QuoteSpi):
if not ret:
msg = "行情服务器登录成功"
self.query_contract()
else:
msg = f"行情服务器登录失败,原因:{ret}"
self.gateway.write_log(msg)
def close(self):
""""""
if self.api:
self.api.RegisterSpi(None)
self.api.Release()
def subscrbie(self, req: SubscribeRequest):
""""""
xtp_exchange = EXCHANGE_VT2XTP.get(req.exchange, "")
@ -350,22 +314,23 @@ class XtpQuoteApi(API.QuoteSpi):
def OnQueryAllTickers(self, ticker_info: XTPQuoteStaticInfo, error_info: XTPRspInfoStruct,
is_last: bool) -> Any:
""""""
if self.check_error("查询合约", error_info):
return
return
# if self.check_error("查询合约", error_info):
# return
contract = ContractData(
symbol=ticker_info.ticker,
exchange=EXCHANGE_XTP2VT[ticker_info.exchange_id],
name=ticker_info.ticker_name,
product=PRODUCT_XTP2VT[ticker_info.ticker_type],
size=1,
pricetick=ticker_info.pricetick,
min_volume=ticker_info.buy_qty_unit,
gateway_name=self.gateway_name
)
self.gateway.on_contract(contract)
# contract = ContractData(
# symbol=ticker_info.ticker,
# exchange=EXCHANGE_XTP2VT[ticker_info.exchange_id],
# name=ticker_info.ticker_name,
# product=PRODUCT_XTP2VT[ticker_info.ticker_type],
# size=1,
# pricetick=ticker_info.pricetick,
# min_volume=ticker_info.buy_qty_unit,
# gateway_name=self.gateway_name
# )
# self.gateway.on_contract(contract)
symbol_name_map[contract.vt_symbol] = contract.name
# symbol_name_map[contract.vt_symbol] = contract.name
def OnQueryTickersPriceInfo(self, ticker_info: XTPTickerPriceInfo, error_info: XTPRspInfoStruct,
is_last: bool) -> Any:
@ -401,126 +366,3 @@ class XtpQuoteApi(API.QuoteSpi):
error_info: XTPRspInfoStruct) -> Any:
""""""
pass
class XtpTraderApi(API.TraderSpi):
def __init__(self, gateway: BaseGateway):
""""""
super().__init__()
self.gateway = gateway
self.gateway_name = gateway.gateway_name
self.userid = ""
self.password = ""
self.client_id = ""
self.server_ip = ""
self.server_port = ""
self.api = None
self.session_id = 0
self.reqid = 0
self.orderid = 0
def connect(
self,
userid: str,
password: str,
client_id: str,
server_ip: str,
server_port: str
):
""""""
if self.api:
return
self.userid = userid
self.password = password
self.client_id = client_id
self.server_ip = server_ip
self.server_port = server_port
# Create API object
path = str(get_folder_path(self.gateway_name.lower()))
self.api = API.TraderApi.CreateTraderApi(
self.client_id,
path,
XTP_LOG_LEVEL.XTP_LOG_LEVEL_TRACE
)
self.api.RegisterSpi(self)
self.api.SubscribePublicTopic(XTP_TERT_RESTART)
self.gateway.write_log("交易接口初始化成功")
# Login to server
self.session_id = self.api.Login(
self.server_ip,
self.server_port,
self.userid,
self.password,
XTP_PROTOCOL_TCP
)
if self.session_id:
msg = "交易服务器登录成功"
else:
reason = self.api.GetApiLastError()
msg = f"交易服务器登录失败,原因:{reason}"
self.gateway.write_log(msg)
def close(self):
""""""
if self.api:
self.api.RegisterSpi(None)
self.api.Release()
def send_order(self, req: OrderRequest) -> str:
""""""
self.orderid += 1
xtp_req = XTPOrderInsertInfo()
xtp_req.ticker = req.symbol
xtp_req.market = EXCHANGE_XTP2VT[req.exchange]
xtp_req.price = req.price
xtp_req.quantity = req.volume
xtp_req.order_client_id = self.client_id
xtp_req.order_xtp_id = self.orderid
xtp_req.side = DIRECTION_XTP2VT.get(req.direction, "")
xtp_req.price_type = ORDERTYPE_XTP2VT.get(req.type, "")
xtp_req.business_type = XTP_BUSINESS_TYPE_CASH
self.api.InsertOrder(xtp_req, self.session_id)
order = req.create_order_data(str(self.orderid))
self.gateway.on_order(order)
return order.vt_orderid
def cancel_order(self, req: CancelRequest):
""""""
self.api.CancelOrder(req.orderid, self.session_id)
def query_account(self):
""""""
self.reqid += 1
self.api.QueryAsset(self.session_id, self.reqid)
def query_position(self):
""""""
self.reqid += 1
self.api.QueryPosition("", self.session_id, self.reqid)
def query_order(self):
""""""
self.reqid += 1
self.api.QueryOrders(XTPQueryOrderReq(), self.session_id, self.reqid)
def query_trade(self):
""""""
self.reqid += 1
self.api.QueryTrades(XTPQueryTraderReq(), self.session_id, self.reqid)