Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 9
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Можно написать if((b-a)*(c-a)*(d-a)>0), но не факт, что будет работать быстрее. Логическое AND и есть двоичное умножение, это всего лишь другая запись того же самого выражения, разница только в размере типов переменных. a>b - это булевая переменная, 4 байта, а b-a, если они double, то и разница будет double (8 байт), а это умножение как минимум в 2 раза дольше.
Бесценный совет.
Сейчас поясню. Можно же переписать ваше выражение как if((a>b)*(a>c)*(a>d)==1), потому что выражения в скобках принимают значения 0 или 1 (а они, в свою очередь, определены в define в прекомпиляторе как false и true).Спасибо - думаю так будет работать быстрее
Ребят, подскажите пожалуйста.
В режиме теста стратегии не могу изменить цифры в свойствах оптимизации:
Минимальный баланс 200
Максимальная прибыль 10000
и тд.
В чем проблема?
Подскажите, пожалуйста, какие значения могут возвращать init, start и deinit ? и что они означают?
По форуму пробовал искать - не нашел. В справочнике этой инфы нету. Наверное, секретная информация. : )) (эмоциональный текст удален...)
Как я догадываюсь - "0" - это все прошло успешно... Но, т.к. их тип интеджер, то, видимо, там не только 2 значения может быть...
Подскажите, пожалуйста, какие значения могут возвращать init, start и deinit ? и что они означают?
По форуму пробовал искать - не нашел. В справочнике этой инфы нету. Наверное, секретная информация. : )) (эмоциональный текст удален...)
Как я догадываюсь - "0" - это все прошло успешно... Но, т.к. их тип интеджер, то, видимо, там не только 2 значения может быть...
Совсем недавно это обсуждалось. Справка:
В MQL4 существуют 3 функции с предопределенными именами:
init() - функция, вызывающаяся в процессе инициализации модуля. В случае ее отсутствия при инициализации не вызывается никакой функции.
start() - основная функция. У экспертов вызывается после прихода очередного тика. У пользовательских индикаторов вызывается при пересчете после прикрепления индикатора к графику, при открытии клиентского терминала (если индикатор прикреплен к графику), а также после прихода очередного тика. У скриптов выполняется сразу после прикрепления к графику и выполнения инициализации. В случае отсутствия в модуле функции start() этот модуль (эксперт, скрипт или пользовательский индикатор) не может быть запущен.
deinit() - функция, вызывающаяся в процессе деинициализации модуля. В случае ее отсутствия при деинициализации не вызывается никакой функции.
Предопределенные функции могут иметь параметры. Однако при вызове этих функций клиентским терминалом никакие параметры переданы извне не будут, а будут использованы умолчательные значения.
Функции start(), init() и deinit() могут быть вызваны из любого места модуля по общим правилам, наравне с другими функциями.
Нежелательно из функции init() вызывать start() или совершать торговые операции, так как в момент инициализации модуля могут быть не готовы данные графиков, рыночные цены и т.д. Функции init() и deinit() должны максимально быстро завершать свою работу и ни в коем случае не зацикливаться в попытке начать полноценную работу раньше вызова функции start().
Хорошо, тогда попробую уточнить вопрос.
К примеру, я хочу, чтобы на стадии инициализации у меня прошла проверка каких-то параметров и в зависимости от результата: либо передавала на этап Старта, либо не передавала.
Если я правильно понял Ваш, Вадим, комментарий, то результат инициализации значения иметь не будет (в этом случае) и функция Старт будет запущена? и обойти это никак нельзя? и придется (нужно) дублировать эту проверку в старте?
тогда вам нужно самому вызвать инит из старта.
Зачем такие сложности ? Глобальные переменные еще никто не отменял...
Хорошо, тогда попробую уточнить вопрос.
К примеру, я хочу, чтобы на стадии инициализации у меня прошла проверка каких-то параметров и в зависимости от результата: либо передавала на этап Старта, либо не передавала.
Если я правильно понял Ваш, Вадим, комментарий, то результат инициализации значения иметь не будет (в этом случае) и функция Старт будет запущена? и обойти это никак нельзя? и придется (нужно) дублировать эту проверку в старте?
Рустам ответил:
тогда вам нужно самому вызвать инит из старта.
Зачем такие сложности ? Глобальные переменные еще никто не отменял...
Рустам ответил:
Объявляете на глобальном уровне переменные и инициализируете, как надо. Всем функциям одного модуля видны глобальные переменные.Да, если это только не проверка на ограничение доступа к программе, к примеру.
тогда вам нужно самому вызвать инит из старта.
Зачем такие сложности ? Глобальные переменные еще никто не отменял...
Не проще ли флагом проверять? Есс-но глобальным..
Не проще ли флагом проверять? Есс-но глобальным..
Нет, не проще. Т.к. если был отрицательный флаг (или глобальная переменная), то проверку все равно нужно запускать. И флаг и глобалька сработают лишь в положительном случае. А некоторые функции все равно нужны в Старте (хотя, тут по-разному бывает).
Как ни крути, в старте все равно запускать: либо через повтор "инита", что не менее гиморно, либо через повтор нужных функций.