HyperLiquid trading bots in TypeScript:
- copy-trading bot (
hyperliquid_copy_bot.mts) - DCA bot (
hyperliquid_dca_bot.mts)
No UI. Runs as a Node process.
- Node.js 18+
- npm
- HyperLiquid wallet + API private key
npm installCreate env file:
Copy-Item .env.example .envMinimum required keys:
PRIVATE_KEYMAIN_WALLET- Copy bot:
TARGET_WALLET(orTARGET_WALLET_1) - DCA bot:
DCA_COINS
npm run buildCopy bot:
npm startDCA bot:
node dist/hyperliquid_dca_bot.mjsUse safe settings first:
TESTNET=trueDRY_RUN=true
Check startup logs for:
- config validation success
- websocket connected
- subscriptions active
- trade logs being written
Then switch to live:
TESTNET=falseDRY_RUN=false
Generated/updated during runtime:
dist/(build output)logs/(CSV logs)dca_state.json(DCA state persistence)
Core source:
shared/shared client/types/logger/utilsdca/DCA strategy modules
Shared:
PRIVATE_KEY,MAIN_WALLETTESTNET,DRY_RUNRETRY_ATTEMPTS,RETRY_DELAY_MSPRICE_MAX_AGE_MS,HEALTH_CHECK_INTERVAL_MSTRADE_LOG_DIR,LOG_LEVEL
Copy bot:
TARGET_WALLETorTARGET_WALLET_1..10MIN_NOTIONALMAX_POSITION_PCTMAX_CONCURRENT_TRADESMAX_LEVERAGESLIPPAGE,AGGRESSIVE_SLIPPAGEBLOCKED_ASSETS
DCA bot:
DCA_COINS,DCA_DIRECTIONDCA_LEVERAGEDCA_BASE_MARGIN,DCA_ORDER_MARGINDCA_MAX_ORDERSDCA_TAKE_PROFIT,DCA_STOP_LOSSDCA_PRICE_DEV,DCA_DEV_MULTDCA_SIZE_MULT,DCA_MAX_MARGINDCA_COOLDOWN_MS,DCA_CYCLE_DELAY_MS
npm run buildcompile todist/npm run typechecktype-check onlynpm startrun copy bot fromdist/
- Keep
.envout of git. - Start with small size and dry-run.
- You are responsible for risk when
DRY_RUN=false.