[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 276
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
При использовании (вызове) функции из этих файлов (уже изначально заложенных в мт4) мы, в случае некорректоной работы советника можем в журнале видеть номер ошибки, допущенной нами в коде .
Например, вызываем ф-ю GetLastError() :
В данном случае, если нами допущена в коде ошибка или мы неправильно задаем внешние параметры, - в журнале будет указываться номер этой ошибки.
Например, - 130.
А расшифровку номера можно глянуть на страничке -https://book.mql4.com/ru/appendix/errors
И нам уже не нужно будет перелопачивать весь код, т.к. мы по этому номеру уже знаем - где именно допущена ошибка !
Немного подправлю: функция GetLastError вызывается и без заголовочного файла, а вот для получения описания ошибки без ползания по сайтам уже нужно подключать библиотеку:
Вы неправильно вызвали функцию .
У вас она вызвана вот так : if (NumberOfPositions(NULL,Magic)> 1)
А надо вот так :
Почувствуйте разницу (вы пропустили "-1") ! и ИСПРАВьТЕ ВАШ КОД.
А для контроля можно вывести на график коммент. Например, вот такой (В самом начале функцмм СТАРТ)
Что же касается вашего второго условия, то я бы ("не мудрствуя лукаво") задал бы для открытия позиций по второму условию другой магик и отдельную функцию Open_Buy_2() !Тогда код второго условия выглядел бы так :
rid,
Спасибо, ошибку поправила, так же стало понятно, почему не срабатывает второе условие, наверно я задачу объяснила не корректно:
Нужно что бы советник отличал, были ли в принципе открыты им ордера или нет, даже если эти ордера давно закрыты . NumberOfPositions работает, но он считает количество текущих открытых позиций, если позиция закрыта – то значение соответственно нуль. (поэтому и не срабатывает)
В коде моего советника есть скрипт, который открывает каждую следующие позицию с учетом данных прошлой позиции, а если прошлых позиций еще не было, то самый первый ордер должен открываться без этого условия (иначе советник просто не запускается). Что бы их разделить, получается, что должна быть функция, понимающая, был ли отрыт хотя бы один ордер этого советника или нет (даже если ордер был потом закрыт). Если ордеров еще не было (начало работы) – то первый ордер открывается без учета второго условия, а все последующие ордера – открываются с учетом второго условия, т.е. по данным прошлых ордеров.
Можно ли так настроить функцию?
Скажите, пожалуйста, что показывает функция iTime.
Что это за абра-кадабра из 10 цифр? Секунды?
Как бы их перевести в год-месяц-день-час-минута.
Понятно. Определить, были ли позиции на истории можно вот так:
Но тогда ваш код будет работать только в тестере. Т.к. вам иначе в онлайне придется при каждом включении советника менять магик.
Видимо, вам нужно задать время, за которое берется история счета.
Т.е. когда была открыта/закрыта последняя сделка с заданным магиком? Полгода назад или сутки назад?
Есть функции, кот . возвращают номер бара (считая от текущего в глубь истории) открытия или закрытия последней сделки.
Для примера. Я использовал в своем коде эти функции так:
Или вот так:
Хмм.мучаюсь с той же простой проблемой..открывает море позиций а нужно всего 1 не более и когда закрывается buy и наступает сигнал открывать селл... Большая просьба подскажи и исправь что не так.в коде ниже.. И где нужно прописать магик? Сделай если тебе не трудно тупой тестовый пример Чтобы при пересечении вверх бай(не более 1 ордера) и вниз селл тоже не более 1. Я думаю это сразу решит вопросы многих новичков. Заранее спасибо
Ещё один дурацкий вопрос:
- Как обьявить массив, число элементов которого задаётся внешней переменной.
Вот так примерно -
Ещё один дурацкий вопрос:
- Как обьявить массив, число элементов которого задаётся внешней переменной.
https://docs.mql4.com/ru/array/ArrayResize
Хмм.мучаюсь с той же простой проблемой..открывает море позиций а нужно всего 1 не более и когда закрывается buy и наступает сигнал открывать селл... Большая просьба подскажи и исправь что не так.в коде ниже.. И где нужно прописать магик? Сделай если тебе не трудно тупой тестовый пример Чтобы при пересечении вверх бай(не более 1 ордера) и вниз селл тоже не более 1. Я думаю это сразу решит вопросы многих новичков. Заранее спасибо
Попробуй так:
(внимательнее нужно задавать значения ф-и NumberOfPositions(), ведь не зря в шапке указано:
/| Описание : | Описание : Возвращает количество позиций.
//| Параметры: |
//| sy - наименование инструмента ("" или NULL - текущий символ) |
//| op - операция ( -1 - любая позиция) |
//| mn - MagicNumber ( -1 - любой магик) |
//+----------------------------------------------------------------------------+