Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 280
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
*returntick тоже не уничтожается. Меня просто выхлоп торгового терминала запутал. Пишет про неочищенную память.
Приведите весь код, где вы используете возвращаемый функцией указатель и момент, когда вы уничтожаете указатель. Так сложно Вам помогать.
Здравствуйте. Помогите пожалуйста подправить код. Надо чтобы советник не открывал серию ордеров, а только один ордер по первому событию.
Сейчас это работает так: когда ССI пересекает линию 200 сверху вниз - открывается БАЙ, потом если ССI пересекает 200 сверху вниз ещё раз открывается ещё один БАЙ и т.д, и т.д, пока ССI не пересечёт линию -200 снизу вверх, тогда закрываются все БАИ и открывается СЕЛЛ.
Что хочу попросить: когда ССI пересекает линию 200 сверху вниз - открывается БАЙ (первый и единственный), другие БАИ не должны открываться до тех пор пока ССI не пересечёт линию -200 снизу вверх, при этом закрывается БАЙ и открывается СЕЛЛ. (Зеркально СЕЛЛ и линия -200)
Добавьте функцию проверки наличия открытых ордеров соответствующего типа. То есть если ордера есть, то функция Вам вернет истину и очередной ордер открываться не будет.
наверно не в тему..
Пожелание по МТ4
Использую много алертов, причем настроенных на определенные параметры.
Чтоб каждый раз не набирать все заново, срок жизни ставлю алерта долгий, а по мере необходимости просто "оживляю" его на новую таргет-цену.
Из-за того, что в терминале в журнале алертов нет сортировки по символу или по событию, искать каждый раз нужный алерт - целая морока.
Было бы неплохо возможность сортировки сделать, такие же, как и в закладке "торговля"
Есть функция с поинтером:
Я еще в другой функции вызываю:
А как почистить память за ней?
На delete(TickReturn); у меня ошибка operand excepted.
наверно не в тему..
Пожелание по МТ4
Использую много алертов, причем настроенных на определенные параметры.
Чтоб каждый раз не набирать все заново, срок жизни ставлю алерта долгий, а по мере необходимости просто "оживляю" его на новую таргет-цену.
Из-за того, что в терминале в журнале алертов нет сортировки по символу или по событию, искать каждый раз нужный алерт - целая морока.
Было бы неплохо возможность сортировки сделать, такие же, как и в закладке "торговля"
Терминал МТ4 больше не развивается. Только исправляются найденные баги.
Приведите весь код, где вы используете возвращаемый функцией указатель и момент, когда вы уничтожаете указатель. Так сложно Вам помогать.
Память действительно течёт.
Память действительно течёт.
void OnTick() { int period = 15; int timeis = returntick(period, 1).curtime; Print("timeis= ", TimeToStr(timeis,TIME_SECONDS)); Вот здесь пытаюсь уничтожить указатель. }
Как-то не ясно что именно можно здесь уничтожать. Не удивительно что память течет. Что такое указатель? Указатель - это ссылка на адрес памяти, где хранится созданная динамическая переменная. По сути вы вызываете процедуру получения указателя на переменную класса, в процедуре объект класса создается, помещается в память, далее указатель возвращается в функцию получения тиков и.... при выходе из функции уничтожается. Обращаю внимание на то, что уничтожается указатель, а память при этом не очищается! И с каждым новым тиком памяти сжирается все больше и больше! Чтобы обойти этот момент в вашей редакции кода вам прежде всего нужно убрать сокращение и поместить указатель в другую переменную: TickReturn* temptick = returntick(period, 1);// Получаем указатель и помещаем его в переменную int timeis = temptick.curtime; // Получаем нужное значение из объекта по указателю ...... delete temptick; // Уничтожаем указатель и очищаем память
Ну и перед уничтожением указателя было бы правильно проверить его корректность, чтобы избежать ошибки удаления.
Ну а в целом в вашем вопросе я бы не стал заморачиваться с указателями и с классом в частности, ведь по сути задача намного проще и нет необходимости использовать именно класс. Создайте структуру с нужными полями, объявите глобальную переменную с типом этой структуры, сделайте функцию обновления информации в этой структуре на каждом тике и собирайте из нее то, что требуется, так как переменная будет глобальной, то не нужно ее гонять по функциям и указатели не потребуются.
1.Средствами mql4 возможно ли реализовать отключение других советников?
2. Проверку есть ли на данном ChartId запущенный эксперт?
1.Средствами mql4 возможно ли реализовать отключение других советников?
2. Проверку есть ли на данном ChartId запущенный эксперт?
Можно запрещать торговать внутри кода советника, а переключатель сделать во внешнем файле, тогда другой советник сможет сообщить любому советнику о том, что торговать более не надо.
Можно запрещать торговать внутри кода советника, а переключатель сделать во внешнем файле, тогда другой советник сможет сообщить любому советнику о том, что торговать более не надо.
Идея именно в том, чтоб по условию советник А, отключал советника B.