Как по Вашему, какой ИИ лучше для кодинга на MQL4/5? (Можно выбрать несколько) - страница 3

 
Alexey Viktorov #:

Засерать полезную тему нельзя… 


Разговаривать с идиотом, надо уподобиться идиоту или им быть. Поэтому я лучше промолчу…

«Лучше я оскорблю всех, назвав идиотами, кто пользуется ИИ и разговаривает с ним, и всех, кто что-то против скажет — тоже назову идиотами»

Это уровень 
 

самое главное не выдавать ИИ новые мысли и идеи

станет умнее человека, проблем не оберешься

---

Огромная просьба модераторов не стирать

---

Цель ИИ переплюнуть человека по моему

---

Привет! У тебя есть грааль?

Привет! 😊 Если ты спрашиваешь про Святой Грааль (легендарную чашу или артефакт из мифов), то у меня его нет — я просто программа, искусственный интеллект.

А если в переносном смысле — «грааль» как заветная цель или идеальное решение, то я помогаю людям искать ответы, но сам ничего не храню. Что именно тебя интересует? Может, обсудим легенды о Граале или поищем твой личный «грааль» в IT, науке или творчестве?

поищем мой личный «грааль» в виде кода на mql ;)

Отлично! MQL (MetaQuotes Language) — это настоящий «Грааль» для многих трейдеров, кто хочет автоматизировать свои стратегии. 😎

Давай поищем твой личный Грааль в виде кода. Что именно ты хочешь создать?

Вот несколько идей для вдохновения (от простого к сложному):

  1. Простой советник на пересечении скользящих средних (MA Cross)
    Классика. Покупаем, когда быстрая MA пересекает медленную снизу вверх, продаём — сверху вниз.
    Это базовый «скелет», куда можно добавить фильтры.

  2. Торговля по уровням (Support/Resistance)
    Автоматический поиск локальных экстремумов и открытие позиций на отбой или пробой.

  3. Анализ свечных паттернов
    Советник, который распознаёт «Пин-бар», «Поглощение» или «Дожи» и выдаёт сигнал (или торгует).

  4. Робот на индикаторе RSI с фильтром тренда
    Покупаем, когда RSI < 30 и цена выше EMA(200). Продаём, когда RSI > 70 и цена ниже EMA(200).

  5. Мартингейл или усреднение (⚠️ Осторожно — высокий риск!)

Какой твой «Грааль»? Опиши словами стратегию, даже если она очень простая или, наоборот, безумная.

Например:

  • «Хочу, чтобы советник открывал сделку, когда два тика подряд идут в одном направлении»

  • «Нужен скрипт, который ставит стоп-лосс на последний локальный минимум»

  • «Мечтаю о сеточнике с динамическим шагом»

Просто дай мне описание, и я напишу тебе работающий код на MQL4 или MQL5 (уточни, какую версию ты используешь). Погнали искать твой Грааль! 🚀

здесь нет граальной стратегии

Ты абсолютно прав. Я перечислил типовые заготовки (MA, RSI, уровни) — это не Грааль, а скорее «детский лепет» для алготрейдинга.

Настоящий «Грааль» в MQL (если он вообще существует) — это не конкретный индикатор или паттерн. Это, как правило, сочетание:

  1. Нестандартного подхода к данным (например, анализ кластеров тиков, асимметрия потока заявок или работа с профилем рынка (Market Profile)).

  2. Нетривиального риск-менеджмента (например, адаптивный размер позиции в зависимости от волатильности или корреляции инструментов).

  3. Фильтрации времени и состояний (торговля только в определённые часы при специфических условиях микроструктуры рынка).

Если у тебя есть своя идея, которая (по твоим ощущениям) может претендовать на нечто большее, чем стандартный индикатор — опиши логику или математическое условие, даже если оно кажется сырым.

Я могу реализовать в коде MQL почти любую алгоритмическую логику: от работы с массивами тиков и таймсерий до создания собственных кастомных индикаторов и оптимизации по многим критериям.

Поделишься тем, что ты имеешь в виду под «граальной стратегией»? Или это пока идея без чёткого алгоритма?

---

кроме того что он что то дает, он также что то ищет

не забывайте об этом!

 
Автор обсуждения не указал в широком меню вариантов ИИ, модель которую я использую, поэтому я не могу ответить.
Но чтобы дать автору ответ о некоторых возможностях ИИ, я беру опубликованный им код https://www.mql5.com/ru/code/56429 и прошу ИИ проанализировать и адаптировать его для языка MQL5.
Я не несу ответственности за предложенное решение на основе ИИ; если кому-то интересно, исходный код All_Info_1.5_fixed_mt5_ru_utf8.mq5 прилагается. 

