Merge branch 'ctp_se' of https://github.com/vnpy/vnpy into ctp_se

This commit is contained in:
vn.py 2019-05-14 11:17:04 +08:00
commit fba2752adc
15 changed files with 226 additions and 94 deletions

View File

@ -1,3 +1,11 @@
#!/usr/bin/env bash
python -m autocxxpy vnxtp xtp_trader_api.h xtp_quote_api.h -I vnxtp/include -o vnxtp/generated_files -p . --no-callback-name .*Api
# autocxxpy version: 0.2.4
python -m autocxxpy \
vnxtp \
xtp_trader_api.h xtp_quote_api.h \
-I vnxtp/include \
--output-dir vnxtp/generated_files \
--pyi-output-dir .\
--no-clear-pyi-output \
--no-callback-pattern ".*Api"

Binary file not shown.

View File

@ -7,7 +7,7 @@ if typing.TYPE_CHECKING:
from .vnxtp import *
def set_async_callback_exception_handler(handler: Callable[[AsyncDispatchException], None]):
def set_async_callback_exception_handler(handler: Callable[[Exception, object, str], bool]):
"""
set a customize exception handler for async callback in this module(pyd)
\a handler should return True if it handles that exception,
@ -105,10 +105,10 @@ class XTPMarketDataStruct():
qty: int
turnover: float
avg_price: float
bid: Sequence[float]
ask: Sequence[float]
bid_qty: Sequence[int]
ask_qty: Sequence[int]
bid: List[float]
ask: List[float]
bid_qty: List[int]
ask_qty: List[int]
trades_count: int
ticker_status: str
stk: XTPMarketDataStockExData
@ -141,10 +141,10 @@ class OrderBookStruct():
qty: int
turnover: float
trades_count: int
bid: Sequence[float]
ask: Sequence[float]
bid_qty: Sequence[int]
ask_qty: Sequence[int]
bid: List[float]
ask: List[float]
bid_qty: List[int]
ask_qty: List[int]
data_time: int
@ -320,7 +320,7 @@ class XTPQueryAssetRsp():
captial_asset: float
force_freeze_amount: float
preferred_amount: float
unknown: Sequence[int]
unknown: List[int]
class XTPQueryStkPositionRsp():
@ -342,7 +342,7 @@ class XTPQueryStkPositionRsp():
executable_underlying: int
locked_position: int
usable_locked_position: int
unknown: Sequence[int]
unknown: List[int]
class XTPFundTransferNotice():
@ -491,7 +491,7 @@ class XTPQueryOptionAuctionInfoRsp():
sell_margin: float
margin_ratio_param1: float
margin_ratio_param2: float
unknown: Sequence[int]
unknown: List[int]
class XTPFundTransferReq():

View File

@ -149,7 +149,7 @@ void generate_sub_namespace_XTP_API(pybind11::module & parent)
void generate_class_XTP_API_TraderSpi(pybind11::object & parent)
{
pybind11::class_<XTP::API::TraderSpi, PyTraderSpi> c(parent, "TraderSpi");
if constexpr (std::is_default_constructible_v<XTP::API::TraderSpi>)
if constexpr (std::is_default_constructible_v<PyTraderSpi>)
c.def(pybind11::init<>());
c.def("OnDisconnected",
autocxxpy::apply_function_transform<
@ -159,6 +159,7 @@ void generate_class_XTP_API_TraderSpi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("OnError",
@ -169,6 +170,7 @@ void generate_class_XTP_API_TraderSpi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("OnOrderEvent",
@ -179,6 +181,7 @@ void generate_class_XTP_API_TraderSpi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("OnTradeEvent",
@ -189,6 +192,7 @@ void generate_class_XTP_API_TraderSpi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("OnCancelOrderError",
@ -199,6 +203,7 @@ void generate_class_XTP_API_TraderSpi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("OnQueryOrder",
@ -209,6 +214,7 @@ void generate_class_XTP_API_TraderSpi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("OnQueryTrade",
@ -219,6 +225,7 @@ void generate_class_XTP_API_TraderSpi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("OnQueryPosition",
@ -229,6 +236,7 @@ void generate_class_XTP_API_TraderSpi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("OnQueryAsset",
@ -239,6 +247,7 @@ void generate_class_XTP_API_TraderSpi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("OnQueryStructuredFund",
@ -249,6 +258,7 @@ void generate_class_XTP_API_TraderSpi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("OnQueryFundTransfer",
@ -259,6 +269,7 @@ void generate_class_XTP_API_TraderSpi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("OnFundTransfer",
@ -269,6 +280,7 @@ void generate_class_XTP_API_TraderSpi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("OnQueryETF",
@ -279,6 +291,7 @@ void generate_class_XTP_API_TraderSpi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("OnQueryETFBasket",
@ -289,6 +302,7 @@ void generate_class_XTP_API_TraderSpi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("OnQueryIPOInfoList",
@ -299,6 +313,7 @@ void generate_class_XTP_API_TraderSpi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("OnQueryIPOQuotaInfo",
@ -309,6 +324,7 @@ void generate_class_XTP_API_TraderSpi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("OnQueryOptionAuctionInfo",
@ -319,6 +335,7 @@ void generate_class_XTP_API_TraderSpi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
AUTOCXXPY_POST_REGISTER_CLASS(tag_vnxtp, XTP::API::TraderSpi, c);
@ -331,6 +348,8 @@ void generate_class_XTP_API_TraderApi(pybind11::object & parent)
std::unique_ptr<XTP::API::TraderApi, pybind11::nodelete>,
PyTraderApi
> c(parent, "TraderApi");
if constexpr (std::is_default_constructible_v<PyTraderApi>)
c.def(pybind11::init<>());
c.def_static("CreateTraderApi",
autocxxpy::apply_function_transform<
autocxxpy::function_constant<
@ -339,6 +358,7 @@ void generate_class_XTP_API_TraderApi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("Release",
@ -349,6 +369,7 @@ void generate_class_XTP_API_TraderApi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("GetTradingDay",
@ -359,6 +380,7 @@ void generate_class_XTP_API_TraderApi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("RegisterSpi",
@ -369,6 +391,7 @@ void generate_class_XTP_API_TraderApi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("GetApiLastError",
@ -379,8 +402,8 @@ void generate_class_XTP_API_TraderApi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::call_guard<pybind11::gil_scoped_release>(),
pybind11::return_value_policy::reference
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("GetApiVersion",
autocxxpy::apply_function_transform<
@ -390,6 +413,7 @@ void generate_class_XTP_API_TraderApi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("GetClientIDByXTPID",
@ -400,6 +424,7 @@ void generate_class_XTP_API_TraderApi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("GetAccountByXTPID",
@ -410,6 +435,7 @@ void generate_class_XTP_API_TraderApi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("SubscribePublicTopic",
@ -420,6 +446,7 @@ void generate_class_XTP_API_TraderApi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("SetSoftwareVersion",
@ -430,6 +457,7 @@ void generate_class_XTP_API_TraderApi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("SetSoftwareKey",
@ -440,6 +468,7 @@ void generate_class_XTP_API_TraderApi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("SetHeartBeatInterval",
@ -450,6 +479,7 @@ void generate_class_XTP_API_TraderApi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("Login",
@ -460,6 +490,7 @@ void generate_class_XTP_API_TraderApi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("Logout",
@ -470,6 +501,7 @@ void generate_class_XTP_API_TraderApi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("InsertOrder",
@ -480,6 +512,7 @@ void generate_class_XTP_API_TraderApi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("CancelOrder",
@ -490,6 +523,7 @@ void generate_class_XTP_API_TraderApi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("QueryOrderByXTPID",
@ -500,6 +534,7 @@ void generate_class_XTP_API_TraderApi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("QueryOrders",
@ -510,6 +545,7 @@ void generate_class_XTP_API_TraderApi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("QueryTradesByXTPID",
@ -520,6 +556,7 @@ void generate_class_XTP_API_TraderApi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("QueryTrades",
@ -530,6 +567,7 @@ void generate_class_XTP_API_TraderApi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("QueryPosition",
@ -540,6 +578,7 @@ void generate_class_XTP_API_TraderApi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("QueryAsset",
@ -550,6 +589,7 @@ void generate_class_XTP_API_TraderApi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("QueryStructuredFund",
@ -560,6 +600,7 @@ void generate_class_XTP_API_TraderApi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("FundTransfer",
@ -570,6 +611,7 @@ void generate_class_XTP_API_TraderApi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("QueryFundTransfer",
@ -580,6 +622,7 @@ void generate_class_XTP_API_TraderApi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("QueryETF",
@ -590,6 +633,7 @@ void generate_class_XTP_API_TraderApi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("QueryETFTickerBasket",
@ -600,6 +644,7 @@ void generate_class_XTP_API_TraderApi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("QueryIPOInfoList",
@ -610,6 +655,7 @@ void generate_class_XTP_API_TraderApi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("QueryIPOQuotaInfo",
@ -620,6 +666,7 @@ void generate_class_XTP_API_TraderApi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("QueryOptionAuctionInfo",
@ -630,6 +677,7 @@ void generate_class_XTP_API_TraderApi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
AUTOCXXPY_POST_REGISTER_CLASS(tag_vnxtp, XTP::API::TraderApi, c);

View File

@ -14,7 +14,7 @@
void generate_class_XTP_API_QuoteSpi(pybind11::object & parent)
{
pybind11::class_<XTP::API::QuoteSpi, PyQuoteSpi> c(parent, "QuoteSpi");
if constexpr (std::is_default_constructible_v<XTP::API::QuoteSpi>)
if constexpr (std::is_default_constructible_v<PyQuoteSpi>)
c.def(pybind11::init<>());
c.def("OnDisconnected",
autocxxpy::apply_function_transform<
@ -24,6 +24,7 @@ void generate_class_XTP_API_QuoteSpi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("OnError",
@ -34,6 +35,7 @@ void generate_class_XTP_API_QuoteSpi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("OnSubMarketData",
@ -44,6 +46,7 @@ void generate_class_XTP_API_QuoteSpi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("OnUnSubMarketData",
@ -54,6 +57,7 @@ void generate_class_XTP_API_QuoteSpi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("OnDepthMarketData",
@ -64,6 +68,7 @@ void generate_class_XTP_API_QuoteSpi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("OnSubOrderBook",
@ -74,6 +79,7 @@ void generate_class_XTP_API_QuoteSpi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("OnUnSubOrderBook",
@ -84,6 +90,7 @@ void generate_class_XTP_API_QuoteSpi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("OnOrderBook",
@ -94,6 +101,7 @@ void generate_class_XTP_API_QuoteSpi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("OnSubTickByTick",
@ -104,6 +112,7 @@ void generate_class_XTP_API_QuoteSpi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("OnUnSubTickByTick",
@ -114,6 +123,7 @@ void generate_class_XTP_API_QuoteSpi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("OnTickByTick",
@ -124,6 +134,7 @@ void generate_class_XTP_API_QuoteSpi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("OnSubscribeAllMarketData",
@ -134,6 +145,7 @@ void generate_class_XTP_API_QuoteSpi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("OnUnSubscribeAllMarketData",
@ -144,6 +156,7 @@ void generate_class_XTP_API_QuoteSpi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("OnSubscribeAllOrderBook",
@ -154,6 +167,7 @@ void generate_class_XTP_API_QuoteSpi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("OnUnSubscribeAllOrderBook",
@ -164,6 +178,7 @@ void generate_class_XTP_API_QuoteSpi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("OnSubscribeAllTickByTick",
@ -174,6 +189,7 @@ void generate_class_XTP_API_QuoteSpi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("OnUnSubscribeAllTickByTick",
@ -184,6 +200,7 @@ void generate_class_XTP_API_QuoteSpi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("OnQueryAllTickers",
@ -194,6 +211,7 @@ void generate_class_XTP_API_QuoteSpi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("OnQueryTickersPriceInfo",
@ -204,6 +222,7 @@ void generate_class_XTP_API_QuoteSpi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("OnSubscribeAllOptionMarketData",
@ -214,6 +233,7 @@ void generate_class_XTP_API_QuoteSpi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("OnUnSubscribeAllOptionMarketData",
@ -224,6 +244,7 @@ void generate_class_XTP_API_QuoteSpi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("OnSubscribeAllOptionOrderBook",
@ -234,6 +255,7 @@ void generate_class_XTP_API_QuoteSpi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("OnUnSubscribeAllOptionOrderBook",
@ -244,6 +266,7 @@ void generate_class_XTP_API_QuoteSpi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("OnSubscribeAllOptionTickByTick",
@ -254,6 +277,7 @@ void generate_class_XTP_API_QuoteSpi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("OnUnSubscribeAllOptionTickByTick",
@ -264,6 +288,7 @@ void generate_class_XTP_API_QuoteSpi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
AUTOCXXPY_POST_REGISTER_CLASS(tag_vnxtp, XTP::API::QuoteSpi, c);
@ -276,6 +301,8 @@ void generate_class_XTP_API_QuoteApi(pybind11::object & parent)
std::unique_ptr<XTP::API::QuoteApi, pybind11::nodelete>,
PyQuoteApi
> c(parent, "QuoteApi");
if constexpr (std::is_default_constructible_v<PyQuoteApi>)
c.def(pybind11::init<>());
c.def_static("CreateQuoteApi",
autocxxpy::apply_function_transform<
autocxxpy::function_constant<
@ -284,6 +311,7 @@ void generate_class_XTP_API_QuoteApi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("Release",
@ -294,6 +322,7 @@ void generate_class_XTP_API_QuoteApi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("GetTradingDay",
@ -304,6 +333,7 @@ void generate_class_XTP_API_QuoteApi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("GetApiVersion",
@ -314,6 +344,7 @@ void generate_class_XTP_API_QuoteApi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("GetApiLastError",
@ -324,8 +355,8 @@ void generate_class_XTP_API_QuoteApi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::call_guard<pybind11::gil_scoped_release>(),
pybind11::return_value_policy::reference
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("SetUDPBufferSize",
autocxxpy::apply_function_transform<
@ -335,6 +366,7 @@ void generate_class_XTP_API_QuoteApi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("RegisterSpi",
@ -345,6 +377,7 @@ void generate_class_XTP_API_QuoteApi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("SetHeartBeatInterval",
@ -355,6 +388,7 @@ void generate_class_XTP_API_QuoteApi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("SubscribeMarketData",
@ -363,9 +397,10 @@ void generate_class_XTP_API_QuoteApi(pybind11::object & parent)
&XTP::API::QuoteApi::SubscribeMarketData
>,
brigand::list<
autocxxpy::indexed_transform_holder<autocxxpy::string_array_transform, 1>
autocxxpy::indexed_transform_holder<autocxxpy::string_array_transform, 0 + 1/*self*/>
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("UnSubscribeMarketData",
@ -374,9 +409,10 @@ void generate_class_XTP_API_QuoteApi(pybind11::object & parent)
&XTP::API::QuoteApi::UnSubscribeMarketData
>,
brigand::list<
autocxxpy::indexed_transform_holder<autocxxpy::string_array_transform, 1>
autocxxpy::indexed_transform_holder<autocxxpy::string_array_transform, 0 + 1/*self*/>
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("SubscribeOrderBook",
@ -385,9 +421,10 @@ void generate_class_XTP_API_QuoteApi(pybind11::object & parent)
&XTP::API::QuoteApi::SubscribeOrderBook
>,
brigand::list<
autocxxpy::indexed_transform_holder<autocxxpy::string_array_transform, 1>
autocxxpy::indexed_transform_holder<autocxxpy::string_array_transform, 0 + 1/*self*/>
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("UnSubscribeOrderBook",
@ -396,9 +433,10 @@ void generate_class_XTP_API_QuoteApi(pybind11::object & parent)
&XTP::API::QuoteApi::UnSubscribeOrderBook
>,
brigand::list<
autocxxpy::indexed_transform_holder<autocxxpy::string_array_transform, 1>
autocxxpy::indexed_transform_holder<autocxxpy::string_array_transform, 0 + 1/*self*/>
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("SubscribeTickByTick",
@ -407,9 +445,10 @@ void generate_class_XTP_API_QuoteApi(pybind11::object & parent)
&XTP::API::QuoteApi::SubscribeTickByTick
>,
brigand::list<
autocxxpy::indexed_transform_holder<autocxxpy::string_array_transform, 1>
autocxxpy::indexed_transform_holder<autocxxpy::string_array_transform, 0 + 1/*self*/>
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("UnSubscribeTickByTick",
@ -418,9 +457,10 @@ void generate_class_XTP_API_QuoteApi(pybind11::object & parent)
&XTP::API::QuoteApi::UnSubscribeTickByTick
>,
brigand::list<
autocxxpy::indexed_transform_holder<autocxxpy::string_array_transform, 1>
autocxxpy::indexed_transform_holder<autocxxpy::string_array_transform, 0 + 1/*self*/>
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("SubscribeAllMarketData",
@ -431,6 +471,7 @@ void generate_class_XTP_API_QuoteApi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("UnSubscribeAllMarketData",
@ -441,6 +482,7 @@ void generate_class_XTP_API_QuoteApi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("SubscribeAllOrderBook",
@ -451,6 +493,7 @@ void generate_class_XTP_API_QuoteApi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("UnSubscribeAllOrderBook",
@ -461,6 +504,7 @@ void generate_class_XTP_API_QuoteApi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("SubscribeAllTickByTick",
@ -471,6 +515,7 @@ void generate_class_XTP_API_QuoteApi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("UnSubscribeAllTickByTick",
@ -481,6 +526,7 @@ void generate_class_XTP_API_QuoteApi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("Login",
@ -491,6 +537,7 @@ void generate_class_XTP_API_QuoteApi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("Logout",
@ -501,6 +548,7 @@ void generate_class_XTP_API_QuoteApi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("QueryAllTickers",
@ -511,6 +559,7 @@ void generate_class_XTP_API_QuoteApi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("QueryTickersPriceInfo",
@ -519,9 +568,10 @@ void generate_class_XTP_API_QuoteApi(pybind11::object & parent)
&XTP::API::QuoteApi::QueryTickersPriceInfo
>,
brigand::list<
autocxxpy::indexed_transform_holder<autocxxpy::string_array_transform, 1>
autocxxpy::indexed_transform_holder<autocxxpy::string_array_transform, 0 + 1/*self*/>
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("QueryAllTickersPriceInfo",
@ -532,6 +582,7 @@ void generate_class_XTP_API_QuoteApi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("SubscribeAllOptionMarketData",
@ -542,6 +593,7 @@ void generate_class_XTP_API_QuoteApi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("UnSubscribeAllOptionMarketData",
@ -552,6 +604,7 @@ void generate_class_XTP_API_QuoteApi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("SubscribeAllOptionOrderBook",
@ -562,6 +615,7 @@ void generate_class_XTP_API_QuoteApi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("UnSubscribeAllOptionOrderBook",
@ -572,6 +626,7 @@ void generate_class_XTP_API_QuoteApi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("SubscribeAllOptionTickByTick",
@ -582,6 +637,7 @@ void generate_class_XTP_API_QuoteApi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
c.def("UnSubscribeAllOptionTickByTick",
@ -592,32 +648,9 @@ void generate_class_XTP_API_QuoteApi(pybind11::object & parent)
brigand::list<
>
>::value,
pybind11::return_value_policy::reference,
pybind11::call_guard<pybind11::gil_scoped_release>()
);
AUTOCXXPY_POST_REGISTER_CLASS(tag_vnxtp, XTP::API::QuoteApi, c);
module_vnxtp::objects.emplace("XTP::API::QuoteApi", c);
}
void generate_caster_XTP_API(pybind11::object & parent)
{
struct caster: autocxxpy::caster{};
auto c = autocxxpy::caster::bind<caster>(parent, "caster");
autocxxpy::caster::try_generate<XTP::API::TraderSpi>(c, "toTraderSpi)");
autocxxpy::caster::try_generate<XTP::API::TraderApi>(c, "toTraderApi)");
autocxxpy::caster::try_generate<XTP::API::QuoteSpi>(c, "toQuoteSpi)");
autocxxpy::caster::try_generate<XTP::API::QuoteApi>(c, "toQuoteApi)");
}
void generate_caster_XTP(pybind11::object & parent)
{
struct caster: autocxxpy::caster{};
auto c = autocxxpy::caster::bind<caster>(parent, "caster");
}
void generate_class_XTPRspInfoStruct(pybind11::object & parent)
{
pybind11::class_<XTPRspInfoStruct> c(parent, "XTPRspInfoStruct");
if constexpr (std::is_default_constructible_v<XTPRspInfoStruct>)
c.def(pybind11::init<>());
c.AUTOCXXPY_DEF_PROPERTY(tag_vnxtp, XTPRspInfoStruct, "error_id", error_id);
c.AUTOCXXPY_DEF_PROPERTY(tag_vnxtp, XTPRspInfoStruct, "error_msg", error_msg);
AUTOCXXPY_POST_REGISTER_CLASS(tag_vnxtp, XTPRspInfoStruct, c);
module_vnxtp::objects.emplace("XTPRspInfoStruct", c);
}

View File

@ -11,6 +11,30 @@
#include "xtp_quote_api.h"
void generate_caster_XTP_API(pybind11::object & parent)
{
struct caster: autocxxpy::caster{};
auto c = autocxxpy::caster::bind<caster>(parent, "caster");
autocxxpy::caster::try_generate<XTP::API::TraderSpi>(c, "toTraderSpi)");
autocxxpy::caster::try_generate<XTP::API::TraderApi>(c, "toTraderApi)");
autocxxpy::caster::try_generate<XTP::API::QuoteSpi>(c, "toQuoteSpi)");
autocxxpy::caster::try_generate<XTP::API::QuoteApi>(c, "toQuoteApi)");
}
void generate_caster_XTP(pybind11::object & parent)
{
struct caster: autocxxpy::caster{};
auto c = autocxxpy::caster::bind<caster>(parent, "caster");
}
void generate_class_XTPRspInfoStruct(pybind11::object & parent)
{
pybind11::class_<XTPRspInfoStruct> c(parent, "XTPRspInfoStruct");
if constexpr (std::is_default_constructible_v<XTPRspInfoStruct>)
c.def(pybind11::init<>());
c.AUTOCXXPY_DEF_PROPERTY(tag_vnxtp, XTPRspInfoStruct, "error_id", error_id);
c.AUTOCXXPY_DEF_PROPERTY(tag_vnxtp, XTPRspInfoStruct, "error_msg", error_msg);
AUTOCXXPY_POST_REGISTER_CLASS(tag_vnxtp, XTPRspInfoStruct, c);
module_vnxtp::objects.emplace("XTPRspInfoStruct", c);
}
void generate_class_XTPSpecificTickerStruct(pybind11::object & parent)
{
pybind11::class_<XTPSpecificTickerStruct> c(parent, "XTPSpecificTickerStruct");
@ -658,3 +682,15 @@ void generate_enum_XTP_ORDER_STATUS_TYPE(pybind11::object & parent)
e.export_values();
module_vnxtp::objects.emplace("XTP_ORDER_STATUS_TYPE", e);
}
void generate_enum_XTP_ORDER_SUBMIT_STATUS_TYPE(pybind11::object & parent)
{
pybind11::enum_<XTP_ORDER_SUBMIT_STATUS_TYPE> e(parent, "XTP_ORDER_SUBMIT_STATUS_TYPE", pybind11::arithmetic());
e.value("XTP_ORDER_SUBMIT_STATUS_INSERT_SUBMITTED", XTP_ORDER_SUBMIT_STATUS_TYPE::XTP_ORDER_SUBMIT_STATUS_INSERT_SUBMITTED);
e.value("XTP_ORDER_SUBMIT_STATUS_INSERT_ACCEPTED", XTP_ORDER_SUBMIT_STATUS_TYPE::XTP_ORDER_SUBMIT_STATUS_INSERT_ACCEPTED);
e.value("XTP_ORDER_SUBMIT_STATUS_INSERT_REJECTED", XTP_ORDER_SUBMIT_STATUS_TYPE::XTP_ORDER_SUBMIT_STATUS_INSERT_REJECTED);
e.value("XTP_ORDER_SUBMIT_STATUS_CANCEL_SUBMITTED", XTP_ORDER_SUBMIT_STATUS_TYPE::XTP_ORDER_SUBMIT_STATUS_CANCEL_SUBMITTED);
e.value("XTP_ORDER_SUBMIT_STATUS_CANCEL_REJECTED", XTP_ORDER_SUBMIT_STATUS_TYPE::XTP_ORDER_SUBMIT_STATUS_CANCEL_REJECTED);
e.value("XTP_ORDER_SUBMIT_STATUS_CANCEL_ACCEPTED", XTP_ORDER_SUBMIT_STATUS_TYPE::XTP_ORDER_SUBMIT_STATUS_CANCEL_ACCEPTED);
e.export_values();
module_vnxtp::objects.emplace("XTP_ORDER_SUBMIT_STATUS_TYPE", e);
}

View File

@ -11,18 +11,6 @@
#include "xtp_quote_api.h"
void generate_enum_XTP_ORDER_SUBMIT_STATUS_TYPE(pybind11::object & parent)
{
pybind11::enum_<XTP_ORDER_SUBMIT_STATUS_TYPE> e(parent, "XTP_ORDER_SUBMIT_STATUS_TYPE", pybind11::arithmetic());
e.value("XTP_ORDER_SUBMIT_STATUS_INSERT_SUBMITTED", XTP_ORDER_SUBMIT_STATUS_TYPE::XTP_ORDER_SUBMIT_STATUS_INSERT_SUBMITTED);
e.value("XTP_ORDER_SUBMIT_STATUS_INSERT_ACCEPTED", XTP_ORDER_SUBMIT_STATUS_TYPE::XTP_ORDER_SUBMIT_STATUS_INSERT_ACCEPTED);
e.value("XTP_ORDER_SUBMIT_STATUS_INSERT_REJECTED", XTP_ORDER_SUBMIT_STATUS_TYPE::XTP_ORDER_SUBMIT_STATUS_INSERT_REJECTED);
e.value("XTP_ORDER_SUBMIT_STATUS_CANCEL_SUBMITTED", XTP_ORDER_SUBMIT_STATUS_TYPE::XTP_ORDER_SUBMIT_STATUS_CANCEL_SUBMITTED);
e.value("XTP_ORDER_SUBMIT_STATUS_CANCEL_REJECTED", XTP_ORDER_SUBMIT_STATUS_TYPE::XTP_ORDER_SUBMIT_STATUS_CANCEL_REJECTED);
e.value("XTP_ORDER_SUBMIT_STATUS_CANCEL_ACCEPTED", XTP_ORDER_SUBMIT_STATUS_TYPE::XTP_ORDER_SUBMIT_STATUS_CANCEL_ACCEPTED);
e.export_values();
module_vnxtp::objects.emplace("XTP_ORDER_SUBMIT_STATUS_TYPE", e);
}
void generate_enum_XTP_TE_RESUME_TYPE(pybind11::object & parent)
{
pybind11::enum_<XTP_TE_RESUME_TYPE> e(parent, "XTP_TE_RESUME_TYPE", pybind11::arithmetic());

View File

@ -22,6 +22,7 @@ void additional_init(pybind11::module &m)
void init_dispatcher(pybind11::module &m)
{
m.def("set_async_callback_exception_handler", &autocxxpy::async_callback_exception_handler::set_handler);
pybind11::class_<autocxxpy::async_dispatch_exception> c(m, "AsyncDispatchException");
c.def_property("what", &autocxxpy::async_dispatch_exception::what, nullptr);
c.def_readonly("instance", &autocxxpy::async_dispatch_exception::instance);

View File

@ -9,6 +9,8 @@ struct module_vnxtp{
static inline void process_post_assign()
{
cross.process_assign(objects);
cross.clear();
objects.clear();
}
};
using module_tag=tag_vnxtp;

View File

@ -91,7 +91,7 @@ namespace autocxxpy
struct async_callback_exception_handler
{
using handler_type = std::function<void(const async_dispatch_exception&)>;
using handler_type = std::function<bool(const async_dispatch_exception&)>;
static handler_type custom_handler;
inline static void handle_excepiton(const async_dispatch_exception&e)
@ -153,19 +153,19 @@ namespace autocxxpy
}
template <class T>
inline std::optional<T>& save(const T * val)
inline std::optional<T> save(const T * val)
{ // match const pointer
if (nullptr == val) AUTOCXXPY_UNLIKELY
{
return std::nullopt;
}
return const_cast<T&>(*val);
return *val;
}
template <class T>
inline T& save(const T & val)
inline T save(const T & val)
{ // match everything else : just use original type
return const_cast<T&>(val);
return val;
}

View File

@ -40,6 +40,11 @@ namespace autocxxpy
}
}
}
void clear()
{
_delay_assings.clear();
}
private:
std::vector<std::tuple<pybind11::object, std::string, std::string, std::string>> _delay_assings;
};

View File

@ -2,6 +2,7 @@
#include "../base/type.h"
#include "../base/check.h"
#include "../utils/type_traits.hpp"
#include <boost/callable_traits.hpp>
#include "../brigand.hpp"
@ -14,6 +15,7 @@
#include <type_traits>
#include "./utils.hpp"
#include <functional>
namespace autocxxpy
{
@ -24,19 +26,22 @@ namespace autocxxpy
return [](Ls ... ls, base_t &arg, Rs ... rs)
{
constexpr auto method = method_constant::value;
//using func_t = ct::function_type_t<decltype(method)>;
//using args_t = wrap<ct::args_t<func_t>, list>;
//using ret_t = ct::return_type_t<func_t>;
auto stdmethod = std::function<ct::function_type_t<decltype(method)>>(method);
if constexpr (std::is_void_v<ret_t>)
{
method(ls..., &arg, rs...);
stdmethod(std::forward<Ls>(ls)..., &arg, std::forward<Rs>(rs)...);
return std::move(arg);
}
else
{
return append_as_tuple(method(
ls...,
return append_as_tuple(stdmethod(
std::forward<Ls>(ls)...,
&arg,
rs...
std::forward<Rs>(rs)...
), std::move(arg));
}
};
}
@ -44,20 +49,21 @@ namespace autocxxpy
inline constexpr auto wrap_reference_argument_as_inout_impl(brigand::list<Ls...>, brigand::list <Rs...>)
{
namespace ct = boost::callable_traits;
return [](Ls ... ls, base_t &arg, Rs ... rs)
return [](Ls ... ls, base_t arg, Rs ... rs)
{
constexpr auto method = method_constant::value;
auto stdmethod = std::function<ct::function_type_t<decltype(method)>>(method);
if constexpr (std::is_void_v<ret_t>)
{
method(ls..., arg, rs...);
stdmethod(std::forward<Ls>(ls)..., arg, std::forward<Rs>(rs)...);
return arg;
}
else
{
return append_as_tuple(method(
ls...,
return append_as_tuple(stdmethod(
std::forward<Ls>(ls)...,
arg,
rs...
std::forward<Rs>(rs)...
), arg);
}

View File

@ -25,17 +25,18 @@ namespace autocxxpy
{
base_t arg;
constexpr auto method = method_constant::value;
auto stdmethod = std::function<ct::function_type_t<decltype(method)>>(method);
if constexpr (std::is_void_v<ret_t>)
{
method(ls..., &arg, rs...);
stdmethod(std::forward<Ls>(ls)..., &arg, std::forward<Rs>(rs)...);
return std::move(arg);
}
else
{
return append_as_tuple(method(
ls...,
return append_as_tuple(stdmethod(
std::forward<Ls>(ls)...,
&arg,
rs...
std::forward<Rs>(rs)...
), std::move(arg));
}
@ -49,17 +50,18 @@ namespace autocxxpy
{
base_t arg;
constexpr auto method = method_constant::value;
auto stdmethod = std::function<ct::function_type_t<decltype(method)>>(method);
if constexpr (std::is_void_v<ret_t>)
{
method(ls..., arg, rs...);
stdmethod(std::forward<Ls>(ls)..., arg, std::forward<Rs>(rs)...);
return arg;
}
else
{
return append_as_tuple(method(
ls...,
return append_as_tuple(stdmethod(
std::forward<Ls>(ls)...,
arg,
rs...
std::forward<Rs>(rs)...
), arg);
}

View File

@ -1,10 +1,13 @@
#pragma once
#include "../utils/type_traits.hpp"
namespace autocxxpy
{
template <class T, class T2>
auto append_as_tuple(T&& v1, T2&& v2)
{
return std::make_tuple<T, T2>(std::move(v1), std::move(v2));
return std::make_tuple<T, remove_cvref_t<T2>>(std::move(v1), std::move(v2));
}
template <class ... Ts, class T2, size_t ... idx>

View File

@ -140,7 +140,7 @@ class QuoteSpi():
...
def OnUnSubMarketData(self, ticker: XTPSpecificTickerStruct, error_info: XTPRspInfoStruct, is_last: bool)->Any:
...
def OnDepthMarketData(self, market_data: XTPMarketDataStruct, bid1_qty: Sequence[int], bid1_count: int, max_bid1_count: int, ask1_qty: Sequence[int], ask1_count: int, max_ask1_count: int)->Any:
def OnDepthMarketData(self, market_data: XTPMarketDataStruct, bid1_qty: List[int], bid1_count: int, max_bid1_count: int, ask1_qty: List[int], ask1_count: int, max_ask1_count: int)->Any:
...
def OnSubOrderBook(self, ticker: XTPSpecificTickerStruct, error_info: XTPRspInfoStruct, is_last: bool)->Any:
...
@ -204,17 +204,17 @@ class QuoteApi():
...
def SetHeartBeatInterval(self, interval: int)->Any:
...
def SubscribeMarketData(self, ticker: Sequence[str], exchange_id: XTP_EXCHANGE_TYPE)->int:
def SubscribeMarketData(self, ticker: List[str], exchange_id: XTP_EXCHANGE_TYPE)->int:
...
def UnSubscribeMarketData(self, ticker: Sequence[str], exchange_id: XTP_EXCHANGE_TYPE)->int:
def UnSubscribeMarketData(self, ticker: List[str], exchange_id: XTP_EXCHANGE_TYPE)->int:
...
def SubscribeOrderBook(self, ticker: Sequence[str], exchange_id: XTP_EXCHANGE_TYPE)->int:
def SubscribeOrderBook(self, ticker: List[str], exchange_id: XTP_EXCHANGE_TYPE)->int:
...
def UnSubscribeOrderBook(self, ticker: Sequence[str], exchange_id: XTP_EXCHANGE_TYPE)->int:
def UnSubscribeOrderBook(self, ticker: List[str], exchange_id: XTP_EXCHANGE_TYPE)->int:
...
def SubscribeTickByTick(self, ticker: Sequence[str], exchange_id: XTP_EXCHANGE_TYPE)->int:
def SubscribeTickByTick(self, ticker: List[str], exchange_id: XTP_EXCHANGE_TYPE)->int:
...
def UnSubscribeTickByTick(self, ticker: Sequence[str], exchange_id: XTP_EXCHANGE_TYPE)->int:
def UnSubscribeTickByTick(self, ticker: List[str], exchange_id: XTP_EXCHANGE_TYPE)->int:
...
def SubscribeAllMarketData(self, exchange_id: XTP_EXCHANGE_TYPE)->int:
...
@ -234,7 +234,7 @@ class QuoteApi():
...
def QueryAllTickers(self, exchange_id: XTP_EXCHANGE_TYPE)->int:
...
def QueryTickersPriceInfo(self, ticker: Sequence[str], exchange_id: XTP_EXCHANGE_TYPE)->int:
def QueryTickersPriceInfo(self, ticker: List[str], exchange_id: XTP_EXCHANGE_TYPE)->int:
...
def QueryAllTickersPriceInfo(self, )->int:
...