Skip to main content

Hello world для LLM/GPT кодирования стратегий

Скрипт запуска торгового инструмента, например CNURUBF через API Т-Инвестиций

Пример программы hello world для алготрейдера на выступлении на Т-Двор.

Не является индивидуальной инвестиционной рекомендацией.

ПО предоставляется 'как есть', без каких-либо гарантий. Разработчик не отвечает за ущерб, прямой или косвенный, возникший при использовании этого кода.

Токен

Токен получаем в разделе настроек.

Выбираем счет и указываем полный доступ.

Сохраняем в файле проекта .env заменив им слово ТОКЕН.

INVEST_TOKEN=ТОКЕН

Установка

  • Python 3.9+
pip install -r requirements.txt

Создаем торговую стратегию через LLM / Gpt модели

Промпт для chat.deepseek.com

Создай код на python для стратегии: при RSI < 30 – покупай, RSI > 70 – продавай, стоп-лосс 2%, тейк-профит 4%

Напиши функцию work в классе Strategy.

Текущая история лежит в self.minutes длинной self.history_count минут.
Функция открыть позицию - position_open.
Функция закрыть позицию - position_close.
Функция получения наличия или отсутствия позиции - position_get

Ниже код класса:
ниже код из класса Strategy, файл: strategies/hello_world_t_dvor2025.py

Результат сохранен в strategies/hello_world_t_dvor2025_llmresult.py

Реализация торговой стратегии на Python

Стратегия

  • Покупать (лонг) при RSI < 30
  • Продавать (шорт) при RSI > 70
  • Стоп-лосс: 2% от цены входа
  • Тейк-профит: 4% от цены входа

Код реализации

class Strategy:
def __init__(self, client):
self.name = "Hello World T-dvor2025"
self.client = client
self.minutes = []
self.history_count = 30
self.position = {"avg_price": 0, "lots": 0}

# ... (остальные методы класса остаются без изменений)

def work(self):
# Параметры стратегии
period = 14 # период RSI
stop_loss_pct = 0.02 # 2%
take_profit_pct = 0.04 # 4%

# Проверяем достаточность истории
if len(self.minutes) < period + 1:
return

# Вытаскиваем цены закрытия
closes = [float(m["price"]) for m in self.minutes]

# Вычисляем изменения
gains = []
losses = []
for i in range(1, period + 1):
change = closes[-i] - closes[-i - 1]
if change > 0:
gains.append(change)
losses.append(0)
else:
gains.append(0)
losses.append(abs(change))

# Средние приросты и потери
avg_gain = sum(gains) / period
avg_loss = sum(losses) / period
if avg_loss == 0:
rsi = 100
else:
rs = avg_gain / avg_loss
rsi = 100 - (100 / (1 + rs))

current_price = closes[-1]
pos = self.position_get()

# Логика входа
if pos["lots"] == 0 and rsi < 30:
price_q = decimal_to_quotation(Decimal(current_price))
asyncio.create_task(self.position_open('long', price_q, 1))
return

# Логика выхода по стоп-лосс, тейк-профит или RSI
if pos["lots"] > 0:
entry_price = pos["avg_price"]
# стоп-лосс
if current_price <= entry_price * (1 - stop_loss_pct):
asyncio.create_task(self.position_close())
return
# тейк-профит
if current_price >= entry_price * (1 + take_profit_pct):
asyncio.create_task(self.position_close())
return
# перекупленность
if rsi > 70:
asyncio.create_task(self.position_close())
return

Запуск

Скрипт выведет доступные счета для текущего токена

Запуск торговли 1 лотом фонда VTBR ~100р. на аккаунте 123456789 из списка

  • python main.py --account 123456789

Запуск торговли 1 лотом акциями PIKK ~560р. на аккаунте 123456789 из списка

  • python main.py --account 123456789 --figi BBG004S68BH6

openapi@tbank.ru

АО «ТБанк» использует файлы «cookie» с целью персонализации сервисов и повышения удобства пользования веб-сайтом. «Cookie» представляют собой небольшие файлы, содержащие информацию о предыдущих посещениях веб-сайта. Если вы не хотите использовать файлы «cookie», измените настройки браузера.