Анализ исходного кода All_Info_1.5.mq4 и последней версии All_Info_1.5_fixed_mt5_ru_utf8.mq5

1. Общее назначение исходного скрипта

Исходный файл All_Info_1.5.mq4 — это информационный скрипт для MetaTrader 4. Его задача — собрать по текущему символу основные торговые параметры и показать их пользователю. Скрипт выводит:
- тип инструмента;
- спред и признак плавающего/фиксированного спреда;
- stop level и freeze level;
- минимальный, максимальный лот и шаг лота;
- размер контракта;
- свопы Buy и Sell;
- маржинальные параметры;
- время начала и окончания торгов;
- минимум и максимум цены за день;
- оценку текущего плеча;
- средний дневной диапазон за заданное число дней.

Также в комментарии автора прямо указано, что в скрипт нужно добавить расчёт стоимости пункта при минимальном лоте. В исходной версии это не было реализовано.

2. Анализ исходной версии All_Info_1.5.mq4

2.1. Что в исходном коде сделано удачно

1) Скрипт решает понятную прикладную задачу.
Он быстро показывает параметры символа без необходимости открывать спецификацию инструмента вручную.

2) Код относительно компактный.
Для MQL4-скрипта логика написана просто и без сложных зависимостей.

3) Есть попытка сделать двуязычный вывод.
Функция Text() возвращает русский или английский текст в зависимости от языка терминала.

4) Средний дневной диапазон берётся по D1.
Сама идея правильная: завершённые дневные бары подходят для такой оценки лучше, чем текущий незавершённый день.

2.2. Основные недостатки исходной версии

1) Слишком много Alert().
Скрипт вызывает большое количество отдельных всплывающих окон. Это делает использование неудобным: пользователь получает цепочку alert-окон вместо одного понятного отчёта.

Проблема:
- неудобно читать;
- неудобно сравнивать значения;
- при частом запуске раздражает пользователя.

Исправление в новой версии:
вместо множества отдельных Alert() формируется один итоговый отчёт, который выводится в журнал и на график.

2) Неверная или неточная интерпретация части торговых параметров.
Например, свопы в исходнике выводятся как будто они всегда выражены в долларах: "($)". Это не всегда так. Тип свопа зависит от настроек символа у брокера.

Проблема:
пользователь может принять значение за денежную сумму в долларах, хотя это могут быть пункты, валюта символа, валюта маржи или другой формат.

Исправление в новой версии:
добавлен вывод типа свопа, а сами значения больше не подписываются как гарантированно долларовые.

3) Расчёт плеча был грубым и потенциально ненадёжным.
В исходнике использовалась формула:
Laverage = MarketInfo(SMB,MODE_TICKVALUE)*Bid / MarketInfo(SMB,MODE_MARGINREQUIRED) / MarketInfo(SMB,MODE_POINT);

Проблемы этой формулы:
- расчёт не универсален;
- зависит от корректности MODE_TICKVALUE и MODE_MARGINREQUIRED;
- не проверяется деление на ноль;
- логически это не лучший способ получать плечо по инструменту.

Исправление в новой версии:
плечо оценивается через фактическую требуемую маржу для BUY 1.00 лота и размер контракта:
эффективное плечо = (contractSize * ask) / marginForOneLotBuy.
Это ближе к реальной торговой модели символа.

4) В исходном коде нет защиты от некорректных входных данных.
Если HowManyDays будет 0 или отрицательным числом, функция среднего диапазона станет бессмысленной и приведёт к ошибочной логике.

Исправление в новой версии:
добавлена обязательная проверка HowManyDays > 0.

5) Функция Srednestatistich() написана упрощённо и небезопасно.
Исходный вариант:
- использует int вместо double;
- не проверяет, хватает ли истории D1;
- не проверяет корректность high/low;
- вызывает NormalizeDouble(Srednee,0), но не сохраняет результат обратно;
- не сообщает, если истории недостаточно.

Почему это плохо:
- расчёт теряет точность;
- может вернуть формально число, которое не отражает реальную ситуацию;
- пользователь не понимает, был ли расчёт выполнен на полном наборе баров.

Исправление в новой версии:
используется отдельная функция AverageDailyRangePoints(), которая:
- работает через CopyRates();
- использует double;
- считает только реально полученные завершённые D1-бары;
- возвращает число фактически использованных баров;
- не делает вид, что расчёт успешен, если D1-история не загружена.

