entradex
// Use the EntradeX CLI for DNSE workflows. Use when (1) setting DNSE API credentials via env vars or config file, (2) reading account, market, and order data, (3) placing, modifying, or canceling real trades.
$ git log --oneline --stat
stars:1,933
forks:367
updated:March 4, 2026
SKILL.mdreadonly
SKILL.md Frontmatter
nameentradex
descriptionUse the EntradeX CLI for DNSE workflows. Use when (1) setting DNSE API credentials via env vars or config file, (2) reading account, market, and order data, (3) placing, modifying, or canceling real trades.
metadata[object Object]
EntradeX CLI
Install
npm i -g entradex-cli
Usage
entradex [global-options] [command]
Configuration
Credential priority order:
- Config file (
~/.entradex-cli/config.json) - recommended - Environment variables (
DNSE_API_KEY,DNSE_API_SECRET) - Global command options (
--api-key,--api-secret)
Setup and inspect config:
entradex config set --key "<api-key>" --secret "<api-secret>"
entradex config set
entradex config get
entradex config clear
Security & Safety
Before using this skill:
- Verify the npm package:
npm view entradex-cli- check author ishieuhaniand repository matches - Inspect package contents:
npm pack entradex-cli --dry-runor view on npmjs.com - Treat
DNSE_API_KEYandDNSE_API_SECRETas highly sensitive trading credentials
Autonomous execution warning:
- This skill can place real trades using provided credentials
- Consider using a separate limited-permission account
- Rotate API keys if you suspect unauthorized access
Global Options
--api-key <key>DNSE API key--api-secret <secret>DNSE API secret--base-url <url>API base URL (default:https://openapi.dnse.com.vn)--debugShow request details-V, --versionShow CLI version-h, --helpShow help
Commands
Config
entradex config set [--key <key>] [--secret <secret>] [--url <url>]
entradex config get
entradex config clear
Account
entradex account list
entradex account balances <accountNo>
entradex account loan-packages <accountNo> <marketType> [--symbol <symbol>]
Trade
entradex trade order <marketType> <symbol> <side> <orderType> <price> <quantity> <tradingToken> [--price-stop <price>]
entradex trade modify <accountNo> <orderId> <marketType> <symbol> <side> <orderType> <price> <quantity> <tradingToken> [--price-stop <price>]
entradex trade cancel <accountNo> <orderId> <marketType> <tradingToken>
Parameters:
marketType(enum):STOCK,DERIVATIVEside(enum):NB(buy),NS(sell)orderType(enum):ATO,ATC,LO,MTL,MOK,PLOATO: At The OpeningATC: At The CloseLO: Limit OrderMTL: Market To LimitMOK: Market Order KillPLO: Post Limit Order
price(number): unit price; follow DNSE tick-size/market constraints- If
orderType=LO,pricemust be greater than0. - If
orderTypeis anything other thanLO(ATO,ATC,MTL,MOK,PLO),pricemust be exactly0.
- If
quantity(integer): order quantity; must satisfy market lot rules- For
marketType=STOCK, valid quantity is either:- Board lot: multiples of 100 (
100,200, ...) - Odd lot: integers from
1to99
- Board lot: multiples of 100 (
- For
marketType=STOCK, values like101,102, ... are invalid odd lots and must be rejected.
- For
tradingToken(string): token fromentradex auth create-token
Normalization rules for user intent:
- If user says
buy/sell, map toNB/NS. - Uppercase enum-style params before execution (
marketType,side,orderType). - If user provides an unsupported enum value, stop and ask for a valid value.
- If
orderTypeis not supported by the target market/session, stop and ask user to choose a supported type.
Order
entradex order list <accountNo> <marketType>
entradex order detail <accountNo> <orderId> <marketType>
entradex order history <accountNo> <marketType> [--from <date>] [--to <date>] [--page-size <size>] [--page-index <index>]
entradex order deals <accountNo> <marketType>
Market
entradex market secdef <symbol> [--board-id <id>]
entradex market ppse <accountNo> <marketType> <symbol> <price> <loanPackageId>
Auth
entradex auth send-otp <email> [--otp-type <type>]
entradex auth create-token <otpType> <passcode>
Dry Run
entradex dry-run accounts
entradex dry-run balances <accountNo>
entradex dry-run order <marketType> <symbol> <side> <orderType> <price> <quantity> [--price-stop <price>]
Common Workflow
# 1) Configure credentials
entradex config set
# 2) Send OTP
entradex auth send-otp user@example.com
# 3) Create trading token with passcode
entradex auth create-token smart_otp <passcode>
# 4) Place an order
entradex trade order STOCK VIC NB LO 15000 100 <trading-token>