
Многие статьи, посвящённые применению ИИ в алгоритмической торговле, создают впечатление, что достаточно грамотно написать программу — и она сама начнёт генерировать прибыльные идеи. К сожалению, это не так. Успешные торговые стратегии и рыночные закономерности — это всегда результат глубоких исследований. Если ИИ просто заимствует идеи из интернета, без их проверки и адаптации, то и результат будет далеким от совершенства, что подтверждается небольшим количеством по‑настоящему успешных фондов.
На мой взгляд, сегодня есть два основных направления использования ИИ в алгоритмической торговле.
1. Для профессионалов: ускорение и масштабирование
Крупные фонды и опытные трейдеры обладают собственной базой проверенных рыночных закономерностей и элементов торговых систем — их можно назвать компетенциями. Используя эту базу для обучения ИИ, они создают механизм, способный быстро и качественно конструировать работающие торговые системы для новых активов и рынков. Об этом я подробно рассказываю на своей программе в Вышке на программе «ИИ и алгоритмические стратегии».
2. Для новичков: помощь в обучении и снижение порога входа
Здесь ИИ выступает в роли умного и быстрого помощника. Он позволяет:
Быстро находить справочную информацию.
Изучать приёмы программирования.
Ускорить создание первых торговых систем.
Это делает сложную тему алгоритмической торговли гораздо доступнее.
Как именно ИИ может помочь начинающему?
Если вы хотите создавать торговые алгоритмы, но не владеете специализированными языками программирования, самый простой старт — попросить ИИ написать код для простой стратегии. По моему опыту, он справляется с этой задачей вполне неплохо.
Можно просить его реализовать одну и ту же идею в разных вариантах. Этот подход позволяет:
Быстро находить нужные команды: вы сразу видите синтаксис, а не ищете его по справочникам.
Осваивать правильную структуру кода: вы учитесь на готовых рабочих примерах.
Постепенно повышать сложность: по мере усложнения ваших запросов вы естественным образом узнаете новые команды и конструкции.
Перейдём к практике
Давайте попробуем написать промпт для простой торговой системы и протестируем её на высоколиквидных фьючерсах Московской биржи. В качестве платформы для создания и тестирования возьмём одну из сильнейших программ — Amibroker.
Будем использовать максимально простые правила торговой системы: только два правила для входа в сделку buy и sell , где продажа означает выход из длинной позиции ( выход из покупки) и одновременно вход в короткую позицию (short). То есть система с переворотом, которая всегда находится в позиции. И никаких стоп-лосс ордеров, а также риск менеджмента. Все сделки будут тестироваться на 1 контракте торгового инструмента срочного рынка Московской биржи. Комиссия при каждой сделке будет равна 0, так как стратегию протестируем на дневном тайм фрейме и при нескольких сделках в месяц считать её не обязательно. Для начального уровня более чем достаточно.
Возьмём классическую N‑day momentum стратегию с правилами (в нашем примере построим стратегию, где N=10):
1. Buy when Closet > Closet‑n
2. Sell when Closet < Closet‑n
Напишем промпт LLM модели Deepseek:
Привет, нужно написать на AFL amibroker следующий код: если close больше чем close 10 дней назад то buy, если close меньше чем 10 дней назад, то sell, он же short, а buy = cover
Получаем ответ:
Привет! Вот код для AmiBroker на AFL, который реализует вашу торговую стратегию:
// Простая стратегия: сравнение цены закрытия с ценой 10 дней назад
SetTradeDelays(1, 1, 1, 1); // Установка задержек для торговли
SetPositionSize(100, spsPercentOfEquity); // Размер позиции 100% от капитала
// Определение условий
price10DaysAgo = Ref(Close, -10); // Цена закрытия 10 дней назад
// Сигналы
BuySignal = Close > price10DaysAgo;
SellSignal = Close < price10DaysAgo;
// Применение сигналов
Buy = BuySignal;
Sell = SellSignal;
Short = SellSignal; // Short = Sell
Cover = BuySignal; // Cover = Buy
// Фильтр для исключения повторных сигналов
Buy = ExRem(Buy, Sell);
Sell = ExRem(Sell, Buy);
Short = ExRem(Short, Cover);
Cover = ExRem(Cover, Short);
// Настройка отображения на графике
Plot(Close, «Цена», colorBlack, styleCandle);
Plot(price10DaysAgo, «Цена 10 дней назад», colorBlue, styleLine);
PlotShapes(Buy*shapeUpArrow, colorGreen, 0, Low);
PlotShapes(Sell*shapeDownArrow, colorRed, 0, High);
PlotShapes(Short*shapeDownArrow, colorRed, 0, High);
PlotShapes(Cover*shapeUpArrow, colorGreen, 0, Low);

