[Add] support UserProductInfo in CtpGateway

This commit is contained in:
vn.py 2019-06-12 13:46:44 +08:00
parent 01e7a54f32
commit 8fcccd8b1c
2 changed files with 45 additions and 7 deletions

View File

@ -131,7 +131,8 @@ class CtpGateway(BaseGateway):
"交易服务器": "", "交易服务器": "",
"行情服务器": "", "行情服务器": "",
"产品名称": "", "产品名称": "",
"授权编码": "" "授权编码": "",
"产品信息": ""
} }
exchanges = list(EXCHANGE_CTP2VT.values()) exchanges = list(EXCHANGE_CTP2VT.values())
@ -152,13 +153,14 @@ class CtpGateway(BaseGateway):
md_address = setting["行情服务器"] md_address = setting["行情服务器"]
appid = setting["产品名称"] appid = setting["产品名称"]
auth_code = setting["授权编码"] auth_code = setting["授权编码"]
product_info = setting["产品信息"]
if not td_address.startswith("tcp://"): if not td_address.startswith("tcp://"):
td_address = "tcp://" + td_address td_address = "tcp://" + td_address
if not md_address.startswith("tcp://"): if not md_address.startswith("tcp://"):
md_address = "tcp://" + md_address md_address = "tcp://" + md_address
self.td_api.connect(td_address, userid, password, brokerid, auth_code, appid) self.td_api.connect(td_address, userid, password, brokerid, auth_code, appid, product_info)
self.md_api.connect(md_address, userid, password, brokerid) self.md_api.connect(md_address, userid, password, brokerid)
self.init_query() self.init_query()
@ -378,6 +380,7 @@ class CtpTdApi(TdApi):
self.brokerid = 0 self.brokerid = 0
self.auth_code = "" self.auth_code = ""
self.appid = "" self.appid = ""
self.product_info = ""
self.frontid = 0 self.frontid = 0
self.sessionid = 0 self.sessionid = 0
@ -635,7 +638,16 @@ class CtpTdApi(TdApi):
) )
self.gateway.on_trade(trade) self.gateway.on_trade(trade)
def connect(self, address: str, userid: str, password: str, brokerid: int, auth_code: str, appid: str): def connect(
self,
address: str,
userid: str,
password: str,
brokerid: int,
auth_code: str,
appid: str,
product_info
):
""" """
Start connection to server. Start connection to server.
""" """
@ -644,6 +656,7 @@ class CtpTdApi(TdApi):
self.brokerid = brokerid self.brokerid = brokerid
self.auth_code = auth_code self.auth_code = auth_code
self.appid = appid self.appid = appid
self.product_info = product_info
if not self.connect_status: if not self.connect_status:
path = get_folder_path(self.gateway_name.lower()) path = get_folder_path(self.gateway_name.lower())
@ -668,6 +681,9 @@ class CtpTdApi(TdApi):
"AppID": self.appid "AppID": self.appid
} }
if self.product_info:
req["UserProductInfo"] = self.product_info
self.reqid += 1 self.reqid += 1
self.reqAuthenticate(req, self.reqid) self.reqAuthenticate(req, self.reqid)
@ -685,6 +701,9 @@ class CtpTdApi(TdApi):
"AppID": self.appid "AppID": self.appid
} }
if self.product_info:
req["UserProductInfo"] = self.product_info
self.reqid += 1 self.reqid += 1
self.reqUserLogin(req, self.reqid) self.reqUserLogin(req, self.reqid)

View File

@ -131,7 +131,8 @@ class CtptestGateway(BaseGateway):
"交易服务器": "", "交易服务器": "",
"行情服务器": "", "行情服务器": "",
"产品名称": "", "产品名称": "",
"授权编码": "" "授权编码": "",
"产品信息": ""
} }
exchanges = list(EXCHANGE_CTP2VT.values()) exchanges = list(EXCHANGE_CTP2VT.values())
@ -152,13 +153,14 @@ class CtptestGateway(BaseGateway):
md_address = setting["行情服务器"] md_address = setting["行情服务器"]
appid = setting["产品名称"] appid = setting["产品名称"]
auth_code = setting["授权编码"] auth_code = setting["授权编码"]
product_info = setting["产品信息"]
if not td_address.startswith("tcp://"): if not td_address.startswith("tcp://"):
td_address = "tcp://" + td_address td_address = "tcp://" + td_address
if not md_address.startswith("tcp://"): if not md_address.startswith("tcp://"):
md_address = "tcp://" + md_address md_address = "tcp://" + md_address
self.td_api.connect(td_address, userid, password, brokerid, auth_code, appid) self.td_api.connect(td_address, userid, password, brokerid, auth_code, appid, product_info)
self.md_api.connect(md_address, userid, password, brokerid) self.md_api.connect(md_address, userid, password, brokerid)
self.init_query() self.init_query()
@ -378,6 +380,7 @@ class CtpTdApi(TdApi):
self.brokerid = 0 self.brokerid = 0
self.auth_code = "" self.auth_code = ""
self.appid = "" self.appid = ""
self.product_info = ""
self.frontid = 0 self.frontid = 0
self.sessionid = 0 self.sessionid = 0
@ -406,7 +409,7 @@ class CtpTdApi(TdApi):
def onRspAuthenticate(self, data: dict, error: dict, reqid: int, last: bool): def onRspAuthenticate(self, data: dict, error: dict, reqid: int, last: bool):
"""""" """"""
if not error['ErrorID']: if not error['ErrorID']:
self.authStatus = True self.auth_staus = True
self.gateway.write_log("交易服务器授权验证成功") self.gateway.write_log("交易服务器授权验证成功")
self.login() self.login()
else: else:
@ -635,7 +638,16 @@ class CtpTdApi(TdApi):
) )
self.gateway.on_trade(trade) self.gateway.on_trade(trade)
def connect(self, address: str, userid: str, password: str, brokerid: int, auth_code: str, appid: str): def connect(
self,
address: str,
userid: str,
password: str,
brokerid: int,
auth_code: str,
appid: str,
product_info
):
""" """
Start connection to server. Start connection to server.
""" """
@ -644,6 +656,7 @@ class CtpTdApi(TdApi):
self.brokerid = brokerid self.brokerid = brokerid
self.auth_code = auth_code self.auth_code = auth_code
self.appid = appid self.appid = appid
self.product_info = product_info
if not self.connect_status: if not self.connect_status:
path = get_folder_path(self.gateway_name.lower()) path = get_folder_path(self.gateway_name.lower())
@ -668,6 +681,9 @@ class CtpTdApi(TdApi):
"AppID": self.appid "AppID": self.appid
} }
if self.product_info:
req["UserProductInfo"] = self.product_info
self.reqid += 1 self.reqid += 1
self.reqAuthenticate(req, self.reqid) self.reqAuthenticate(req, self.reqid)
@ -685,6 +701,9 @@ class CtpTdApi(TdApi):
"AppID": self.appid "AppID": self.appid
} }
if self.product_info:
req["UserProductInfo"] = self.product_info
self.reqid += 1 self.reqid += 1
self.reqUserLogin(req, self.reqid) self.reqUserLogin(req, self.reqid)