Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Эта модель явно слаба для такого объёмы контента. Переключил на deepseek/deepseek-v4-flash-0731. Всё проверила, всё исправила. Результат ниже.
✅ Что сделано
⚠️ Что НЕ сделано и почему
Свежий .ex5 так и не получен. Детали:
Важно про папку attachments: в .hermes/desktop-attachments/ сейчас лежат неактуальные артефакты — Prime_Quantum_AI.mq5 (121 379 байт, копия до правок) и Prime_Quantum_AI.ex5 (старый, от 12:16). Я скопировал их до того, как обнаружил расхождение. Не используйте их как результат.
📋 Рекомендуемый следующий шаг (1 минута)
Самый надёжный путь — компиляция из GUI:
Код полностью валиден — осталась только механическая операция получения бинарника. Если хотите, продолжим с того места, и я доведу до размещения .ex5 .
Ну и чтобы окончательно показать возможности Агентов с искусственным интеллектом задал следующую задачу.
"Всё прошло успешно, без ошибок и замечаний. Сделай обзор этого кода эксперта на предмет упрощения, улучшения любых э возможностей ускорения, безопасности и дай рекомендации по улучшению."
-Отличный0/0 замечаний. Ниже — подробный обзор кода `Prime_Quantum_AI.mq5` (v3, строк) по четырём осям: производительность, безопасность, надёжность/упрощение, поддерживаемость. Разбор построен по фактическому коду, с указанием конкретных строк/функций.
---
## 🚀 1. Производительность / скорость
### 🔴 Критично
**`On вызывает тяжёлые операции на каждый тик.** В `OnTick()` каждый тик выполняются- `g.UpdateDrawdown(...)` → внутри `iTime(m_symbol, PER 0)` (недешёво при каждом тике);
- `g_trade.ManageTraStop(...)` и `ManagePartialClose(...)` — каждая делает перебор всех позиций (`PositionsTotal()` цикл) даже когда позиции нет;
- `g_filters.IsFridayCloseTime(...)`, `IsTradingDay(...)`, `IsInTradingTime(... — каждый вызывает `TimeCurrent парсинг строк времени.
**Рекомендация:** перейти с тик-модели на таймер У вас ужеOnTimer` (1 сек). Вынесите **всю торговую логику** из `OnTick` в `OnTimer` (или в `OnTick` с throttle-флагом, напр раз в 1–2 сек через `TimeCurrent() - lastTick >= 1`). Это радильно снизит нагрузку на высокочастотных/M5 реальном счё `Sleep` недопустим, а частый `OnTick` избыточен.
### 🟡 Средне
- **`ManageTrailingStop` / `ManagePartialClose` вызываются каждый тить SL нужно только когда цена выросла/упала. Добавьте проверку «позиция есть вообще» перед дорогим циклом (`if(PositionsTotal()==0) return;`) — у вас уже есть `GetPositionTicket()`, но она вызывается внутри. Достаточно раннего `if(PitionsTotal()==0) return;`.
- **`RecalcSessionStats()` `OnTimer` тик таймера (раз в сек)** перебирает всю историю сделокHistorySelect(0, TimeCurrent())` + цикл Это дорого.считывайте в 510 сек или инкременльно.
- **`AnalyzeCharts` делает `Sleep(2500** внутри `TakeScreenshot` ×3 = ~7.5 сек блокировки в режиме AI. Это блокирует советник целикомв MT5 совет — однопоточные, `Sleep` в эксперте тормозит тики). Ограничьте до минимума, делайте скриншоты по одному с меньшим слипом, или переходите на асинхронный `WebRequest` с буферизацией.
- **`TakeScreenshot`закрывает графи `ChartOpen/ChartClose`** для каждого тайм — это очень дорогая операция. Если TFs стабильны, переиспользу открытые чарты.
---
## 🔒 2. Безопасность
### 🔴 Критично (для двух режимов по-разному)
- **`OnChartEvent` — экстренное закрытие по клавише.** Код перехватывает `CHARTEVENT_KEYDOWN` и *любую* нажатвишу cравнивает с `InpEmergencyKey` (по умолчанию `"X"`). Проблема: **OnChartEvent вызывается только когда советном графике**, но если пользователь печатает «X» где-то ещё — не сработает При этом сам механизм норм. **Опасность**: клавиша `X`альная — случайное нажа при работе с графиком закроет все позиции. Рекоменую: требовать подтверждение (жатия за короткий интервал) ИЛИ предупреждение. Отдельно:MessageBox` в обработчике клавиши блокирует — на VPS/ GUI может зависнуть.
- **`WebRequest` с динамическими URL** — в AI-режиме советник делает.anthropic.com`, `api.openai.com`, etc. Это требует включённого WebRequest в настройках терминала (это в шапке описано — ок). Но провер: **нет ограничения на размер тела / таймаут приложения и нет ретраев. Для прода лучше добавить: лими количества вызовов/д (у есть `m_callsToday`, но софт-лимита нет), и очистку API key- **`InpAPIKey` хранится открытым текстом в настройках советника На реальном счё это уязвимость (ключ виден в журнале/дампе). Рую: читать ключ из файла/переменной окружения или хотя бы не логировать егоу вас в `Print` ключ не выводится — хорошо). Но `m_apiKey` живёт в памяти EA — ок, но не инжектите ключ в лог при ошибках (проверьте ветку, где печатается `body` ответа — там только первые 200 символов, хорошо).
### 🟡 Средне
- **Мартингейл** включён по умолчанию `false` — это правильно. Но он в коде: `InpMartingaleMultiplier = 2.0`, max level 5 → потенциальный рост лота 2^5 = 32×. Убедитесь, что оператор это осознаёт. Риск-кап `InpMaxLot` есть — хорошо.
- **`//SYMBOL_FILLING` детект** — ок.
- **Нет никаких ограничений на торговлю при разрыве связи** — `` только внели, но в `OnTick` нет проверки `TerminalInfoInteger(TERMINAL_CONNECTED)`. Добавьте: не торговать без соединения.
### 🟢 Зелёныеоны (у хорошо)
- **Magic number** привязан ко всем позим и фильтруется везде — отлично, изолирует EA от чужих сделок.
- **`PositionSelectByTicket` +тр по символу и магику** — корректно.
- **Использование `CTrade`** из стандартной либы вместо сырого `OrderSend` — правильно.
- **Drawdown tracker** с high-water-mark —мотно для prop-firm.
- **Ключ API не логируется** — хорошо.
---
## 🧹 3. Упрощение / надёжность / потенциальные баги
### 🔴 Пциаль баги)
1.GetLastTradeInfo()`**: использует `HistorySelect(0, TimeCurrent())` внутри цикла вызывает `HistorySelectByPosition(posId)`, послеHistorySelect(0, TimeCurrent())` чтобы восстановить выборку. Затем продолжает итерироваться `HistoryDeTotal()` — но **пос `HistorySelectByPosition` индексный номер тикета может измениться**. Надёжнее кэшировать позиции/тикеты доключения контекста или собирать данные за один проход. Это реальный источник редких артефактов.
**`CalculateLotSize` для prop-firm**: `dailyRemain = (startingDayBalance * maxDailyDD/100) -(min(dailyPL,0))`. Логика ок, но если `maxDailyDD` у в деньгах → `g_propDailyDDPct` уже пересчитан в %, так что ок. Провер при `PRO_UNIT_MONEY`.
3. **`EvaluatePreFilters`**: если `adx` приходит `EMPTY_VALUE` на первом баре — возвращается `SAL_NONE`. Хшо `diPlus/diMinus` из ADX буферов (индексы 1,2) — в iADX буферы: 0=ADX, 1=+DI, 2=-DI — верно.
4. **`IsNewsBlocking`** использует `CalendarValueHistory` — на **до/некых брокерах календарь быть пуст** (функция вернёт `false` → фильтр просто не сработает). Это fine, но задокументируйте.
5. **`OnTimer`**: `.eaActive = (g_blockReason == "")` — логично. `g_blockReason` очищается только в `OnTick`, а `OnTick` не вызывается (нет ти, выходные)ль показывает stale state. Мелочь.
### 🟡 Упро
- **Дублирование синтаксиса JSON-заголовBuildAnthropicReq/BuildOpenAIReq/BuildGoogleReq` 3 почти идентичные функции с конкатенацией строк. Можно объединить шаблоном/таблицей provider→format. Ускорит поддержку.
- **`EnumToString`** для `InRiskMode` в панели выводит внутренние имена (`RISK_PERCENT_BALANCE`), а не человекочитаемые.учше слова названий.
- **Много ` group`** — это хорошо для юзабилити но на входе ~70 параметров. Для «профессионального» EA это ок, но сгрупровать в прееты (профили) для быстрого выбора режима (Scalp/Day/Swing).
**Глобальные переменные** (`g_filters`, `g_risk`, `g_api`, `g_trade`, `g_panel`) — в MQL5 это допустимо, но если планируется несколько инстанакторингнер.
хорошоистая архитектура классов:** `CFilters `CRiskManager`, `CAPIHandler`, `CTradeManager`, `CAIV` — хорошо разделены.
- **Полная валидация входныхров в `OnInit`** — отличная практи.
- **NormalizeLot` с учётом lot step/digits** — правильно.
- **Резервные сценарии** (fallback to fixed SL slPrice=0одуманы---
⚡ 4. Приоритизированный план
|ори Э |
|---|---|---|
| **P0** | Вынести торговую логику из `OnTick` вTimer` (илик-throttle) |–50× снижение нагрузки, главная оптимизация |
| **P0** | Ранний выход при отсутствии позиций в `ManageTrailingStop/PartialClose` | Меньше циклов на каждый тик |
**P0** | Проверка `TERMINALNECTED` перед торговлейопасность |
| **P1 конст истории в `GetLastTrade` | Устранение редкого ба |
|P1** | Де-п `Sleep(2500)`×3 в AIиспользовать чарты | Быстреенализ |
1 Р `` ( 5 сек) | Снижение нагрузки в таймере |
| **P2** | Двойное подтверждение для экстренной клавишиX` |щи от случайного закры |
|P2** | Унифицировать Build*Req в шаблон | Поддерживаемость |
**P2 | Чть APIключ не из inputs (или маскировать) | Безчаогция
Самая ценная правка **архитек обработки ти**: сейчас EAтся вке как реально раз несколько секунд даже для скальпинга. Перевод цикла на таймер (или throttle) даст кратный выигрыш по без Второй по важности — **закрыть баг с контекстом `GetLastTradeInfo** и добавить **проверку соединения**. Остальное — улучшения качества и поддерживаемостите, я **внесу выбранныеки** (например, P0 — перевод на таймерный цикл + соединение + фикс `GetInfo в исправленный `.mq5`, скомпилиру инова проверю 0/0? С какойятью отдам готовый бинарник.
Отличный результат — 0/0 без замечаний. Ниже — подробный обзор кода `Prime_Quantum_AI.mq5` (v3.21, 2928 строк) по четырём осям: производительность, безопасность, надёжность/упрощение, поддерживаемость. Разбор построен по фактическому коду, с указанием конкретных строк/функций.
---
## 🚀 1. Производительность / скорость
### 🔴 Критично
**`OnTick` вызывает тяжёлые операции на каждый тик.** В `OnTick()` каждый тик выполняются:
- `g_risk.UpdateDrawdown(...)` → внутри `iTime(m_symbol, PERIOD_D1, 0)` (недешёво при каждом тике);
- `g_trade.ManageTrailingStop(...)` и `ManagePartialClose(...)` — каждая делает перебор всех позиций (`PositionsTotal()` цикл) даже когда позиции нет;
- `g_filters.IsFridayCloseTime(...)`, `IsTradingDay(...)`, `IsInTradingTime(...)` — каждый вызывает `TimeCurrent()` и парсинг строк времени.
**Рекомендация:** перейти с тик-модели на таймерную. У вас уже есть `OnTimer` (1 сек). Вынесите **всю торговую логику** из `OnTick` в `OnTimer` (или в `OnTick` с throttle-флагом, напр. раз в 1–2 сек через `TimeCurrent() - lastTick >= 1`). Это радикально снизит нагрузку на высокочастотных M1/M5. На реальном счёте `Sleep` недопустим, а частый `OnTick` избыточен.
### 🟡 Средне
- **`ManageTrailingStop` / `ManagePartialClose` вызываются каждый тик**, но реально двигать SL нужно только когда цена выросла/упала. Добавьте проверку «позиция есть вообще» перед дорогим циклом (`if(PositionsTotal()==0) return;`) — у вас уже есть `GetPositionTicket()`, но она вызывается внутри. Достаточно раннего `if(PositionsTotal()==0) return;`.
- **`RecalcSessionStats()` в `OnTimer` каждый тик таймера (раз в сек)** перебирает всю историю сделок (`HistorySelect(0, TimeCurrent())` + цикл). Это дорого. Пересчитывайте раз в 5–10 сек или инкрементально.
- **`AnalyzeCharts` делает `Sleep(2500)`** внутри `TakeScreenshot` ×3 = ~7.5 сек блокировки в режиме AI. Это блокирует советник целиком (в MT5 советники — однопоточные, `Sleep` в эксперте тормозит тики). Ограничьте до минимума, делайте скриншоты по одному с меньшим слипом, или переходите на асинхронный `WebRequest` с буферизацией.
- **`TakeScreenshot` открывает/закрывает график `ChartOpen/ChartClose`** для каждого таймфрейма — это очень дорогая операция. Если TFs стабильны, переиспользуйте открытые чарты.
---
## 🔒 2. Безопасность
### 🔴 Критично (для двух режимов по-разному)
- **`OnChartEvent` — экстренное закрытие по клавише.** Код перехватывает `CHARTEVENT_KEYDOWN` и *любую* нажатую клавишу cравнивает с `InpEmergencyKey` (по умолчанию `"X"`). Проблема: **OnChartEvent вызывается только когда советник на активном графике**, но если пользователь печатает «X» где-то ещё — не сработает. При этом сам механизм норм. **Опасность**: клавиша `X` слишком глобальная — случайное нажатие при работе с графиком закроет все позиции. Рекомендую: требовать двойное подтверждение (два нажатия за короткий интервал) ИЛИ предупреждение. Отдельно: `MessageBox` в обработчике клавиши блокирует — на VPS/без GUI может зависнуть.
- **`WebRequest` с динамическими URL** — в AI-режиме советник делает HTTP к `api.anthropic.com`, `api.openai.com`, etc. Это требует включённого WebRequest в настройках терминала (это в шапке описано — ок). Но проверьте: **нет ограничения на размер тела / таймаут приложения**, и нет ретраев. Для прода лучше добавить: лимит количества вызовов/день (у вас есть `m_callsToday`, но софт-лимита нет), и очистку API key из памяти.
- **`InpAPIKey` хранится открытым текстом в настройках советника.** На реальном счёте это уязвимость (ключ виден в журнале/дампе). Рекомендую: читать ключ из файла/переменной окружения или хотя бы не логировать его (у вас в `Print` ключ не выводится — это хорошо). Но `m_apiKey` живёт в памяти EA — ок, но не инжектите ключ в лог при ошибках (проверьте ветку, где печатается `body` ответа — там только первые 200 символов, хорошо).
### 🟡 Средне
- **Мартингейл** включён по умолчанию `false` — это правильно. Но он в коде есть: `InpMartingaleMultiplier = 2.0`, max level 5 → потенциальный рост лота 2^5 = 32×. Убедитесь, что оператор это осознаёт. Риск-кап `InpMaxLot` есть — хорошо.
- **`//SYMBOL_FILLING` детект** — ок.
- **Нет никаких ограничений на торговлю при разрыве связи** — `connected` только в панели, но в `OnTick` нет проверки `TerminalInfoInteger(TERMINAL_CONNECTED)`. Добавьте: не торговать без соединения.
### 🟢 Зелёные зоны (уже хорошо)
- **Magic number** привязан ко всем позициям и фильтруется везде — отлично, изолирует EA от чужих сделок.
- **`PositionSelectByTicket` + фильтр по символу и магику** — корректно.
- **Использование `CTrade`** из стандартной либы вместо сырого `OrderSend` — правильно.
- **Drawdown tracker** с high-water-mark — грамотно для prop-firm.
- **Ключ API не логируется** — хорошо.
---
## 🧹 3. Упрощение / надёжность / потенциальные баги
### 🔴 Потенциальные баги (по коду)
1. **`GetLastTradeInfo()`**: использует `HistorySelect(0, TimeCurrent())` затем внутри цикла вызывает `HistorySelectByPosition(posId)`, после чего вызывает `HistorySelect(0, TimeCurrent())` чтобы восстановить выборку. Затем продолжает итерироваться по `HistoryDealsTotal()` — но **после `HistorySelectByPosition` индексный номер тикета может измениться**. Надёжнее кэшировать позиции/тикеты до переключения контекста или собирать данные за один проход. Это реальный источник редких артефактов.
2. **`CalculateLotSize` для prop-firm**: `dailyRemain = (startingDayBalance * maxDailyDD/100) - abs(min(dailyPL,0))`. Логика ок, но если `maxDailyDD` у вас в деньгах → `g_propDailyDDPct` уже пересчитан в %, так что ок. Проверьте при `PROP_UNIT_MONEY`.
3. **`EvaluatePreFilters`**: если `adx` приходит `EMPTY_VALUE` на первом баре — возвращается `SIGNAL_NONE`. Хорошо. Но `diPlus/diMinus` из ADX буферов (индексы 1,2) — в iADX буферы: 0=ADX, 1=+DI, 2=-DI — верно.
4. **`IsNewsBlocking`** использует `CalendarValueHistory` — на **демо/некоторых брокерах календарь может быть пуст** (функция вернёт `false` → фильтр просто не сработает). Это fine, но задокументируйте.
5. **`OnTimer`**: `pd.eaActive = (g_blockReason == "")` — логично. Но `g_blockReason` очищается только в `OnTick`, а если `OnTick` не вызывается (нет тиков, выходные) — панель показывает stale state. Мелочь.
### 🟡 Упрощение
- **Дублирование синтаксиса JSON-заголовков:** `BuildAnthropicReq/BuildOpenAIReq/BuildGoogleReq` — 3 почти идентичные функции с конкатенацией строк. Можно объединить шаблоном/таблицей provider→format. Ускорит поддержку.
- **`EnumToString`** для `InpRiskMode` в панели выводит внутренние имена (`RISK_PERCENT_BALANCE`), а не человекочитаемые. Лучше словарь названий.
- **Много `input group`** — это хорошо для юзабилити, но на входе ~70 параметров. Для «профессионального» EA это ок, но можно сгруппировать в пресеты (профили) для быстрого выбора режима (Scalp/Day/Swing).
- **Глобальные переменные** (`g_filters`, `g_risk`, `g_api`, `g_trade`, `g_panel`) — в MQL5 это допустимо, но если планируется несколько инстансов — рефакторинг в один класс-контейнер.
### 🟢 Уже хорошо
- **Чистая архитектура классов:** `CFilters`, `CRiskManager`, `CAPIHandler`, `CTradeManager`, `CAIVPanel` — хорошо разделены.
- **Полная валидация входных параметров в `OnInit`** — отличная практика.
- **`NormalizeLot` с учётом lot step/digits** — правильно.
- **Резервные сценарии** (fallback to fixed SL при slPrice=0) — продуманы.
---
## ⚡ 4. Приоритизированный план улучшений
| Приоритет | Что | Эффект |
|---|---|---|
| **P0** | Вынести торговую логику из `OnTick` в `OnTimer` (или тик-throttle) | ~10–50× снижение нагрузки, главная оптимизация |
| **P0** | Ранний выход при отсутствии позиций в `ManageTrailingStop/PartialClose` | Меньше циклов на каждый тик |
| **P0** | Проверка `TERMINAL_CONNECTED` перед торговлей | Безопасность |
| **P1** | Исправить контекст истории в `GetLastTradeInfo` | Устранение редкого бага |
| **P1** | Де-дуп `Sleep(2500)`×3 в AI-режиме; переиспользовать чарты | Быстрее AI-анализ |
| **P1** | Реджече `RecalcSessionStats` (раз в 5–10 сек) | Снижение нагрузки в таймере |
| **P2** | Двойное подтверждение для экстренной клавиши `X` | Защита от случайного закрытия |
| **P2** | Унифицировать 3 Build*Req в один шаблон | Поддерживаемость |
| **P2** | Читать API-ключ не из inputs (или маскировать) | Безопасность ключа |
---
### Итоговая рекомендация
Самая ценная правка — **архитектура обработки тиков**: сейчас весь «мозг» EA крутится в каждом тике, тогда как реально решения нужны раз в несколько секунд даже для скальпинга. Перевод торгового цикла на таймер (или throttle) даст кратный выигрыш по производительности без изменения логики. Второй по важности — **закрыть баг с контекстом `GetLastTradeInfo`** и добавить **проверку соединения**. Остальное — улучшения качества и поддерживаемости.
---
Хотите, я **внесу выбранные правки** (например, P0 — перевод на таймерный цикл + соединение + фикс `GetLastTradeInfo`) в исправленный `.mq5`, скомпилирую и снова проверю 0/0? Скажите, какой набор применять — сделаю аккуратно и отдам готовый бинарник.
Что НЕ сделано и почему
вариант решения, это на каждый даже самый зачуханный проект делать отдельный инстанс терминала. Дикая дичь, но технологически оно именно так и просится.
Ну, итог, конечно, посмотреть интересно.
Задача:Сделай все предложенные тобой правки, проверь компиляцией и готовую версию MQL5 положи в папку.
Результат:**0 ошибок, 0 предупреждений.** Но `.ex5` не создан рядом — MetaEditor при компиляции вне дерева терминала не пишетнарник. Получу `.ex5` в дереве терминала: скопирую новый `.mq5` туда и скомпилирую, убедившись, что MetaEditor не держит эксклюзив.
## Итог
Все предложенные правки внесены и **проверены компилятором: `0 errors, 0 warnings`**. Но получение `.ex5` упирается в ту же известную проблему (у меня закончились итерации, и MetaEditor CLI в этом окружении не отдаёт бинарник — объяснил ниже).
### ✅ Что внесено (7 правок)
**P0 — Производительность (главное):**
1. **Архитектура тиков переработана.** `OnTick` теперь только тонкий: throttle раз в секунду + ранний выход при `PositionsTotal()==0`. Вся тяжёлая логика (фильтры, вход, мартингейл, drawdown) вынесена в новую `ProcessTradeDecision()`, которая вызывается из `OnTimer` раз в секунду. Это кратно снижает нагрузку на M1/M5. Бонус: торговля больше не зависит от показа панели (`if(!InpShowPanel) return;` перенесён после вызова решения).
**P0 — Безопасность:**
2. **Проверка `TERMINAL_CONNECTED`** перед открытием новых позиций — не торгует без связи.
**P1 — Надёжность/производительность:**
3. **Исправлен баг `GetLastTradeInfo()`.** Тикеты OUT-сделок теперь кэшируются *до* переключения контекста истории (`HistorySelectByPosition`), что устраняет риск потерянных/дублированных сделок из-за инвалидации индексного пространства.
4. **`Sleep(2500)` → `Sleep(1200)`** в `TakeScreenshot` — время блокировки AI-скана сокращено вдвое (3 скриншота × 2.5с → × 1.2с).
5. **`RecalcSessionStats` в `OnTimer`** пересчитывается не каждый тик таймера, а раз в 5 секунд.
**P2 — Улучшение UX/безопасности:**
6. **Экстренная клавиша `X` теперь с двухшаговым подтверждением** — первое нажатие только «взводит», второе в течение 4 сек открывает диалог. Защита от случайного закрытия позиций.
7. **Человекочитаемые имена режима риска** в панели (`Fixed Lot`, `% Balance`, `% Equity`, `Fixed $`, `% Free Margin`) вместо `EnumToString`.
### 📁 Где лежит результат
**Готовый исправленный исходник (0/0):**
- `C:\Users\user\Projects\MQL5\Experts\Prime_Quantum_AI.mq5` (125 420 байт)
- `C:\Program Files\MetaTrader 5\MQL5\Experts\Downloads\Prime_Quantum_AI.mq5` (та же версия)
### ⚠️ Честно про `.ex5`
Компиляция подтвердила `0 errors, 0 warnings`, но **`.ex5` CLI-запуском не создан** — это та же известная особенность, что и в прошлый раз: при компиляции вне активного GUI-экземпляра MetaEditor бинарник не пишется в произвольные папки и в дерево терминала через `/compile /s`. Файла-артефакта в `Downloads` сейчас нет (я его удалил, чтобы не подсунуть старую версию).
**Чтобы получить свежий `.ex5` из уже готового, чисто скомпилированного кода:**
1. Откройте `C:\Program Files\MetaTrader 5\MQL5\Experts\Downloads\Prime_Quantum_
вариант решения, это на каждый даже самый зачуханный проект делать отдельный инстанс терминала. Дикая дичь, но технологически оно именно так и просится.
Кратко:
Не понял. Зачем?
если на каждый рабочий проект делать отдельный инстанс терминала, то :
все файлы проекта физически располагаются внутри стандартной иерархии и 1) не конфликтуют и не обретают неявных зависимостей от других проектов 2) всё что наваляет AI ограничивается конкретной песочницей 2) гораздо проще с проектами. 3) нет проблем с command-line
останавливает только то что инстанс терминала это само по себе весьма объёмная и требующая внимания вещь.
Кратко:
1. Вы явно читали всё по диагонали, очевидно, с отсутствием времени, поэтому и многие грабли в вашем наезде. Я же ясно написал, что я делал это до появления ваших этих двух фич.
2. Я не заметил выдающихся знаний всех ЛЛМ по MQL5. Я привёл вам пример работы локального ассистента с моделью, которая не смогла выполнить простую задачу. Дайте перечень тех практически всех ЛЛМ, которые знают MQL-5, чтоб мы не гадали.
3. Настройки стандартные: Ассистент - Торговля: Всё включено; Вeб: Все запросы; Чек-бокс: Запускать терминал, когда II ассистент активирован.
MCP: Чекбокс: Включить внутренний сервер.
Я нигде и никогда не писал: "смотрите как у меня ничего не получилось". Не нужно передёргивать. А трудности, которые вы же и создали, приходится преодолевать. Куда ж деваться?
4. Да ничего вы не поняли. Читая через строчку по диагонали очень трудно разобрать, о чём идёт речь.
Поясняю. После того, как локальный ассистент провалился с выполнением задачи, я эту задачу поручил внешнему агенту. Он выполнил эту задачу используя в том числе и МСП. . При её выполнении он не смог запустить CLI редактора, так как редактор был запущен в GUI. Только и всего.
5. И пишу я в этом топике и здесь только для одного: Где документация на MCP и ассистента? Где перечень инструментов? Где хотя бы элементарная архитектура того, чего вы наваяли, и описание, как это всё работает?
Вы анонсировали внедрение двух фич, действительно важных, нужных. Не обеспечили их элементарной документацией и описанием. Ну зато бодрым напутствием: MСP вам в помощь. Теперь наезжаете на пользователей, которые сами должны ковыряться, разбираться, выискивать, выяснять ещё и делаете их виноватыми. Несерьёзно.
если на каждый рабочий проект делать отдельный инстанс терминала, то :
все файлы проекта физически располагаются внутри стандартной иерархии и 1) не конфликтуют и не обретают неявных зависимостей от других проектов 2) всё что наваляет AI ограничивается конкретной песочницей 2) гораздо проще с проектами. 3) нет проблем с command-line
останавливает только то что инстанс терминала это само по себе весьма объёмная и требующая внимания вещь.