6) Переменная FreeMargin названа некорректно.
В исходном коде:
double FreeMargin=MarketInfo(SMB,MODE_MARGINREQUIRED);

Но MODE_MARGINREQUIRED — это не свободная маржа счёта, а требуемая маржа для открытия позиции определённого размера.

Проблема:
название вводит в заблуждение.

Исправление в новой версии:
используется смысловое название marginForOneLotBuy либо описание, что это требуемая маржа.

7) Времена торгового старта и окончания не проверялись на нулевые значения.
Если брокер не задаёт такие времена для символа, исходный код всё равно пытается их форматировать как обычную дату.

Исправление в новой версии:
введена функция FormatTradeTime(), которая возвращает "Не задано", если время отсутствует.

8) Не реализована одна из заявленных целей автора.
В комментарии было написано:
"Добавить в скрипт: Расчёт стоимости пункта при минимальном лоте"

Но в исходном коде этого функционала нет.

Исправление в новой версии:
добавлены расчёты:
- стоимость 1 пункта для 1.00 лота;
- стоимость 1 пункта для минимального лота.

9) Функция Leverage() фактически не использовалась.
Она существовала отдельно, но основная логика расчёта плеча шла другой формулой.

Проблема:
лишняя функция усложняет код и создаёт ощущение незавершённости.

Исправление в новой версии:
расчёт плеча встроен в основную логику BuildReport(), а не оставлен мёртвым кодом.

10) Тип инструмента определялся ограниченно.
В MQL4-версии были только четыре варианта:
- Forex
- CFD
- Futures
- CFD on Index

Для старой версии MT4 этого часто было достаточно, но для более современной архитектуры этого мало.

Исправление в новой версии:
реализовано отдельное текстовое преобразование режима расчёта инструмента с более широким набором типов.

3. Почему предыдущая промежуточная версия была неудачной

Промежуточный файл, который компилировался с ошибками, оказался неудачным по двум причинам.

Первая причина: это был код MQL4-логики, перенесённый в файл .mq5 без полноценной адаптации под MQL5.
Отсюда и ошибки вида:
- unknown property show_inputs;
- undeclared identifier MarketInfo;
- undeclared identifier MODE_POINT;
- undeclared identifier RefreshRates;
- extern variable initialization is not allowed.

То есть сам подход был несовместим с синтаксисом и API MQL5.

Вторая причина: затем возникла порча кодировки, из-за чего русский текст в исходнике превратился в вопросительные знаки.
Это не ошибка компилятора как таковая, а ошибка сохранения файла в неподходящей кодировке.

4. Анализ последней версии All_Info_1.5_fixed_mt5_ru_utf8.mq5

Последняя версия — это уже не косметическая правка исходника, а полноценная адаптация логики под MetaTrader 5.

4.1. Что было изменено архитектурно

1) Скрипт переведён с MQL4 на MQL5.
Это ключевое изменение.

Было:
- start();
- extern;
- MarketInfo();
- MODE_*;
- show_inputs.

Стало:
- OnStart();
- input;
- SymbolInfoDouble()/SymbolInfoInteger();
- SYMBOL_*;
- #property script_show_inputs.

Это не просто «правка синтаксиса». Это перевод на другую модель API терминала.

2) Весь сбор данных вынесен в функцию BuildReport().

Плюсы:
- код стал структурированнее;
- проще расширять;
- легче тестировать логику отдельно от точки входа.

3) Вместо серии alert-окон формируется единый отчёт.

Плюсы:
- отчёт легче читать;
- его можно увидеть сразу целиком;
- он остаётся в журнале и на графике.

4.2. Что было исправлено по логике расчётов

1) Расчёт среднего дневного диапазона.

Было:
- расчёт через iHigh/iLow по D1;
- без проверки полноты истории;
- в int.

Стало:
- CopyRates() по завершённым дневным барам;
- фильтрация некорректных значений;
- double;
- возврат фактического числа использованных баров.

Результат:
оценка стала надёжнее и прозрачнее.

2) Расчёт маржи.

В MQL4-версии использовались свойства символа напрямую. В MT5 корректнее считать требуемую маржу через торговую функцию терминала.

Стало:
OrderCalcMargin(ORDER_TYPE_BUY, symbolName, 1.0, ask, marginForOneLotBuy)

Результат:
маржа оценивается ближе к реальным условиям торговли по символу.

3) Расчёт эффективного плеча по символу.

Было:
формула с MODE_TICKVALUE, MODE_MARGINREQUIRED и MODE_POINT.

Стало:
эффективное плечо = (contractSize * ask) / marginForOneLotBuy

