Ошибки, баги, вопросы - страница 3131
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Могу ответить только за &= сразу:
Справочник MQL5 / Основы языка / Операции и выражения / Операции присваивания:по аналогии с накопительной переменной y:
Но это мой первый опыт использования &=, так что могу ошибаться.
Нет. Сперва (по задумке) в накопительную h_plus суммируются внутри for все логические условия, а получившаяся bool-сумма подставляется в if, который к внутреннему for отношения не имеет.В вашем случае это не так поскольку должны быть выполнены оба условия. А вот если поставить такое
то, да. При выполненном условии «а» второе условие проверяться не будет. За это боролись много лет, а вы теперь предлагаете вернуться в прошлый век…Хотя… в этом своём утверждении я не прав. Видимо я не совсем понял что написано тут
Багом называть не рискну. Поэтому просто скажу, что заметил одну особенность оператора if. Прозреваю, это может относиться и к другим ЯПам.
Если a окажется true, то проверка перейдёт к Array[over_index] и тут-то терминал начнёт дико бомбить по части 'array out of range', что совершенно справедливо. Если же a окажется false, до проверки условия истинности Array[over_index], а значит, и избыточности индекса дело не дойдёт, if проскочит дальше, а кодер так и не узнает, что у него в программе гуляет массив с несуществующим индексом... точнее существующим, но избыточным.
Может, это надо пофиксить, чтобы проверка на предмет 'array out of range' происходила в if до самого конца и выдавалось бы такое же сообщение? Или это сильно уронит скорость работы оператора?
Даже если в условии && и первое условие не выполнено, то второе проверяться не будет. Так-что кого ввёл в заблуждение, извиняйте…
Уже пробовал и break, и даже return сгоряча, но было только хуже. Попробую ещё упростить код и переосмыслить с break...
Вот типа того.
При масштабировании чарта движением мышей по шкале времени чарт убегает влево или вправо, в зависимости от направления движения мыши, таким образом всё нужное, что находиться в фокусе взгляда пользователя, часто просто исчезает за границами чарта. Это ужасно неудобно, так как потом приходиться искать нужное место, и это наблюдается с тех пор, как я знаком с MT.
Логично было предположить, что возможно нажатие на значок лупы отмасштабирует чарт по центру, но нет, поведение такое же, как и в случае с масштабированием мышей - чарт сдвигается влево (сжатие) или вправо (расширение).
Уважаемые разработчики! Убедительная просьба поменять поведение чарта при масштабировании, нужно оставлять центр чарта в центре.
Со мной согласны все, с кем я обсуждал данное неудобство при работе с чартом, так что имею большие шансы быть объективным по данной проблеме.
Пытался привыкнуть в течении 14 лет - не смог.
Вот типа того.
Свежая идея, попробую.
А вот касательно предыдущего варианта:
даже не пробуя уже ясно, что
идёт после суммирования, а это означает, что терминал увидит сперва предыдущую строку и уже поймёт, что есть массив с избыточным индексом и выдаст всё тот же месседж 'array out of range'. Это второе. А первое — делать вообще надобно проверку не на !h_plus, а на ArraySize(high)<=i+increment и выбегать из цикла в случае превышения индекса. Всё это я уже пытался вчера, но обломался в каких-то нюансах. Да, месседжа уже не было, но и индикатор начал городить огород.
А вот касательно предыдущего варианта:
даже не пробуя уже ясно, что
идёт после суммирования, а это означает, что терминал увидит сперва предыдущую строку и уже поймёт, что есть массив с избыточным индексом и выдаст всё тот же месседж 'array out of range'. Это второе. А первое — делать вообще надобно проверку не на !h_plus, а на ArraySize(high)<=i+increment и выбегать из цикла в случае превышения индекса. Всё это я уже пытался вчера, но обломался в каких-то нюансах. Да, месседжа уже не было, но и индикатор начал городить огород.
Так тут беда в
i<rates_total-3
Я ж там не зря написал А раннее вышибание из цикла - именно для имитации вычисления if()Багом называть не рискну. Поэтому просто скажу, что заметил одну особенность оператора if. Прозреваю, это может относиться и к другим ЯПам.
Если a окажется true, то проверка перейдёт к Array[over_index] и тут-то терминал начнёт дико бомбить по части 'array out of range', что совершенно справедливо. Если же a окажется false, до проверки условия истинности Array[over_index], а значит, и избыточности индекса дело не дойдёт, if проскочит дальше, а кодер так и не узнает, что у него в программе гуляет массив с несуществующим индексом... точнее существующим, но избыточным.
Может, это надо пофиксить, чтобы проверка на предмет 'array out of range' происходила в if до самого конца и выдавалось бы такое же сообщение? Или это сильно уронит скорость работы оператора?
если переменная a у вас false то управление передается дальше и не затрагивает массив и код в скобках после if, потому как у вас
if(a && Array[over_index]>val) {...}
управление передастся в правую часть условия, только если левая (a) будет true
если, например, вы сделаете
if(check(over_index) && Array[over_index]>val) {...}
где функция check проверяет индекс на вхождение в пределы массива Array, то никакого "array out of range" у вас никогда не будет. так можно сделать проверку индекса массива и обращение к нему в одном if. но чтобы управление передавалось во вторую часть if с оператором &&, если первая false, вряд ли подобное возможно в любом из существующих языков программирования...
Есть одна проблема, появляется хаотично и изредка.
Появляется при работе в тестере с несколькими валютами.
В каждом цикле запрашиваю актуальные цены по символам. И как будто по если по каким то причинам не получает тестер котировки по определенному символу, то используются котировки ранее полученные с другого символа.
У меня должна открыться позиция если цена станет больше определенной. Но используя не верные данные с другого символа происходит открытие.
Символ EURCAD если цена будет больше 1.45117 то открываем. 1.74425>1.45117? да больше, но это цена другого символа.
Из 500 ордеров обнаружено 7 ошибочных.
Есть одна проблема, появляется хаотично и изредка.
Появляется при работе в тестере с несколькими валютами.
В каждом цикле запрашиваю актуальные цены по символам. И как будто по если по каким то причинам не получает тестер котировки по определенному символу, то используются котировки ранее полученные с другого символа.
У меня должен открыться позиция если цена станет больше определенной. Но использую не верные данные с другого символа происходит открытие.
Символ EURCAD если цена будет больше 1.45117 то открываем. 1.74425>1.45117? да больше, но это цена другого символа.
Из 500 ордеров обнаружено 7 ошибочных.
Проблемы в коде, но телепаты уже празднуют, а когда выйдут из запоя, тогда и скажут что ошибка в строке 123652
Проблемы в коде, но телепаты уже празднуют, а когда выйдут из запоя, тогда и скажут что ошибка в строке 123652
Нет ошибке в коде, код переписывался чторбы устранить ошибку, и ошибка не появляется регулярно, она абсолютно хаотична