С чего всё началось
Честно говоря, меня достало пялиться в графики в два часа ночи, решая, покупать или продавать, пока кофе стынет. Ручная торговля — это лотерея: то плюс, то минус, и постоянно чувствуешь, что играешь против шулеров. Переломный момент случился, когда я упустил движение биткоина на 12%, потому что отвлёкся на дебаг другого скрипта. Тогда я подумал: «Вот бы автоматизировать это — как чит-код».
Так я решил сделать своего первого крипто-бота. Не супер-алгоритм хедж-фонда, а простой прозрачный скрипт, который следит за рынком, исполняет базовую стратегию и даёт мне высыпаться.
Главное открытие
Оказалось, для старта не нужна степень по квантовым финансам. Достаточно пары идей: цены, простой индикатор и API для ордеров. Вся магия в цикле: получить данные → посчитать сигнал → разместить ордер → подождать → повторить.
Я выбрал библиотеку ccxt — она унифицирует API десятков бирж. Один и тот же код работает на Binance, Kraken или Coinbase, меняется только строка подключения.
Стратегия — классическое пересечение скользящих средних: когда короткая MA пересекает длинную сверху — покупаем, снизу — продаём. На миллионере не разбогатеешь, но это отличная песочница, чтобы понять, как работать с ордерами, ошибками и лимитами запросов.
Как Нео уклоняется от пуль, так и боту нужно уклоняться от rate limit'ов.
Если их игнорировать, биржа вернёт HTTP 429, и бот встанет колом — совсем не героический момент.
Как я это сделал (и что пошло не так)
В первой версии я просто написал цикл, который дёргал биржу каждую минуту и торговал по пересечению. Выглядело красиво, но на практике:
- Я не обрабатывал rate limit — через пару сотен запросов Binance начинала сыпать ошибками, и скрипт падал.
- Не было обработки сетевых ошибок — любой сбой сети ронял бота.
- Размер ордера был жёстко зашит — 0.001 BTC, что на тестнете ок, но на реальном счёте могло быть небезопасно.
Во второй версии я добавил правильную обработку ошибок, уважение к лимитам и логирование. Вместо time.sleep(60) — проверка exchange.rateLimit и повтор при неудаче. Ордер теперь выставляется с проверкой баланса.
Вот пример ключевого улучшения — функция безопасного получения данных с повторными попытками:
def safe_fetch_ohlcv():try:
return exchange.fetch_ohlcv(symbol, '1h', limit=long_window)
except (ccxt.NetworkError, ccxt.ExchangeError) as e:
log.warning(f'Transient error: {e}')
return None
Такая защита позволяет боту пережить кратковременные проблемы и продолжать работу.
Советы новичкам
- Начинайте на тестнете. Рынок не прощает ошибок новичка.
- Всегда уважайте rate limit. Биржа — не ваш личный сервер.
- Логируйте всё. Иначе вы не узнаете, почему бот не сработал.
- Начинайте с малого объёма. 0.001 BTC для первого раза — нормально.
Автоматизация торговли — это не магия, а просто дисциплина. Сделайте один шаг сегодня, и завтра у вас будет время на жизнь, а не на графики.
Комментарии (0)
Войдите, чтобы комментировать.
Пока нет комментариев. Будьте первым.