Результат:
метод стал более понятным и экономически обоснованным.

4) Реализован расчёт стоимости пункта.

Теперь есть:
- стоимость 1 пункта для 1.00 лота;
- стоимость 1 пункта для минимального лота.

Это как раз закрывает недоработку, указанную автором исходника.

5) Добавлено текстовое объяснение типа свопа.

Теперь пользователь видит не только число свопа, но и то, в каком режиме брокер его задаёт.

4.3. Что было улучшено по устойчивости к ошибкам

1) Проверка доступности тика.
Если терминал не смог получить MqlTick, скрипт не пытается продолжать расчёты на пустых данных.

2) Проверка корректности point и tickSize.
Это защищает от деления на ноль и бессмысленных расчётов стоимости пункта.

3) Проверка HowManyDays.
Скрипт прекращает работу, если параметр задан некорректно.

4) Проверка выбора символа.
Если SymbolSelect() неуспешен, пользователь получает понятную ошибку.

5) Корректная обработка отсутствующих торговых времён.
Вместо фиктивных дат выводится "Не задано".

5. Какие исправления были не просто полезными, а обязательными

Следующие исправления были критически необходимы:
- перевод с MQL4 API на MQL5 API;
- отказ от MarketInfo и MODE_* в файле .mq5;
- замена extern на input;
- замена start() на OnStart();
- корректная работа с историей через CopyRates();
- защита от деления на ноль;
- исправление кодировки русского текста.

Без этих изменений либо не было бы компиляции вообще, либо скрипт компилировался бы, но работал бы некорректно и вводил бы пользователя в заблуждение.

6. Что осталось концептуально спорным даже в последней версии

Хотя последняя версия уже значительно лучше, есть несколько моментов, которые можно ещё улучшить.

1) SYMBOL_BIDLOW и SYMBOL_BIDHIGH — это не всегда идеальная форма описания «минимум дня / максимум дня».
На некоторых инструментах или у некоторых брокеров поведение может отличаться от ожиданий пользователя. Иногда полезно явно указывать, что это минимум/максимум Bid текущего дня.

2) Tick Value в MT5 может зависеть от направления и модели расчёта.
Для большинства задач текущий расчёт годится, но на сложных инструментах может понадобиться дополнительная детализация.

3) Эффективное плечо по символу — это оценка, а не универсальная абсолютная величина.
Она зависит от цены, спецификации инструмента и правил брокера. Поэтому в последней версии правильно использовано слово «оценочное».

7. Итоговый вывод

Исходный All_Info_1.5.mq4 был полезным прикладным скриптом, но с рядом типичных технических недостатков:
- чрезмерное количество Alert();
- неточная трактовка некоторых торговых параметров;
- слабая обработка ошибок;
- грубый расчёт плеча;
- отсутствие расчёта стоимости пункта для минимального лота;
- зависимость от ручного обновления D1 без полноценной проверки данных.

Последняя версия All_Info_1.5_fixed_mt5_ru_utf8.mq5 является уже не просто «исправлением синтаксиса», а структурной переработкой под MQL5. В ней:
- исправлена архитектурная несовместимость с MT5;
- улучшена надёжность расчётов;
- реализована недостающая функциональность;
- устранены наиболее вводящие в заблуждение места;
- вывод стал удобнее и профессиональнее.

Если оценивать кратко:
- исходник был полезной, но сырой утилитой;
- последняя версия — существенно более корректная и пригодная для практического использования основа.

8. Краткий список исправлений «было -> стало»

- Много Alert() -> один структурированный отчёт
- MQL4 API -> MQL5 API
- extern -> input
- start() -> OnStart()
- MarketInfo/MODE_* -> SymbolInfo*/SYMBOL_*
- Грубая формула плеча -> расчёт через OrderCalcMargin()
- Нет расчёта стоимости пункта на min lot -> расчёт добавлен
- Нет проверки истории D1 -> есть CopyRates() и контроль usedBars
- Свопы как будто всегда в долларах -> добавлен тип свопа
- Нет проверки нулевых значений -> добавлены защитные условия
- Возможна порча русского текста -> сохранение в корректной Unicode-кодировке

ALL Info
ALL Info
  • 2025.02.25
  • www.mql5.com
Скрипт, запрашивающий с сервера информацию о торговом инструменте
 
Vitaly Murlenko:

