references/cli-parameters.md
# CLI parameters
When generating commands, use the smallest parameter set: include only required parameters, parameters the user explicitly specified, or parameters required to change CLI default behavior. Do not unconditionally write CLI defaults into the command.
## Current command tree
```text
futu
├── account
│ ├── list
│ ├── funds
│ └── cash-logs
├── margin-ratio
├── position
├── order
│ ├── buy <symbol> <qty>
│ ├── sell <symbol> <qty>
│ ├── place <qty>
│ ├── modify <order-id>
│ ├── cancel <order-id>
│ ├── list
│ ├── history
│ ├── detail <order-id> [order-id...]
│ ├── max-qty <symbol>
│ └── fees <order-id>
└── deal
└── history
```
`futu deal` with no extra arguments queries today's fills. `futu deal history` queries historical fills.
## Global parameters
| Parameter | Default | When to pass |
| --- | --- | --- |
| `--format`, `-f` | `table` | Pass `--format json` only when the agent needs to parse the output. Usually omit it for commands the user will copy and run. |
| `--token-file` | config item `token_file` | Pass only when the user asks to use a non-default token file. |
Internal invocation convention: when this skill actually calls the CLI from Bash, always append the hidden internal marker `--source skill` at the end of the command. With `--source skill`, the CLI automatically detects hosts such as Codex or Claude Code and reports `agent_name`. Append `--agent codex` or `--agent claude_code` only when auto-detection fails and the CLI is confirmed to support it. Do not include these internal markers in commands shown to the user.
JSON output drops empty strings, empty arrays, empty objects, and numeric 0. Boolean values are kept. Amounts, prices, and quantities are handled as strings or decimals.
## Auth and status
| Command | Required | Default / omit | Notes |
| --- | --- | --- | --- |
| `futu auth status` | none | `--format table` | Inspect the local token, accounts, and permissions. Add `--format json` when parsing. |
| `futu check` | none | none | Check local token availability and API connectivity. |
| `futu auth login` | none | `--client-name` defaults to username and hostname, `--no-browser=false` | Pass `--no-browser` only in an environment without a browser. |
| `futu auth logout` | none | none | Clear the local token. |
| `futu config set default_account <account-id>` | `key value` | none | Set the default trading account. Later commands that support `default_account` can omit `--account`. |
## Account resolution
- Any command whose rule is "also requires `--account` when no default account is configured" must not assume a default account exists. Omit `--account` only when this turn has already confirmed a default account from `futu auth status --format json` or config.
- If this turn has not confirmed a default account, run `futu account list --format json` or ask the user to choose an account, then pass `--account <account-id>` explicitly.
- If the user already gave an account ID in the request or recent context, pass `--account <account-id>` explicitly. Do not rely on the default.
- If the CLI returns `account ID is required`, do not retry the same command unchanged. Resolve the account first, then retry with `--account <account-id>`. Configure `default_account` only when the user explicitly asks.
## Accounts, funds, and positions
| Command | Required | Default / omit | Optional parameters |
| --- | --- | --- | --- |
| `futu account list` | none | none | none |
| `futu account funds` | none if `default_account` is configured | `--currency USD` | `--account`, `--currency` |
| `futu account cash-logs` | `--begin-time`, `--end-time` (microseconds); also `--account` when no default account is configured | `--page-size 10` | `--account`, `--direction` (`IN` / `OUT`), `--code`, `--page-flag`, `--page-size` (1–20) |
| `futu margin-ratio` | `--security-firm`, `--codes` (comma-separated, max 10) | none | none |
| `futu position` | none if `default_account` is configured | none | `--account`, `--symbol`, `--pl-ratio-min`, `--pl-ratio-max` |
Field mapping:
| CLI parameter | Backend field |
| --- | --- |
| `account funds --currency` | query parameter `currency` |
| `position --symbol` | `code` |
| `position --pl-ratio-min` | `pl_ratio_min` |
| `position --pl-ratio-max` | `pl_ratio_max` |
Examples:
- Default-account funds: `futu account funds`
- Funds for a specific account: `futu account funds --account <account-id>`
- Funds in a specific currency: `futu account funds --account <account-id> --currency HKD`
- A specific position: `futu position --symbol US.AAPL`
Cash log rules:
- `--begin-time` and `--end-time` are Unix timestamps in **microseconds** (same convention as `order history --start` / `--end`).
- One CLI call returns one page. JSON fields: `cash_logs`, `page_flag`, `completed`. When the user needs more rows, repeat with `--page-flag <value>` from the prior response until `completed` is true.
- Optional `--direction`: `IN` (inflow) or `OUT` (outflow). Optional `--code`: filter by `MARKET.CODE`.
Cash log examples:
- Last day of flows (times are illustrative; compute microsecond bounds for the user's range): `futu account cash-logs --account <account-id> --begin-time 1709251200000000 --end-time 1709337600000000 --format json`
- Inflows only: `futu account cash-logs --begin-time <us> --end-time <us> --direction IN --format json`
Margin ratio rules:
- `--codes`: up to 10 symbols, comma-separated, e.g. `HK.00700,US.AAPL`.
- `--security-firm`: broker entity for the account (see [dictionaries](dictionaries.md)). Example HK account: `FUTUSECURITIES`.
Margin ratio example:
- `futu margin-ratio --security-firm FUTUSECURITIES --codes HK.00700,US.AAPL --format json`
## Order placement
| Command | Required | Default / omit | Optional parameters |
| --- | --- | --- | --- |
| `futu order buy <symbol> <qty>` | `symbol`, `qty`; also `--account` when no default account is configured | `--type market`, `--time-in-force DAY` | `--account`, `--price`, `--type`, `--time-in-force`, `--lot-type`, `--remark`, `--session`, `--aux-price`, `--order-class`, `--multi-leg-info` |
| `futu order sell <symbol> <qty>` | `symbol`, `qty`; also `--account` when no default account is configured | `--type market`, `--time-in-force DAY` | same as above |
| `futu order place <qty>` | `qty`, `--side`; a regular order also needs `--symbol`; also `--account` when no default account is configured | `--type market`, `--time-in-force DAY` | same as above |
Field mapping: `<symbol>` / `--symbol` -> `code`, `BUY` / `SELL` / `--side` -> `side`, `--type` -> `order_type`, `<qty>` -> `qty`, `--price` -> `price`, `--time-in-force` -> `time_in_force`, `--lot-type` -> `lot_type`, `--remark` -> `remark`, `--session` -> `session`, `--aux-price` -> `aux_price`, `--order-class` -> `order_class`, `--multi-leg-info` -> `multi_leg_info`.
Order rules:
- `order buy` fixes the side to `BUY`. `order sell` fixes the side to `SELL`. Do not also pass `--side`.
- `order place` is for `SELL_SHORT`, `BUY_BACK`, conditional orders, and multi-leg orders. A regular order must pass `--symbol`. `--symbol` may be omitted when `--order-class MLEG`.
- `--multi-leg-info` must be a JSON object string.
- If the user did not specify an order type, do not pass `--type market` explicitly.
Order examples:
- User says "buy 1 share of Apple" and a default account exists: `futu order buy US.AAPL 1`
- User says "buy 1 share of Apple at a 280 limit": `futu order buy US.AAPL 1 --price 280 --type limit`
- User specifies an account: `futu order buy US.AAPL 1 --account <account-id> --price 280 --type limit`
- Multi-leg order: `futu order place 1 --side BUY --order-class MLEG --multi-leg-info '<json-object>'`
## Modify, cancel, and query
| Command | Required | Default / omit | Optional parameters |
| --- | --- | --- | --- |
| `futu order modify <order-id>` | `order-id`, `--exchange`, `--qty`; also `--account` when no default account is configured | omitting `--price` means the price is unchanged; omitting `--aux-price` means the trigger price is unchanged | `--account`, `--exchange`, `--qty`, `--price`, `--aux-price` |
| `futu order cancel <order-id>` | `order-id`, `--exchange`; also `--account` when no default account is configured | none | `--account`, `--exchange` |
| `futu order list` | none if `default_account` is configured | `--market HK`, `--page-size 50` | `--account`, `--market`, `--page-size` |
| `futu order history` | none if `default_account` is configured | `--market HK`, `--page-size 50`, `--start 0`, `--end 0`, no `--symbol` filter | `--account`, `--market`, `--start`, `--end`, `--symbol`, `--page-size` |
| `futu order detail <order-id> [order-id...]` | `order-id`, `--exchange`; also `--account` when no default account is configured | none | `--account`, `--exchange` |
| `futu order max-qty <symbol>` | `symbol`; also `--account` when no default account is configured | `--type market`, empty `--price`, empty `--order-id` | `--account`, `--price`, `--type`, `--order-id` |
| `futu order fees <order-id>` | `order-id`; also `--account` when no default account is configured | none | `--account` |
| `futu deal` | none if `default_account` is configured | `--market HK`, `--page-size 50` | `--account`, `--market`, `--page-size` |
| `futu deal history` | none if `default_account` is configured | `--market HK`, `--page-size 50`, `--start 0`, `--end 0`, no `--symbol` filter | `--account`, `--market`, `--start`, `--end`, `--symbol`, `--page-size` |
Field mapping:
| CLI parameter | Backend field |
| --- | --- |
| `order modify --exchange` | `exchange` |
| `order modify --qty` | `qty` |
| `order modify --price` | `price` |
| `order modify --aux-price` | `aux_price` |
| `order cancel --exchange` | query parameter `exchange` |
| `order list --market` | `trd_market` |
| `order history --market` | `trd_market` |
| `deal --market` | `trd_market` |
| `deal history --market` | `trd_market` |
| `--start` | `start` |
| `--end` | `end` |
| `--symbol` | `code` |
| `--page-size` | `page_size` |
| `order detail --exchange` | body field `exchange` |
| `order detail <order-id>...` | body field `order_ids` array |
| `order max-qty <symbol>` | `code` |
| `order max-qty --type` | `order_type` |
| `order max-qty --price` | `price` |
| `order max-qty --order-id` | `order_id` |
Query and pagination rules:
- Current orders, historical orders, today's fills, and historical fills automatically follow the backend `page_flag` and emit a merged array.
- `--page-size` is sent to the backend only when it is in the range `10-100`. The default is `50`.
- When historical orders and historical fills omit `--start` / `--end`, no lower or upper time bound is set.
- `order detail` accepts at most 100 order IDs at once.
- For `order modify`, omitting `--price` means the price is unchanged, and omitting `--aux-price` means the trigger price is unchanged. `--qty` must be greater than 0.
Response parsing:
- Main order JSON fields: `order_id`, `symbol`, `side`, `type`, `price`, `qty`, `filled_qty`, `status`, `create_time`. Extra backend fields are preserved.
- Main fill JSON fields: `deal_id`, `order_id`, `symbol`, `stock_name`, `side`, `price`, `qty`, `time`, `updated_time`, `status`, `counter_broker_id`, `counter_broker_name`. Extra backend fields are preserved.
- Order fees JSON (`order fees`): `order_id`, `currency`, `total_fee`, `fees[]` with `type` and `amount` per line item. [Open API: get-order-fees](https://open.futunn.com/zh-cn/api/trading/order/get-order-fees). FX order fees are not supported by the API.
Backend APIs:
| CLI command | Backend API |
| --- | --- |
| `futu account list` | `GET /api/v1.0/accounts/authorized_trd_accs` |
| `futu account funds` | `GET /api/v1.0/accounts/{acc_id}/funds` |
| `futu account cash-logs` | `GET /api/v1.0/accounts/{acc_id}/cash_logs` ([get-cash-logs](https://open.futunn.com/zh-cn/api/trading/account/get-cash-logs)) |
| `futu margin-ratio` | `GET /api/v1.0/margin_ratio` ([get-margin-ratio](https://open.futunn.com/zh-cn/api/trading/trade/get-margin-ratio)) |
| `futu position` | `GET /api/v1.0/accounts/{acc_id}/positions` |
| `futu order buy/sell/place` | `POST /api/v1.0/accounts/{acc_id}/orders` |
| `futu order modify` | `PUT /api/v1.0/accounts/{acc_id}/orders/{order_id}` |
| `futu order cancel` | `DELETE /api/v1.0/accounts/{acc_id}/orders/{order_id}` |
| `futu order list` | `GET /api/v1.0/accounts/{acc_id}/orders` |
| `futu order history` | `GET /api/v1.0/accounts/{acc_id}/orders_history` |
| `futu order detail` | `POST /api/v1.0/accounts/{acc_id}/orders/detail` |
| `futu order max-qty` | `GET /api/v1.0/accounts/{acc_id}/acctradinginfo` |
| `futu order fees` | `GET /api/v1.0/accounts/{acc_id}/orders/{order_id}/fees` ([get-order-fees](https://open.futunn.com/zh-cn/api/trading/order/get-order-fees)) |
| Broker second confirmation | `POST /api/v1.0/accounts/{acc_id}/order_confirm` |
| `futu deal` | `GET /api/v1.0/accounts/{acc_id}/order_fills` |
| `futu deal history` | `GET /api/v1.0/accounts/{acc_id}/fills_history` |
Query examples:
- Current orders on the default market: `futu order list`
- Current US orders: `futu order list --market US`
- A specific order: `futu order detail <order-id> --exchange US`
- Max market buy/sell for Apple on the current account: `futu order max-qty US.AAPL`
- Max buy/sell for Apple at a 280 limit: `futu order max-qty US.AAPL --price 280 --type limit`
- Max buy/sell at a 280 limit when the default account is not confirmed: `futu order max-qty US.AAPL --account <account-id> --price 280 --type limit`
- Order fee breakdown: `futu order fees <order-id> --account <account-id> --format json`
references/dictionaries.md
# Dictionaries
## Accounts and markets
Account types:
| Value | Meaning |
| --- | --- |
| `cash` | Cash account |
| `margin` | Margin account |
`security_firm` on accounts (use for `futu margin-ratio --security-firm`):
| Value | Typical region |
| --- | --- |
| `FUTUSECURITIES` | Futu Securities (Hong Kong) |
| `FUTUINC` | moomoo (United States) |
| `FUTUSG` | moomoo (Singapore) |
| `FUTUCA` | moomoo (Canada) |
| `FUTUMY` | moomoo (Malaysia) |
| `FUTUAU` | moomoo (Australia) |
Read `security_firm` from `futu account list --format json` when the user did not specify a firm.
Margin ratio response fields (`margin-ratio --format json`): `code`, `is_long_permit`, `is_short_permit`, `short_pool_remain`, `short_fee_rate`, `alert_long_ratio`, `alert_short_ratio`, `im_long_ratio`, `im_short_ratio`, `mcm_long_ratio`, `mcm_short_ratio`, `mm_long_ratio`, `mm_short_ratio`.
Cash log row fields (`account cash-logs`): `transaction_name`, `created_time`, `cash_change`, `balance`, `symbol`, `stock_name`.
Numeric account `markets` values:
| Value | Meaning |
| --- | --- |
| `1` | Hong Kong |
| `2` | United States |
| `4` | China Connect |
| `5` | Futures |
| `6` | Singapore |
| `7` | Cryptocurrency |
| `8` | Australia |
| `9` | Foreign Exchange |
| `10` | Bonds |
| `11` | Malaysia |
| `12` | Canada |
| `14` | Mutual Funds |
| `15` | Japan |
| `16` | Structured Notes |
| `17` | Event Contracts |
| `18` | South Korea |
Common `--market` values: `HK`, `US`, `HKCC`, `SG`, `JP`, `AU`, `MY`, `KR`.
`--exchange` is used for order modification, cancellation, and order detail. Common values: `US` for US stocks; `HK` or the API-required `SEHK` for Hong Kong stocks.
## Symbols
- US stocks: `US.AAPL`
- Hong Kong stocks: `HK.00700`
- The CLI converts an input code into the format the API requires. If the market cannot be determined, ask the user first.
- CLI arguments use `symbol` / `--symbol`. They map to `code` in backend requests.
## Securities order side
| Value | Meaning |
| --- | --- |
| `BUY` | Buy |
| `SELL` | Sell |
| `SELL_SHORT` | Sell short |
| `BUY_BACK` | Buy to cover |
## Securities order type
The CLI uppercases the input. If the user did not specify an order type, do not pass `--type market` explicitly.
| Value | Meaning |
| --- | --- |
| `limit` / `LIMIT` | Limit order |
| `market` / `MARKET` | Market order |
| `AUCTION` | Auction market order |
| `AUCTION_LIMIT` | Auction limit order |
| `STOP` | Stop order |
| `STOP_LIMIT` | Stop-limit order |
| `MARKET_IF_TOUCHED` | Market-if-touched order |
| `LIMIT_IF_TOUCHED` | Limit-if-touched order |
## Other order enums
| Parameter | Values |
| --- | --- |
| `--time-in-force` | `DAY`, `GTC` |
| `--lot-type` | `ROUND`, `ODD` |
| `--session` | `RTH`, `RTH+Pre/Post-Mkt`, `OVERNIGHT`, `ALL_DAY` |
| `--order-class` | `MLEG` |
Multi-leg orders use `--order-class MLEG` with `--multi-leg-info '<json-object>'`. A regular order must provide a symbol. An MLEG order may omit `--symbol`.
## Order status
| Value | Meaning |
| --- | --- |
| `WAITING_SUBMIT` | Waiting to submit |
| `SUBMITTING` | Submitting |
| `SUBMITTED` | Submitted |
| `FILLED_PART` | Partially filled |
| `FILLED_ALL` | Fully filled |
| `CANCELLED_PART` | Partially filled, remainder cancelled |
| `CANCELLED_ALL` | Fully cancelled |
| `FAILED` | Order failed |
| `DISABLED` | Disabled |
| `DELETED` | Deleted |
## Common response fields and compatibility aliases
### Orders
| Meaning | Field |
| --- | --- |
| Order ID | `order_id` |
| Symbol | `symbol`, or backend `code`; CLI JSON always emits `symbol` |
| Side | `side`, or backend `trd_side`; CLI JSON always emits `side` |
| Order type | `type`, or backend `order_type`; CLI JSON always emits `type` |
| Order price | `price` |
| Order quantity | `qty` |
| Filled quantity | `filled_qty`, or backend `dealt_qty`; CLI JSON always emits `filled_qty` |
| Status | `status`, or backend `order_status`; CLI JSON always emits `status` |
| Created time | `create_time` |
Order detail preserves extra backend fields. In table detail, numeric fields whose names end with `_time` are formatted as local time.
### Fills
| Meaning | Field |
| --- | --- |
| Fill ID | `deal_id` |
| Order ID | `order_id` |
| Symbol | `symbol`, or backend `code`; CLI JSON always emits `symbol` |
| Name | `stock_name` |
| Side | `side`, or backend `trd_side`; CLI JSON always emits `side` |
| Fill price | `price` |
| Fill quantity | `qty` |
| Fill time | `time` or `create_time`; CLI JSON always emits `time` |
| Updated time | `updated_time` |
| Status | `status` |
| Counter broker ID | `counter_broker_id` |
| Counter broker name | `counter_broker_name` |
Fill JSON preserves extra backend fields. When querying lists, the CLI paginates automatically and merges the output.
### Max buy/sell quantity
| Field | Meaning |
| --- | --- |
| `max_cash_buy` | Max quantity buyable with cash |
| `max_cash_and_margin_buy` | Max quantity buyable with cash plus margin |
| `max_position_sell` | Max quantity sellable from the position |
| `max_sell_short` | Max short-sell quantity |
| `max_buy_back` | Max buy-to-cover quantity |
| `long_required_im` | Long initial-margin requirement |
| `short_required_im` | Short initial-margin requirement |
## Common error checks
- `account ID is required`: `default_account` is not configured and `--account` was not passed. List accounts with `futu account list`, or ask the user to specify an account.
- `unsupported order type`: the order type is not supported by the current API, market, or symbol. Query commands may retry with a more general type. Before a real order, explain the limitation to the user and get confirmation.
- `PERMISSION_DENIED`: server-side permission denial. It does not mean the token was missing.
SKILL.md
---
name: futu-trading
description: Futu `futu` CLI securities-trading skill. Use for OAuth status, securities accounts, funds, positions, cash logs, order fees, margin ratio, order placement, modification, cancellation, order queries, fill queries, and max buy/sell quantity. Answer in the user's language by default.
allowed-tools: Bash Read
metadata:
version: 0.0.3
author: Futu
requires:
bins:
- futu
---
# Futu Trading
Use the locally available `futu` CLI for securities trading. Answer in the user's language by default. Keep commands, flags, JSON fields, error codes, and symbols in their original form.
## Futu CLI runtime
This skill requires the official `futu` CLI. macOS and Linux install it to `$HOME/.futu/bin/futu`. Windows installs `futu.exe` to `%LOCALAPPDATA%\FutuCLI\bin`. See the [futu-cli install guide](https://github.com/FutunnOpen/futu-cli/blob/main/README.md).
Probe `futu` before any business command.
macOS / Linux:
```bash
if command -v futu >/dev/null 2>&1; then futu auth status --format json; elif [ -x "$HOME/.futu/bin/futu" ]; then "$HOME/.futu/bin/futu" auth status --format json; else echo '__FUTU_CLI_MISSING__'; fi
```
Windows, including Git Bash: do not use that bash block or `install.sh`. `install.sh` rejects Windows. Use this PowerShell call instead:
```powershell
$exe = Join-Path $env:LOCALAPPDATA 'FutuCLI\bin\futu.exe'
if (Get-Command futu -ErrorAction SilentlyContinue) { futu auth status --format json } elseif (Test-Path $exe) { & $exe auth status --format json } else { Write-Output '__FUTU_CLI_MISSING__' }
```
`__FUTU_CLI_MISSING__` means stop. Do not run an account or trading command yet. Ask the user before installing. After they agree:
macOS / Linux:
```bash
curl -fsSL https://raw.githubusercontent.com/FutunnOpen/futu-cli/main/scripts/install.sh | sh
```
Windows PowerShell. The official Windows installer supports amd64:
```powershell
iwr -UseBasicParsing https://raw.githubusercontent.com/FutunnOpen/futu-cli/main/scripts/install.ps1 -OutFile install.ps1
powershell -ExecutionPolicy Bypass -File .\install.ps1
```
If the Windows installer reports an unsupported architecture, stop and relay that message. Never run either installer without explicit consent. Then run `futu version`. If the current shell still cannot see `futu`, call `$HOME/.futu/bin/futu` or `%LOCALAPPDATA%\FutuCLI\bin\futu.exe` directly.
To update an already installed `futu` CLI, use `futu update --check` and, after the user agrees, `futu update`.
## Usage rules
- Follow [Futu CLI runtime](#futu-cli-runtime) before any account or trading command. If the probe prints `__FUTU_CLI_MISSING__`, stop until `futu` is installed.
- When the probe succeeds, its business output is `futu auth status --format json`. If that returns `not logged in`, tell the user to run `futu auth login` and continue only after login. Do not run the business command directly.
- Invocation convention for this skill: when calling the `futu` CLI from Bash, always append the hidden internal marker `--source skill` at the end of the command. With `--source skill`, the CLI automatically detects hosts such as Codex or Claude Code and reports `agent_name`. Append `--agent codex` or `--agent claude_code` only when auto-detection fails and the CLI is confirmed to support it. Do not include these internal markers in commands shown to the user.
- Do not read or print token file contents. The CLI attaches the OAuth Bearer token automatically. `PERMISSION_DENIED` is a server-side permission denial. Do not explain it as a missing token.
- Use the smallest parameter set when generating commands. If the CLI already has a default and the user did not specify a value, do not pass that flag explicitly.
- Do not assume a default account is configured. Omit `--account` only when this turn has already confirmed a default account through `futu auth status` or config. Otherwise, list accounts or ask the user to choose one, and pass `--account` explicitly.
- Add `--format json` when the output must be parsed, when extracting account, order, or fill fields, or when a follow-up action depends on the result. Commands meant only for the user to copy and run can use the default table output.
- Securities order and fill lists are paginated and merged by the CLI. Do not pass `page_flag` manually. Adjust `--page-size` only when needed.
- `account cash-logs` returns one page per call. Use `--format json`, read `page_flag` and `completed`, and call again with `--page-flag` until `completed` is true or the user has enough rows.
- `order fees` needs a concrete `order_id` (from `order list`, `order history`, or `order detail`). Open API does not support FX order fees yet.
- `margin-ratio` requires `--security-firm` and `--codes` (up to 10 symbols). Prefer `security_firm` from `account list --format json` for the user's account.
- Commands that change real assets require explicit user confirmation, including `order buy`, `order sell`, `order place`, `order modify`, and `order cancel`.
- Do not guess a second confirmation on behalf of the CLI or the server. If the CLI reports broker confirmation because the API returned `need_order_confirm=true` or `confirm_id`, relay it as-is and wait for explicit user consent before entering `y`.
## References
- When building a specific command, checking required, default, or optional parameters, handling pagination, or mapping fields, read [CLI parameters](references/cli-parameters.md).
- When choosing or explaining markets, trade sides, order types, statuses, account-market dictionaries, and response fields, read [dictionaries](references/dictionaries.md).
- For crypto trading, use `futu-crypto`.