Roman.: ERR_INVALID_TRADE_VOLUME 131 Неправильный объем - познакомьтесь с этой ф-ей и выставляйте объем "правильно" в соответствии с Вашим типом счета, например на счетах типа "микро" нач. объем, как правило составляет 0,01 лот, на счетах типа "классик" = 0,1 лота... Вбейте значение постоянное равное 0,1 лот в ф-ию открытия ордеров и проверьте...
советник торгует лотом определёным % из еквит, то есть я могу вводить только процент, например 10, 5, нету опций вносить лот 0,1 или 0,01. Такая проблема возникла только у 4 значного брокера.
Почему этот алерт выскакивает? Раньше много сил потратил, чтобы выяснить, что при сравнении цифры с дробной частью нужно нормализовать функцией NormalizeDouble(). Но вот сегодня решил ради прикола попрововать, и вот те на, алерт выскакивает! Что за глюки? Или не глюки?
ScioMe: Почему этот алерт выскакивает? Раньше много сил потратил, чтобы выяснить, что при сравнении цифры с дробной частью нужно нормализовать функцией NormalizeDouble(). Но вот сегодня решил ради прикола попрововать, и вот те на, алерт выскакивает! Что за глюки? Или не глюки?
Какие тут глюки? Эти константы равны. Условие выполняется.
MeTrade: советник торгует лотом определёным % из еквит, то есть я могу вводить только процент, например 10, 5, нету опций вносить лот 0,1 или 0,01. Такая проблема возникла только у 4 значного брокера.
"...я могу вводить только процент, например 10, 5" - значит у Вас расчет далее идет без нормализации объема перед открытием ордера, т.е. в конечном итоге эти Ваши 10 или 5 процентов выливаются в 0,123 или 1,548 каких-нибудь лотов, что приводит к ошибке № 131, правьте ф-ию расчета лотов или обращайтесь к телепатам, в связи с отсутствием достаточного количества "входных" (исходных) данных по данному вопросу...
ScioMe: Почему этот алерт выскакивает? Раньше много сил потратил, чтобы выяснить, что при сравнении цифры с дробной частью нужно нормализовать функцией NormalizeDouble(). Но вот сегодня решил ради прикола попрововать, и вот те на, алерт выскакивает! Что за глюки? Или не глюки?
1). Компилятор может это условие (оператор if) просто проигнорировать.
2). Если всё же компилятор не проигнорировал это условие, то каждое из чисел он запишет в память, выделив для каждого числа 8 бит. Сравнивает он числа, не как Мы - глазами, а побитово. Числа в памяти одинаковые и данное условие выполнится.
Я очень удивлён был Вашему вопросу, так как не могу понять как можно два эти числа (две записи) воспринять не равными??
по вашему замечанию, попробовал на 4х значном терминале с фиксированым спредом, всё ок. Вот только другая проблема появилась, выдаёт ошибку номер 131, что не случалось на 5х значном терминале.
MeTrade: по вашему замечанию, попробовал на 4х значном терминале с фиксированым спредом, всё ок. Вот только другая проблема появилась, выдаёт ошибку номер 131, что не случалось на 5х значном терминале.
А Мне нужно сидеть и лишь догадываться! :))) Уверен, Вы решите и остальные проблемы.
подскажите пожалуйста как правильно сделать. у меня сложная функция расчета ММ и в одной части при расчете лота функция возвращает например что максимальный лот возможный сейчас это 0.18 а на счете возможно открыть либо 0.1, 0.2, 0.3 то есть шаг 0.1
если я нормализую лот он округляется до 0.2 и ордер уже не допускается хотя макс. допустимый это 0.18 - вопрос, как правильно округлять в меньшую сторону или правильно нормализовать лот?
""""... Я очень удивлён был Вашему вопросу, так как не могу понять как можно два эти числа (две записи) воспринять не равными??""""
Некоторое время назад мучался над проблемой. Мозги чуть не сломал! Проблема была вот в чем: нужно было по условию равенства в if () совершить операцию. Сравнивались вещественные числа. Все никак не мог вывести алерт, думал, что за чертовщина??? Вот же числа, невооруженным глазом видно, что равны! А терминал упорно не выводит. В конце-концов заподозрил, что дело тут неладно, а что, понять не могу. Нужна была помощь mql4-сообщества. Задал тут вопрос, спасибо, знатоки (кажется, Roman и ещё добрые люди) ответили, что при сравнении вещественных чисел нужно их нормализовать функцией NormalizeDouble(). Помогло. Но вот сегодня попробовал, и что же? Спокойно сравниваются без нормализации. Всё-таки пришел к выводу, что иногда они сравниваются, иногда не сравниваются, так что для надежности их лучше нормализовать.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
ERR_INVALID_TRADE_VOLUME 131 Неправильный объем - познакомьтесь с этой ф-ей и выставляйте объем "правильно" в соответствии с Вашим типом счета, например на счетах типа "микро" нач. объем, как правило составляет 0,01 лот, на счетах типа "классик" = 0,1 лота... Вбейте значение постоянное равное 0,1 лот в ф-ию открытия ордеров и проверьте...
Тестировали в рабочие дни? Спред плавающий?
Почему этот алерт выскакивает? Раньше много сил потратил, чтобы выяснить, что при сравнении цифры с дробной частью нужно нормализовать функцией NormalizeDouble(). Но вот сегодня решил ради прикола попрововать, и вот те на, алерт выскакивает! Что за глюки? Или не глюки?
советник торгует лотом определёным % из еквит, то есть я могу вводить только процент, например 10, 5, нету опций вносить лот 0,1 или 0,01. Такая проблема возникла только у 4 значного брокера.
Почему этот алерт выскакивает? Раньше много сил потратил, чтобы выяснить, что при сравнении цифры с дробной частью нужно нормализовать функцией NormalizeDouble(). Но вот сегодня решил ради прикола попрововать, и вот те на, алерт выскакивает! Что за глюки? Или не глюки?
1). Компилятор может это условие (оператор if) просто проигнорировать.
2). Если всё же компилятор не проигнорировал это условие, то каждое из чисел он запишет в память, выделив для каждого числа 8 бит. Сравнивает он числа, не как Мы - глазами, а побитово. Числа в памяти одинаковые и данное условие выполнится.
Я очень удивлён был Вашему вопросу, так как не могу понять как можно два эти числа (две записи) воспринять не равными??
Вы не ответили Мне на вопрос про спред.
по вашему замечанию, попробовал на 4х значном терминале с фиксированым спредом, всё ок. Вот только другая проблема появилась, выдаёт ошибку номер 131, что не случалось на 5х значном терминале.
подскажите пожалуйста как правильно сделать. у меня сложная функция расчета ММ и в одной части при расчете лота функция возвращает например что максимальный лот возможный сейчас это 0.18 а на счете возможно открыть либо 0.1, 0.2, 0.3 то есть шаг 0.1
если я нормализую лот он округляется до 0.2 и ордер уже не допускается хотя макс. допустимый это 0.18 - вопрос, как правильно округлять в меньшую сторону или правильно нормализовать лот?
""""...
Я очень удивлён был Вашему вопросу, так как не могу понять как можно два эти числа (две записи) воспринять не равными??""""