Thanks for your interest in contributing to OpenMM! This guide will help you get started.
- Fork the repository
- Clone your fork locally
- Install dependencies:
npm install
- Create a feature branch:
git checkout -b feat/your-feature
- Copy the environment template and configure your exchange API keys:
cp .env.example .env
- Build the project:
npm run build
- Run tests:
npm test
src/core/— Core market making engine and strategy logicsrc/exchanges/— Custom CEX adapters (MEXC, Gate.io, Bitget, Kraken)src/strategies/— Trading strategy implementationssrc/cli/— CLI entry point and commandssrc/config/— Configuration management
- Follow the existing code style and conventions
- Use TypeScript for all new code
- Write tests for new functionality
- Keep exchange-specific logic in adapter modules
- Ensure your code builds cleanly:
npm run build
- Run the test suite:
npm test - Lint your code:
npm run lint
- Commit with a clear, descriptive message
- Push to your fork and open a PR against
main - Describe what your PR does and why
When adding a new exchange:
- Implement the exchange adapter following the existing adapter pattern
- Test authentication, ticker, orderbook, and order placement
- Document any exchange-specific quirks or rate limits
- Add the exchange to the supported list in the README
When adding a new strategy:
- Extend the base strategy interface
- Include configurable parameters with sensible defaults
- Implement dry-run mode for preview without placing orders
- Add tests covering edge cases (empty orderbook, API errors)
- Document the strategy parameters in the README
- Use GitHub Issues for bug reports and feature requests
- Include steps to reproduce for bugs
- Mention which exchange(s) and trading pair(s) are affected if relevant
By contributing, you agree that your contributions will be licensed under the MIT License.