Разработка AI-бота для grid-торговли с динамическими уровнями
Grid trading — размещение buy и sell ордеров на равных расстояниях выше и ниже текущей цены. Прибыль от ценовых колебаний в боковом диапазоне. AI делает сетку динамической — она следует за рынком и адаптирует параметры.
Классический Grid vs. AI Grid
Статическая сетка: N уровней с фиксированным шагом в заданном диапазоне. Хорошо работает в range-bound market. Теряет при трендовом движении за пределы диапазона.
Динамическая AI-сетка:
- Автоматическое определение оптимального диапазона
- Адаптивный шаг в зависимости от волатильности
- Реконфигурация при прорыве диапазона
- Множество сеток в разных ценовых зонах одновременно
ML-компоненты
Диапазон и шаг сетки
Оптимальные параметры зависят от текущей волатильности инструмента:
- ATR (Average True Range) как база для шага: grid_step = ATR × multiplier
- Боллинджер Бэнды как натуральные границы диапазона
- Support/Resistance определение через ML: кластеризация исторических уровней разворота
При росте волатильности (VIX или ATR растёт) — расширение шага и диапазона. При низкой волатильности — более плотная сетка.
Regime Detection для паузы
Трендовый рынок — враг grid стратегии. ML классификатор: sideways vs. trending. При тренде — приостановка grid или asymmetric grid (только в сторону тренда).
Признаки тренда: ADX > 25, последовательные higher highs / lower lows, MA alignment.
Динамический profit-taking
Классический grid: закрытие каждого уровня с фиксированным profit. ML оптимизация: hold certain levels longer при наличии сигнала на продолжение движения. Частичное закрытие при сильном импульсе.
Структура кода
class AIGridBot:
def __init__(self, exchange, symbol, base_capital):
self.exchange = exchange
self.symbol = symbol
self.base_capital = base_capital
self.active_orders = {}
self.grid_levels = []
def calculate_grid_params(self, ohlcv_data):
"""ML-based grid parameter calculation"""
df = pd.DataFrame(ohlcv_data, columns=['timestamp','open','high','low','close','volume'])
atr = self.calculate_atr(df, period=14)
current_price = df['close'].iloc[-1]
# Dynamic grid step based on ATR
grid_step = atr * 0.5 # 0.5x ATR per grid level
# Number of levels based on capital allocation
num_levels = min(int(self.base_capital / (current_price * 0.01)), 20)
# Grid range: +/- 3x ATR from current price
lower_bound = current_price - 3 * atr
upper_bound = current_price + 3 * atr
return grid_step, num_levels, lower_bound, upper_bound
def rebalance_grid(self):
"""Cancel existing orders and recreate with new parameters"""
self.cancel_all_orders()
params = self.calculate_grid_params(self.get_ohlcv())
self.create_grid(*params)
Многоинструментальный grid портфель
Одновременная работа grid стратегий на нескольких корреляционных (или некоррелированных) парах. Распределение капитала через Kelly-based allocation с учётом ожидаемой прибыльности каждого инструмента (из backtest).
Результаты и ожидания
Grid trading стабильно генерирует доход в боковых рынках. Крипто боковик 2022–2023: грамотно настроенная ETH/USDT сетка давала 3–8% в месяц. В трендовом рынке 2021 — потери для неадаптированных grid-ботов.
AI версия: -30% максимальная просадка vs. -65% у статической при выходе из диапазона на исторических данных.
Риски: при резком движении (flash crash, > 20% за несколько часов) grid полностью заполняется и фиксирует убыток. Emergency stop: закрытие всей позиции при movement > X% за Y минут.