Переноси код в Amibroker и визуализируем на ценовом графике.
Пример на склеенном фьючерсном контракте на обыкновенные акции ПАО «Сбербанк с 06.2024 по 03.2025.

Синяя линия показывает цену, которая была 10 дней назад. Алгоритм сравнивает закрытие текущего дня с закрытием 10 дней назад и если оно больше (Closet > Closet‑n), то рисует на графике цен сигнальную зеленую стрелку вверх, а если закрытие текущего дня ниже закрытия 10 (Closet < Closet‑n) дней назад — красную. Однако сама покупка, то есть вход в лонг производится только на следующий день по закрытию торговой сессии. Deepseek неплохо справился с задачей написания кода стратегии. Алгоритм не заглядывает в будущее и принимает решение о входе в позицию, основываясь только на прошлых данных.
Самостоятельно заменим строку кода:
SetPositionSize(100, spsPercentOfEquity); // Размер позиции 100% от капитала
На
SetPositionSize(1,spsShares);
SetOption(“FuturesMode”,1);
Чтобы весь бектестинг стратегии проводился на 1 контракте и включить режим бэктеста фьючерсов. Благо несложно найти эту команду в справочнике help на Amibroker.
Результаты бэктеста на фьючерсном контракте ПАО «Сбербанк (SBRF ). Дневной таймфрейм. С 01.01.2014 по 01.09.2025. Объем позиции = 1 контракт. Стартовая сумма = 100 000р. Гарантийное обеспечение ≈ 5000р на контракт.

Количество сделок за 10 лет (All trades) равняется 379. Средняя прибыль (Avg. Profit/Loss) на контракт 121 пункт. В случае с фьючерсом на Сбербанк 1 пункт = 1 рубль. Хорошо, мы узнали, что если бы мы торговали 1 контрактом Сбербанка за эти годы то:
1. Net Profit% Доходность в% составила + 42.58%
2. Avg. Profit/Loss Средняя сделка составила 121 пункт/руб на сделку.
3. Winners Процент прибыльных сделок 47.23% (179)
4. Avg. Profit and Loss Средняя прибыльная сделка 834п. Средняяубыточная -516п.



Ещё важными местами в статистике нашего бэктеста являются:
Max. trade drawdown Максимальное проседание на сделку ( то есть насколько много мы потерял в пунктах/руб на однй сделку — 7843п.)
Max. System drawdown Максимальное проседание системы ( насколько сильно уходил в минус / проседал за всю историю бэктеста -11287п.). То есть потребовалось иметь не менее 11 287 ₽ на брокерском счете для работы стратегии на данном временном отрезке.
Для интереса можно протестировать более агрессивный вариант данной стратегии, используя 5 контрактов.
Результаты бэктеста на фьючерсном контракте ПАО «Сбербанк (SBRF). Дневной таймфрейм. С 01.01.2014 по 01.09.2025. Объем позиции = 5 контрактов. Стартовая сумма = 100 000р. Гарантийное обеспечение ≈ 5000р на контракт.


Avg. Profit/Loss Средняя сделка составила 614 пункт/руб на сделку.
Max. trade drawdown Максимальное проседание на сделку ( то есть насколько много мы потерял в пунктах/руб на одну сделку — 39215п. )
Max. System drawdown Максимальное проседание системы ( насколько сильно уходил в минус / проседал за всю историю бэктеста — 56435п.). То есть потребовалось иметь не менее 56 435 ₽ на брокерском счете для работы стратегии на данном временном отрезке.
Данная торговая система это классика трендовых стратегий. Когда рынок растёт вы безмятежно плывёте по восходящему тренду, когда падает и все вокруг кричат, что рынок недооценён вы занимаете короткую позицию и не ловите «падающие ножи». Однако, если бы рынок постоянно находился в тренде заработать на нём было бы не затруднительно, но реальность намного сложнее. И простые трендовые системы отдают все заработанные деньги в периоды, когда рынок стоит в боковике раз за разом, совершая «ложные пробои». Безусловно эту торговую систему нельзя считать рабочей стратегий, но если бы много лет назад я обладал таким инструментарием, то точно сильно бы сократил время своего обучения.