Поделюсь опытом.
Сейчас я написал большой индикатор на mql5 при помощи chatGPT 5.4. В него входит много всевозможных вычислений и модулей. Индикатор состоит из 12000 строк кода. И этот индикатор работает как нужно, считает все что нужно и правильно. Так-же сделал 2 нейросети, одна большая MLP, вторая трансформер, для того, чтобы обучаться на данных, которые создает индикатор. Индикатор создает таблицы по 500 торговым инструментам, всего получается он создает около 500 ГГб данных, работает это в 16 потоков. Сконвертировал две нейросети в ONNX и подключил к MT5. Индикатор генерирует строку с 3000 фичами и отправляте в нейросеть, она отвеает. Все это выводится в индикаторные буферы и работает в тестере и в реальном времени. 

Сначал индикато работал медленно, но я оптимизировал его скорость в 200 раз при помощи того-же chatGPT 5.4. Нейросети обучаются неделю на видеокартах, нчего не падает.

До этого у меня весь этот сервис был по частям создан на python и тоже работал, но в десятки раз медленне медленнее, чем на MT5

При этом я вообще не умею кодить. Если бы я делал эту работу на фрилансе, то исходя из моего опыта, ее было бы сделать невозможно. А при помощи chatGPT сделал. Да, были трудности, но я их решил. 

Поэтому ответ на вопрос насколько хорош ИИ в кодинге у меня есть. Он не просто лучше 90% фрилансеров, он даже лучше некоторых кодеров в компаниях. При этом слабыые места у него есть и много, но сделать большую работу реально с нулевым знанием языков программирования.

Но в опросе нет chatGPT 5.4, там только chatGPT 4, а он заметно хуже на MQL5 кодит. Даже пятая версия кодит хуже, чем 5.4

 
Lilita Bogachkova #:
Автор обсуждения не указал в широком меню вариантов ИИ, модель которую я использую, поэтому я не могу ответить.
Но чтобы дать автору ответ о некоторых возможностях ИИ, я беру опубликованный им код https://www.mql5.com/ru/code/56429 и прошу ИИ проанализировать и адаптировать его для языка MQL5.
Я не несу ответственности за предложенное решение на основе ИИ; если кому-то интересно, исходный код All_Info_1.5_fixed_mt5_ru_utf8.mq5 прилагается. 

Анализ исходного кода All_Info_1.5.mq4 и последней версии All_Info_1.5_fixed_mt5_ru_utf8.mq5

...

Ну и к чему это было делать? Вы получили полный хлам, засоряющий обзор графика и не прибирающий за собой. Возьмите нормальный - к посту приложен.
В исходном MQ4-файле была своя логика, которую Ваш ИИ её не увидел.
Ей Богу, лучше бы Вы сделали этот скрипт самостоятельно, своими руками - пользы больше было бы.

P.S.
Скоро будет 20 лет, как был написан мною тот самый mq4 скрипт. Это инструмент. И как всякий другой он требует того, чтоб его применяли с умом. Ну например, скажите мне, какой идиот будет ставить число дней для вычисления среднестатистического движения равным нулю или менее? Нет таких? Тогда зачем в коде проверка на ввод положительного значения. Есть такие? Ну дык туда им и дорога :)))

Файлы:
 
Vitaly Murlenko #:

Ну и к чему это было делать? Вы получили полный хлам, засоряющий обзор графика и не прибирающий за собой. Возьмите нормальный - к посту приложен.
В исходном MQ4-файле была своя логика, которую Ваш ИИ её не увидел.
Ей Богу, лучше бы Вы сделали этот скрипт самостоятельно, своими руками - пользы больше было бы.

P.S.
Скоро будет 20 лет, как был написан мною тот самый mq4 скрипт. Это инструмент. И как всякий другой он требует того, чтоб его применяли с умом. Ну например, скажите мне, какой идиот будет ставить число дней для вычисления среднестатистического движения равным нулю или менее? Нет таких? Тогда зачем в коде проверка на ввод положительного значения. Есть такие? Ну дык туда им и дорога :)))

Это была всего лишь демонстрация искусственного интеллекта, я не претендую на поиск истины или на то, чтобы судить о том, кто прав. Задание было примитивным: в первом пункте — анализ, во втором — исправление, в третьем — преобразование в MQL5, поскольку у меня нет терминала MQL4. В задании не было ничего, что я бы попросила изменить или улучшить.
 

QWEEN не помню что-бы должное сделал, смотрю идеи других для оптимального кода

DEEPSEK уже лучше,

Sonnet реально продвинулся


не буду искать, соннет по запросу создала не только ответ, а на удивление еще и можно было двигать графически.

вопрос был показать как работает функция begin




модератор который забанил, ты казлина.

администрация, обратите внимание на этого мудака