Перед тем как писать эту статью, я сделал небольшой ресёч: посмотрел, что уже есть на Хабре по разработке торговых ботов и гайдам в формате «с чего начать»
Одни слишком простые, другие заточенные на одну стратегию, не нашел чего-то такого, что было бы как минимальной базой для начала
Не учить одной конкретной стратегии, а собрать минимальный рабочий фреймворк, который можно взять за основу и дальше развивать под себя
Поэтому в статье мы с нуля соберём торгового бота, который умеет получать рыночные данные, принимать решение, выставлять заявку, проверять состояние позиции и фиксировать результат сделки
И да - всё это попробуем сделать примерно за 60 минут Вся необходимая информация будет здесь, никуда переходить не нужно - статья полностью самостоятельная
Спойлер: Собранный бот заработал за 48 минут 22 цента, сделки приложил в конце статьи, можно их проверить
Итак, что нам понадобится:
Как и в любом хорошем рецепте, сначала соберём ингредиенты)
? Компьютер
⏱️ 60 минут свободного времени - если вы совсем с нуля
? Любая криптобиржа с API - либо учебный/демо-аккаунт
? Python
1. Установите Python
Скачайте Python с официального сайта: Официальная страница загрузки Python
После установки можно проверить, что всё работает:
python --version
На macOS/Linux команда может выглядеть так:
python3 --version
2. Зарегистрируйтесь на бирже
Подойдёт практически любая крупная криптобиржа с API. Например:
Bybit (использую в примерах, ниже)
OKX
Gate
KuCoin
Я намеренно не даю реферальных ссылок - эта статья не про рекламу бирж и не про реферальные программы
Если биржа предлагает демо или учебный аккаунт, для первого запуска я рекомендую использовать именно его.
3. Создайте API-ключ
После регистрации найдите в настройках аккаунта раздел вроде API / API Management / API Keys и создайте новый API-ключ.
API-ключ - это по сути пропуск, который позволяет нашей программе обращаться к бирже от имени вашего аккаунта
В зависимости от биржи вы получите обычно две части:
API Key API Secret
Иногда есть ещё третье значение - например, Passphrase
Для нашего бота понадобятся права на чтение данных и торговлю деривативами/фьючерсами.
⚠️ Очень важно: не включайте разрешение на вывод средств (Withdraw), если оно вообще доступно. Боту для торговли оно не нужно.
К чему мы хотим придти к концу статьи:
Наша схема будет выглядеть так:
Python → API → биржа → получение данных / отправка заявки
Перед кодом немного биржевой терминологии
Если вы никогда не торговали на бирже, код ниже может выглядеть страшнее, чем он есть. Поэтому буквально пять минут на базовую терминологию.
Термин |
Что это значит |
|---|---|
Ордер (Order) |
Заявка на покупку или продажу. Например: «Купить BTC на $20». |
Market Order |
Ордер, который исполняется сразу по доступной цене рынка. |
Limit Order |
Ордер с заданной ценой: «Купить BTC только по $100 000 или дешевле». |
Позиция (Position) |
Уже открытая сделка. Например, вы купили BTC - у вас появилась LONG-позиция. |
LONG |
Вы зарабатываете, если цена растёт. |
SHORT |
Вы зарабатываете, если цена падает. |
TP (Take Profit) |
Уровень, на котором позиция автоматически закрывается с прибылью. |
SL (Stop Loss) |
Уровень, на котором позиция автоматически закрывается с убытком, чтобы ограничить потери. |
PnL (Profit and Loss) |
Финансовый результат позиции или сделки. |
Баланс |
Деньги на аккаунте, доступные для торговли. |
Размер позиции |
Номинальный объём конкретной сделки. |
Стакан (Order Book) |
Список текущих заявок покупателей и продавцов по разным ценам. |
Например, бот открывает LONG по BTC на $100 000.
Мы задаём:
TP = $100 500
SL = $99 500
Если цена поднимется до $100 500 - позиция закроется по Take Profit (TP)
Если цена пойдёт против нас и достигнет $99 500 - сработает Stop Loss (SL)
В нашем примере TP и SL выставляются сразу вместе с рыночным ордером
Структура проекта
Специально сделаю вещь, которую в production-коде, скорее всего, делать не стоит: весь наш бот будет состоять всего из двух Python-файлов (код на гитхабе)
https://github.com/Shldm/edu_bot
trading_bot/ │ ├── market_bb.py # работа с биржей, ничего не знает о нашей стратегии; └── run_bot.py # логика бота + запуск, ничего не знает о тонкостях API биржи;
Наша задача сейчас - не построить промышленную торговую систему, а понять сам принцип её работы
Разберем первый файл: market_bb.py(140 строк)
https://github.com/Shldm/edu_bot/blob/main/market_bb.py
Он не знает, что такое наша стратегия, когда покупать BTC, когда продавать и какой PnL мы хотим получить
Его задача максимально простая:
попросили данные → сходил на биржу → вернул данные
Функции |
Что делает |
Что получает / возвращает |
|---|---|---|
|
Создаёт авторизованную сессию с ByBit |
Получает: API key и secret. Возвращает: ничего, сохраняет соединение в |
|
Получает доступный баланс единого счёта |
Возвращает: доступный баланс в USDT ( |
|
Получает справочник активных монет |
Возвращает: список пар с тикером, минимальным размером ордера, шагом количества и шагом цены |
|
Запрашивает текущий стакан конкретной пары |
Получает: тикер, например |
|
Получает открытые позиции |
Получает: тикер (необязательно). Возвращает: символ, направление, размер, среднюю цену входа и нереализованный PnL |
|
Получает все ещё не исполненные заявки |
Возвращает: список открытых ордеров с символом, направлением, ценой и количеством |
|
Получает историю недавно закрытых позиций |
Возвращает: список сделок с символом и фактическим реализованным PnL |
|
Отправляет рыночный ордер с TP и SL |
Получает: тикер, направление, объём, TP и SL. Возвращает: ответ биржи с результатом операции |
Разберем второй файл: run_bot.py (217 строк)
https://github.com/Shldm/edu_bot/blob/main/run_bot.py
Если market_bb.py был переводчиком между Python и биржей, то run_bot.py - это уже мозг нашей системы.
Он не должен знать, как биржа устроена внутри. Вместо этого он использует функции, которые мы подготовили:
Функция |
Что делает |
Что получает / возвращает |
|---|---|---|
|
Округляет количество или цену под требования конкретной торговой пары |
Получает: число и шаг округления. Возвращает: аккуратную строку с нужным шагом |
|
Открывает журнал сделок или создаёт его при первом запуске |
Возвращает: Excel-книгу |
|
Записывает открытую сделку в Excel |
Получает: монету, направление, цену входа, объём, TP и SL |
|
Сверяет локальный журнал с фактически закрытыми на бирже позициями |
Получает: историю закрытых сделок и список открытых позиций |
|
Главная функция стратегии: анализирует одну монету и при наличии сигнала открывает позицию |
Получает: параметры монеты и список уже открытых позиций |
|
Запускает весь процесс: подключение → баланс → позиции → монеты → торговый цикл |
Возвращает: ничего, управляет работой бота |
Чтобы закрепилось: первый файл функции работы с биржей, второй наша логика и доп. функции для удобства
Давайте теперь это всё соберём вместе, как LEGO ?
До этого мы разбирали детали по отдельности. Теперь посмотрим, что происходит от момента запуска бота до первой сделки.
У нас есть два файла:
trading_bot/ │ ├── market_bb.py ← умеет разговаривать с ByBit └── run_bot.py ← принимает торговые решения
Запускаем (в консоли, находясь в папке с проектом, начинает работать логика заложенная во втором файле):
python run_bot.py
1. Бот подключается к бирже
(ключи не забываем вставить)
market_bb.init(API_KEY, API_SECRET)
2. Узнаём, сколько у нас денег
balance = market_bb.get_wallet()
3. Получаем список монет
coins = market_bb.get_coins_spr()
4. Проверяем, нет ли уже открытых позиций
positions = market_bb.get_position()
Это нужно, чтобы бот случайно не открыл ещё пять одинаковых LONG по BTC только потому, что несколько раз увидел один и тот же сигнал.
5. Начинаем проходить монеты одну за другой
Для каждой монеты вызывается:
trade_one(coin, open_symbols)
А внутри происходит самое интересное.
6. Забираем стакан
ob = market_bb.get_orderbook(symbol)
Получаем:
Bids Asks 100 000 2.1 BTC 100 001 0.4 BTC 99 999 3.5 BTC 100 002 0.7 BTC 99 998 1.8 BTC 100 003 0.5 BTC
7. Считаем объём покупателей и продавцов
bid_volume = sum(q for _, q in ob["bids"]) ask_volume = sum(q for _, q in ob["asks"])
И проверяем наш простой сигнал:
bid_volume / ask_volume >= 3.5
Если да - LONG.
Если продавцов в 3.5 раза больше - SHORT.
Если ничего интересного нет — просто переходим к следующей монете.
8. Если появился сигнал - рассчитываем сделку
9. Отправляем ордер
Вся эта логика заканчивается одной строкой:
market_bb.post_order(symbol, side, qty, tp, sl)
10. Записываем результат
После успешного открытия позиции бот сохраняет её в trades.xlsx:
Что мы только что построили?
Всего из двух Python-файлов мы получили замкнутый цикл:

И всё
Мы не написали тысячу строк кода, не создавали десятки классов и не строили сложную инфраструктуру.
Но при этом у нас уже есть все основные элементы торгового бота:
получить данные → обработать → принять решение → отправить ордер → сохранить результат
Для закрепления:
Ставим python
Регистрируемся и получаем ключи API бирж
Скачиваем проект с гитхаба
Запускаем через консоль
(иногда мб потребоваться, увидите по ошибка, обновить/установить библиотеки, следуйте инструкции в консоли)
Результат работы бота
На старте было $200. Размер одной позиции - около $20, то есть бот использовал примерно 10% депозита на одну сделку
# |
Дата |
Время |
Монета |
Направление |
PnL, $ |
Результат |
|---|---|---|---|---|---|---|
1 |
05.08.2026 |
12:00 |
WLDUSDT |
LONG |
+0,0775 |
✅ |
2 |
05.08.2026 |
12:06 |
ARBUSDT |
SHORT |
+0,0774 |
✅ |
3 |
05.08.2026 |
12:12 |
OPUSDT |
LONG |
−0,1227 |
❌ |
4 |
05.08.2026 |
12:18 |
SUIUSDT |
SHORT |
+0,0774 |
✅ |
5 |
05.08.2026 |
12:30 |
SEIUSDT |
LONG |
+0,0786 |
✅ |
6 |
05.08.2026 |
12:36 |
TIAUSDT |
SHORT |
+0,0787 |
✅ |
7 |
05.08.2026 |
12:42 |
LDOUSDT |
LONG |
−0,1222 |
❌ |
8 |
05.08.2026 |
12:48 |
1000PEPEUSDT |
SHORT |
+0,0788 |
✅ |
Итого |
05.08.2026 |
12:00–12:48 |
8 сделок |
+0,2235 |
6 / 8 |
Немного статистики
Стартовый депозит: $200
Сделок: 8
Прибыльных: 6 (75%)
Убыточных: 2 (25%)
Итоговый PnL: +$0,2235
Доходность на депозит: +0,112%
Средняя сделка: +$0,0279
Средняя прибыльная: +$0,0781
Средняя убыточная: −$0,12245
Profit Factor: 1,91
Максимальная прибыль: +$0,0788
Максимальный убыток: −$0,1227
И здесь есть важный момент.
8 сделок - это не статистически значимая выборка. Поэтому было бы абсолютно неправильно написать: «бот зарабатывает 0,112% за час» и тем более пересчитать это в годовые
Как запустить бота
git clone https://github.com/Shldm/edu_bot.gitcd edu_bot # качаем проект cd edu_bot # переходим в папку с проектом ## вставьте свои ключи в файл run_bot.py python run_bot.py # запускаем бота ## бот пройдет один цикл по монетам, откроет сделки и запишет результат в excel
Что дальше?
Да, конечно, это игрушечный бот. Если просто запустить его и оставить торговать на длинной дистанции, скорее всего, он уйдёт в минус
Мы не пытались за 120 минут создать прибыльную торговую систему. Мы сделали минимальный каркас, который можно постепенно развивать
Взяв этот проект за основу, можно добавить:
?️ Базу данных - хранить сделки, стаканы, позиции, сигналы и статистику не в Excel.
⚡ WebSocket - получать изменения стакана в реальном времени вместо постоянных REST-запросов
? Индикаторы - добавить технический анализ и собственные признаки рынка
? Более сложную стратегию - вместо примитивного дисбаланса стакана использовать несколько условий одновременно
? Backtest - проверить стратегию на исторических данных до запуска реальных денег
? Аналитику - win rate, profit factor, drawdown, Sharpe, комиссии, funding и другие метрики
?️ Risk management - лимиты на позиции, дневной убыток, максимальную просадку и общий риск.
? Нормальную синхронизацию с биржей - обработку частичных исполнений, reconnect и рассинхронизации состояния.
? Несколько бирж - вынести общий интерфейс и подключить ByBit, OKX, Binance и другие площадки.
? ML/LLM - когда появится нормальный датасет, уже экспериментировать с моделями поверх собранных данных
И в этот момент несколько десятков строк превращаются уже совсем в другую систему.
Но начинать можно именно с них.
Потому что главный навык в алго-трейдинге - не умение написать тысячу строк кода.
Это умение взять идею:
«А что если попробовать торговать вот это?»
и превратить её в систему, которую можно запустить, измерить, протестировать и доказать или опровергнуть цифрами
А дальше - уже простор для экспериментов
Свои эксперименты и заметки веду тут: https://t.me/bylabdata
Комментарии (14)

Gydronium
15.08.2026 23:33А как насчёт opensource решений? Для новичков так проще будет. Есть все нужные функции и при необходимости можно поменять код. Я вот сам пытаюсь разобраться с одной opensource платформой для алготрейдинга в данный момент.

Pruto Автор
15.08.2026 23:33Я про это тоже напишу, будет статья как взять open source бота. В целом да, можно, но кажется для начала общий принцип работы ботов здорово увидеть на упрощенном примере

HiItsYuri
15.08.2026 23:33Не нужно учить людей плохому. Это может прочесть незатуманенный умом залётный, и просадить там деньги.
Трейдинг зло, трейдинг без знания рынка - идиотизм, трейдинг ботом - идиотизм в квадрате: вам никогда не обойти HFT, трейдинг по стратегиям - религия.
Есть одна стратегия, если вы не ХФТ - купить и держать, если уверены в компании.

YukiSidorov
15.08.2026 23:33Даже человек, который целенаправленно начнёт изучать биржевую торговлю, неминуемо просадит несколько депозитов, прежде чем чему-то научится.

Pruto Автор
15.08.2026 23:33Как и в любом деле, не бывает ничего бесплатного, хочешь научиться, придется заплатить. Не мне, не за курсы, за этот опыт

Mr_Cheater
15.08.2026 23:33Когда код пишут нейросетью - я ещё могу понять. Но когда ещё и статью - это уже слишком, ИМХО.
Va_sil
Безупречный план , надёжный как швейцарские часы . Я правильно понимою запусков были сотни и на скриншоте мы видим наиболее удачную ?
house2008
Видимо это просто для примера псевдо стратегия. Потому что на крипте на цену не влияет сколько в стакане ордеров. Причем всё в целом наоборот, когда в стакан залетает много sell, значит крупный игрок видит на рынке много хомяков и фомошников и он заводит объемы чтобы выгрузить, но цена в этот момент растет, поэтому статистически лучше лонговать когда много продавцов, то есть крупный игрок никогда не будет выгружать в падающий рынок, это просто не профитно.
churkin_il
Так тут показывают не стратегию торговли и не обещают золотых гор, всего лишь описано как может выглядеть пайплайн работы с биржей структурно (для новичков)
К тому же, в конце специально было написано как и в каком направлении можно развивать проект
Как байзлайн норм, но с этим бы и клод справился
Pruto Автор
Добавлю, то что человек выше написал тоже не может быть верным, рынок эффективный и нет такой бинарной оценки, которая бы давала точный исход прогноза.
Проще говоря не существует постоянной зависимости дающей плюс