diff --git a/include/Exchange_Client.h b/include/Exchange_Client.h index aefdc70..78792f3 100644 --- a/include/Exchange_Client.h +++ b/include/Exchange_Client.h @@ -89,6 +89,7 @@ class Client Json::Value test_new_order(const Params* params_ptr); Json::Value new_order(const Params* params_ptr); + Json::Value modify_order(const Params* params_ptr); Json::Value cancel_order(const Params* params_ptr); Json::Value cancel_all_orders(const Params* params_ptr); Json::Value query_order(const Params* params_ptr); @@ -281,12 +282,20 @@ class Client Json::Value margin_account_order(const Params* params_ptr); Json::Value margin_account_open_orders(const Params* params_ptr = nullptr); Json::Value margin_account_all_orders(const Params* params_ptr); + Json::Value margin_new_oco_order(const Params* params_ptr); + Json::Value margin_cancel_oco_order(const Params* params_ptr); + Json::Value margin_query_oco_orders(const Params* params_ptr); + Json::Value margin_query_oco_all_orders(const Params* params_ptr); + Json::Value margin_query_oco_open_orders(const Params* params_ptr); Json::Value margin_account_trades_list(const Params* params_ptr); Json::Value margin_max_borrow(const Params* params_ptr); Json::Value margin_max_transfer(const Params* params_ptr); Json::Value margin_isolated_margin_transfer(const Params* params_ptr); Json::Value margin_isolated_margin_transfer_history(const Params* params_ptr); Json::Value margin_isolated_margin_account_info(const Params* params_ptr = nullptr); + Json::Value margin_isolated_margin_disable_account(const Params* params_ptr); + Json::Value margin_isolated_margin_enable_account(const Params* params_ptr); + Json::Value margin_isolated_margin_query_account_limits(const Params* params_ptr = nullptr); Json::Value margin_isolated_margin_symbol(const Params* params_ptr); Json::Value margin_isolated_margin_symbol_all(const Params* params_ptr = nullptr); Json::Value toggle_bnb_burn(const Params* params_ptr = nullptr); @@ -380,7 +389,9 @@ class Client Json::Value request_quote(const Params* params_ptr); Json::Value make_swap(const Params* params_ptr); Json::Value get_swap_history(const Params* params_ptr); - + Json::Value get_pool_configure(const Params* params_ptr = nullptr); + Json::Value add_liquidity_preview(const Params* params_ptr); + Json::Value remove_liquidity_preview(const Params* params_ptr); }; struct Fiat @@ -452,6 +463,7 @@ class FuturesClient : public Client> Json::Value v_test_new_order(const Params* params_ptr); Json::Value v_new_order(const Params* params_ptr); + Json::Value v_modify_order(const Params* params_ptr); Json::Value v_cancel_order(const Params* params_ptr); Json::Value v_cancel_all_orders(const Params* params_ptr); Json::Value v_query_order(const Params* params_ptr); @@ -480,6 +492,8 @@ class FuturesClient : public Client> Json::Value change_position_mode(const Params* params_ptr); Json::Value get_position_mode(const Params* params_ptr = nullptr); Json::Value batch_orders(const Params* params_ptr); + Json::Value modify_batch_orders(const Params* params_ptr); + Json::Value modify_batch_orders_history(const Params* params_ptr); Json::Value cancel_batch_orders(const Params* params_ptr); Json::Value cancel_all_orders_timer(const Params* params_ptr); Json::Value query_open_order(const Params* params_ptr); @@ -607,6 +621,7 @@ class FuturesClientUSDT : public FuturesClient // -- mutual with spot Json::Value v__new_order(const Params* params_ptr); + Json::Value v__modify_order(const Params* params_ptr); Json::Value v__cancel_order(const Params* params_ptr); Json::Value v__cancel_all_orders(const Params* params_ptr); Json::Value v__query_order(const Params* params_ptr); @@ -620,6 +635,8 @@ class FuturesClientUSDT : public FuturesClient Json::Value v_change_position_mode(const Params* params_ptr); Json::Value v_get_position_mode(const Params* params_ptr); Json::Value v_batch_orders(const Params* params_ptr); + Json::Value v_modify_batch_orders(const Params* params_ptr); + Json::Value v_modify_batch_orders_history(const Params* params_ptr); Json::Value v_cancel_batch_orders(const Params* params_ptr); Json::Value v_cancel_all_orders_timer(const Params* params_ptr); Json::Value v_query_open_order(const Params* params_ptr); @@ -729,6 +746,7 @@ class FuturesClientCoin : public FuturesClient // -- mutual with spot Json::Value v__new_order(const Params* params_ptr); + Json::Value v__modify_order(const Params* params_ptr); Json::Value v__cancel_order(const Params* params_ptr); Json::Value v__cancel_all_orders(const Params* params_ptr); Json::Value v__query_order(const Params* params_ptr); @@ -742,6 +760,8 @@ class FuturesClientCoin : public FuturesClient Json::Value v_change_position_mode(const Params* params_ptr); Json::Value v_get_position_mode(const Params* params_ptr); Json::Value v_batch_orders(const Params* params_ptr); + Json::Value v_modify_batch_orders(const Params* params_ptr); + Json::Value v_modify_batch_orders_history(const Params* params_ptr); Json::Value v_cancel_batch_orders(const Params* params_ptr); Json::Value v_cancel_all_orders_timer(const Params* params_ptr); Json::Value v_query_open_order(const Params* params_ptr); @@ -836,6 +856,7 @@ class SpotClient : public Client Json::Value v_test_new_order(const Params* params_ptr); Json::Value v_new_order(const Params* params_ptr); + Json::Value v_modify_order(const Params* params_ptr); Json::Value v_cancel_order(const Params* params_ptr); Json::Value v_cancel_all_orders(const Params* params_ptr); Json::Value v_query_order(const Params* params_ptr); @@ -908,6 +929,7 @@ class OpsClient : public Client Json::Value v_account_info(const Params* params_ptr = nullptr); Json::Value v_test_new_order(const Params* params_ptr); Json::Value v_new_order(const Params* params_ptr); + Json::Value v_modify_order(const Params* params_ptr); Json::Value v_cancel_order(const Params* params_ptr); Json::Value v_cancel_all_orders(const Params* params_ptr); Json::Value v_query_order(const Params* params_ptr); diff --git a/src/Binance_Client.cpp b/src/Binance_Client.cpp index 1e7a238..3142eae 100755 --- a/src/Binance_Client.cpp +++ b/src/Binance_Client.cpp @@ -401,6 +401,25 @@ Json::Value Client::new_order(const Params* params_ptr) } } +/** + Modify order + @param params_ptr - a pointer to the request Params object + @return the json returned by the request +*/ +template +Json::Value Client::modify_order(const Params* params_ptr) +{ + try + { + return static_cast(this)->v_modify_order(params_ptr); + } + catch (ClientException e) + { + e.append_to_traceback(std::string(__FUNCTION__)); + throw(e); + } +} + /** Cancel an order @param params_ptr - a pointer to the request Params object @@ -2912,6 +2931,127 @@ Json::Value Client::MarginAccount::margin_account_all_orders(const Params* pa } }; +/** + Margin Account New OCO + + @param params_ptr - a pointer to the request Params object + @return the json returned by the request +*/ +template +Json::Value Client::MarginAccount::margin_new_oco_order(const Params* params_ptr) +{ + try + { + std::string full_path = _BASE_REST_SPOT + "/sapi/v1/margin/order/oco"; + std::string query = user_client->_generate_query(params_ptr, 1); + Json::Value response = (user_client->_rest_client)->_postreq(full_path + query); + + return response; + } + catch (ClientException e) + { + e.append_to_traceback(std::string(__FUNCTION__)); + throw(e); + } +}; + +/** + Margin Account Cancel OCO + *Canceling an individual leg will cancel the entire OCO + + @param params_ptr - a pointer to the request Params object + @return the json returned by the request +*/ +template +Json::Value Client::MarginAccount::margin_cancel_oco_order(const Params* params_ptr) +{ + try + { + std::string full_path = _BASE_REST_SPOT + "/sapi/v1/margin/orderList"; + std::string query = user_client->_generate_query(params_ptr, 1); + Json::Value response = (user_client->_rest_client)->_deletereq(full_path + query); + + return response; + } + catch (ClientException e) + { + e.append_to_traceback(std::string(__FUNCTION__)); + throw(e); + } +}; + +/** + Query Margin Account's OCO + + @param params_ptr - a pointer to the request Params object + @return the json returned by the request +*/ +template +Json::Value Client::MarginAccount::margin_query_oco_orders(const Params* params_ptr) +{ + try + { + std::string full_path = _BASE_REST_SPOT + "/sapi/v1/margin/orderList"; + std::string query = user_client->_generate_query(params_ptr, 1); + Json::Value response = (user_client->_rest_client)->_getreq(full_path + query); + + return response; + } + catch (ClientException e) + { + e.append_to_traceback(std::string(__FUNCTION__)); + throw(e); + } +}; + +/** + Query Margin Account's all OCO + + @param params_ptr - a pointer to the request Params object + @return the json returned by the request +*/ +template +Json::Value Client::MarginAccount::margin_query_oco_all_orders(const Params* params_ptr) +{ + try + { + std::string full_path = _BASE_REST_SPOT + "/sapi/v1/margin/allOrderList"; + std::string query = user_client->_generate_query(params_ptr, 1); + Json::Value response = (user_client->_rest_client)->_getreq(full_path + query); + + return response; + } + catch (ClientException e) + { + e.append_to_traceback(std::string(__FUNCTION__)); + throw(e); + } +}; + +/** + Query Margin Account's Open OCO + + @param params_ptr - a pointer to the request Params object + @return the json returned by the request +*/ +template +Json::Value Client::MarginAccount::margin_query_oco_open_orders(const Params* params_ptr) +{ + try + { + std::string full_path = _BASE_REST_SPOT + "/sapi/v1/margin/openOrderList"; + std::string query = user_client->_generate_query(params_ptr, 1); + Json::Value response = (user_client->_rest_client)->_getreq(full_path + query); + + return response; + } + catch (ClientException e) + { + e.append_to_traceback(std::string(__FUNCTION__)); + throw(e); + } +}; + /** Query Margin Account's Trade List *If fromId is set, it will get trades >= that fromId. Otherwise most recent trades are returned. @@ -3062,6 +3202,78 @@ Json::Value Client::MarginAccount::margin_isolated_margin_account_info(const } }; +/** + Disable Isolated Margin Account + + @param params_ptr - a pointer to the request Params object + @return the json returned by the request +*/ +template +Json::Value Client::MarginAccount::margin_isolated_margin_disable_account(const Params* params_ptr) +{ + try + { + std::string full_path = _BASE_REST_SPOT + "/sapi/v1/margin/isolated/account"; + std::string query = user_client->_generate_query(params_ptr, 1); + Json::Value response = (user_client->_rest_client)->_deletereq(full_path + query); + + return response; + } + catch (ClientException e) + { + e.append_to_traceback(std::string(__FUNCTION__)); + throw(e); + } +}; + +/** + Enable Isolated Margin Account + + @param params_ptr - a pointer to the request Params object + @return the json returned by the request +*/ +template +Json::Value Client::MarginAccount::margin_isolated_margin_enable_account(const Params* params_ptr) +{ + try + { + std::string full_path = _BASE_REST_SPOT + "/sapi/v1/margin/isolated/account"; + std::string query = user_client->_generate_query(params_ptr, 1); + Json::Value response = (user_client->_rest_client)->_postreq(full_path + query); + + return response; + } + catch (ClientException e) + { + e.append_to_traceback(std::string(__FUNCTION__)); + throw(e); + } +}; + +/** + Query Enabled Isolated Margin Account Limit + + @param params_ptr - a pointer to the request Params object + @return the json returned by the request +*/ +template +Json::Value Client::MarginAccount::margin_isolated_margin_query_account_limits(const Params* params_ptr) +{ + try + { + std::string full_path = _BASE_REST_SPOT + "/sapi/v1/margin/isolated/accountLimit"; + std::string query = user_client->_generate_query(params_ptr, 1); + Json::Value response = (user_client->_rest_client)->_getreq(full_path + query); + + return response; + } + catch (ClientException e) + { + e.append_to_traceback(std::string(__FUNCTION__)); + throw(e); + } +}; + /** Query Isolated Margin Symbol @@ -4452,6 +4664,75 @@ Json::Value Client::BSwap::get_swap_history(const Params* params_ptr) } }; +/** + Get Pool Configure + @param params_ptr - a pointer to the request Params object + @return json returned by the request +*/ +template +Json::Value Client::BSwap::get_pool_configure(const Params* params_ptr) +{ + try + { + std::string full_path = _BASE_REST_SPOT + "/sapi/v1/bswap/poolConfigure"; + std::string query = user_client->_generate_query(params_ptr, 1); + Json::Value response = (user_client->_rest_client)->_getreq(full_path + query); + + return response; + } + catch (ClientException e) + { + e.append_to_traceback(std::string(__FUNCTION__)); + throw(e); + } +}; + +/** + Add Liquidity Preview + @param params_ptr - a pointer to the request Params object + @return json returned by the request +*/ +template +Json::Value Client::BSwap::add_liquidity_preview(const Params* params_ptr) +{ + try + { + std::string full_path = _BASE_REST_SPOT + "/sapi/v1/bswap/addLiquidityPreview"; + std::string query = user_client->_generate_query(params_ptr, 1); + Json::Value response = (user_client->_rest_client)->_getreq(full_path + query); + + return response; + } + catch (ClientException e) + { + e.append_to_traceback(std::string(__FUNCTION__)); + throw(e); + } +}; + +/** + Remove Liquidity Preview + @param params_ptr - a pointer to the request Params object + @return json returned by the request +*/ +template +Json::Value Client::BSwap::remove_liquidity_preview(const Params* params_ptr) +{ + try + { + std::string full_path = _BASE_REST_SPOT + "/sapi/v1/bswap/removeLiquidityPreview"; + std::string query = user_client->_generate_query(params_ptr, 1); + Json::Value response = (user_client->_rest_client)->_getreq(full_path + query); + + return response; + } + catch (ClientException e) + { + e.append_to_traceback(std::string(__FUNCTION__)); + throw(e); + } +}; + // ------------------------------ End | Client BSwap - User Mining Endpoints @@ -4842,6 +5123,16 @@ Json::Value SpotClient::v_new_order(const Params* params_ptr) return response; } +/** + CRTP of modify_order() +*/ +Json::Value SpotClient::v_modify_order(const Params* params_ptr) +{ + MissingEndpoint e{}; + e.append_to_traceback(std::string(__FUNCTION__)); + throw(e); +} + /** CRTP of cancel_order() */ @@ -5374,6 +5665,12 @@ Json::Value FuturesClient::v_test_new_order(const Params* params_ptr) template Json::Value FuturesClient::v_new_order(const Params* params_ptr) { return static_cast(this)->v__new_order(params_ptr); } +/** + CRTP of modify_order() +*/ +template +Json::Value FuturesClient::v_modify_order(const Params* params_ptr) { return static_cast(this)->v__modify_order(params_ptr); } + /** CRTP of cancel_order() */ @@ -5475,6 +5772,45 @@ Json::Value FuturesClient::batch_orders(const Params* params_ptr) } } +/** + Modify Multiple Order + @param params_ptr - a pointer to the request Params object + @return json returned by the request +*/ +template +Json::Value FuturesClient::modify_batch_orders(const Params* params_ptr) +{ + try + { + return static_cast(this)->v_modify_batch_orders(params_ptr); + } + catch (ClientException e) + { + e.append_to_traceback(std::string(__FUNCTION__)); + throw(e); + } +} + + +/** + Get Order Modify History + @param params_ptr - a pointer to the request Params object + @return json returned by the request +*/ +template +Json::Value FuturesClient::modify_batch_orders_history(const Params* params_ptr) +{ + try + { + return static_cast(this)->v_modify_batch_orders_history(params_ptr); + } + catch (ClientException e) + { + e.append_to_traceback(std::string(__FUNCTION__)); + throw(e); + } +} + /** Cancel Multiple Orders - Cancel all open orders of the specified symbol at the end of the specified countdown. @param params_ptr - a pointer to the request Params object @@ -6273,6 +6609,16 @@ Json::Value FuturesClientUSDT::v__new_order(const Params* params_ptr) return response; } +/** + CRTP of v_modify_order() +*/ +Json::Value FuturesClientUSDT::v__modify_order(const Params* params_ptr) +{ + MissingEndpoint e{}; + e.append_to_traceback(std::string(__FUNCTION__)); + throw(e); +} + /** CRTP of v_cancel_order() */ @@ -6406,6 +6752,26 @@ Json::Value FuturesClientUSDT::v_batch_orders(const Params* params_ptr) return response; } +/** + CRTP of modify_batch_orders() +*/ +Json::Value FuturesClientUSDT::v_modify_batch_orders(const Params* params_ptr) +{ + MissingEndpoint e{}; + e.append_to_traceback(std::string(__FUNCTION__)); + throw(e); +} + +/** + CRTP of modify_batch_orders() +*/ +Json::Value FuturesClientUSDT::v_modify_batch_orders_history(const Params* params_ptr) +{ + MissingEndpoint e{}; + e.append_to_traceback(std::string(__FUNCTION__)); + throw(e); +} + /** CRTP of cancel_batch_orders() */ @@ -6877,6 +7243,19 @@ Json::Value FuturesClientCoin::v__new_order(const Params* params_ptr) return response; } +/** + CRTP of v_modify_order() +*/ +Json::Value FuturesClientCoin::v__modify_order(const Params* params_ptr) +{ + std::string query = this->_generate_query(params_ptr, 1); + std::string full_path = !this->_testnet_mode ? _BASE_REST_FUTURES_COIN : _BASE_REST_FUTURES_TESTNET; + full_path += ("/dapi/v1/order" + query); + Json::Value response = (this->_rest_client)->_putreq(full_path); + + return response; +} + /** CRTP of v_cancel_order() */ @@ -7010,6 +7389,32 @@ Json::Value FuturesClientCoin::v_batch_orders(const Params* params_ptr) return response; } +/** + CRTP of modify_batch_orders() +*/ +Json::Value FuturesClientCoin::v_modify_batch_orders(const Params* params_ptr) +{ + std::string query = this->_generate_query(params_ptr, 1); + std::string full_path = !this->_testnet_mode ? _BASE_REST_FUTURES_COIN : _BASE_REST_FUTURES_TESTNET; + full_path += ("/dapi/v1/batchOrders" + query); + Json::Value response = (this->_rest_client)->_putreq(full_path); + + return response; +} + +/** + CRTP of modify_batch_orders() +*/ +Json::Value FuturesClientCoin::v_modify_batch_orders_history(const Params* params_ptr) +{ + std::string query = this->_generate_query(params_ptr, 1); + std::string full_path = !this->_testnet_mode ? _BASE_REST_FUTURES_COIN : _BASE_REST_FUTURES_TESTNET; + full_path += ("/dapi/v1/orderAmendment" + query); + Json::Value response = (this->_rest_client)->_getreq(full_path); + + return response; +} + /** CRTP of cancel_batch_orders() */ @@ -7729,6 +8134,16 @@ Json::Value OpsClient::v_new_order(const Params* params_ptr) return response; } +/** + CRTP of modify_order() +*/ +Json::Value OpsClient::v_modify_order(const Params* params_ptr) +{ + MissingEndpoint e{}; + e.append_to_traceback(std::string(__FUNCTION__)); + throw(e); +} + /** CRTP of cancel_order() */ @@ -8034,6 +8449,8 @@ template class Client>; template Json::Value FuturesClient::get_position_mode(const Params* params_ptr); template Json::Value FuturesClient::change_position_mode(const Params* params_ptr); template Json::Value FuturesClient::batch_orders(const Params* params_ptr); +template Json::Value FuturesClient::modify_batch_orders(const Params* params_ptr); +template Json::Value FuturesClient::modify_batch_orders_history(const Params* params_ptr); template Json::Value FuturesClient::cancel_batch_orders(const Params* params_ptr); template Json::Value FuturesClient::cancel_all_orders_timer(const Params* params_ptr); template Json::Value FuturesClient::query_open_order(const Params* params_ptr); @@ -8067,6 +8484,8 @@ template class Client>; template Json::Value FuturesClient::get_position_mode(const Params* params_ptr); template Json::Value FuturesClient::change_position_mode(const Params* params_ptr); template Json::Value FuturesClient::batch_orders(const Params* params_ptr); +template Json::Value FuturesClient::modify_batch_orders(const Params* params_ptr); +template Json::Value FuturesClient::modify_batch_orders_history(const Params* params_ptr); template Json::Value FuturesClient::cancel_batch_orders(const Params* params_ptr); template Json::Value FuturesClient::cancel_all_orders_timer(const Params* params_ptr); template Json::Value FuturesClient::query_open_order(const Params* params_ptr);