Суть урока
Claude Code может управлять торговым счётом, анализировать рынок, строить стратегии — через официальный Alpaca MCP и API. Это не "AI предсказывает курс" (это невозможно надёжно). Это "AI автоматизирует выполнение стратегии, ведение портфеля и управление рисками". Начинать нужно с paper trading — виртуальными деньгами, пока не убедишься в своей стратегии. Урок учит работать с инструментами, а не обещает доход.
⚠️ Обязательный дисклеймер
Это образовательный урок, не финансовый совет и не инвестиционная рекомендация. Алгоритмический трейдинг несёт реальные риски потери капитала, а результат на виртуальном счёте не гарантирует результат на реальном. Значительная часть розничных трейдеров теряет деньги: брокеры по требованию регуляторов публикуют долю убыточных счётов, найди эту цифру у своего брокера. Всегда начинай с paper trading. Реальные деньги — только после долгой проверки на виртуальном счёте, понимания каждой строки кода и консультации с лицензированным специалистом.
Ключевые концепции
- Alpaca — брокер с API (эй-пи-ай — интерфейс программирования) для алготрейдинга (акции США, крипто)
- Alpaca MCP — официальный MCP сервер от Alpaca для Claude Code
- Paper trading — торговля виртуальными деньгами (бесплатно, нужна только регистрация на сайте брокера)
- Position limit — максимальный размер позиции (в уроке 5% как учебный пример)
- Stop-loss — автоматическое закрытие при убытке (в уроке -8% как учебный пример)
- Backtesting — тестирование стратегии на исторических данных
Теория
Alpaca: брокер с API-first подходом
Alpaca — американский брокер специально созданный для алготрейдинга. В отличие от розничных брокеров с красивым приложением, основной продукт Alpaca — это API.
Возможности (условия брокера меняются, проверяй на сайте):
| Функция | Alpaca |
|---|---|
| Акции США | ✅ (NYSE, NASDAQ) |
| Дробные акции | ✅ (минимальная сумма: на сайте Alpaca) |
| Крипто | ✅ (BTC, ETH и другие) |
| Paper trading | ✅ Бесплатно, нужна регистрация |
| Реальный счёт | ✅ Условия и комиссии: на сайте Alpaca |
| Минимальный депозит | Для paper не нужен; для реального счёта: на сайте Alpaca |
| Стоимость API | Базовый доступ бесплатный; расширенные данные могут быть платными |
| WebSocket потоки | ✅ Real-time данные |
| Страны, где открывают счёт | ⚠️ Список меняется: проверь, принимает ли Alpaca резидентов твоей страны |
Регистрация paper trading:
- alpaca.markets → Sign Up
- Создать аккаунт → получаешь paper trading счёт и ключи
- Paper trading: виртуальный баланс в долларах (стартовая сумма указана на сайте Alpaca)
- Ключи в личном кабинете → API Keys
Alpaca MCP: подключение к Claude Code
У Alpaca есть официальный MCP сервер (репозиторий alpacahq/alpaca-mcp-server). Он запускается через uvx (менеджер Python-пакетов):
# Подключение одной командой
claude mcp add alpaca --scope user --transport stdio uvx alpaca-mcp-serverИли через файл .mcp.json в папке проекта:
{
"mcpServers": {
"alpaca": {
"command": "uvx",
"args": ["alpaca-mcp-server"],
"env": {
"ALPACA_API_KEY": "твой_key_id",
"ALPACA_SECRET_KEY": "твой_secret_key",
"ALPACA_PAPER_TRADE": "true"
}
}
}
}Проверить, что сервер подключился, можно командой /mcp.
ALPACA_PAPER_TRADE=true — виртуальные деньги (по умолчанию именно так) ALPACA_PAPER_TRADE=false с боевыми ключами — настоящие деньги. Не переключай, пока не прошёл все проверки из этого урока.
Ключи не вставляй прямо в файл, который попадёт в git: храни их в переменных окружения или менеджере паролей (подробнее — в уроке Безопасность в Claude Code).
Что умеет Claude Code через Alpaca MCP
После подключения, спрашиваешь в Claude Code:
"Покажи текущий баланс и открытые позиции" "Купи 10 акций AAPL по рыночной цене" "Продай 5 акций MSFT с лимитом $420" "Покажи историю сделок за последнюю неделю" "Закрой все открытые позиции" "Какой мой P&L за сегодня?"
Claude Code переводит запросы в API вызовы к Alpaca и возвращает результаты.
Python + Alpaca API: полный контроль
Для более сложных стратегий — прямой Python код.
Важно: пример ниже написан на библиотеке
alpaca-trade-api. Её репозиторий переведён в архив (июнь 2026), а для нового кода Alpaca рекомендует официальный SDKalpaca-py. Логика проверок (размер позиции, стоп-лосс, дневной лимит) от библиотеки не зависит: при переносе наalpaca-pyменяются только вызовы API.
pip install alpaca-trade-api pandas numpyimport alpaca_trade_api as tradeapi
import pandas as pd
import os
# Подключение к paper trading
api = tradeapi.REST(
os.environ['ALPACA_API_KEY'],
os.environ['ALPACA_SECRET_KEY'],
'https://paper-api.alpaca.markets',
api_version='v2'
)
def check_account():
"""Проверка состояния счёта"""
account = api.get_account()
print(f"Баланс: ${float(account.equity):.2f}")
print(f"Покупательная способность: ${float(account.buying_power):.2f}")
print(f"Статус: {account.status}")
def get_positions():
"""Текущие позиции"""
positions = api.list_positions()
for pos in positions:
pnl = float(pos.unrealized_pl)
pnl_pct = float(pos.unrealized_plpc) * 100
print(f"{pos.symbol}: {pos.qty} акций | P&L: ${pnl:.2f} ({pnl_pct:.1f}%)")
def safe_market_order(symbol: str, qty: float, side: str,
max_position_pct: float = 0.05):
"""
Безопасный рыночный ордер с проверкой размера позиции.
max_position_pct = максимум 5% капитала на одну позицию.
"""
account = api.get_account()
equity = float(account.equity)
# Получаем цену
last_trade = api.get_latest_trade(symbol)
price = float(last_trade.price)
# Проверяем размер позиции
position_value = qty * price
position_pct = position_value / equity
if position_pct > max_position_pct:
max_qty = int((equity * max_position_pct) / price)
print(f"⚠️ Снижаю размер: {qty} → {max_qty} (лимит 5% портфеля)")
qty = max_qty
if qty <= 0:
print("❌ Размер позиции слишком маленький")
return None
# Размещаем ордер
order = api.submit_order(
symbol=symbol,
qty=qty,
side=side, # 'buy' или 'sell'
type='market',
time_in_force='gtc'
)
print(f"✅ Ордер размещён: {side.upper()} {qty}x {symbol} (~${position_value:.2f})")
return order
def set_stop_loss(symbol: str, stop_loss_pct: float = 0.08):
"""
Устанавливает stop-loss для существующей позиции.
stop_loss_pct = 0.08 → закрыть если убыток 8%
"""
try:
position = api.get_position(symbol)
current_price = float(position.current_price)
stop_price = current_price * (1 - stop_loss_pct)
qty = abs(int(float(position.qty)))
# Stop-loss ордер
order = api.submit_order(
symbol=symbol,
qty=qty,
side='sell',
type='stop',
stop_price=round(stop_price, 2),
time_in_force='gtc'
)
print(f"🛡️ Stop-loss установлен: {symbol} @ ${stop_price:.2f} ({stop_loss_pct*100}%)")
return order
except Exception as e:
print(f"❌ Нет позиции по {symbol}: {e}")
# Пример использования
if __name__ == "__main__":
check_account()
print("\nТекущие позиции:")
get_positions()
# Покупаем AAPL (не более 5% портфеля)
safe_market_order("AAPL", 5, "buy")
# Устанавливаем stop-loss -8%
set_stop_loss("AAPL", 0.08)Простая стратегия: скользящие средние
def simple_ma_strategy(symbol: str, short_window: int = 7, long_window: int = 21):
"""
Стратегия пересечения скользящих средних.
ТОЛЬКО для обучения — не финансовый совет!
"""
import datetime
# Получаем исторические данные
end = datetime.datetime.now()
start = end - datetime.timedelta(days=60)
bars = api.get_bars(
symbol,
tradeapi.TimeFrame.Day,
start.strftime('%Y-%m-%d'),
end.strftime('%Y-%m-%d')
).df
# Считаем скользящие средние
bars['SMA_short'] = bars['close'].rolling(window=short_window).mean()
bars['SMA_long'] = bars['close'].rolling(window=long_window).mean()
# Сигналы
bars['signal'] = 0
bars.loc[bars['SMA_short'] > bars['SMA_long'], 'signal'] = 1 # Long
bars.loc[bars['SMA_short'] < bars['SMA_long'], 'signal'] = -1 # Short/Flat
# Последний сигнал
last_signal = bars['signal'].iloc[-1]
last_price = bars['close'].iloc[-1]
print(f"\n{symbol} @ ${last_price:.2f}")
print(f"SMA{short_window}: ${bars['SMA_short'].iloc[-1]:.2f}")
print(f"SMA{long_window}: ${bars['SMA_long'].iloc[-1]:.2f}")
if last_signal == 1:
print("📈 Сигнал: ПОКУПКА (SMA_short > SMA_long)")
elif last_signal == -1:
print("📉 Сигнал: ПРОДАЖА (SMA_short < SMA_long)")
else:
print("⏸️ Сигнал: НЕЙТРАЛЬНЫЙ")
return last_signal, last_price
# Анализируем несколько символов
watchlist = ["AAPL", "MSFT", "NVDA", "AMZN"]
for ticker in watchlist:
signal, price = simple_ma_strategy(ticker)Управление рисками: обязательные правила
5 базовых правил (учебный пример, числа подбирай под себя):
RISK_RULES = {
# Правило 1: Не более 5% капитала на одну позицию
"max_position_pct": 0.05,
# Правило 2: Stop-loss на каждой позиции
"stop_loss_pct": 0.08,
# Правило 3: Не более 20% в одном секторе
"max_sector_pct": 0.20,
# Правило 4: Дневной лимит убытков
"max_daily_loss_pct": 0.03, # Стоп торговли при -3% за день
# Правило 5: Проверка перед каждой сделкой
"pre_trade_checks": True,
}
def check_daily_loss_limit():
"""Прекращаем торговлю если дневной убыток > 3%"""
account = api.get_account()
# Сравниваем с открытием дня
daily_pnl_pct = float(account.equity) / float(account.last_equity) - 1
if daily_pnl_pct < -RISK_RULES["max_daily_loss_pct"]:
print(f"🚨 ДНЕВНОЙ ЛИМИТ: убыток {daily_pnl_pct*100:.1f}%. Останавливаю торговлю.")
return False
return TrueBinance Futures через MCP (продвинутый)
Для крипто-трейдинга существуют MCP-серверы для фьючерсов Binance в каталогах MCP. Их пишут сторонние авторы, поэтому перед подключением проверь автора, код и историю репозитория. Подключаются они так же, как любой MCP-сервер (claude mcp add или файл .mcp.json).
{
"mcpServers": {
"binance-futures": {
"command": "uvx",
"args": ["binance-futures-mcp"],
"env": {
"BINANCE_API_KEY": "твой_key",
"BINANCE_SECRET_KEY": "твой_secret",
"TESTNET": "true" // ВСЕГДА начинать с testnet!
}
}
}
}Важно: Binance Futures — это деривативы с плечом. Риски несравнимо выше чем у покупки акций без плеча. Начинать только с Testnet и только если полностью понимаешь механику фьючерсов. Доступность биржи зависит от страны: проверь, работает ли она с резидентами твоей страны.
Чему paper trading учит, а чему нет
Разработчики регулярно публикуют эксперименты с виртуальным счётом через Claude Code и Alpaca API. Цифры из таких постов не проверить и нельзя считать ориентиром: они зависят от периода, выбранных акций и от того, что автор рассказал, а что умолчал. Учебная ценность эксперимента в другом: ты проверяешь, что код ставит ордера, соблюдает лимиты и ведёт журнал.
Что важно понять: paper trading не учитывает slippage (разница между ценой в момент сигнала и фактическим исполнением), маркет-импакт больших ордеров, психологию реальных денег. Реальные результаты обычно хуже виртуальных, а прошлые результаты ничего не гарантируют на будущее.
Практика
- Зарегистрируйся на alpaca.markets → получи paper trading API ключи
- Настрой Alpaca MCP в Claude Code (paper trading URL!)
- Попроси Claude: "покажи баланс и открытые позиции"
- Запусти Python скрипт → купи 1 акцию AAPL (paper trading)
- Установи stop-loss на купленную позицию
- Посмотри P&L через 24 часа и запиши, что в коде нужно исправить
Инструменты и ресурсы
- Alpaca Markets — регистрация + документация
- Alpaca MCP — официальный MCP сервер
- alpaca-py — актуальный официальный Python SDK (старая библиотека alpaca-trade-api в архиве)
- Backtrader — Python фреймворк для backtesting
- MCPMarket — каталог MCP-серверов (серверы для бирж пишут сторонние авторы, проверяй их код)
Ключевые выводы
Alpaca MCP — официальный способ управления торговым счётом через Claude Code. Всегда начинать с paper trading. Реальные деньги — только после долгой проверки на виртуальном счёте; даже она не гарантирует результат.
Учебные правила риска: 5% максимум на позицию, 8% stop-loss на каждую, дневной лимит убытков -3%. Без правил риска — не трейдинг, а азартная игра. Конкретные числа подбирай сам и с лицензированным специалистом.
Claude Code не "предсказывает" рынок — этого не умеет никто. Автоматизирует выполнение стратегии, мониторинг рисков, ведение логов. Стратегия — твоя ответственность. Это не инвестиционная рекомендация.
Следующий урок
→ Автоматизация соцсетей — Instagram, Telegram, контент на автопилоте
Отметка хранится только в этом браузере и никуда не отправляется. Мой прогресс