{"id":37153405,"url":"https://github.com/m1chlcz/bingo-bot","last_synced_at":"2026-01-14T18:00:59.896Z","repository":{"id":264909588,"uuid":"892407423","full_name":"M1chlCZ/bingo-bot","owner":"M1chlCZ","description":"Bingo-Bot: A Binance-Go-Based Experimental Trading Bot. Automated trading bot for Binance, written in Go. Designed for flexibility, extensibility, and experimentation. Create custom strategies, integrate with other exchanges, and manage trades with ease.","archived":false,"fork":false,"pushed_at":"2025-11-23T01:06:37.000Z","size":798,"stargazers_count":5,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-11-23T03:10:48.683Z","etag":null,"topics":["algorithmic-trading","automated-trading-in-financial-markets","binance","binance-trade-bot","crypto","crypto-bot","cryptocurrency","experimental","go","golang","trading-bot","work-in-progress"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/M1chlCZ.png","metadata":{"files":{"readme":"Readme.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":"audit/init.go","citation":null,"codeowners":null,"security":"security/binance_client.go","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["M1chlCZ"],"ko_fi":"m1chl","buy_me_a_coffee":"xDujIfYZVt","custom":["paypal.me/m1chlcz"]}},"created_at":"2024-11-22T03:47:35.000Z","updated_at":"2025-11-23T01:06:41.000Z","dependencies_parsed_at":"2025-01-19T16:27:20.052Z","dependency_job_id":"2e913f27-a057-4740-885e-0f7aa1aa89ed","html_url":"https://github.com/M1chlCZ/bingo-bot","commit_stats":null,"previous_names":["m1chlcz/bingo-bot"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/M1chlCZ/bingo-bot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/M1chlCZ%2Fbingo-bot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/M1chlCZ%2Fbingo-bot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/M1chlCZ%2Fbingo-bot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/M1chlCZ%2Fbingo-bot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/M1chlCZ","download_url":"https://codeload.github.com/M1chlCZ/bingo-bot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/M1chlCZ%2Fbingo-bot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28429356,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T16:38:47.836Z","status":"ssl_error","status_checked_at":"2026-01-14T16:34:59.695Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["algorithmic-trading","automated-trading-in-financial-markets","binance","binance-trade-bot","crypto","crypto-bot","cryptocurrency","experimental","go","golang","trading-bot","work-in-progress"],"created_at":"2026-01-14T18:00:58.824Z","updated_at":"2026-01-14T18:00:59.890Z","avatar_url":"https://github.com/M1chlCZ.png","language":"Go","funding_links":["https://github.com/sponsors/M1chlCZ","https://ko-fi.com/m1chl","https://buymeacoffee.com/xDujIfYZVt","paypal.me/m1chlcz","https://www.buymeacoffee.com/xDujIfYZVt"],"categories":[],"sub_categories":[],"readme":"\n\n# Bingo-Bot 🚀\nBingo-Bot (Binance GO Bot) is a **work-in-progress**, **experimental trading bot** for Binance, built with **Go** and designed to be flexible, extensible, and easy to use. Whether you're testing strategies or building a robust trading system, Bingo-Bot is here to help!\n\n![Bingo-Bot Preview](https://raw.githubusercontent.com/M1chlCZ/bingo-bot/refs/heads/main/github_assets/screenshot.png)\n\n---\n\n\u003ca href=\"https://www.buymeacoffee.com/xDujIfYZVt\" target=\"_blank\"\u003e\n    \u003cimg src=\"https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png\" alt=\"Buy Me a Coffee\" width=\"150\"/\u003e\n\u003c/a\u003e\n\n## ⚡ Features\n- **Automated Trading**: Works with Binance for spot trading. More exchanges coming soon!\n- **Custom Strategies**: Easily implement your own strategies in the `./strategies/` folder.\n- **Market Analysis**: Bot automatically analyzes markets and trades based on market conditions.\n- **Automatic pairs add/remove**: Bot automatically adds new pairs and removes pairs that are not profitable.\n- **Pluggable Exchanges**: Add other exchanges by adhering to the shared interface in `./interfaces/shared.go`.\n- **Stop-Loss and Take-Profit**: Dynamic risk management for trades.\n- **Multi-Pair Trading**: Manage multiple trading pairs with thread-safe operations.\n- **Trend Filtering**: Combines indicators like RSI and MACD for smarter trades.\n- **Docker Support**: Deploy quickly with Docker Compose.\n- **Performance Logging**: Tracks your trades for performance analysis.\n\n---\n\n## 🚀 Getting Started\n\n### Prerequisites\n- **Go** (1.23)\n- **Docker** and **Docker Compose** (optional)\n- A **Binance API Key and Secret**\n\n---\n\n### Installation\n1. **Clone the Repository**\n   ```bash\n   git clone https://github.com/your-repo/bingo-bot.git\n   cd bingo-bot\n   ```\n\n2. **Prepare Environment Variables**\n    - Rename `.env.sample` to `.env`:\n      ```bash\n      mv .env.sample .env\n      ```\n    - Fill in your Binance API Key and Secret in the `.env` file:\n      ```env\n      BINANCE_API_KEY=your_api_key\n      BINANCE_API_SECRET=your_api_secret\n      ```\n\n3. **Run with Docker Compose**:\n    - Update the database volume in the `docker-compose.yml` file if needed:\n      ```yaml\n      volumes:\n        - /path/to/local/folder:/app/sqlite_data\n      ```\n    - Start the bot:\n      ```bash\n      docker-compose up --build\n      ```\n\n4. **Run Directly with Go**:\n    - Build and run:\n      ```bash\n      go build -o bingo-bot main.go\n      ./bingo-bot\n      ```\n    - Or use `go run`:\n      ```bash\n      go run main.go --log=debug\n      ```\n\n---\n\n## ⚙️ Configuration\n\n### Strategies\n\nYou can find the default strategies in the `./strategies/` folder. To add your own:\n1. Implement a new struct that adheres to the `Strategy` interface in `./interfaces/shared.go`.\n2. Add your logic for signal generation (e.g., RSI, MACD, Moving Averages).\n3. The bot's trading logic manages multiple pairs using `MultiPairTradingBot`. Ensure your strategy is compatible with this multi-pair setup.\n\n**Example**:\n```go\ntype MyCustomStrategy struct {}\n\nfunc (self *MyCustomStrategy) Calculate(candles []models.CandleStick, pair string, trend bool) (int, error) {\n \n    return 0, nil\n}\n```\n\n### 🔧 Configuration Explained\n\nBingo-Bot uses a flexible configuration system found in the config package to manage strategies and settings for different market states. This system allows you to fine-tune how the bot behaves under varying market conditions.\n\n#### MultiTrading Struct\n\n##### The core configuration is handled by the MultiTrading struct, which defines:\n\n**•** Market State Strategies: Separate strategy configurations (Default, Chaotic, Trending, etc.) for different market conditions.\n\n**•** Intervals \u0026 Filters: Set how often the bot trades and analyzes the market, and filter markets to include or exclude certain trading pairs.\n\n**•** Analyzer Config: Contains parameters for technical indicators (RSI, MACD, etc.) used in market analysis.\n\n#### Updating Configurations\n\n##### The bot provides methods to update configurations at runtime:\n\n**•** UpdateStrategy(state, strategy): Change the strategy for a specific market state after validating it.\n\n**•** UpdateAnalyzerConfig(analyzerConfig): Update the market analyzer’s parameters.\n\n**•** Other update methods adjust intervals, include/exclude markets, and more.\n\nYou can also use default configurations or create your own by modifying the config package.\n```\nconf := config.DefaultMultiTradingConfig()\nbt := bot.NewMultiPairTradingBot(cl, \u0026conf)\n```\n### Exchanges\n1. **Binance** is currently supported. More exchanges are coming soon!\n2. To add a new exchange, implement the `ExchangeClient` interface in `./interfaces/shared.go`.\n3. PRs are welcome for new exchange integrations.\n\n### Adding New Exchanges\nTo integrate a new exchange:\n1. Implement the `Exchange` interface in `./interfaces/shared.go`.\n2. Provide methods for fetching market data, creating orders, and managing balances.\n\n### Mutex and Thread Safety\n\nThe bot manages multiple trading pairs using internal thread-safe mechanisms.\n- Mutexes are used to handle concurrent access to shared resources such as trading pairs and market data.\n- No manual mutex handling is required for users implementing new strategies or adding pairs. The bot's `MultiPairTradingBot` handles this automatically.\n\nFor advanced users integrating new exchanges or modifying the bot, ensure proper thread safety by leveraging `sync.RWMutex` where applicable.\n\n---\n\n## 🌟 Example Use Cases\n1. **Day Trading with RSI and MACD**:\n    - Uses a combination of RSI and MACD for smarter trading decisions.\n    - Stop-loss and take-profit are configured dynamically.\n2. **Backtesting Strategies**:\n    - Simulate trading strategies on historical data.\n\n---\n\n## 📂 Project Structure\n\n```plaintext\nbingo-bot/\n├── algos/             # Algos used for trading\n├── analysis/          # Market analysis\n├── bot/               # Core bot logic for trading\n├── client/            # Binance API client\n├── config/            # Config for trading bot\n├── db/                # SQLite integration for logging trades\n├── interfaces/        # Shared interfaces for strategies and exchanges\n├── logger/            # Logger implementation\n├── metrics/           # metrics reporting (wip)\n├── ml/                # experimental ml model for predicting when to buy (wip/experimental)\n├── models/            # structs for data models\n├── plotter/           # Plotting for performance of the bot (wip)\n├── strategies/        # Default and custom trading strategies\n├── types/             # Custom types structs for the bot\n├── utils/             # Utility functions (Performance, Time, etc.)\n├── main.go            # Entry point for the bot\n├── Dockerfile         # Docker file for building the bot\n└── docker-compose.yml # Docker Compose for easy deployment\n```\n\n---\n\n## ⚠️ Experimental 🚨\n- **Bingo-Bot is experimental and should NOT be used with real money unless fully tested!**\n- Trading involves risk. Use at your own discretion.\n\n---\n\n## 🤝 Contributing\nContributions are **welcome and encouraged**!  \nFeel free to submit **pull requests**, **bug reports**, or **feature requests**.\n\n---\n\n## 🔧 TODO\n- [ ] Add backtesting framework.\n- [x] Improve logging and analytics.\n- [ ] Integrate more exchanges.\n- [X] Add more strategies (Bollinger Bands, Stochastic Oscillator, etc.).\n\n---\n\n## 📜 License\nMIT License.\n\n---\n\n### Happy Trading! 🚀\n\n---","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fm1chlcz%2Fbingo-bot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fm1chlcz%2Fbingo-bot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fm1chlcz%2Fbingo-bot/lists"}