[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 275
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Вопрос можно.
как получить число без минуса, если окажется что Open[1] < Close[1] и при вычитании Open[1]-Close[1] я получу значение с минусом, как сделать что бы было всегда положительное значение, мне нужно высчитать расстояние между Open и Close может есть другой способ?
Спасибо.
Вопрос можно.
как получить число без минуса, если окажется что Open[1] < Close[1] и при вычитании Open[1]-Close[1] я получу значение с минусом, как сделать что бы было всегда положительное значение, мне нужно высчитать расстояние между Open и Close может есть другой способ?
Спасибо.
https://docs.mql4.com/ru/math/MathAbs
https://docs.mql4.com/ru/math/MathAbs
;) Спасибо!
Добрый день!
При написании советника для МТ4 – возникла необходимость определять программно (т.е в коде самого советника) был ли открыт хотя бы один ордер этого советника – или нет. Подскажите, есть ли такая функция? Возможно, если есть она выглядела бы как-то так:
Bool (был ли открыт ордер советника с этим магическим номером)
{ответ = True/False}
?
Спецы - помогите пожалуйста, – сами уже голову сломали
P.S. – пробовали вариант с учетом номеров ордеров – не прокатило
Добрый день!
При написании советника для МТ4 – возникла необходимость определять программно (т.е в коде самого советника) был ли открыт хотя бы один ордер этого советника – или нет. Подскажите, есть ли такая функция?
Вот эта ф-я подойдет ?
Пример использования : Саму функцию ставим в самом конце кода (вне ф-и СТАРТ), а при открытии позиции проверяем :
Если нужны не позиции а отложенные ордера, то можно использовать ф-ю
Функция NumberOfOrders().
Эта функция возвращает количество ордеров . Ограничить перечень проверяемых ордеров можно параметрами функции:
sy - Наименование инструмента. Если задать этот параметр, то функция проверит ордера только заданного инструмента. NULL означает текущий инструмент, а "" (по умолчанию) - любой инструмент.
op - Тип отложенного ордера. Допустимые значения: OP_BUYLIMIT, OP_BUYSTOP, OP_SELLLIMIT, OP_SELLSTOP или -1. Значение по умолчанию -1 - означает любой ордер.
mn - Идентификатор ордера (MagicNumber). Значение по умолчанию -1 - любой магик.
https://www.mql5.com/ru/forum/107476/page12
Объясните пожалуйста, что дают файлы:
Если можно, то как-нибудь по простому.
Спасибо.
Объясните пожалуйста, что дают файлы:
Если можно, то как-нибудь по простому.
Спасибо.
это так называемые "файлы библиотек". в этих файлах хранятся часто используемые функции. используются для того, чтобы не загружать исходник. если файл библиотек "объявлен", то функциями из объявленного файла можно пользоваться как если бы они были включены в исходник.
Объясните пожалуйста, что дают файлы:
Если можно, то как-нибудь по простому.
Спасибо.
При использовании (вызове) функции из этих файлов (уже изначально заложенных в мт4) мы, в случае некорректоной работы советника можем в журнале видеть номер ошибки, допущенной нами в коде .
Например, вызываем ф-ю GetLastError() :
В данном случае, если нами допущена в коде ошибка или мы неправильно задаем внешние параметры, - в журнале будет указываться номер этой ошибки.
Например, - 130.
А расшифровку номера можно глянуть на страничке -https://book.mql4.com/ru/appendix/errors
И нам уже не нужно будет перелопачивать весь код, т.к. мы по этому номеру уже знаем - где именно допущена ошибка !
Вот эта ф-я подойдет ?
Пример использования : Саму функцию ставим в самом конце кода (вне ф-и СТАРТ), а при открытии позиции проверяем :
Если нужны не позиции а отложенные ордера, то можно использовать ф-ю
Функция NumberOfOrders().
Эта функция возвращает количество ордеров . Ограничить перечень проверяемых ордеров можно параметрами функции:
sy - Наименование инструмента. Если задать этот параметр, то функция проверит ордера только заданного инструмента. NULL означает текущий инструмент, а "" (по умолчанию) - любой инструмент.
op - Тип отложенного ордера. Допустимые значения: OP_BUYLIMIT, OP_BUYSTOP, OP_SELLLIMIT, OP_SELLSTOP или -1. Значение по умолчанию -1 - означает любой ордер.
mn - Идентификатор ордера (MagicNumber). Значение по умолчанию -1 - любой магик.
https://www.mql5.com/ru/forum/107476/page12
Спасибо большое за подсказку, попробовали так сделать, но почему то не срабатывает, посмотрите пожалуйста может где-то в коде ошибка:
Идея в том, что если если советник еще не открывал никаких ордеров (их нет ни открытых ни закрытых) – то в условии на покупку срабатывает только первое условие. А если советник уже открывал ордера в прошлом – то при открытии ордера должны срабатывать первое + второе условия.
Посмотрела по указанный Вами ссылке, может быть больше подходит функция ExistOrders(); ?
(но если честно не удалось ее поставить, видимо, навыка пока не хватает)
Вы неправильно вызвали функцию .
У вас она вызвана вот так : if (NumberOfPositions(NULL,Magic)> 1)
А надо вот так :
Почувствуйте разницу (вы пропустили "-1") ! и ИСПРАВьТЕ ВАШ КОД.
А для контроля можно вывести на график коммент. Например, вот такой (В самом начале функцмм СТАРТ)
Что же касается вашего второго условия, то я бы ("не мудрствуя лукаво") задал бы для открытия позиций по второму условию другой магик и отдельную функцию Open_Buy_2() !Тогда код второго условия выглядел бы так :