[Mod]simplify usage of ctp api and gateway
This commit is contained in:
parent
cc236a918d
commit
37f2a0c9b6
1
.gitignore
vendored
1
.gitignore
vendored
@ -10,6 +10,7 @@
|
|||||||
*.wpr
|
*.wpr
|
||||||
*.wpu
|
*.wpu
|
||||||
.vs
|
.vs
|
||||||
|
x64
|
||||||
|
|
||||||
# Temp
|
# Temp
|
||||||
build
|
build
|
||||||
|
@ -103,35 +103,35 @@ void getString(const pybind11::dict &d, const char *key, string_literal<size> &v
|
|||||||
if (d.contains(key))
|
if (d.contains(key))
|
||||||
{
|
{
|
||||||
object o = d[key];
|
object o = d[key];
|
||||||
std::string s = o.cast<std::string>();
|
string s = o.cast<string>();
|
||||||
const char *buf = s.c_str();
|
const char *buf = s.c_str();
|
||||||
strcpy(value, buf);
|
strcpy(value, buf);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
//将GBK编码的字符串转换为UTF8
|
//将GBK编码的字符串转换为UTF8
|
||||||
inline std::string toUtf(const std::string &gb2312)
|
inline string toUtf(const string &gb2312)
|
||||||
{
|
{
|
||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
const static std::locale loc("zh-CN");
|
const static locale loc("zh-CN");
|
||||||
#else
|
#else
|
||||||
const static std::locale loc("zh_CN.GB18030");
|
const static locale loc("zh_CN.GB18030");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
std::vector<wchar_t> wstr(gb2312.size());
|
vector<wchar_t> wstr(gb2312.size());
|
||||||
wchar_t* wstrEnd = nullptr;
|
wchar_t* wstrEnd = nullptr;
|
||||||
const char* gbEnd = nullptr;
|
const char* gbEnd = nullptr;
|
||||||
std::mbstate_t state = {};
|
mbstate_t state = {};
|
||||||
int res = std::use_facet<std::codecvt<wchar_t, char, mbstate_t> >
|
int res = use_facet<codecvt<wchar_t, char, mbstate_t> >
|
||||||
(loc).in(state,
|
(loc).in(state,
|
||||||
gb2312.data(), gb2312.data() + gb2312.size(), gbEnd,
|
gb2312.data(), gb2312.data() + gb2312.size(), gbEnd,
|
||||||
wstr.data(), wstr.data() + wstr.size(), wstrEnd);
|
wstr.data(), wstr.data() + wstr.size(), wstrEnd);
|
||||||
|
|
||||||
if (std::codecvt_base::ok == res)
|
if (codecvt_base::ok == res)
|
||||||
{
|
{
|
||||||
std::wstring_convert<std::codecvt_utf8<wchar_t>> cutf8;
|
wstring_convert<codecvt_utf8<wchar_t>> cutf8;
|
||||||
return cutf8.to_bytes(std::wstring(wstr.data(), wstrEnd));
|
return cutf8.to_bytes(wstring(wstr.data(), wstrEnd));
|
||||||
}
|
}
|
||||||
|
|
||||||
return std::string();
|
return string();
|
||||||
}
|
}
|
||||||
|
@ -563,7 +563,9 @@ int MdApi::join()
|
|||||||
|
|
||||||
int MdApi::exit()
|
int MdApi::exit()
|
||||||
{
|
{
|
||||||
//该函数在原生API里没有,用于安全退出API用,原生的join似乎不太稳定
|
this->active = false;
|
||||||
|
//this->task_thread.join();
|
||||||
|
|
||||||
this->api->RegisterSpi(NULL);
|
this->api->RegisterSpi(NULL);
|
||||||
this->api->Release();
|
this->api->Release();
|
||||||
this->api = NULL;
|
this->api = NULL;
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
<ProjectGuid>{F00054FF-282F-4826-848E-D58BFB9E9D9F}</ProjectGuid>
|
<ProjectGuid>{F00054FF-282F-4826-848E-D58BFB9E9D9F}</ProjectGuid>
|
||||||
<Keyword>Win32Proj</Keyword>
|
<Keyword>Win32Proj</Keyword>
|
||||||
<RootNamespace>vnctpmd</RootNamespace>
|
<RootNamespace>vnctpmd</RootNamespace>
|
||||||
<WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>
|
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
|
@ -7914,7 +7914,9 @@ int TdApi::join()
|
|||||||
|
|
||||||
int TdApi::exit()
|
int TdApi::exit()
|
||||||
{
|
{
|
||||||
//该函数在原生API里没有,用于安全退出API用,原生的join似乎不太稳定
|
this->active = false;
|
||||||
|
//this->task_thread.join();
|
||||||
|
|
||||||
this->api->RegisterSpi(NULL);
|
this->api->RegisterSpi(NULL);
|
||||||
this->api->Release();
|
this->api->Release();
|
||||||
this->api = NULL;
|
this->api = NULL;
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
<ProjectGuid>{016732E6-5789-4F7C-9A1C-C46A249080CF}</ProjectGuid>
|
<ProjectGuid>{016732E6-5789-4F7C-9A1C-C46A249080CF}</ProjectGuid>
|
||||||
<Keyword>Win32Proj</Keyword>
|
<Keyword>Win32Proj</Keyword>
|
||||||
<RootNamespace>vnctptd</RootNamespace>
|
<RootNamespace>vnctptd</RootNamespace>
|
||||||
<WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>
|
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -2,7 +2,6 @@
|
|||||||
"""
|
"""
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from copy import copy
|
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
from vnpy.api.ctp import *
|
from vnpy.api.ctp import *
|
||||||
@ -212,11 +211,7 @@ class CtpMdApi(MdApi):
|
|||||||
self.connect_status = False
|
self.connect_status = False
|
||||||
self.login_status = False
|
self.login_status = False
|
||||||
self.gateway.write_log(f"行情连接断开,原因{reason}")
|
self.gateway.write_log(f"行情连接断开,原因{reason}")
|
||||||
|
|
||||||
def onHeartBeatWarning(self, n: int):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspUserLogin(self, data: dict, error: dict, reqid: int, last: bool):
|
def onRspUserLogin(self, data: dict, error: dict, reqid: int, last: bool):
|
||||||
"""
|
"""
|
||||||
Callback when user is logged in.
|
Callback when user is logged in.
|
||||||
@ -230,10 +225,6 @@ class CtpMdApi(MdApi):
|
|||||||
else:
|
else:
|
||||||
self.gateway.write_error("行情登录失败", error)
|
self.gateway.write_error("行情登录失败", error)
|
||||||
|
|
||||||
def onRspUserLogout(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspError(self, error: dict, reqid: int, last: bool):
|
def onRspError(self, error: dict, reqid: int, last: bool):
|
||||||
"""
|
"""
|
||||||
Callback when error occured.
|
Callback when error occured.
|
||||||
@ -246,19 +237,7 @@ class CtpMdApi(MdApi):
|
|||||||
return
|
return
|
||||||
|
|
||||||
self.gateway.write_error("行情订阅失败", error)
|
self.gateway.write_error("行情订阅失败", error)
|
||||||
|
|
||||||
def onRspUnSubMarketData(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspSubForQuoteRsp(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspUnSubForQuoteRsp(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRtnDepthMarketData(self, data: dict):
|
def onRtnDepthMarketData(self, data: dict):
|
||||||
"""
|
"""
|
||||||
Callback of tick data update.
|
Callback of tick data update.
|
||||||
@ -274,7 +253,7 @@ class CtpMdApi(MdApi):
|
|||||||
symbol=symbol,
|
symbol=symbol,
|
||||||
exchange=exchange,
|
exchange=exchange,
|
||||||
datetime=datetime.strptime(timestamp, "%Y%m%d %H:%M:%S.%f"),
|
datetime=datetime.strptime(timestamp, "%Y%m%d %H:%M:%S.%f"),
|
||||||
name = symbol_name_map[symbol],
|
name=symbol_name_map[symbol],
|
||||||
volume=data["Volume"],
|
volume=data["Volume"],
|
||||||
last_price=data["LastPrice"],
|
last_price=data["LastPrice"],
|
||||||
limit_up=data["UpperLimitPrice"],
|
limit_up=data["UpperLimitPrice"],
|
||||||
@ -289,11 +268,7 @@ class CtpMdApi(MdApi):
|
|||||||
ask_volume_1=data["AskVolume1"],
|
ask_volume_1=data["AskVolume1"],
|
||||||
gateway_name=self.gateway_name
|
gateway_name=self.gateway_name
|
||||||
)
|
)
|
||||||
self.gateway.on_tick(tick)
|
self.gateway.on_tick(tick)
|
||||||
|
|
||||||
def onRtnForQuoteRsp(self, data: dict):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def connect(self, address: str, userid: str, password: str, brokerid: int):
|
def connect(self, address: str, userid: str, password: str, brokerid: int):
|
||||||
"""
|
"""
|
||||||
@ -343,9 +318,6 @@ class CtpMdApi(MdApi):
|
|||||||
self.exit()
|
self.exit()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class CtpTdApi(TdApi):
|
class CtpTdApi(TdApi):
|
||||||
""""""
|
""""""
|
||||||
|
|
||||||
@ -394,10 +366,6 @@ class CtpTdApi(TdApi):
|
|||||||
self.login_status = False
|
self.login_status = False
|
||||||
self.gateway.write_log(f"交易连接断开,原因{reason}")
|
self.gateway.write_log(f"交易连接断开,原因{reason}")
|
||||||
|
|
||||||
def onHeartBeatWarning(self, n: int):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
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']:
|
||||||
@ -427,30 +395,6 @@ class CtpTdApi(TdApi):
|
|||||||
|
|
||||||
self.gateway.write_error("交易登录失败", error)
|
self.gateway.write_error("交易登录失败", error)
|
||||||
|
|
||||||
def onRspUserLogout(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspUserPasswordUpdate(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspTradingAccountPasswordUpdate(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspUserAuthMethod(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspGenUserCaptcha(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspGenUserText(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspOrderInsert(self, data: dict, error: dict, reqid: int, last: bool):
|
def onRspOrderInsert(self, data: dict, error: dict, reqid: int, last: bool):
|
||||||
""""""
|
""""""
|
||||||
order_ref = data["OrderRef"]
|
order_ref = data["OrderRef"]
|
||||||
@ -474,14 +418,6 @@ class CtpTdApi(TdApi):
|
|||||||
|
|
||||||
self.gateway.write_error("交易委托失败", error)
|
self.gateway.write_error("交易委托失败", error)
|
||||||
|
|
||||||
def onRspParkedOrderInsert(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspParkedOrderAction(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspOrderAction(self, data: dict, error: dict, reqid: int, last: bool):
|
def onRspOrderAction(self, data: dict, error: dict, reqid: int, last: bool):
|
||||||
""""""
|
""""""
|
||||||
self.gateway.write_error("交易撤单失败", error)
|
self.gateway.write_error("交易撤单失败", error)
|
||||||
@ -498,58 +434,6 @@ class CtpTdApi(TdApi):
|
|||||||
|
|
||||||
self.reqid += 1
|
self.reqid += 1
|
||||||
self.reqQryInstrument({}, self.reqid)
|
self.reqQryInstrument({}, self.reqid)
|
||||||
|
|
||||||
def onRspRemoveParkedOrder(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspRemoveParkedOrderAction(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspExecOrderInsert(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspExecOrderAction(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspForQuoteInsert(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspQuoteInsert(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspQuoteAction(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspBatchOrderAction(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspOptionSelfCloseInsert(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspOptionSelfCloseAction(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspCombActionInsert(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspQryOrder(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspQryTrade(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspQryInvestorPosition(self, data: dict, error: dict, reqid: int, last: bool):
|
def onRspQryInvestorPosition(self, data: dict, error: dict, reqid: int, last: bool):
|
||||||
""""""
|
""""""
|
||||||
@ -612,39 +496,19 @@ class CtpTdApi(TdApi):
|
|||||||
|
|
||||||
self.gateway.on_account(account)
|
self.gateway.on_account(account)
|
||||||
|
|
||||||
def onRspQryInvestor(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspQryTradingCode(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspQryInstrumentMarginRate(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspQryInstrumentCommissionRate(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspQryExchange(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspQryProduct(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspQryInstrument(self, data: dict, error: dict, reqid: int, last: bool):
|
def onRspQryInstrument(self, data: dict, error: dict, reqid: int, last: bool):
|
||||||
"""
|
"""
|
||||||
Callback of instrument query.
|
Callback of instrument query.
|
||||||
"""
|
"""
|
||||||
|
product = PRODUCT_CTP2VT.get(data["ProductClass"], None)
|
||||||
|
if not product:
|
||||||
|
return
|
||||||
|
|
||||||
contract = ContractData(
|
contract = ContractData(
|
||||||
symbol=data["InstrumentID"],
|
symbol=data["InstrumentID"],
|
||||||
exchange=EXCHANGE_CTP2VT[data["ExchangeID"]],
|
exchange=EXCHANGE_CTP2VT[data["ExchangeID"]],
|
||||||
name=data["InstrumentName"],
|
name=data["InstrumentName"],
|
||||||
product=PRODUCT_CTP2VT[data["ProductClass"]],
|
product=product,
|
||||||
size=data["VolumeMultiple"],
|
size=data["VolumeMultiple"],
|
||||||
pricetick=data["PriceTick"],
|
pricetick=data["PriceTick"],
|
||||||
option_underlying=data["UnderlyingInstrID"],
|
option_underlying=data["UnderlyingInstrID"],
|
||||||
@ -671,142 +535,6 @@ class CtpTdApi(TdApi):
|
|||||||
self.onRtnTrade(data)
|
self.onRtnTrade(data)
|
||||||
self.trade_data.clear()
|
self.trade_data.clear()
|
||||||
|
|
||||||
def onRspQryDepthMarketData(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspQrySettlementInfo(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspQryTransferBank(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspQryInvestorPositionDetail(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspQryNotice(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspQrySettlementInfoConfirm(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspQryInvestorPositionCombineDetail(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspQryCFMMCTradingAccountKey(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspQryEWarrantOffset(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspQryInvestorProductGroupMargin(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspQryExchangeMarginRate(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspQryExchangeMarginRateAdjust(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspQryExchangeRate(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspQrySecAgentACIDMap(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspQryProductExchRate(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspQryProductGroup(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspQryMMInstrumentCommissionRate(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspQryMMOptionInstrCommRate(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspQryInstrumentOrderCommRate(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspQrySecAgentTradingAccount(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspQrySecAgentCheckMode(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspQrySecAgentTradeInfo(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspQryOptionInstrTradeCost(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspQryOptionInstrCommRate(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspQryExecOrder(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspQryForQuote(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspQryQuote(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspQryOptionSelfClose(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspQryInvestUnit(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspQryCombInstrumentGuard(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspQryCombAction(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspQryTransferSerial(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspQryAccountregister(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspError(self, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRtnOrder(self, data: dict):
|
def onRtnOrder(self, data: dict):
|
||||||
"""
|
"""
|
||||||
Callback of order status update.
|
Callback of order status update.
|
||||||
@ -865,206 +593,6 @@ class CtpTdApi(TdApi):
|
|||||||
)
|
)
|
||||||
self.gateway.on_trade(trade)
|
self.gateway.on_trade(trade)
|
||||||
|
|
||||||
def onErrRtnOrderInsert(self, data: dict, error: dict):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onErrRtnOrderAction(self, data: dict, error: dict):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRtnInstrumentStatus(self, data: dict):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRtnBulletin(self, data: dict):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRtnTradingNotice(self, data: dict):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRtnErrorConditionalOrder(self, data: dict):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRtnExecOrder(self, data: dict):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onErrRtnExecOrderInsert(self, data: dict, error: dict):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onErrRtnExecOrderAction(self, data: dict, error: dict):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onErrRtnForQuoteInsert(self, data: dict, error: dict):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRtnQuote(self, data: dict):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onErrRtnQuoteInsert(self, data: dict, error: dict):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onErrRtnQuoteAction(self, data: dict, error: dict):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRtnForQuoteRsp(self, data: dict):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRtnCFMMCTradingAccountToken(self, data: dict):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onErrRtnBatchOrderAction(self, data: dict, error: dict):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRtnOptionSelfClose(self, data: dict):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onErrRtnOptionSelfCloseInsert(self, data: dict, error: dict):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onErrRtnOptionSelfCloseAction(self, data: dict, error: dict):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRtnCombAction(self, data: dict):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onErrRtnCombActionInsert(self, data: dict, error: dict):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspQryContractBank(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspQryParkedOrder(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspQryParkedOrderAction(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspQryTradingNotice(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspQryBrokerTradingParams(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspQryBrokerTradingAlgos(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspQueryCFMMCTradingAccountToken(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRtnFromBankToFutureByBank(self, data: dict):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRtnFromFutureToBankByBank(self, data: dict):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRtnRepealFromBankToFutureByBank(self, data: dict):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRtnRepealFromFutureToBankByBank(self, data: dict):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRtnFromBankToFutureByFuture(self, data: dict):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRtnFromFutureToBankByFuture(self, data: dict):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRtnRepealFromBankToFutureByFutureManual(self, data: dict):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRtnRepealFromFutureToBankByFutureManual(self, data: dict):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRtnQueryBankBalanceByFuture(self, data: dict):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onErrRtnBankToFutureByFuture(self, data: dict, error: dict):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onErrRtnFutureToBankByFuture(self, data: dict, error: dict):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onErrRtnRepealBankToFutureByFutureManual(self, data: dict, error: dict):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onErrRtnRepealFutureToBankByFutureManual(self, data: dict, error: dict):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onErrRtnQueryBankBalanceByFuture(self, data: dict, error: dict):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRtnRepealFromBankToFutureByFuture(self, data: dict):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRtnRepealFromFutureToBankByFuture(self, data: dict):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspFromBankToFutureByFuture(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspFromFutureToBankByFuture(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRspQueryBankAccountMoneyByFuture(self, data: dict, error: dict, reqid: int, last: bool):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRtnOpenAccountByBank(self, data: dict):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRtnCancelAccountByBank(self, data: dict):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onRtnChangeAccountByBank(self, data: dict):
|
|
||||||
""""""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def connect(self, address: str, userid: str, password: str, brokerid: int, auth_code: str, product_info: str):
|
def connect(self, address: str, userid: str, password: str, brokerid: int, auth_code: str, product_info: str):
|
||||||
"""
|
"""
|
||||||
Start connection to server.
|
Start connection to server.
|
||||||
@ -1107,11 +635,11 @@ class CtpTdApi(TdApi):
|
|||||||
"""
|
"""
|
||||||
if self.login_failed:
|
if self.login_failed:
|
||||||
return
|
return
|
||||||
|
|
||||||
req = {
|
req = {
|
||||||
"UserID": self.userid,
|
"UserID": self.userid,
|
||||||
"Password": self.password,
|
"Password": self.password,
|
||||||
"BrokerID": self.brokerid,
|
"BrokerID": self.brokerid
|
||||||
}
|
}
|
||||||
|
|
||||||
self.reqid += 1
|
self.reqid += 1
|
||||||
|
Loading…
Reference in New Issue
Block a user