Skip to content

bitshares/DEXBot2

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

1,494 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

DEXBot2

DEXBot2 is the first open source trading bot with zero runtime dependencies and a fully adaptive market making strategy.

DEXBot2 hero banner

πŸš€ Features

  • 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 and credential daemon

πŸ”₯ Quick Start

# 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 key
node dexbot bot

# 3. Start DEXBot2
node unlock           # Default β€” single prompt, no setup needed

For detailed setup, see Installation section below.

Disclaimer β€” Use At Your Own Risk

  • 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.

πŸ“₯ Installation

Prerequisites

You'll need Git and Node.js installed.

Windows Users

  1. Install Node.js LTS from nodejs.org (accept defaults, restart after)
  2. Install Git from git-scm.com (accept defaults, restart after)
  3. Verify installation in Command Prompt:
    node --version && npm --version && git --version
    All three should display version numbers.

macOS Users

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 git

Linux Users

Use 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 and Setup DEXBot2

# 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 key

# Create and configure your bots
node dexbot bot

πŸ”§ Configuration

Recommended Bot Setup

Keep the generated defaults and tune only these first:

  1. targetSpreadPercent
  2. incrementPercent
  3. gridPrice: "ama"
  4. 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.

Simple AMA Workflow

  1. Create the bot with node dexbot bot.

  2. Leave defaults unchanged.

  3. Tune targetSpreadPercent and incrementPercent.

  4. Set gridPrice to ama.

  5. Generate the market-adapter whitelist:

    node dexbot white
  6. Start DEXBot2 with node unlock (or node pm2 for PM2).

  7. Then tune minPrice / maxPrice for the market's volatility range.

Bot Options Reference

Configuration options from node dexbot bot, 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 }

General Options (Global)

Global settings via node dexbot bot, stored in profiles/general.settings.json:

  • Grid Health: Grid Cache Regeneration % (default 3%), RMS Divergence Threshold % (default 14.3%), AMA Delta Threshold % (default 2%)
  • Order Recovery: Partial Dust Threshold % (default 5%), Dust Cancel Delay (default 30s, -1 = off, 0 = instant)
  • Timing (Core): Blockchain Fetch Interval (default 240 min), Sync Delay (default 500ms), Lock Timeout (default 10s)
  • Timing (Fill): Dedupe Window (default 5s), Cleanup Interval (default 10s), Record Retention (default 60 min)
  • Log Level: debug, info, warn, error. Fine-grained category control via LOGGING_CONFIG (see Logging)
  • Updater: Active (default ON), Branch (auto/main/dev/test), Interval (default 1 day), Time (default 00:00)

🎯 Zero-Dependency Process Management

node unlock is the recommended production runtime, which runs all bots in a single process, credential and market_adapter in a separate one.

# Start all active bots
node unlock              # Standard runtime
node unlock --isolated   # Per-bot isolation

# Start a specific bot
node unlock <bot-name>
node unlock --isolated <bot-name>

# Runtime control
node unlock status              # Show status of all running processes
node unlock stop <bot-name>     # Stop a specific bot
node unlock restart <bot-name>  # Restart a specific bot
node unlock stop-all            # Stop all running bots
node unlock restart-all         # Restart all running bots
node unlock delete              # Shut down all bots and clean up the runtime

πŸ› οΈ Bot Management

# Set up master password and keyring
node dexbot key

# Create and configure bots
node dexbot bot

# Update to the latest version
node dexbot update

# Start all active bots directly (temporary testing only)
node dexbot start

# Reset grid (regenerate orders)
node dexbot reset {all|<bot-name>}

# Disable a bot in config
node dexbot disable {all|<bot-name>}

# Show runtime status (unlock monolithic/isolated or PM2)
node dexbot stat

# Analyze persisted order grids in profiles/orders/
node dexbot order

# Clear all log files in profiles/logs/
node dexbot clear

# Generate market adapter whitelist from AMA bot configs
node dexbot white

🎯 PM2 Process Management

PM2 is optional β€” node unlock is the native solution. Run node pm2 to start, which handles connection, authentication, and PM2 startup automatically.

# Start all active bots with PM2
node pm2

# Start a specific bot
node pm2 <bot-name>

# View real-time logs
pm2 logs [<bot-name>]

# Safe restart path for DEXBot-managed PM2 apps
node pm2 restart {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>}

Always use node pm2 restart instead of raw pm2 restart all β€” the wrapper safely handles the credential daemon. If the credential daemon stops, rerun node pm2.

Logs are written to profiles/logs/<bot-name>.log (errors to <bot-name>-error.log) in all modes.

πŸ“š Documentation

User-Facing Workflows

  • 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

Operational & Security

  • 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

Reference Docs

🀝 Contributing

  1. Fork the repository and create a feature branch
  2. Make your changes and test with npm test
  3. Submit a pull request

πŸ“„ License

MIT License - see LICENSE file for details

πŸ”— Links

  • Telegram
  • Website
  • Ask DeepWiki
  • Awesome BitShares
  • Reddit

About

Rewrite and optimize grid trading for market making on BitShares.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • TypeScript 86.5%
  • JavaScript 12.0%
  • Other 1.5%