Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1876
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Возвращаясь к StringToEnum, нашел относительно универсальное решение для случаев, когда перечисления пронумерованы последовательно (1, 2, 3, ...).
Для явной нумерации последовательностей большими значениями работать не будет (например, ENUM_TIMEFRAMES). Но, если вы используете свои собственные enum без явной нумерации (ну или, хотя бы, последовательной) - решение подойдет.
Для всех остальных случаев нужны велосипеды, типа, статических массивов наименований каждого из возможных значений и поиск по строке в этом массиве.
Для MQL функция будет работать некорректно
https://www.mql5.com/ru/docs/strings/stringcompare
Параметры
string1
[in] Первая строка.
string2
[in] Вторая строка.
case_sensitive=true
[in] Режим учета регистра букв. Если значения равно true, то "A">"a". Если значение равно false, то "A"="a". По умолчанию значение параметра равно true.
Если в enum будет две константы, например ENUM1 и enum1, то при i_str: "enum1" функция может вернуть значение константы ENUM1. И вообще зачем StringCompare ? Если можно сделать следующим образом:
Всем Добрый день.
Переписываю советника с MQL4 на MQL5. Не понимаю как получить причину закрытия позиции по SL.
Это нужно для того чтобы принять решение что делать дальше.
В терминале MT5 в окне истории можно выбирать сделку,ордер или позиция.
Вам нужно в торговой истории искать СДЕЛКУ у которой DEAL_REASON равен DEAL_REASON_SL.
Добавлено: можно всё упростить - достаточно в OnTradeTransaction отлавливать транзакцию TRADE_TRANSACTION_DEAL_ADD и обращаясь к торговой истории смотреть СДЕЛКУ, которая породила эту транзакцию. А затем тот же рецепт: ... DEAL_REASON равен DEAL_REASON_SL
Для MQL функция будет работать некорректно
https://www.mql5.com/ru/docs/strings/stringcompare
Если в enum будет две константы, например ENUM1 и enum1, то при i_str: "enum1" функция может вернуть значение константы ENUM1. И вообще зачем StringCompare ? Если можно сделать следующим образом:
И более быстрый вариант:
А зачем всё это надо? Вы хотите заменить числовые значения ENUM_TIMEFRAMES на свои? Или что?
Ну конкретно сейчас, мне нужна запись настроек индикаторов и параметров советника в БД. При этом хотелось бы иметь:
1. человекочитаемые записи
2. машиночитаемые записи
3. устойчивость к добавлению в свои кастомные enum новых значений, и не обязательно в конец.
С записью проблем нет - EnumToString, а вот обратную функцию разработчики не сделали, в отличии от всех других типов.
И более быстрый вариант:
Про сравнение с игнорированием регистра согласен, это я для себя писал более обобщенный велосипед, для своих собственных enum, где нижний регистр не использую.
А вот если для ENUM_TIMEFRAMES запустить вот этот вариант:
можно успеть попить кофе, пока он подберет, например, для PERIOD_MN1 :)Получить цены с прямых на каждом баре и сравнить или разницу найти, в местах смены знаков разниц пересечения) Там кстати может равенств и не быть на баре.
Помогите пожалуйста, провожу две линии Ганна и они пересекаются в определенной точке, мне нужно узнать координаты точки пересечения этих линий.
Про сравнение с игнорированием регистра согласен, это я для себя писал более обобщенный велосипед, для своих собственных enum, где нижний регистр не использую.
А вот если для ENUM_TIMEFRAMES запустить вот этот вариант:
можно успеть попить кофе, пока он подберет, например, для PERIOD_MN1 :)Ну в ENUM_TIMEFRAMES минимальное и максимальное значение известны. Поэтому их можно задать явно.
С остальными enum, достаточно знать их примерный диапазон значений. Если в объявлении enum константы не заданы, то значения там обычно идут от 0. i_max_enum можно задать любым двузначным или трёхзначным числом: 50, 100, 255.
Ну конкретно сейчас, мне нужна запись настроек индикаторов и параметров советника в БД. При этом хотелось бы иметь:
1. человекочитаемые записи
2. машиночитаемые записи
3. устойчивость к добавлению в свои кастомные enum новых значений, и не обязательно в конец.
С записью проблем нет - EnumToString, а вот обратную функцию разработчики не сделали, в отличии от всех других типов.
А вы когда ни будь пробовали распечатать перечисление?
как вы думаете что будет напечатано?
А вот создать перечисление программно… это, да. Было-бы интересно.
Ну почему нельзя input-парамерты перебрать в цикле? За что вы нас так наказываете???