Skip to content

Nezhinskiy/Assets-Loop

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

example workflow

Assets Loop is a free Open Source web application (built with Python + JavaScript) designed to assist in trading across cryptocurrency exchanges, currency markets, and banks using an arbitrage strategy. It is intended to search for all possible transaction chains and display them on the website's homepage. Currency exchange rates are continuously and concurrently parsed through a network of open and closed APIs using Tor network, proxys and direct, ensuring the rates are always up-to-date.


Sponsorship | Structure | Supported marketplaces | Technologies | Requirements | Quick start | Support | Disclaimer | License | Author | Copyright

Sponsorship

This project requires financial support for its development and maintenance, primarily to cover server costs. If I could afford to pay for the server from donations, I could add many more banks, currency markets, and crypto exchanges. I'm aware that many people are parsing data from my resource, and I'm pleased that the project is helpful. However, if you could consider donating 5-10$ monthly, it would go a long way in supporting the project.

Assets Loop is not supported by any company and is developed in my spare time, and the server is paid from my personal funds.

Structure

.
├── .github/workflows ─ Workflow for Git Actions CI
├── arbitration ─ Django project
│   ├── arbitration ─ Django settings module
│   ├── banks ─ Banks & Currency Markets creation module
│   ├── core ─ View module
│   ├── crypto_exchanges ─ Crypto Exchanges creation module
│   ├── parsersBusiness logic module
│   ├── static ─ css, javascript, favicon
│   └── templates ─ HTML pages
└── infra ─ Project infrastructure setup

Supported Exchange marketplaces

Supported crypto exchanges and supported deposit/withdrawal methods between crypto assets and fiat currencies:

Supported Banks:

Banks supporting currency conversion within the bank:

Other supported banks:

Supported currency markets:

Technologies

This is a web application project using Docker Compose for containerization. The project includes several services such as a Tor proxy to bypass parsing locks, Redis, PostgreSQL database, Nginx web server, Certbot for SSL certification, and Celery workflows for parsing, parsing and computing data. These services are connected to the user's network.

  • Python 3
  • Django, Django REST framework
  • Celery, Celery Beat,
  • Redis
  • Docker, Docker-Compose
  • PostgreSQL
  • NGINX, Certbot, Gunicorn
  • JavaScript, jQuery
  • DataTables, Ajax
  • Bootstrap, Select2, Twix
  • CI/CD, Git Actions
  • Digital Ocean

Requirements

Up-to-date clock

The clock must be accurate, synchronized to a NTP server very frequently to avoid problems with communication to the exchanges.

Minimum hardware required

To run this service I recommend you a cloud instance with a minimum of:

  • Minimal (advised) system requirements: 2GB RAM, 1GB disk space, 2vCPU

Software requirements

Quick start

Install Docker & Docker Compose

  • Install Docker and Docker Compose on the server or local (for ubuntu):
sudo apt install curl                                   # installing a file download utility
curl -fsSL https://get.docker.com -o get-docker.sh      # download script for installation
sh get-docker.sh                                        # running the script
sudo apt-get install docker-compose-plugin              # install docker compose

Local development

  • Clone repository:
git clone https://github.com/Nezhinskiy/Assets-Loop.git
  • Go to the infra directory:
cd Assets-Loop/infra/
  • Create an .env file in the infra directory and fill it with your data as in the example.env file.

  • Create and run Docker containers, run command:

docker-compose -f local-docker-compose.yml up
  • After a successful build, run the migrations:
docker compose exec arbitration python manage.py migrate
  • Collect static:
docker compose exec arbitration python manage.py collectstatic --noinput

Deploy to server

  • Clone repository:
git clone https://github.com/Nezhinskiy/Assets-Loop.git
  • Go to the infra directory:
cd Assets-Loop/infra/
scp prod-docker-compose.yml username@IP:/home/username/Assets-Loop/  # username - server username
scp -r nginx username@IP:/home/username/Assets-Loop/                 # IP - server public IP
scp -r certbot username@IP:/home/username/Assets-Loop/
  • Go to your server, to the Assets-Loop directory:
ssh username@IP        # username - server username
cd Assets-Loop/        # IP - server public IP
  • Create an .env file in the Assets-Loop directory and fill it with your data as in the example.env file.

  • Create and run Docker containers, run command on server:

docker-compose -f prod-docker-compose.yml up
  • After a successful build, run the migrations:
docker compose exec arbitration python manage.py migrate
  • Collect static:
docker compose exec arbitration python manage.py collectstatic --noinput

Populating the database and starting the service

  • In the .env file, you specified the path in the REGISTRATION_URL variable. Follow it to populate the database with the necessary data.

  • In the .env file, you specified the path in the START_URL variable. Follow it to start the service.

GitHub Actions CI

  • To work with GitHub Actions, you need to create environment variables in the Secrets > Actions section of the repository:
DOCKER_PASSWORD         # Docker Hub password
DOCKER_USERNAME         # Docker Hub login
DOCKER_PROJECT          # Project name on Docker Hub
HOST                    # server public IP
USER                    # server username
PASSPHRASE              # *if ssh key is password protected
SSH_KEY                 # private ssh key
TELEGRAM_TO             # Telegram account ID to send a message
TELEGRAM_TOKEN          # token of the bot sending the message

Support

Help

For any questions not covered by the documentation, or for more information about the service, write to me in Telegram.

Feel like the service is missing a feature? I welcome your pull requests!

Please, message me on Telegram, before you start working on any new feature.

Disclaimer

This software is for educational purposes only. Do not risk money which you are afraid to lose. USE THE SOFTWARE AT YOUR OWN RISK. THE AUTHORS AND ALL AFFILIATES ASSUME NO RESPONSIBILITY FOR YOUR TRADING RESULTS.

License

MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)

Author

Assets Loop is owned and maintained by Mikhail Nezhinsky.

You can follow me on Linkedin to keep up to date with project updates and releases. Or you can write to me on Telegram.

Copyright

Copyright (c) 2022-2023 Mikhail Nezhinsky

Releases

No releases published

Packages

No packages published