Assets and Positions

get_accounts Get Account List

value TradeClient::get_accounts()

Description

Get all accounts under the current developer

Return

web::json::value JSON array containing account information

Example

#include "tigerapi/trade_client.h"
#include "tigerapi/client_config.h"

using namespace TIGER_API;

ClientConfig config(false, U("/path/to/your/properties/"));
TradeClient trade_client(config);

value accounts = trade_client.get_accounts();
ucout << accounts.serialize() << std::endl;

get_asset Get Account Assets

value TradeClient::get_asset(utility::string_t account, const value &sub_accounts, bool segment, bool market_value)

Description

Get account asset information (applicable to Standard/Global/Paper accounts)

Parameters

ParameterTypeRequiredDescription
accountutility::string_tNoFund account, uses default account if not provided
sub_accountsvalueNoSub-account list (institutional users), default value::array()
segmentboolNoWhether to return segmented assets, default false
market_valueboolNoWhether to include position market value, default false

Return

web::json::value JSON object

Return Properties

PropertyTypeDescription
accountstringFund account
segmentsarrayAccount segment information list
-- categorystringSegment category S(Securities)/C(Futures)
-- currencystringCurrency
-- netLiquidationfloatNet liquidation value
-- equityWithLoanfloatEquity with loan value
-- initMarginfloatInitial margin
-- maintainMarginfloatMaintenance margin
-- buyingPowerfloatBuying power
-- cashBalancefloatCash balance
-- grossPositionValuefloatTotal position market value
-- unrealizedPLfloatUnrealized P&L
-- realizedPLfloatRealized P&L

Example

#include "tigerapi/trade_client.h"
#include "tigerapi/client_config.h"

using namespace TIGER_API;

ClientConfig config(false, U("/path/to/your/properties/"));
TradeClient trade_client(config);

// Get all assets
value assets = trade_client.get_asset();
ucout << assets.serialize() << std::endl;

// Get assets with segment information
value assets_seg = trade_client.get_asset(config.account, value::array(), true);
ucout << assets_seg.serialize() << std::endl;

get_prime_asset Get Prime Account Assets

value TradeClient::get_prime_asset(const utility::string_t &account, const utility::string_t &base_currency)

Description

Get Global (Prime) account asset information, returns JSON format

Parameters

ParameterTypeRequiredDescription
accountutility::string_tNoFund account, uses configured account by default
base_currencyutility::string_t or CurrencyNoBase currency, default U("USD") / Currency::USD

Return

web::json::value JSON object

Example

ClientConfig config(false, U("/path/to/your/properties/"));
TradeClient trade_client(config);

value prime_asset = trade_client.get_prime_asset();
ucout << prime_asset.serialize() << std::endl;

get_prime_portfolio Get Prime Account Portfolio

PortfolioAccount TradeClient::get_prime_portfolio(const utility::string_t &account, const utility::string_t &base_currency)

Description

Get Global account portfolio asset information, returns PortfolioAccount struct (containing Segment and CurrencyAsset detailed data)

Parameters

ParameterTypeRequiredDescription
accountutility::string_tNoFund account
base_currencyutility::string_tNoBase currency, default U("USD")

Return

PortfolioAccount object

PortfolioAccount Properties

PropertyTypeDescription
accountutility::string_tFund account
update_timestamplongUpdate timestamp
segmentsvector<Segment>Segment list

Segment Properties

PropertyTypeDescription
categoryutility::string_tSegment category
capabilityutility::string_tAccount capability
currencyutility::string_tCurrency
buying_powerdoubleBuying power
cash_available_for_tradedoubleCash available for trading
cash_available_for_withdrawaldoubleCash available for withdrawal
cash_balancedoubleCash balance
equity_with_loandoubleEquity with loan value
excess_liquidationdoubleExcess liquidity
gross_position_valuedoubleTotal position market value
init_margindoubleInitial margin
maintain_margindoubleMaintenance margin
net_liquidationdoubleNet liquidation value
realized_pldoubleRealized P&L
unrealized_pldoubleUnrealized P&L
currency_assetsvector<CurrencyAsset>Currency asset list

CurrencyAsset Properties

PropertyTypeDescription
currencyutility::string_tCurrency
cash_balancedoubleCash balance
cash_available_for_tradedoubleCash available for trading
gross_position_valuedoublePosition market value
stock_market_valuedoubleStock market value
option_market_valuedoubleOption market value
realized_pldoubleRealized P&L
unrealized_pldoubleUnrealized P&L

Example

ClientConfig config(false, U("/path/to/your/properties/"));
TradeClient trade_client(config);

PortfolioAccount portfolio = trade_client.get_prime_portfolio();
std::cout << "Account: " << portfolio.account << std::endl;
for (auto& seg : portfolio.segments) {
    ucout << U("Segment: ") << seg.category
          << U(" Net Liquidation: ") << seg.net_liquidation
          << std::endl;
    for (auto& asset : seg.currency_assets) {
        ucout << U("  Currency: ") << asset.currency
              << U(" Cash: ") << asset.cash_balance
              << std::endl;
    }
}

