MetaDriver >>:
....а затем, перед использованием в программе, делим на соответствующий делитель (в данном случае 1000). Быстренько сделал второй скрипт и нагенерил этих типов...
- сколько потребовалось. Чтоб с множителями исключить ошибки сделал перегруженную функцию вида
double eFloatToString(eFloat01 a) { return (double)a/10.0; } double eFloatToString(eFloat001 a) { return (double)a/100.0; } и т.п.
Рылся на форуме, глянул этот свой пост. Обнаружил неисправленную функцию (делал промежуточный вариант для отладки, забыл поправить).
Правильно конечно же:
double eFloatToDouble(eFloat01 a) { return (double)a/10.0; } double eFloatToDouble(eFloat001 a) { return (double)a/100.0; } и т.п.
Кладу в прицеп исправленную папку Enums. Индикаторы поправлять влом. Кому надо сам легко поправит заменой.
Файлы:
enums.rar
18 kb
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Удобно после двойного щелчка на строчке с перечислимым параметром индикатора, скрипта или эксперта, выбирать нужный роликом мышки (или из выпадающего списка).
Быстро, ошибок меньше и вообще приятно. Жаль что с цифирками не так. И при перенастройках или запуске программ приходится чередовать мышиную и клавиатурную
деятельность. Мда. Вот как-то сидел курил и вдруг подумал, а нельзя ли и с цифрами извратиться да сделать что-то подобное? Задачка показалась привлекательной по результату,
но не очень-то решаемой средствами mql5. Но в следующем перекуре мысли на ту же тему стали крутиться снова. Я их не гнал, ну интересно же в самом деле...
В результете через пару дней озарило. Для целых чисел решение нашлось.
Просто объявляем перечислимый тип вида:
enum eIntTypeName { i0 = 0, // 0 i1 = 1, // 1 ... iN = N // N }:Потом вставляем везде в инпут-параметрах вместо типа int наш тип TypeName и собсно фсё.
Подумано - сделано. Писать огромные перечисления было конечно в лом, я быстренько слобал соответствующий скрипт-генератор.(см. прицеп, там всё есть.)
Проверил работоспособность на своих индюках - всё работает в соответствии с ожиданиями. Порадовался часок другой - ай да я! :) Однако последующие перекуры
омрачала нерешённость задачки для действительных чисел. Уж эта задачка выглядела как совершенно нерешаемая - перечислимый тип в принципе целый и что уж тут
поделаешь... Однако через день нашлось решение и для этой задачки, правда, чуть более сложное.
Объявляем что-то вроде:
enum eFloatTypeName { uf0 = 0, // 0.000 uf1 = 1, // 0.001 uf2 = 2, // 0.002 uf3 = 3, // 0.003 uf4 = 4, // 0.004 uf5 = 5, // 0.005 ........... };....а затем, перед использованием в программе, делим на соответствующий делитель (в данном случае 1000). Быстренько сделал второй скрипт и нагенерил этих типов...
- сколько потребовалось. Чтоб с множителями исключить ошибки сделал перегруженную функцию вида
И фсё. Задачка целиком и полностью решена. В прицепе весь набор индикаторов из папки <Indicators\Examples>, переделанные под полностью мышиную установку параметров.
Всё проверено, всё компилируется, всё работает. Эти же исходники являются примерами использования технологии, так что разжевывать особо не буду - вроде бы из текста всё понятно.
Все типы я разбил на три группы - signed, unsigned и (для целых) positive (положительные не включающие ноль). Для действительных я делать positive не стал. Пока без надобности.
При необходимости можно генерить подобным способом новые типы. Генератор прилагается. Крутите, вертите, пределывайте...
Успехов в программировании и трейдинге.