Python + API LLM + MetaTrader 5: реальный опыт построения автономного торгового бота
Введение
Большинство трейдеров и не подозревают, что ИИ способен:
- находить уровни,
- определять свечные модели,
- распознавать тренды,
- сравнивать прошлые участки графика,
- давать осознанные выводы,
- анализировать несколько таймфреймов,
- исправлять собственные ошибки при оптимизации промпта.
Это не индикатор и не алгоритм. Это интеллектуальная надстройка, которую можно научить вашей личной торговой системе.
И самое главное — её не нужно обучать программированию. Она понимает обычный человеческий язык.
Что такое LLM и почему они меняют подход к анализу данных
Современные Большие Языковые Модели (LLM, Large Language Model) такие, как ChatGPT, DeepSeek и им подобные, стали универсальными помощниками в самых разных сферах человеческой деятельности. Их успех основан на способности обрабатывать огромные массивы текстовой информации и генерировать осмысленные ответы на самые разные запросы.
LLM отлично выступают в роли консультантов, благодаря своему широкому кругозору и доступу к актуальным знаниям. Они могут помогать в планировании, решении практических задач, предоставлять рекомендации по бизнесу, образованию, праву и многому другому.
В программировании и технических дисциплинах такие модели служат инструментом для написания, отладки и оптимизации кода. Они ускоряют процесс обучения новичков и помогают экспертам решать сложные задачи, предлагая готовые решения и разъяснения.
Кроме того, LLM все чаще внедряются в реальные сервисы и устройства: виртуальные ассистенты, чат-боты для поддержки клиентов, интеллектуальные системы поиска и анализа данных, генерацию контента, автоматизацию рутинных процессов. Это сокращает время и усилия, необходимые людям для получения информации и выполнения различных задач.
Таким образом, большие языковые модели становятся многофункциональным инструментом, который помогает человеку лучше ориентироваться в сложном информационном пространстве и эффективнее взаимодействовать с миром.
Могут ли Большие Языковые Модели самостоятельно анализировать рынок, принимать обоснованные решения и тем самым снижать влияние эмоций при торговле на финансовых, фондовых и криптовалютных рынках?
Я исследую эту возможность, используя связку Python + MetaTrader 5 + API LLM.
Скрипт работает автономно, без участия трейдера: сам анализирует рынок и принимает решение входить в позицию или оставаться вне рынка.
Аппаратные требования
Я использовал компьютер с Windows 10 и Python версии 3.10.11. Благодаря API, вычисления выполняются на стороне сервера, поэтому мощный компьютер с GPU не требуется. Систему можно запустить на CPU с минимальными требованиями к "железу", а по API доступны самые мощные языковые модели. Считаю это конкурентным преимуществом.
Кроме того нам понадобится:
- MetaTrader 5 — торговый терминал для получения рыночных данных и исполнения сделок;
- LLM через API OpenRouter — "мозг" системы, анализирующий графики и генерирующий торговые сигналы.
Что такое LLM и почему она становится "мозгом" торговой системы
Современные большие языковые модели (LLM) — ChatGPT, DeepSeek, Claude, Gemini и другие — обычно воспринимаются как обычные чат-боты. Мы привыкли спрашивать у них советы, просить написать текст или объяснить сложную идею. Но важно понять: внутри это не чат-боты, а мощные системы анализа данных, которые могут изучать информацию, делать выводы и даже принимать решения. В контексте автоматической торговли именно LLM становится мозгом всей системы. Объясним просто.
1. LLM действительно анализирует рынок
Когда скрипт получает данные из MetaTrader 5 (свечи OHLCV), он отправляет их модели через API. LLM видит рынок не глазами, а в виде таблицы чисел, и для анализа это даже удобнее.
Когда модель получает набор OHLCV-данных, она моментально понимает общую структуру движения цены, замечает, где формируются ключевые уровни поддержки и сопротивления, распознаёт свечные модели, определяет направленность тренда, различает импульсы и коррекции, а также фиксирует моменты ложных пробоев.
То есть делает то, что делает трейдер вручную… но автоматически и без эмоций.
2. API OpenRouter — это мост между Python и ИИ
LLM работает не на вашем компьютере, а на удалённых мощных серверах, и доступ к ней осуществляется через OpenRouter. Этот сервис выступает чем-то вроде транспортной системы: скрипт отправляет запрос, OpenRouter передаёт его выбранной модели, получает ответ и возвращает его назад в программу.
Такой подход даёт важные преимущества. Система не требует от трейдера сильного компьютера — вся тяжёлая обработка выполняется в облаке. Через OpenRouter можно подключиться к сотням разных моделей, в любой момент переключиться на другую буквально одной строкой в коде и использовать самые современные и продвинутые решения, которые обычно недоступны локально.
По сути, трейдер получает возможность встроить интеллект мирового уровня прямо в свою торговую систему, не заботясь об аппаратных ограничениях.
3. Почему LLM называют "мозгом"
В классических роботах логика жёстко прописана в коде:
«если цена X больше Y — сделать Z».
Здесь всё иначе.
LLM не просто сравнивает цифры, а размышляет, интерпретирует, оценивает вероятности, ищет закономерности, формирует стратегическое решение. То есть в системе нет “жёстких правил” — есть искусственный трейдер, который просматривает данные, оценивает контекст, принимает решение и объясняет, почему сделал именно так.
Это делает систему гибкой — вы можете менять стратегию простым изменением текста промпта, а не переписыванием кода.
4. LLM сама генерирует торговые сигналы
После анализа модель возвращает конкретику:
ACTION: BUY
ENTRY_PRICE: 1.08530
SL: 1.08380
TP: 1.08890
REASON: Bullish pin bar at support + H1 trend up.
Это полноценный торговый сигнал с указанием направления сделки, логикой принятия решения, стоп-лоссом, тек-профитом, ценой входа и объяснением.
Фактически LLM выступает как внутренний аналитик, который не устает, не ошибается от стресса и не нарушает дисциплину.
Структура проекта
Скачайте ZIP-архив и распакуйте в удобную папку. Вы получите три файла:
LLM-trader-mvp/
├── .env
├── requirements.txt
└── run_mvp.py
Как работает скрипт
Пайплайн работы:
- получить котировки из терминала MetaTrader 5;
- сформировать промпт и передать его по API в LLM;
- получить ответ LLM с анализом;
- извлечь значения для открытия ордера или бездействия;
- открыть ордер или ждать;
- повторить цикл.
Шаг 1: Подключение к терминалу MetaTrader 5
Скрипт подключается к терминалу MetaTrader 5 через официальную библиотеку MetaTrader 5:
# Функция для подключения к MT5 def connect_to_mt5(): try: if not mt5.initialize(): logging.error("MT5 initialize() failed") raise Exception("Failed to initialize MT5") # Если нужно, добавьте mt5.login(login=your_login, password=your_password, server=your_server) # Для демо-аккаунта это может не требоваться, но проверьте в терминале logging.info("Successfully connected to MT5") except Exception as e: logging.error(f"Connection error: {e}") raise
Эта функция позволяет получать реальные рыночные данные и размещать ордера напрямую из скрипта Python. С появлением специализированной python-библиотеки, значительно расширился функционал платформы. При этом остается возможность в ручном режиме управлять позицией, перемещать стоп-лосс и тейк-профит, закрывать сделки, включать трейлинг-стоп, смотреть статистику. В общем и целом пользоваться всеми "прелестями" современной торговой платформы.
Шаг 2: Получение данных OHLCV
Скрипт запрашивает исторические данные (Open, High, Low, Close, Volume) за последние 100 баров:
# Функция для получения OHLCV данных def get_ohlcv(symbol, timeframe, count=100): try: rates = mt5.copy_rates_from_pos(symbol, timeframe, 0, count) if rates is None: logging.error("Failed to get OHLCV data") return None df = pd.DataFrame(rates) df['time'] = pd.to_datetime(df['time'], unit='s') # Конвертируем время в datetime logging.info(f"Retrieved {len(df)} bars for {symbol}") return df[['time', 'open', 'high', 'low', 'close', 'tick_volume']] # Используем tick_volume как объем except Exception as e: logging.error(f"Error getting OHLCV: {e}") return None
Эти данные представляют "картину" рынка для анализа LLM. Данная реализация не включает показатели индикаторов, новости и другую информацию рыночной активности. Возможно стоит подумать, какие дополнительные данные помогут улучшить качество анализа.
Шаг 3: Анализ с помощью LLM
Самая интересная часть — отправка данных языковой модели для анализа:
# Функция для анализа данных с помощью OpenRouter LLM def analyze_with_llm(api_key, ohlcv_df): try: client = OpenAI( base_url="https://openrouter.ai/api/v1", api_key=api_key ) # Формируем промпт на основе стратегии (без строгих ограничений на формат, чтобы позволить рассуждения) prompt = """ Ты - внутридневной трейдер, торгуешь и на основе уровней поддержки и сопротивления и паттернов Price Action. Анализируй предоставленные OHLCV данные (time, open, high, low, close, volume). Шаги анализа: 1. Определи ключевые уровни поддержки и сопротивления (локальные max/min за последние 50 баров). 2. На уоровнях ищи свечные паттерны Price Action. 3. Если обнаружен bearish signal, рекомендуй SELL. Если обнаружен bullish signal, рекомендуй BUY. Иначе - HOLD. 4. Для сигнала укажи предполагаемый SL (за экстремум) и TP (1:2 риск/прибыль от ENTRY_PRICE). Данные в CSV формате: {} Ответ в формате: ACTION: BUY/SELL/HOLD ENTRY_PRICE: цена входа SL: стоп-лосс TP: тейк-профит REASON: краткое объяснение """.format(ohlcv_df.to_csv(index=False)) # Преобразуем DF в CSV для промпта completion = client.chat.completions.create( extra_headers={ "HTTP-Referer": "https://www.mql5.com/ru/users/baxter_by", # Optional. Site URL for rankings on openrouter.ai. "X-Title": "LLM-trader-mvp", # Optional. Site title for rankings on openrouter.ai. }, extra_body={}, # model="google/gemma-3-27b-it:free", model="tngtech/deepseek-r1t2-chimera:free", # model="tngtech/deepseek-r1t-chimera:free", # model="deepseek/deepseek-chat-v3-0324:free", messages=[ { "role": "user", "content": prompt } ] ) result = completion.choices[0].message.content.strip() logging.info(f"LLM response: {result}") # Robust парсинг с regex (ищет ключи независимо от порядка и лишнего текста) action_match = re.search(r'ACTION:\s*(BUY|SELL|HOLD)', result, re.IGNORECASE) entry_match = re.search(r'ENTRY_PRICE:\s*([\d.]+)', result, re.IGNORECASE) sl_match = re.search(r'SL:\s*([\d.]+)', result, re.IGNORECASE) tp_match = re.search(r'TP:\s*([\d.]+)', result, re.IGNORECASE) reason_match = re.search(r'REASON:\s*(.*)', result, re.IGNORECASE) action = action_match.group(1).upper() if action_match else 'HOLD' entry = float(entry_match.group(1)) if entry_match else 0.0 sl = float(sl_match.group(1)) if sl_match else 0.0 tp = float(tp_match.group(1)) if tp_match else 0.0 reason = reason_match.group(1).strip() if reason_match else 'No reason provided' # Валидация: если action BUY/SELL, но цены нулевые - fallback на HOLD if action in ['BUY', 'SELL'] and (entry == 0 or sl == 0 or tp == 0): action = 'HOLD' reason = 'Invalid signal parameters' logging.info(f"Parsed signal: {action}, Entry: {entry}, SL: {sl}, TP: {tp}, Reason: {reason}") return {'action': action, 'entry': entry, 'sl': sl, 'tp': tp, 'reason': reason} except Exception as e: logging.error(f"LLM analysis error: {e}") return {'action': 'HOLD', 'reason': 'Analysis failed'}
Важно: в функции есть строка с указанием модели LLM, например:
model="deepseek/deepseek-chat-v3-0324:free" Для качественного анализа лучше использовать более мощные модели, которые обучены на больших массивах данных, благодаря чему обеспечивают высокую точность и детализацию ответов. Список моделей можно найти на https://openrouter.ai/models.
По ключевому слову 'free' есть бесплатные модели. Подходят для экспериментов, с невысокими требованиями по скорости и точности, такие модели имеют лимиты и часто возвращают ошибки.
- В тексте промпта есть фигурные скобки '{}'. При внесении изменений в текст не удаляйте их, именно туда приходит рыночная информация полученная из терминала.
- Использование регулярных выражений (робастный парсинг) для извлечения данных из ответа LLM гарантирует работу даже при нестандартном форматировании ответа LLM.
Почему это работает. Современные LLM построены на архитектуре трансформеров, которая отлично справляется с выявлением сложных закономерностей и контекстных взаимосвязей в данных. Обучаясь на огромных массивах данных, включая финансовые отчёты, аналитические обзоры, различные стратегии торговли, исторические котировки и обсуждения рынков, модель натренирована распознавать типичные шаблоны поведения цен, сигналы технического анализа.
Шаг 4: Размещение ордера
Если LLM генерирует сигнал BUY или SELL, скрипт автоматически размещает рыночный ордер:
# Функция для размещения ордера def place_order(symbol, action, volume, entry, sl, tp, deviation=20, magic=234000, comment="LLM-trader"): """ Размещение торгового ордера с улучшенной обработкой ошибок и актуальными ценами Args: symbol: Торговый инструмент action: Тип действия ('BUY' или 'SELL') volume: Объем лота entry: Цена входа sl: Стоп-лосс tp: Тейк-профит deviation: Максимальное отклонение цены magic: "Магический" номер для идентификации ордера comment: Комментарий к ордеру """ print('place_order') # Получаем актуальные данные по символу symbol_info = get_symbol_info(symbol) if symbol_info is None: return False # Получаем текущую цену непосредственно перед отправкой ордера tick = mt5.symbol_info_tick(symbol) if tick is None: logging.error(f"Failed to get tick data for {symbol}") return False # Устанавливаем цену в зависимости от типа ордера order_type = mt5.ORDER_TYPE_BUY if action == 'BUY' else mt5.ORDER_TYPE_SELL if order_type == mt5.ORDER_TYPE_BUY: price = tick.ask # Для ордера на покупку корректируем SL и TP если они заданы sl_price = sl if sl > 0 else 0.0 tp_price = tp if tp > 0 else 0.0 elif order_type == mt5.ORDER_TYPE_SELL: price = tick.bid # Для ордера на продажу корректируем SL и TP если они заданы sl_price = sl if sl > 0 else 0.0 tp_price = tp if tp > 0 else 0.0 else: logging.error(f"Unsupported order type: {action}") return False # Подготавливаем структуру запроса request = { "action": mt5.TRADE_ACTION_DEAL, # Тип операции: немедленное исполнение (рыночный) "symbol": symbol, "volume": float(volume), "type": order_type, "price": price, # Используем актуальную цену "sl": sl_price, # Цена стоп-лосса "tp": tp_price, # Цена тейк-профита "deviation": deviation, # Допустимое отклонение цены в пунктах "magic": magic, "comment": comment, "type_time": mt5.ORDER_TIME_GTC, # Время действия ордера: Good till cancel "type_filling": mt5.ORDER_FILLING_FOK, # Тип исполнения ордера } # Отправляем торговый запрос result = mt5.order_send(request) # Проверяем результат исполнения if result.retcode != mt5.TRADE_RETCODE_DONE: logging.error(f"Order failed, retcode={result.retcode}, comment={result.comment}") # Выводим всю информацию из результата для отладки result_dict = result._asdict() for field in result_dict.keys(): logging.error(f" {field}={result_dict[field]}") return False else: logging.info(f"Order placed successfully: {action} {volume} lots at {price}, SL: {sl_price}, TP: {tp_price}, Ticket: {result.order}") # Выводим информацию о результате в виде словаря result_dict = result._asdict() for field in result_dict.keys(): logging.info(f" {field}={result_dict[field]}") return True
Ордер включает:
- стоп-лосс (SL) для ограничения убытков,
- тейк-профит (TP) для фиксации прибыли,
- актуальную рыночную цену (Ask для покупки, Bid для продажи).
Для текущей стратегии риск-реворд имеет соотношение 1:2.
Шаг 5: Мониторинг в реальном времени
Основной цикл запускает анализ каждые N секунд (по умолчанию 300 секунд = 5 минут):
# Основная функция мониторинга def main_loop(symbol='EURUSD', timeframe=mt5.TIMEFRAME_M5, volume=0.01, api_key='', interval=60, visualize=False): connect_to_mt5() try: while True: print('main_loop') ohlcv = get_ohlcv(symbol, timeframe) if ohlcv is not None: signal = analyze_with_llm(api_key, ohlcv) if signal['action'] != 'HOLD': place_order(symbol, signal['action'], volume, signal['entry'], signal['sl'], signal['tp'], deviation=20, magic=5115, comment="Liquidity Grab Trade") if visualize: visualize_chart(ohlcv, signal) else: logging.info("No signal: HOLD") time.sleep(interval) # Задержка в секундах (e.g., 60 для минуты) except KeyboardInterrupt: logging.info("Script stopped by user") except Exception as e: logging.error(f"Main loop error: {e}") finally: mt5.shutdown() logging.info("Disconnected from MT5")
Скрипт работает автономно, постоянно анализируя рынок и реагирует на возможности до тех пор, пока оператор не прервет выполнение из командной строки сочетанием клавиш Ctrl+C.
Дополнительные возможности- Логирование: все действия записываются в файл LLM_trader.log с временными метками для последующего анализа.
- Настройка параметров торговли: блок настроек в конце скрипта. Изменяйте переменные на свое усмотрение.
if __name__ == "__main__": SYMBOL = "EURUSD" # Валютная пара TIMEFRAME = mt5.TIMEFRAME_M5 # Таймфрейм (M5 = 5 минут) VOLUME = 0.10 # Объем лота (начните с минимального!) INTERVAL = 300 # Интервал проверки в секундах (5 минут) VISUALIZE = True # Создавать графики (True/False)
- Визуализация: опциональная функция visualize_chart() создает график с отмеченными уровнями входа, SL и TP.