get_positions Get Positions

value TradeClient::get_positions(utility::string_t account, SecType sec_type, Currency currency, Market market, utility::string_t symbol, const value &sub_accounts, time_t expiry, utility::string_t strike, Right right)

Description

Get account position information. This method provides multiple overloaded versions supporting both enum and string parameter types.

Parameters (Enum Version)

ParameterTypeRequiredDescription
accountutility::string_tNoFund account
sec_typeSecTypeNoContract type, default SecType::ALL
currencyCurrencyNoCurrency, default Currency::ALL
marketMarketNoMarket, default Market::ALL
symbolutility::string_tNoSymbol, default empty
sub_accountsvalueNoSub-account list
expirytime_tNoOption expiry timestamp, default -1
strikeutility::string_tNoOption strike price
rightRightNoOption direction, default Right::ALL

Parameters (String Version)

ParameterTypeRequiredDescription
accountutility::string_tNoFund account
sec_typeutility::string_tNoContract type, e.g., U("STK")
currencyutility::string_tNoCurrency, default U("ALL")
marketutility::string_tNoMarket, default U("ALL")
symbolutility::string_tNoSymbol
sub_accountsvalueNoSub-account list
expirytime_tNoOption expiry timestamp
strikeutility::string_tNoOption strike price
rightutility::string_tNoOption direction, e.g., U("PUT")/U("CALL")

Return

web::json::value JSON array, or vector<Position> position object list (using get_position_list method)

Position Object Properties

PropertyTypeDescription
accountutility::string_tFund account
contractContractContract object
positionlong longPosition quantity
average_costdoubleAverage cost
latest_pricedoubleLatest price
market_valuedoublePosition market value
unrealized_pnldoubleUnrealized P&L
realized_pnldoubleRealized P&L

Example

ClientConfig config(false, U("/path/to/your/properties/"));
TradeClient trade_client(config);

// Get all positions (JSON format)
value positions = trade_client.get_positions();
ucout << positions.serialize() << std::endl;

// Get positions for a specific symbol (enum version)
value pos_aapl = trade_client.get_positions(
    config.account,
    SecType::STK,
    Currency::ALL,
    Market::ALL,
    U("AAPL")
);
ucout << pos_aapl.serialize() << std::endl;

// Get position object list
vector<Position> pos_list = trade_client.get_position_list();
for (auto& pos : pos_list) {
    ucout << pos.contract.symbol << U(" position: ") << pos.position
          << U(" avg_cost: ") << pos.average_cost << std::endl;
}

get_analytics_asset Get Asset Analytics

value TradeClient::get_analytics_asset(utility::string_t account, utility::string_t start_date, utility::string_t end_date, utility::string_t seg_type, utility::string_t currency, utility::string_t sub_account)

Description

Get account asset analytics data, including historical asset changes

Parameters

ParameterTypeRequiredDescription
accountutility::string_tYesFund account
start_dateutility::string_tYesStart date, format "yyyy-MM-dd"
end_dateutility::string_tYesEnd date, format "yyyy-MM-dd"
seg_typeutility::string_tNoAccount segment, U("SEC")/U("FUT"), default U("SEC")
currencyutility::string_tNoCurrency, default U("USD")
sub_accountutility::string_tNoSub-account, default empty

Return

web::json::value JSON object

Example

ClientConfig config(false, U("/path/to/your/properties/"));
TradeClient trade_client(config);

value analytics = trade_client.get_analytics_asset(
    config.account,
    U("2024-01-01"),
    U("2024-06-30")
);
ucout << analytics.serialize() << std::endl;

get_estimate_tradable_quantity Get Estimated Tradable Quantity

value TradeClient::get_estimate_tradable_quantity(Order &order, utility::string_t seg_type)

Description

Estimate the maximum tradable quantity for a given symbol in the current account. An Order object must be constructed and passed in.

Parameters

ParameterTypeRequiredDescription
orderOrder&YesOrder object (containing contract, direction, price, etc.)
seg_typeutility::string_tNoAccount segment, default U("SEC")

Return

web::json::value JSON object

Example

#include "tigerapi/trade_client.h"
#include "tigerapi/client_config.h"
#include "tigerapi/contract_util.h"
#include "tigerapi/order_util.h"

using namespace TIGER_API;

ClientConfig config(false, U("/path/to/your/properties/"));
TradeClient trade_client(config);

Contract contract = ContractUtil::stock_contract(U("AAPL"), U("USD"));
Order order = OrderUtil::limit_order(config.account, contract, U("BUY"), 100, 150.0);

value result = trade_client.get_estimate_tradable_quantity(order);
ucout << result.serialize() << std::endl;

What’s Next