Bot do handlu kryptowalutami na giełdzie Binance (Spot), zoptymalizowany do działania w kontenerze Docker.
- Docker zainstalowany na maszynie.
- Git do klonowania repozytorium.
- Konto na Binance z wygenerowanym kluczem API (uprawnienia do handlu Spot).
Bot implementuje strategię grid trading, która polega na składaniu zleceń kupna i sprzedaży w określonych interwałach cenowych.
-
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.
- Całkowity kapitał (wartość PLN + BTC) jest dzielony przez
-
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.
-
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.
-
Ochrona przed Brakiem Środków (PLN):
- W sytuacji, gdy na koncie zabraknie PLN na kolejne zlecenie kupna, a cena nadal spada, bot:
- Anuluje najwyższe (najdroższe) zlecenie sprzedaży.
- 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ń.
- W sytuacji, gdy na koncie zabraknie PLN na kolejne zlecenie kupna, a cena nadal spada, bot:
-
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.
-
Logowanie i Pętla:
- Wszystkie operacje są logowane do pliku
logbtcpln.txtz dokładnym znacznikiem czasowym. - Bot podejmuje decyzje co 5 sekund, zapewniając szybką reakcję na zmiany rynkowe.
- Wszystkie operacje są logowane do pliku
-
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:
- Anuluje to zlecenie.
- 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ę.
- 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:
/
├─ 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
-
Utwórz plik
.envw głównym katalogu projektu. -
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
.envjest ignorowany przez Git, aby chronić Twoje klucze. Nigdy nie udostępniaj go publicznie.
-
Zbuduj obraz Dockera: Otwórz terminal w katalogu projektu i wykonaj polecenie:
docker build -t bot-image . -
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.
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.
- Nadaj uprawnienia do wykonania:
chmod +x start.sh
- Uruchom skrypt:
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.
./start.sh
Aby na żywo śledzić działanie bota, użyj polecenia:
docker logs -f botProjekt 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- 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.