От блок-схем к коду: как я перешёл с конструкторов на программирование за 3 месяца
Год назад я собирал стратегии в TSLab. Блок-схемы, drag-and-drop, никакого кода. Работало. Пока я не упёрся в границы.
Нужен был кастомный индикатор. Нужна была статистика по сделкам в реальном времени. Нужна была интеграция с внешним API.
Конструктор не справлялся.
Я решил выучить программирование. Три месяца назад я написал первую строчку на Python. Сегодня мой робот торгует, и весь код — мой.
Это не история “я гений программирования”. Это история “любой может, если знает, с чего начать”.
Почему я решил учить код
Триггер №1: Упёрся в ограничения конструктора
Я хотел добавить адаптивный стоп-лосс на основе ATR (Average True Range). В TSLab есть блок ATR. Есть блок стоп-лосс.
Но нет блока “динамически изменять стоп-лосс каждую свечу на основе ATR”.
Можно было написать C# скрипт внутри TSLab. Но если учить C# — почему бы не сразу писать на Python без привязки к платформе?
Триггер №2: Vendor Lock-In
Всё, что я собрал в TSLab, живёт только в TSLab. Если платформа закроется, обновится, сломается — мои стратегии мертвы.
Код на Python — это файл. Он мой навсегда. Я могу запустить его где угодно.
Триггер №3: Любопытство
Я понимал логику стратегий. Я видел связи между блоками. Но что происходит внутри?
Конструктор скрывал сложность. Но когда что-то ломалось — я не понимал, почему.
Код даёт контроль. Полный.
С чего я начал: выбор языка
Вариантов было три:
Python
Плюсы:
- Синтаксис интуитивный, лёгкий для новичков
- Куча библиотек для алготрейдинга (Backtrader, LEAN, ccxt)
- Лучший выбор для ML и анализа данных
Минусы:
- Медленнее C#/C++
- Не подходит для HFT
C#
Плюсы:
- Быстрее Python
- Используется в StockSharp, LEAN, NinjaTrader
- Хорошая интеграция с .NET экосистемой
Минусы:
- Более сложный синтаксис для новичка
- Меньше обучающих материалов для алготрейдинга
MQL5 (MetaTrader)
Плюсы:
- Синтаксис похож на C#
- Работает напрямую в MetaTrader
- Большое комьюнити форекс-трейдеров
Минусы:
- Привязка к MetaTrader (vendor lock-in опять)
- Ограниченные возможности для сложной логики
Мой выбор: Python
Я выбрал Python. Потому что:
- Легче стартовать
- Больше материалов для новичков
- Можно быстро проверять идеи
- Не нужен HFT (торгую на часовиках)
Если нужна скорость — C# лучше. Но для розничного трейдера на дневных/часовых таймфреймах Python достаточно.
Дорожная карта: 3 месяца от нуля до рабочего робота
Вот что я сделал. По неделям.
Недели 1-4: Основы Python
Что учил:
- Переменные, типы данных (int, float, string, list, dict)
- Условия (if, else, elif)
- Циклы (for, while)
- Функции
- Работа с файлами
Где учил:
- “Изучаем Python за 6 месяцев” на Habr — план обучения
- Бесплатные уроки от Skillbox
- Codecademy (первые уроки бесплатны)
Сколько времени: 1-2 часа в день, 5 дней в неделю. Регулярность важнее длительности.
Первый результат: К концу месяца написал скрипт, который:
- Считывает CSV-файл с котировками
- Вычисляет скользящую среднюю
- Печатает, когда SMA(20) пересекает SMA(50)
Простейшая логика. Но мой код.
Недели 5-8: Библиотеки для анализа данных
Что учил:
- Pandas: работа с таблицами (DataFrame)
- NumPy: математические операции
- Matplotlib: построение графиков
Зачем это нужно: Почти весь алготрейдинг — это обработка таблиц с котировками (Date, Open, High, Low, Close, Volume).
Pandas делает это легко.
Примеры задач:
- Загрузить CSV с котировками в DataFrame
- Рассчитать SMA, EMA, RSI
- Построить график цены + индикаторы
Где учил:
- Курс “Python для алготрейдинга” на Алготрейдинг.рф
- Документация Pandas (проще, чем кажется)
- YouTube-туториалы
Результат: Написал функции для расчёта любого индикатора:
import pandas as pd
def sma(data, period):
return data['Close'].rolling(window=period).mean()
def rsi(data, period=14):
delta = data['Close'].diff()
gain = delta.where(delta > 0, 0).rolling(window=period).mean()
loss = -delta.where(delta < 0, 0).rolling(window=period).mean()
rs = gain / loss
return 100 - (100 / (1 + rs))
Теперь я мог реализовать любую индикаторную логику. Без ограничений конструктора.
Недели 9-12: Backtrader — первая торговая система
Что делал: Изучал библиотеку Backtrader — фреймворк для бэктестинга стратегий.
Почему Backtrader:
- Простая структура (Strategy, Data, Broker)
- Встроенный бэктестер
- Визуализация результатов
Моя первая стратегия:
import backtrader as bt
class SmaCross(bt.Strategy):
params = (('fast', 20), ('slow', 50),)
def __init__(self):
self.sma_fast = bt.indicators.SMA(period=self.params.fast)
self.sma_slow = bt.indicators.SMA(period=self.params.slow)
self.crossover = bt.indicators.CrossOver(self.sma_fast, self.sma_slow)
def next(self):
if self.crossover > 0: # fast пересекла slow снизу вверх
if not self.position:
self.buy()
elif self.crossover < 0: # fast пересекла slow сверху вниз
if self.position:
self.sell()
Та же логика, что была в TSLab. Но я контролирую каждую строчку.
Результат: Запустил бэктест на 3 годах истории. Получил:
- Общую доходность
- Sharpe Ratio
- Максимальную просадку
- График эквити
Всё то, что давал TSLab. Но бесплатно и с полным контролем.
Ошибки, которые я сделал
Ошибка #1: Пытался выучить всё сразу
Первые две недели я скачал 10 курсов, 5 книг, подписался на 20 YouTube-каналов.
Результат: информационный перегруз. Ничего не усваивалось.
Что помогло: Один источник за раз. Прошёл курс до конца, затем следующий.
Ошибка #2: Читал, но не писал код
Я смотрел видео, читал туториалы. Думал “понял, всё просто”.
Когда сел писать — не мог вспомнить синтаксис.
Что помогло: Правило: на каждый час теории — час практики. Смотрел урок → писал код руками.
Ошибка #3: Не делал проекты
Я учил синтаксис. Решал задачки. Но не применял.
Что помогло: Поставил цель: к концу 3 месяцев — рабочая стратегия на Backtrader. Это дало фокус.
Ошибка #4: Боялся задавать вопросы
Застрял на проблеме — гуглил часами, стыдился спросить.
Что помогло: Stack Overflow, Reddit (r/algotrading), Telegram-чаты по алготрейдингу. Люди помогают, если вопрос грамотно сформулирован.
Когда я понял, что готов
Момент озарения пришёл на 10-й неделе.
Я открыл старую стратегию из TSLab. Блок-схема выглядела как спагетти. Я попытался вспомнить, что она делает.
Потом открыл код той же логики на Python. Прочитал и сразу понял.
Код был читаемее, чем блок-схема.
В этот момент я осознал: я умею программировать.
Инструменты, которые я использую сейчас
1. Редактор кода: VS Code
Бесплатный, удобный, куча расширений. Есть отладчик (debugging), подсветка синтаксиса, автодополнение.
2. Backtrader (бэктестинг)
Основной фреймворк для тестирования стратегий.
3. ccxt (подключение к биржам)
Библиотека для работы с API криптобирж (Binance, Bybit и т.д.). Унифицированный интерфейс для десятков бирж.
4. Jupyter Notebook (анализ данных)
Интерактивная среда для экспериментов. Пишешь код по кусочкам, видишь результат сразу.
Отлично подходит для:
- Загрузки данных
- Тестирования индикаторов
- Построения графиков
5. Git (контроль версий)
Храню весь код на GitHub. Каждое изменение — коммит. Если что-то сломалось — откачу назад.
План для тех, кто хочет повторить мой путь
Если вы сейчас в конструкторах и думаете “учить программирование — это долго и сложно”, вот реалистичный план.
Шаг 1: Основы Python (4-6 недель)
Задачи:
- Пройти базовый курс Python (Codecademy, Coursera, Skillbox)
- Решить 50-100 простых задач на Codewars или LeetCode Easy
Критерий готовности: Вы можете написать функцию, которая принимает список цен и возвращает скользящую среднюю.
Шаг 2: Pandas + NumPy (2-4 недели)
Задачи:
- Изучить DataFrame, чтение CSV, операции с данными
- Рассчитать SMA, EMA, RSI вручную
Критерий готовности: Вы можете загрузить CSV с котировками, добавить колонку с индикатором, построить график.
Шаг 3: Первая стратегия на Backtrader (4-6 недель)
Задачи:
- Изучить документацию Backtrader
- Портировать вашу стратегию из конструктора в код
- Запустить бэктест, сравнить результаты
Критерий готовности: Стратегия работает, результаты близки к бэктесту в конструкторе (с учётом комиссий и проскальзываний).
Шаг 4: Интеграция с реальным рынком (4-6 недель)
Задачи:
- Подключить API брокера (QUIK, Alor, Binance)
- Запустить стратегию на демо-счёте
- Вести логи, отслеживать расхождения
Критерий готовности: Стратегия торгует на демо минимум месяц без критичных ошибок.
Итого: 14-22 недели (3-5 месяцев)
При темпе 1-2 часа в день, 5 дней в неделю.
Это не “стать senior developer”. Это “написать работающего торгового робота”.
Когда имеет смысл учить программирование, а когда — нет
Учите программирование, если:
- Вы упёрлись в ограничения конструктора
- Вам нужна кастомная логика (ML, арбитраж, портфели)
- Вы планируете серьёзно заниматься алготрейдингом годами
- Вам интересен процесс (не только результат)
Не учите программирование, если:
- Ваша стратегия укладывается в блоки конструктора и работает
- У вас нет времени (1-2 часа в день минимум 3 месяца)
- Вы торгуете вручную и хотите просто автоматизировать одну идею
- Программирование вызывает отторжение (если через месяц всё ещё неприятно — не ваше)
Не обязательно быть программистом, чтобы торговать алгоритмами.
Но если хочется контроля, гибкости и независимости — программирование даёт всё это.
Что изменилось после перехода на код
Плюсы:
1. Полный контроль Любая логика, любой индикатор, любая интеграция. Нет ограничений.
2. Независимость от платформ Мой код — мой навсегда. Не привязан к TSLab, Designer, NinjaTrader.
3. Бесплатно Python, Backtrader, VS Code — всё бесплатно. Больше не плачу 60 тысяч в год за TSLab.
4. Понимание Я знаю, что происходит на каждом шаге. Если ошибка — я вижу, где именно.
5. Сообщество Stack Overflow, Reddit, GitHub. Миллионы людей пишут на Python. Решение любой проблемы — в гугле.
Минусы:
1. Нет визуализации В TSLab блок-схема наглядна. В коде — текст. Нужно держать логику в голове.
2. Больше времени на старте Простая стратегия в TSLab — 15 минут. На Python первый раз — 2-3 часа (пока учишься).
3. Отладка сложнее В конструкторе ошибка подсвечивается. В коде — нужно читать traceback, ставить breakpoints.
4. Нужно учиться 3 месяца обучения — это инвестиция времени. Не все готовы.
Итоги: стоило ли?
Год назад я думал: “Программирование — это для айтишников. Я просто трейдер”.
Сегодня я понимаю: программирование — это инструмент. Как Excel. Как TradingView.
Я не стал разработчиком. Я не пишу enterprise-приложения. Я написал 500 строк кода, которые делают то, что мне нужно.
И это достаточно.
Если вы сейчас в конструкторах:
Начните с них. Соберите первую стратегию. Запустите бэктест. Поймите логику.
Когда упрётесь в границы — вернитесь к этой статье. Возьмите план. Начните учить Python.
Три месяца — и вы напишете свою первую стратегию в коде.
Если вы уже пробовали учить программирование и бросили:
Попробуйте ещё раз. Но с конкретной целью: портировать стратегию из конструктора в код.
Цель даёт фокус. Абстрактное “выучить Python” не работает. Конкретное “написать SMA-кросс на Backtrader” — работает.
Главное:
Программирование для алготрейдинга — это не “стать программистом”. Это “автоматизировать свою идею без ограничений”.
И это проще, чем кажется.
Полезные ссылки:
Обучение и курсы:
- Алготрейдинг.рф: Уроки по созданию роботов на Python
- Habr: Изучаем Python за 6 месяцев
- Skillbox: Python для начинающих бесплатно
- Python.ru: План обучения Python с нуля
Выбор языка программирования:
- Should I Use C# Or Python To Build Trading Bots?
- Top Languages for Building Custom Trading Bots
- Best Programming Language for Crypto Trading Bot
- QuantConnect Forum: C# or Python?
Roadmaps и гайды:
- AlgoTrading101: Quantitative Trader’s Roadmap
- NURP: Complete Roadmap to Algorithmic Trading
- Start Algorithmic Trading: Beginner’s Roadmap
No-code платформы:
Обсуждение
Присоединяйтесь к обсуждению в нашем Telegram-чате!