Ошибки, баги, вопросы - страница 2101
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Здравствуйте! Начал изучать MQL5 с https://www.mql5.com/ru/articles/100. Запустил код, получил ошибку 4756, посмотрел в документации - легче не стало. Ладно, подумал, что начну с простого (Alert/Print...). Одна из важнейших функций это OrderSend. Начал искать по форуму\документации как использовать OrderSend. Наткнулся на эту статью https://www.mql5.com/ru/docs/constants/tradingconstants/enum_trade_request_actions, там увидел код на открытие позиции Buy. Получил ошибку 4756 и retcode 10030. 10030 - понял, что это свойство OrderSend, но не понял как нужно использовать это свойство (смотрел чужой код), а самое главное для чего нужно. Тогда открыл https://www.mql5.com/ru/docs/trading/ordersend, скопировал код, запустил, все отлично, заработало.
Но так и не понял, почему появляется ошибка 4756 и как от нее нужно избавляться, а также 10030.
Посмотрел код между
и этим
Они по-моему практически идентичны, не вижу тех мест, в которых появляются эти ошибки (4756 и 10030). Ткните пальцем и объясните пожалуйста
Instant Execution
Торговый ордер на открытие позиции в режиме Instant Execution (режим торговли по потоковым ценам). Требуется указание 9 полей:
Можно также задать значения полей magic и comment.
Market Execution
Торговый ордер на открытие позиции в режиме Market Execution (режим исполнения торговых приказов по рынку). Требуется указание 5 полей:
Можно также задать значения полей magic и comment.
что за обновление прилетело, 1736, что в нем есть, где почитать?
Предлагаю дать возможность определять программно какой буфер индикатора рисует на графике.
Предположим трейдер запустил свои индикаторы, мы не знаем сколько используется буферов для расчета а сколько для отрисовки индикатора на графике.
Обратившись к пользовательским индикаторам через
int ChartIndicatorGet(
long chart_id, // идентификатор графика
int sub_window // номер подокна
const string indicator_shortname // короткое имя индикатора
);
Мы так же могли бы запросить массив рисующих буферов
int ChartIndicatorGet(
long chart_id, // идентификатор графика
int sub_window // номер подокна
const string indicator_shortname // короткое имя индикатора
int & IndicatorVisualBuffer[] // номера рисующих буферов... );
Это расширит возможность по работе с неизвестными индикаторами установленными на графике..
Предлагаю дать возможность определять программно какой буфер индикатора рисует на графике.
Предположим трейдер запустил свои индикаторы, мы не знаем сколько используется буферов для расчета а сколько для отрисовки индикатора на графике.
Обратившись к индикатору через
int ChartIndicatorGet(
long chart_id, // идентификатор графика
int sub_window // номер подокна
const string indicator_shortname // короткое имя индикатора
);
Мы так же могли бы запросить масси рисующих буферов
int ChartIndicatorGet(
long chart_id, // идентификатор графика
int sub_window // номер подокна
const string indicator_shortname // короткое имя индикатора
int & IndicatorVisualBuffer[] // номера рисующих буферов... );
Это расширит возможность по работе с неизвестными индикаторами установленными на графике..
А что возвращает
и какой прок будет от добавления? Вы предлагаете добавить входящий параметр и получить в ответ тот-же самый хендл индикатора...
И если не затруднит, для каких целей появилась такая необходимость? Вопрос без иронии. Ведь если что-то предлагается, то надо, на мой взгляд, привести убедительные доводы в необходимости предложенного.
А что возвращает
и какой прок будет от добавления? Вы предлагаете добавить входящий параметр и получить в ответ тот-же самый хендл индикатора...
И если не затруднит, для каких целей появилась такая необходимость? Вопрос без иронии. Ведь если что-то предлагается, то надо, на мой взгляд, привести убедительные доводы в необходимости предложенного.
Пользователь ставит любой индикатор.
Советник автоматически его находит и для получения сигнала берет данные буферов.
Что бы сейчас такое реализовать надо брать iCustom и если список параметров мы еще как то можем прописать то вот с буферами проблема....
Можно программно серез Copy посчитать количество буферов, но вот понять какой из них рисует программно не возможно ...
Пользователь ставит любой индикатор.
Советник автоматически его находит и для получения сигнала берет данные буферов.
Что бы сейчас такое реализовать надо брать iCustom и если список параметров мы еще как то можем прописать то вот с буферами проблема....
Можно программно серез Copy посчитать количество буферов, но вот понять какой из них рисует программно не возможно ...
Почему невозможно? Разве буфер INDICATOR_CALCULATIONS можно достать через iCustom()?
Вопрос интересный, но не в этой теме его обсуждать. Лично у меня есть сомнения в том что это может как-то улучшить или облегчить работу программиста. Слишком разные индикаторы существуют и слишком разные условия их применения. Дальше придётся просить чтобы была возможность определять тип графического построения и дальше ещё чего-то и как снежный ком будут нарастать хотелки.
Почему невозможно? Разве буфер INDICATOR_CALCULATIONS можно достать через iCustom()?
Вопрос интересный, но не в этой теме его обсуждать. Лично у меня есть сомнения в том что это может как-то улучшить или облегчить работу программиста. Слишком разные индикаторы существуют и слишком разные условия их применения. Дальше придётся просить чтобы была возможность определять тип графического построения и дальше ещё чего-то и как снежный ком будут нарастать хотелки.
Теоретически то что закладывается в индикатор по умолчанию, я сейчас не говорю о коде программиста, должно быть доступно из вне ... Буферы их количество тип построения, цвет, и другое стандартное...
Вот с такой проблемой столкнулся:
Решил использовать в качестве magic остаток от деления идентификатора чарта на 1000 или 10000, в общем-то не важно.
Но почему-то при разных ChartID() остаток от деления вдруг получается одинаковый. Вопрос: почему?
Проверочный скрипт
Результат
Ожидалось увидеть 74907 и 74908 соответственно, ведь остаток от деления именно такой должен быть.
И ещё хотелось-бы услышать ответ на этот вопрос
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Ошибки, баги, вопросы
Alexey Viktorov, 2018.01.09 14:21
В тестере МТ5 объект "Поле ввода" OBJ_EDIT не позволяет редактировать значение в нём находящееся. Это так задумано или это баг?
В терминалах и тестере МТ4 редактируется, а вот в тестере МТ5 не хочет, вообще пропадает значение введённое в него программно при создании объекта.
Но почему-то при разных ChartID() остаток от деления вдруг получается одинаковый. Вопрос: почему?
Потому что входные fmod - double. double не может хранить огромное количество целых чисел. Например, Ваш случай:
Делайте так
На примере float можно быстро понять особенность double
Результат
ЗЫ double не теряет инфу всего int-диапазона, с long уже не так.
Потому что входные fmod - double. double не может хранить огромное количество целых чисел. Например, Ваш случай:
Делайте так
Конечно сейчас проверю предложенный вариант, но у меня был и такой проверочный код
результат
Это говорит о том, что усечения значения не должно происходить.
Но вот проверил такой вариант, чуток изменив предложенный
и получил ожидаемый вариант
Появляется другой вопрос,
Если MathMod равно как и fmod возвращает вещественный остаток от деления двух чисел. И % согласно документации
Остаток от деления minutes = time % 60;
то почему разница?