Особенности языка mql5, тонкости и приёмы работы - страница 54
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Особенности наследуемых структур
Если нужно узнать, включен ли флаг "Unlimited" в Настройки --> Графики --> Макс.баров в окне, использую такую конструкцию:
Когда не хочется, чтобы какой-то публичный метод светился (при наборе точки после названия объекта, например), оформляю этот метод в виде публичного оператора. Правда, не всегда возможно применение такого костыля.
Когда не хочется, чтобы какой-то публичный метод светился (при наборе точки после названия объекта, например), оформляю этот метод в виде публичного оператора. Правда, не всегда возможно применение такого костыля.
А в коде пример? Пожалуйста.
А в коде пример? Пожалуйста.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Особенности языка mql5, тонкости и приёмы работы
fxsaber, 2017.09.08 13:20
А это
разве не то-же самое?А это
разве не то-же самое?Нет, конечно. Полей Value1, Value2, ... много, GetValue1(), GetValue2() - аналогично. На каждом GetValue делать доп. расчеты нерационально. Даже на одном GetValue, вызванном более одного раза, расчеты ни к чему.
Не смог придумать, как суметь задавать размер поля-массива простой структуры. Поэтому раздул такой костыль
Через макросы, короче. На MQL5, наверное, больше никак. В C++ это решается нормально? Типа шаблона template <typesize S>.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Библиотеки: MT4Orders
fxsaber, 2017.09.14 08:52
На форуме еще до появления в MQL5 Reason-флагов был выложен триггер SL/TP. Его логика четко показывала, что при акцептировании SL/TP/SO уровней открытой позиции торговым сервером порождается соответствующий маркет-ордер, который находится в MT5-таблице открытых ордеров до тех пор, пока не исполнится.
Поэтому в MT5 даже на чистом MQL5 модификация/удаление таких ордеров невозможна и торговая логика в MT5 требует проверки, является ли открытый ордер фактически замороженным или нет.
...Видно, что больше четверти секунды TP-ордер висел среди открытых. Любые попытки его модификации/удаления вызывали бы ошибки.
Учитывайте данную особенность MT5.
Когда не хочется, чтобы какой-то публичный метод светился (при наборе точки после названия объекта, например), оформляю этот метод в виде публичного оператора. Правда, не всегда возможно применение такого костыля.
Да это вообще мега-костыль какой-то. Как ты потом будешь разбирать свой код, в котором понатыкано таких неинформативных операторов, непонятно что делающих.
Тут видимо ошибка в проектировании. Если класс изначально не предназначен для изменения извне, а содержит только Get-методы, то он таким и должен быть. А все модификации проводятся через наследуемые от него классы.
Был бы ещё удобен вариант с protected-наследованием, когда в базовом классе прописаны все методы, а в наследуемом ты показываешь лишь Get. И когда понадобится, приводишь к базовому. Но в Metaeditor так до сих по и не исправили баг, что все эти методы вываливаются в списке, даже если они недоступны.
На каждом GetValue делать доп. расчеты нерационально. Даже на одном GetValue, вызванном более одного раза, расчеты ни к чему
Так а что собственно мешает сделать метод Recalculate() ? Если на этом построена логика работы, т.к. сам класс не может определить, когда надо пересчитывать, значит работой класса управляет пользователь.