Skip to content

KamilCloudDev/Binance-Grid-Engine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Binance-Grid-Engine

Bot do handlu kryptowalutami na giełdzie Binance (Spot), zoptymalizowany do działania w kontenerze Docker.


1. Wymagania

  • Docker zainstalowany na maszynie.
  • Git do klonowania repozytorium.
  • Konto na Binance z wygenerowanym kluczem API (uprawnienia do handlu Spot).

2. Architektura i Logika Bota

Główne założenia strategii:

Bot implementuje strategię grid trading, która polega na składaniu zleceń kupna i sprzedaży w określonych interwałach cenowych.

  1. Dynamiczna Wielkość Zlecenia:

    • Całkowity kapitał (wartość PLN + BTC) jest dzielony przez MAX_ILOSC_ZLECEN (domyślnie 100).
    • Zapewnia to skalowalność – im większy kapitał, tym większe zlecenia.
  2. Scenariusz Startowy (Brak Otwartych Zleceń):

    • Jeśli na koncie nie ma żadnych otwartych zleceń sprzedaży (SELL), bot natychmiast składa zlecenie kupna (MARKET BUY) za obliczoną kwotę.
    • Po zrealizowaniu zakupu, automatycznie wystawia zlecenie sprzedaży (LIMIT SELL) z ceną o 1% wyższą od średniej ceny zakupu.
  3. Zarządzanie Istniejącymi Zleceniami:

    • Jeśli na rynku istnieją już zlecenia sprzedaży, bot monitoruje cenę i reaguje na jej spadki.
    • Próg wejścia jest dynamicznie obliczany na podstawie historycznego ATH (All-Time High) oraz ceny najniższego otwartego zlecenia:
      próg = (cena_najniższego_zlecenia * 0.125%) + (ATH * 1%)
      
    • Jeśli aktualna cena rynkowa spadnie poniżej cena_najniższego_zlecenia - próg, bot składa kolejne zlecenie kupna.
  4. Ochrona przed Brakiem Środków (PLN):

    • W sytuacji, gdy na koncie zabraknie PLN na kolejne zlecenie kupna, a cena nadal spada, bot:
      1. Anuluje najwyższe (najdroższe) zlecenie sprzedaży.
      2. Wystawia nowe zlecenie sprzedaży (LIMIT SELL) z ceną o 1% wyższą od aktualnej ceny rynkowej, uwalniając w ten sposób środki i "zagęszczając" siatkę zleceń.
  5. Automatyczna Redukcja Zleceń Sprzedaży:

    • Aby zapobiec nadmiernemu blokowaniu środków w wielu małych zleceniach, bot automatycznie dba o to, by w danym momencie istniały maksymalnie 2 aktywne zlecenia sprzedaży.
    • Jeśli liczba zleceń sprzedaży przekroczy 2, bot anuluje najstarsze (najwyższe cenowo) zlecenia, aż pozostaną tylko dwa najnowsze. Pozostałe środki (BTC) stają się dostępne i oczekują na nowe, korzystniejsze okazje do sprzedaży w przyszłości.
  6. Logowanie i Pętla:

    • Wszystkie operacje są logowane do pliku logbtcpln.txt z dokładnym znacznikiem czasowym.
    • Bot podejmuje decyzje co 5 sekund, zapewniając szybką reakcję na zmiany rynkowe.
  7. Proaktywne Przesuwanie Zlecenia (Nowość):

    • Jeśli na rynku istnieje tylko jedno zlecenie sprzedaży, a aktualna cena rynkowa zbliży się do niego na odległość 0.5%, bot automatycznie:
      1. Anuluje to zlecenie.
      2. Wystawia nowe zlecenie sprzedaży z ceną o 1% wyższą od aktualnej ceny rynkowej.
    • Zapobiega to "utknięciu" zlecenia blisko ceny rynkowej i proaktywnie podnosi próg sprzedaży, gdy rynek idzie w górę.

3. Struktura Projektu

/
├─ main.py           # Główna logika bota
├─ start.sh          # Skrypt do uruchamiania bota
├─ .env              # Plik konfiguracyjny (klucze API)
├─ requirements.txt  # Zależności Python
├─ .gitignore        # Pliki ignorowane przez Git
└─ Dockerfile        # Definicja kontenera Docker

4. Konfiguracja i Uruchomienie

a. Konfiguracja Kluczy API

  1. Utwórz plik .env w głównym katalogu projektu.

  2. Wklej do niego swoje klucze API z Binance:

    BINANCE_API_KEY=TWÓJ_KLUCZ_API
    BINANCE_API_SECRET=TWÓJ_SEKRETNY_KLUCZ

    WAŻNE: Plik .env jest ignorowany przez Git, aby chronić Twoje klucze. Nigdy nie udostępniaj go publicznie.

b. Uruchomienie za pomocą Dockera

  1. Zbuduj obraz Dockera: Otwórz terminal w katalogu projektu i wykonaj polecenie:

    docker build -t bot-image .
  2. Uruchom kontener: Uruchom bota w tle za pomocą polecenia:

    docker run -d --name bot --restart always --env-file .env bot-image
    • -d: uruchomienie w trybie "detached" (w tle).
    • --name bot: nadanie nazwy kontenerowi.
    • --restart always: automatyczne ponowne uruchomienie w przypadku awarii.
    • --env-file .env: wstrzyknięcie zmiennych środowiskowych z pliku .env.

c. Uruchomienie za pomocą skryptu start.sh (dla systemów Linux/WSL)

Dla ułatwienia zarządzania botem w środowiskach Bash-compatible (np. Linux, WSL, Git Bash), dołączono skrypt start.sh. Automatyzuje on budowanie obrazu, usuwanie starego kontenera i uruchamianie nowego z odpowiednimi parametrami.

  1. Nadaj uprawnienia do wykonania:
    chmod +x start.sh
  2. Uruchom skrypt:
    ./start.sh
    Skrypt automatycznie zbuduje obraz Docker, usunie poprzedni kontener (jeśli istnieje) i uruchomi nową instancję bota. Po uruchomieniu, wyświetli ostatnie 10 linii logów bota.

d. Monitorowanie Logów

Aby na żywo śledzić działanie bota, użyj polecenia:

docker logs -f bot

5. Rozwój i Wersjonowanie

Projekt jest zarządzany przez Git. Aby wprowadzić zmiany:

# Dodaj zmiany do przechowalni
git add .

# Zatwierdź zmiany z opisem
git commit -m "feat: Opis wprowadzonych zmian"

# Wyślij na zdalne repozytorium
git push origin main

6. Bezpieczeństwo

  • Izolacja: Docker zapewnia pełną izolację środowiska bota od systemu operacyjnego.
  • Klucze API: Nigdy nie umieszczaj kluczy API bezpośrednio w kodzie. Używaj pliku .env.
  • Uprawnienia: Ogranicz uprawnienia klucza API na Binance tylko do handlu Spot.

About

High-frequency Grid Trading Bot for Binance (Spot). Features dynamic order scaling, automated grid density management, and pro-active profit trailing. Fully containerized with Docker for 24/7 reliability.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors