{"id":16526236,"url":"https://github.com/pantunes/xtcryptosignals","last_synced_at":"2025-04-30T21:37:31.558Z","repository":{"id":39761710,"uuid":"233031856","full_name":"pantunes/xtcryptosignals","owner":"pantunes","description":"Cryptocurrencies price data collection, price tickers, signals notifications, charts, Telegram bot and more.","archived":false,"fork":false,"pushed_at":"2025-01-18T12:49:01.000Z","size":14959,"stargazers_count":65,"open_issues_count":39,"forks_count":21,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-17T15:14:17.071Z","etag":null,"topics":["agregator","altcoins","api","bitcoin","crypto-currencies","cryptocurrency","data-collection","ethereum","exchange","exchange-api","notifications","portfolio","service","signals-notifications","ticker","trading"],"latest_commit_sha":null,"homepage":"https://xtcryptosignals.com","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pantunes.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["pantunes"],"custom":["https://donate.xtcryptosignals.com"]}},"created_at":"2020-01-10T11:20:26.000Z","updated_at":"2025-01-18T12:42:03.000Z","dependencies_parsed_at":"2023-10-15T18:19:25.452Z","dependency_job_id":"bf2994e0-4660-4a9e-abbc-47bddcc68e0e","html_url":"https://github.com/pantunes/xtcryptosignals","commit_stats":null,"previous_names":[],"tags_count":40,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pantunes%2Fxtcryptosignals","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pantunes%2Fxtcryptosignals/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pantunes%2Fxtcryptosignals/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pantunes%2Fxtcryptosignals/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pantunes","download_url":"https://codeload.github.com/pantunes/xtcryptosignals/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251787171,"owners_count":21643833,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["agregator","altcoins","api","bitcoin","crypto-currencies","cryptocurrency","data-collection","ethereum","exchange","exchange-api","notifications","portfolio","service","signals-notifications","ticker","trading"],"created_at":"2024-10-11T17:26:43.949Z","updated_at":"2025-04-30T21:37:31.539Z","avatar_url":"https://github.com/pantunes.png","language":"Python","funding_links":["https://github.com/sponsors/pantunes","https://donate.xtcryptosignals.com"],"categories":[],"sub_categories":[],"readme":"# XTCryptoSignals\n[![Version](https://img.shields.io/pypi/v/xtcryptosignals?style=flat-square)](https://pypi.org/project/xtcryptosignals)  \n[![Downloads](https://pepy.tech/badge/xtcryptosignals)](https://pepy.tech/project/xtcryptosignals) [![Downloads](https://pepy.tech/badge/xtcryptosignals/month)](https://pepy.tech/project/xtcryptosignals) [![Downloads](https://pepy.tech/badge/xtcryptosignals/week)](https://pepy.tech/project/xtcryptosignals)\n\n**XTCryptoSignals** is a Python library that includes the following 3 services:\n\n* #### Tasks\n\n    * **Data collection** of crypto-currencies pairs such as BTC/USDT, ETH/BTC or \n    any other pair that is supported by the Exchange API.\n    * A **Signals** service based on setup rules to send real-time alerts about \n    price, price change, trading volume or market sentiment sending Web Push \n    Notifications to the client browser (Firefox, Chrome) or/and to a [Telegram Channel](https://t.me/xtcryptosignals).\n    * **Market Depth**, **Content** and **Data** fetching Tasks.\n\n(Web Push Notifications are implemented with [ServiceWorker](https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerRegistration/showNotification) \nthat is compatible with the most known web browsers.)\n\n* #### RESTFul Server API\n    * Restful interface that exposes API entry points to get desired crypto-currencies data.\n    * SocketIO Server to broadcast real-time data to clients.\n\n* #### Website\n\n## Roadmap\n\n* [x] Add crypto-currencies exchanges (Dec 2018)\n* [x] Implement RESTFul API and socket.io to access price data in real time (Jan 2019)\n* [x] Build website (Jan 2019)\n* [x] Add Gunicorn to make it production ready (March 2019)\n* [x] Building Unit, functional and end-to-end testing for existing and future features (Jan 2019)\n* [x] User account creation, Session and Assets Management (Oct 2019)\n* [x] Implement web push notification signals for price range, price change, \ntrading volume, price sentiment, etc (July 2019)\n* [x] Implement Telegram bot to broadcast notifications (Feb 2020)\n* [x] Create nice features and make platform improvements on-the-fly (From 2020 onwards)\n* [ ] Create more Test cases and setup a more meaningful CI/CD Github Actions\n\n## Getting Started\n\n### Pre-requisites\n\n* [Python \u003e= 3.7](https://www.python.org/downloads)\n* [Redis](https://redis.io/download)\n* [MongoDB](https://www.mongodb.com)\n\n\n## Installation\n\n### Install from source\nClone project repository:\n```bash\ngit clone https://github.com/pantunes/xtcryptosignals.git\ncd xtcryptosignals\n```\n\nSetup Python virtual environment:\n```bash\nvirtualenv venv -p python3\nsource venv/bin/activate\n```\n\nInstall package in develop mode:\n```bash\npip install -e .\n```\n(Dependencies will be installed automatically from [requirements.txt](requirements.txt))\n\n### Path to the settings file\nBefore running `xt-server`, `xt-client`, `xt-tasks` and tests the env var `SETTINGS_APP`\nshould be set to the path of its settings file.  \nThis can be achieved inline `SETTINGS_APP=\u003cpath to configuration\u003e` followed by the app cli or \nexecuting `export SETTINGS_APP=\u003cpath to configuration\u003e` before running any of the command line\n.  \n\nExample of `xt-client` settings file [client.dev.env](xtcryptosignals/config/client.dev.env):\n```bash\nSECRET_KEY='bRdzq6ZMQ;HGB3JWVxs\u0026WQ4\u003e6r{'\nGA_TRACKING_ID='UA-12341343-2'\n```\n\nExample of `xt-server` or `xt-tasks` settings file [server.dev.env](xtcryptosignals/config/server.dev.env):\n```bash\nSECRET_KEY='MfYfEeom6)EyhcKcFh@+WGx8hvhP/,K67hA6'\nCORS_ALLOWED_ORIGINS=('https://mydomain.com',)\nMONGODB_HOST='localhost'\nMONGODB_PORT=27017\nMONGODB_NAME='MyDatabaseName'\n```\n\nRun tests:\n```bash\nSETTINGS_APP=server.dev.env python setup.py test\n# or\nSETTINGS_APP=server.dev.env pytest\n```\n\n### Install from PyPi\nCreate folder project:\n```bash\nmkdir xtcryptosignals\ncd xtcryptosignals\n```\n\nSetup Python virtual environment:\n```bash\nvirtualenv venv -p python3\nsource venv/bin/activate\n```\n\nInstall package:\n```bash\npip install xtcryptosignals\n```\n\n#### Run database migrations\nIt will populate some collections with data:\n```bash\nFLASK_ENV=development SETTINGS_APP=server.dev.env mongodb-migrate --url mongodb://127.0.0.1:27017/XTC-Dev --migrations xtcryptosignals/server/migrations/\n```\n\n### Install from docker-compose (the simplest way):\nClone project repository:\n```bash\ngit clone https://github.com/pantunes/xtcryptosignals.git\ncd xtcryptosignals\n```\nCreate multi-container Docker Applications:\n```bash\ndocker-compose build\n```\nNothing more is necessary...\n\n## Tasks\n### Start service\n\n#### Development:\n\n```bash\nSETTINGS_APP=server.dev.env xt-tasks\n\n# to test 1 tick\nSETTINGS_APP=server.dev.env xt-tasks --test\n\n```\n\n#### Production:\n\n```bash\nSETTINGS_APP=server.prod.env xt-tasks --log-ticker-minimal\n```\n\nTo get a list of supported exchanges:\n```bash\nSETTINGS_APP=server.prod.env xt-tasks --list-config exchanges\n```\n```bash\nbinance\nbinance_dex\nuphold\nokex\nidex\nswitcheo\nhotbit\nbibox\nokcoin\nbithumb\ncoinbene\ndcoin\nbitmax\nbilaxy\nbitstamp\nkucoin\ncoinbase_pro\n```\n(Drop [me](mailto:pjmlantunes@gmail.com) an e-mail if you want support for a new \nexchange or please contribute to this project creating a pull request)\n\nCommand line help:\n```bash\nxt-tasks --help\n```\n```bash\nUsage: xt-tasks [OPTIONS]\n\n  Use this tool to start all or part of the tasks.\n\nOptions:\n  --test                          Process 1 iteration for all configured coins\n                                  and/or tokens. (Useful for testing purposes)\n\n  --list-config [exchanges|currencies]\n                                  List 'exchanges' or 'currencies' (coins or\n                                  tokens) per exchange that are currently\n                                  supported.\n\n  -t, --task [cfgi|project|tether|ticker|notifications|order_book]\n                                  Task to be executed. If this parameter is\n                                  omitted all tasks will be started\n\n  -q, --queue TEXT                Queue name to execute indicated tasks.\n  --disable-ticker-messaging      Disable ticker message broadcasting.\n  --log-ticker-minimal            Only log ticker errors and important\n                                  warnings in stdout.\n\n  --version                       Show version.\n  -h, --help                      Show this message and exit.\n```\n\n### Setup\n\nThere is already an initial setup with some crypto-currencies (coins and tokens) \nthat can be added or/and removed in [settings_exchanges.py](xtcryptosignals/settings_exchanges.py).\n\n```python\nBIBOX: {\n    'pairs': [\n        ('ONT', 'USDT'),\n        ('ONT', 'BTC'),\n        ('ONT', 'ETH'),\n        ('NEO', 'USDT'),\n        ('NEO', 'BTC'),\n        ('NEO', 'ETH'),\n        ('LTC', 'USDT'),\n        ('LTC', 'BTC'),\n        ('CARD', 'ETH'),\n    ]\n}\n\nUPHOLD: {\n    'pairs': [\n        ('BTC', 'USD'),\n        ('ETH', 'USD'),\n        ('LTC', 'USD'),\n        ('XRP', 'USD'),\n    ]\n}\n```\n\nInitial setup to create dynamic MongoDB collections for data segmentation categorized \nby Exchanges pooling frequency in [settings.py](xtcryptosignals/settings.py).\n```python\nHISTORY_FREQUENCY = (\n    '10s', '30s', '1m', '10m', '30m', '1h', '2h', '3h', '4h', '12h', '1d', '4d', \n    '1w', '2w', '4w', '12w', '24w', '1y',\n)\n```\n\n### Results\nThe Ticker service is highly performant as can take advantage of multi-processing multi-core CPU.  \n\n### RESTFul Server API\n### Start service\n\n#### Development:\n\n```bash\nFLASK_ENV=development SETTINGS_APP=client.dev.env xt-server\n```\n\nSwagger API endpoints accessible at `http://127.0.0.1:5000/apidocs`:    \n\n![screen-shot](xtcryptosignals/client/static/imgs/readme/swagger.png)\n\n#### Production:\n\n```bash\nFLASK_ENV=production SETTINGS_APP=client.prod.env xt-server\n```\n\n\n## Website\n### Start service\n\n#### Development:\n\n```bash\nFLASK_ENV=development SETTINGS_APP=client.dev.env xt-client\n```\n\n#### Production:\n```bash\nFLASK_ENV=production SETTINGS_APP=client.prod.env xt-client --num-workers=N\n```\nN corresponds to the number of workers to be spinned up.  \n\n## Run all services at once\n\n#### Embed command line:\n```bash\nxt-all --help\n```\n\n```bash\nUsage: xt-all [OPTIONS] [copy-config-files|start|stop|restart]\n\nOptions:\n  -h, --help  Show this message and exit.\n```\nFor Production enviroment `xt-all copy-config-files` should be executed on first place \nto copy default config files to the folder `/config`.  \nThe configuration should be reviewed and changed, before running `xt-all start`\nto start all 3 services: `xt-server`, `xt-client` and `xt-tasks`.  \n\n#### Docker Compose (the simplest way):\nWith the following command all services will be started and running:\n\n```bash\ndocker-compose up\n```\nAccess the URL `http://127.0.0.1:5000` to load the Platform client UI, nothing more is necessary...\n\n## Screenshots\n\nOpen the browser with the URL `http://127.0.0.1:8000`:\n\n**Overview** | **Pairs**\n:-------------------------:|:-------------------------:\n![screen-shot](xtcryptosignals/client/static/imgs/readme/1.png) | ![screen-shot](xtcryptosignals/client/static/imgs/readme/2.png)\n**Coins/Tokens** | **Dark Theme** \n![screen-shot](xtcryptosignals/client/static/imgs/readme/3.png) | ![screen-shot](xtcryptosignals/client/static/imgs/readme/8.png)\n**Login** | **Portfolio**\n![screen-shot](xtcryptosignals/client/static/imgs/readme/4.png) | ![screen-shot](xtcryptosignals/client/static/imgs/readme/5.png) \n**Alerts Setup** | **Web Push Notification** | \n![screen-shot](xtcryptosignals/client/static/imgs/readme/6.png) | ![screen-shot](xtcryptosignals/client/static/imgs/readme/7.png)\n**Twitter Chart** | **Crypto Fear \u0026 Greed Index Chart** | \n![screen-shot](xtcryptosignals/client/static/imgs/readme/12.png) | ![screen-shot](xtcryptosignals/client/static/imgs/readme/9.png)\n**Tether Chart** | **Coin / Token Chart** | \n![screen-shot](xtcryptosignals/client/static/imgs/readme/10.png) | ![screen-shot](xtcryptosignals/client/static/imgs/readme/11.png)\n**Market Depth** | **Telegram Notifications** | \n![screen-shot](xtcryptosignals/client/static/imgs/readme/13.png) | ![screen-shot](xtcryptosignals/client/static/imgs/readme/14.png)\n**Spotlight Search** | | \n![screen-shot](xtcryptosignals/client/static/imgs/readme/15.png) |\n\n## Example of added Feature\nPull Request to show how easy is to [Add Kyber Network, Aave and Ren Projects/Tokens](https://github.com/pantunes/xtcryptosignals/commit/95e1ec9cda86e5b457343163068ad164f8df81aa).\n\n## Disclaimer\n\nThis project is work in progress and when it comes to trading use it at your own risk.\n\n## License\n\nThis project is licensed under the [GNU](https://www.gnu.org/licenses/gpl-3.0.en.html) License.\n\n## Contact\n\nThrough the website [xtcryptosignals.com](https://xtcryptosignals.com/ticker/tokens/10s#contact).  \n\n## Acknowledgments\n\n![Jetbrains](xtcryptosignals/client/static/imgs/readme/jetbrains.png)  \nThanks to [Jetbrains](https://www.jetbrains.com/?from=xtcryptosignals) in order to \nsupport us with an Open Source license.\n\n## Donation\n\nIn case this project helped you in some way I'm accepting a small donation to keep this open-source project on-🔥 :\n- BTC: bc1qheg9zjhezsvnzywvnj9tunsj39llslqp33ekrs\n- ETH: 0x2e9B4409d40d2605361Ea1278B1514C74c66Eac3\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpantunes%2Fxtcryptosignals","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpantunes%2Fxtcryptosignals","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpantunes%2Fxtcryptosignals/lists"}