DEXBot2 is a grid-based market maker for the BitShares decentralized exchange.
- Grid Trading β geometric order grids that rebalance as price moves
- Adaptive Signals β AMA and trend inputs tune grid placement
- Credit & MPA β credit offer and debt workflows
- Runtime Safety β replay-safe fills, sync recovery, and cleanup
- Secure Ops β encrypted keys, a credential daemon, and PM2 control
# 1. Clone and install
git clone https://github.com/froooze/DEXBot2.git && cd DEXBot2 && npm install
# 2. Set up your master password, keys and add bots
node dexbot keys
node dexbot bots
# 3. Start with PM2 or directly
node pm2 # For production
node pm2 claw-only # PM2-managed credential daemon only
node unlock-start # Single prompt, no PM2
node unlock-start --claw-only # Credential daemon only for claw workflows
node dexbot start # For testingFor detailed setup, see Installation or Updating sections below.
- This software is provided "as-is" without warranty.
- Secure your keys. Never share private keys or passwords.
- The authors and maintainers are not responsible for losses.
You'll need Git and Node.js installed.
- Install Node.js LTS from nodejs.org (accept defaults, restart after)
- Install Git from git-scm.com (accept defaults, restart after)
- Verify installation in Command Prompt:
All three should display version numbers.
node --version && npm --version && git --version
Use Homebrew to install Node.js and Git:
# Install Homebrew if not already installed
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Install Node.js and Git
brew install node gitUse your package manager:
# Ubuntu/Debian
sudo apt-get update
sudo apt-get install nodejs npm git
# Fedora/RHEL
sudo dnf install nodejs npm git# Clone the repository and switch to folder
git clone https://github.com/froooze/DEXBot2.git
cd DEXBot2
# Install dependencies
npm install
# Set up your master password and keyring
node dexbot keys
# Create and configure your bots
node dexbot botsUpdate to the latest version:
# Run the update script from project root
node dexbot updateThe update script automatically:
- Fetches and pulls the latest code
- Installs any new dependencies
- Reloads active PM2 bot processes if running
- Ensures your
profiles/directory is protected and unchanged - Logs all operations to
update.log
Keep the generated defaults and tune only these first:
targetSpreadPercentincrementPercentgridPrice: "ama"minPrice/maxPrice
targetSpreadPercent controls profit room per completed cycle. A wider spread
targets more profit per cycle but trades less often.
incrementPercent controls grid density and order size. Smaller increments
create more grid levels and smaller orders; larger increments create fewer
levels and larger orders.
Use gridPrice: "ama" so the market adapter can center the grid on AMA. Once
AMA is active, tighten minPrice / maxPrice around the maximum expected
market volatility instead of using an unnecessarily wide range.
-
Create the bot with
node dexbot bots. -
Leave defaults unchanged.
-
Tune
targetSpreadPercentandincrementPercent. -
Set
gridPricetoama. -
Generate the market-adapter whitelist:
npm run market-adapter:whitelist
-
Start DEXBot2 normally with
node pm2ornode unlock-start. -
Then tune
minPrice/maxPricefor the market's volatility range.
Configuration options from node dexbot bots, stored in profiles/bots.json:
| Parameter | Type | Description |
|---|---|---|
assetA |
string | Base asset |
assetB |
string | Quote asset |
name |
string | Friendly name for logging and CLI selection |
active |
boolean | false to keep config without running |
dryRun |
boolean | Simulate orders without broadcasting |
preferredAccount |
string | BitShares account name for trading |
startPrice |
num | str | Initial price and adapter candle source. Default "pool" uses liquidity-pool history; "book" uses order-book history; a number uses a fixed anchor. |
minPrice |
num | str | Lower bound. Default "2x" means gridPrice / 2 when AMA is active, otherwise startPrice / 2. |
maxPrice |
num | str | Upper bound. Default "2x" means gridPrice * 2 when AMA is active, otherwise startPrice * 2. |
gridPrice |
num | str | null | Grid reference. Use "ama" for the recommended AMA center; null falls back to startPrice; numeric values use that fixed value. |
incrementPercent |
number | Geometric step between layers. Default 0.5 = 0.5%. |
targetSpreadPercent |
number | Width of the empty spread zone between buy and sell orders. Default 2 = 2%. |
weightDistribution |
object | Advanced sizing control. Default { "sell": 1.0, "buy": 1.0 }; leave unchanged for normal setup. |
botFunds |
object | Capital: { "sell": "100%", "buy": 1000 }. Numbers or percentage strings |
activeOrders |
object | Target active orders per side: { "sell": 20, "buy": 20 } |
Global settings via node dexbot bots, stored in profiles/general.settings.json:
- Grid Health: Grid Cache Regeneration % (default
3%), RMS Divergence Threshold % (default14.3%), AMA Delta Threshold % (default2%) - Order Recovery: Partial Dust Threshold % (default
5%), Dust Cancel Delay (default30s,-1= off,0= instant) - Timing (Core): Blockchain Fetch Interval (default
240 min), Sync Delay (default500ms), Lock Timeout (default10s) - Timing (Fill): Dedupe Window (default
5s), Cleanup Interval (default10s), Record Retention (default60 min) - Log Level:
debug,info,warn,error. Fine-grained category control viaLOGGING_CONFIG(see Logging) - Updater: Active (default
ON), Branch (auto/main/dev/test), Interval (default1 day), Time (default00:00)
For production use with automatic restart and monitoring. Run node pm2 to start β it handles connection, authentication, and PM2 startup automatically.
# Start all active bots with PM2
node pm2
# Start a specific bot
node pm2 <bot-name>
# Start only the credential daemon
node pm2 claw-only
# Or via CLI
node dexbot pm2
# View status and resource usage
pm2 status
# View real-time logs
pm2 logs [<bot-name>]
# Safe restart/reload path for DEXBot-managed PM2 apps
node pm2 restart {all|<bot-name>|dexbot-cred}
node pm2 reload {all|<bot-name>|dexbot-cred}
# Stop processes
pm2 stop {all|<bot-name>}
# Delete processes
pm2 delete {all|<bot-name>}
# Stop/delete only dexbot processes (via wrapper)
node pm2 stop {all|<bot-name>}
node pm2 delete {all|<bot-name>}
# Reset grid (regenerate orders)
node dexbot reset {all|<bot-name>}
# Disable a bot in config
node dexbot disable {all|<bot-name>}
# Show PM2 wrapper usage
node pm2 helpBot logs are written to profiles/logs/<bot-name>.log (errors to <bot-name>-error.log).
Security note: node pm2 now unlocks dexbot-cred through a one-shot local bootstrap channel instead of exporting the master password to every PM2 app. Use node pm2 restart ... or node pm2 reload ... for DEXBot-managed PM2 actions. Avoid raw pm2 restart all / pm2 reload all, because dexbot-cred must only be re-unlocked through the wrapper. If dexbot-cred stops, rerun node pm2 or node pm2 restart dexbot-cred.
- Market Adapter - AMA pricing, grid triggers, dynamic weights, and collateral advisory signals
- MPA and Credit Usage - Bot-scoped debt policy, MPA borrowing, and credit offer workflows
- Claw - Bridge setup, launcher commands, short MPA workflow, and example commands
- Analysis - Research runners, chart generators, and tuning helpers for AMA fitting, trend detection, bot fitting, and TradingView exports
- Credential Security - Key handling, daemon-backed signing, and runtime file hardening
- Grid Recalculation - Market-adapter bootstrap/delta/slope resets, divergence correction, fund regeneration, and runtime trigger handling
- Logging - Logging system documentation
- Docker - Container build, release images, and secure startup
- Docs Index - Main documentation hub
- Claw API Boundary - Responsibility split between the AI layer and the DEXBot2 execution layer
- Architecture - System design, fill processing pipeline, and testing strategy
- Developer Guide - Development guide, environment variables, examples, and glossary
- Copy-on-Write Plan - Copy-on-Write grid architecture
- Fund Movement & Accounting - Fund accounting, grid topology, and rotation mechanics
- Evolution Report - Project timeline, architecture phases, and release history
- Workflow - Project workflow and contribution guide
- Fork the repository and create a feature branch
- Make your changes and test with
npm test - Submit a pull request
MIT License - see LICENSE file for details