Установка и настройка
1. Установка Python для Windows
Скачайте установщик:
- перейдите на https://www.python.org/downloads/windows/,
- найдите версию Python 3.10.11 (подойдут и другие версии) и скачайте "Download Windows installer (64-bit)".
Запустите установщик:
- откройте скачанный файл и запустите установку,
- обязательно поставьте галочку "Add Python to PATH" — это позволит запускать Python из командной строки,
- выберите стандартную установку,
- дождитесь окончания и нажмите "Close".
Проверьте установку: откройте командную строку (cmd) или PowerShell и введите:
python --version
Вы должны увидеть:
Python 3.10.11

2. Получение ключа API OpenRouter
OpenRouter — API-агрегатор для доступа к более чем 300 моделям ИИ через единый интерфейс.
Шаги получения ключа:
- зарегистрируйтесь на https://openrouter.ai,
- перейдите в раздел "API Keys" (в меню под аватаром пользователя),
- нажмите "Create API Key",
- введите название ключа (например, "TestKey"),
- нажмите "Create" и сразу скопируйте ключ — он показывается только один раз,
- сохраните ключ в надежном месте.
Настройка ключа в проекте:
- найдите в папке проекта файл .env,
- откройте его в текстовом редакторе,
- найдите строку: OPENROUTER_API_KEY=your_actual_api_key_here
- замените your_actual_api_key_here на ваш ключ,
- сохраните файл.
3. Подготовка к торговле
Настройка MetaTrader 5:
- убедитесь, что MetaTrader 5 установлен и запущен,
- откройте демонстрационный счет и активируйте его,
- нажмите кнопку [Алготрейдинг] на панели инструментов:

Установка зависимостей: откройте командную строку (cmd) или PowerShell и выполните:
# Перейдите в папку со скриптом
cd c:\LLM-trader-mvp
# Установите зависимости (выполняется один раз)
pip install -r requirements.txt
Запуск скрипта:
python run_mvp.py
Вы увидите сообщения:
The script is running. To stop, press Ctrl+C.
Loop
Поздравляю, скрипт работает! Теперь он:
- подключился к MetaTrader 5,
- каждые 5 минут анализирует график EURUSD,
- записывает результаты в LLM_trader.log,
- при обнаружении сигнала размещает ордер.
Остановка скрипта: нажмите Ctrl+C в командной строке.
Примечание: в дальнейшем run_mvp.py можно запускать двойным кликом, как обычное приложение.
4. Анализ работы
Лог-файл LLM_trader.log сохраняется в папке со скриптом. В нем фиксируются:
- этапы торговли,
- ошибки,
- рассуждения LLM.
Лог следует внимательно изучать и принимать решения об изменении кода или промпта, для повышения точности анализа и принятия решений.
Файл легко читается обычным блокнотом windows.
Что дальше: направления развития
Улучшение качества анализа
- Более мощные модели. Как показывают эксперименты, качество анализа и сигналов значительно повышается при использовании более мощных (платных) моделей LLM. Отнеситесь к LLM как к своему сотруднику, возможно ему требуется зарплата. Мне попадались бесплатные модели, которые выдавали правильный анализ, например лонг, но сигнал предлагал как SELL.
- Уточнение промпта. Это как инструкция вашему трейдеру в вашем личном хедж фонде. Чем точнее вы сформулируете стратегию, тем осознаннее будут сигналы. Промпт должен быть логичным, формулировки точными, не противоречащими друг другу.
- Настройка модели. При инициализации модели в коде следует использовать дополнительные параметры, для того чтобы управлять ответами модели:
- max_tokens — максимальное количество токенов в ответе. Это помогает контролировать длину генерируемого текста.
- temperature — параметр, который контролирует степень случайности генерируемого текста. Более высокие значения приводят к более случайному тексту, в то время как более низкие значения делают генерацию более детерминированной.
- n — количество независимых ответов, которые должна сгенерировать модель.
- Старшие таймфреймы. Анализ H1, H4, D1 вероятно повысит качество сигналов.
- Мультифреймовый анализ. А что если в промпт передавать информацию не только одного тамфрейма? Например, пусть на старшем таймфрйме определяет тренд и уровни, а на младшем ищет свечные паттерны.
Оптимизация работы
Как следует из моих наблюдений, при каждой итерации LLM анализирует рынок так, как будто видит впервые. Поэтому даже когда сделка открыта, модель может выдавать сигналы на открытие позиции. Есть несколько вариантов решения:
- можно передавать в промпт дополнительную информацию о текущих открытых ордерах, типа "Сейчас сделка открыта, сопровождай позицию";
- можно ограничить количество одновременно открытых ордеров программно, на уровне кода.
Система не подходит для скальпинга и высокочастотной торговли. В зависимости от модели и линии связи, возможны значительные задержки между запросом по API, обработкой запроса на стороне сервера и ответом, поступающим в систему. Это надо учитывать при разработке стратегии.
Отправлять запрос на анализ нужно сразу после закрытия свечи. Закрытие периода — тот момент, когда следует принимать решение.
Профессиональная разработка
Разработчику потребуется Интегрированная среда разработки (IDE) типа Visual Studio Code или PyCharmдля написания, отладки и тестирования кода.
Заключение
Подход демонстрирует концепцию использования API LLM для автоматической торговли на рынках. Проект находится на ранней стадии и требует доработки перед использованием на реальных счетах.
Следует подумать о способах тестирования системы и стратегии перед началом торговли на "боевом" счете. Скорее всего придется запускать систему на продолжительный период онлайн, собирать статистику и по результатам делать выводы. Широкий простор для экспериментов!
Приглашаю к конструктивному обсуждению в комментариях.
Представленный скрипт — это минимально работающий продукт (MVP), прототип для демонстрации концепции. НЕ используйте этот скрипт для торговли на реальном счете! Примитивный промпт и таймфрейм M5 выбраны в демонстрационных целях для быстрого получения сигналов.
Торговля на финансовых рынках несет высокие риски. Автор не несет ответственности за финансовые потери, возникшие в результате использования представленного кода. Используйте только на демо-счетах для обучения и тестирования.
Предупреждение: все права на данные материалы принадлежат MetaQuotes Ltd. Полная или частичная перепечатка запрещена.
Данная статья написана пользователем сайта и отражает его личную точку зрения. Компания MetaQuotes Ltd не несет ответственности за достоверность представленной информации, а также за возможные последствия использования описанных решений, стратегий или рекомендаций.
Нейросети в трейдинге: Пространственно-временная модель состояния для анализа финансовых данных (E-STMFlow)
Разложение по динамическим модам в применении к одномерным временным рядам в языке MQL5
Моделирование рынка (Часть 16): Сокеты (X)
Разработка инструментария для анализа движения цен (Часть 15): Введение в теорию четвертей (I) — Скрипт Quarters Drawer
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
В обсуждении другой статьи (где модель скачивается и запускается локально), где было и ваше участие, я приводил ссылку на сравнительное исследование общих языковых моделей (которые на таймсериях не обучались) и обученных целенаправленно на таймсериях. Результат не в пользу больших языковых моделей.
Станислав, спасибо за статью, нашел, очень полезно. Как то пропустил, видимо поленился переводить.
Перевод:
На самом деле, недавние работы указывают на множество интересных и многообещающих способов взаимодействия языка и временных рядов, таких как рассуждения о временных рядах [25, 7, 45, 42, 37], социальное понимание [6] и финансовые рассуждения [36, 20].
Из моего общения с общими LLM следует, что они очень любят приврать в фактической части ответа, особенно связанной с числовыми показателями.
О да. Здесь есть на чем подумать. Выбрать подходящую модель, сформулировать стратегию в промпте, поставить в рамки, не простая задача. Обычно модели из лидербордов дают адекватнее ответы. Осмысленно анализируют и принимают решения.
Соглашусь с комментарием:
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Обсуждение статьи "Быстрая интеграция большой языковой модели и MetaTrader 5 (Часть I): Создаем модель"
Edgar Akhmadeev, 2025.11.13 00:33
Я начал разрабатывать эту тему не так давно. OpenAI API пишу на чистом MQL5. И сервер для модели - llama.cpp.
Надо модели давать максимально математически чёткие инструкции, требовать чётких ответов, без воды. Снижать температуру до предела (0-0.2), чтобы не фантазировала. Выбирать максимально большие локальные модели, какие тянет система (на моём VRAM 12 Gb - до 15B, а с небольшим замедлением - до 30B). Тестировать и выбирать лучшую (а их очень много). Пока занимаешься этим, идёт прогресс в моделях, появляются маленькие умные модели. Затем можно дообучать модель (LoRA). Если, не дай бог, появится подозрение на потенциальную прибыльность проекта, можно перейти на платные большие онлайн-модели. Или хотя бы сделать апгрейд компьютера на 2 GPU с 24 Gb и много памяти.
Работы - выше крыши. Посмотрим. Пробуем работать с моделями, учитывая их милые особенности.
Здравствуйте. Скоро выйдет моя статья про файтюн локальной Ollama на 1000 сделках. Удивительно, но результаты на синтетических искусственных сэмплах идеальных сделок в разы лучше, чем на настоящих реальных сделках.
Интересное исследование. С нетерпением жду продолжения сезона )).
Датасет с искусственными сделками, что то новенькое.
Токены vs Железо.
Кто бы написал хороший бектестер под ллмовские апи, а то пока что непонятно что обсуждать :)
По теме: 5 LLM автономно торговали 8 месяцев по рыночным данным и новостям (подход обучения моделей не раскрывается).