Нашел одно предложение в документации "Операции увеличения/уменьшения
значения переменной не могут применяться в выражениях." Нахрена
они тогда нужны вообще?
И это называется С - подобный язык. Как писали разработчики в
одной из веток "... достаточно знать любой С - подобный язык,
чтобы изучить MQL...". Нет слов...
Лирическое отступление. Никогда не мог понять Кулибиных. Зачем изобретать новый язык,
когда достаточно разработать нормальный API и использовать любой
существующий компилятор (можно обрезанный) со своим фронтэндом.
Соображения типа проприетарности, песочницы или защиты от реверсинжиниринга
не выдерживают никакой критики. Эрго: или дохрена времени, денег,
амбиций, или надо было освоить средства.
double a[4]; int i =0; double b = a[i]; i++;
switch (par[i++]) { case a1: ... b = par[i++]; ... case a100: ... c = par[i++]; ... }Простым способом это адекватно не изобразить, особенно при сложных сочетаниях альтернатив case.
i++; switch (par[i - 1]) { case a1: ... b = par[i]; i++; .... case a100: ... c = par[i]; i++; ... }
Приведите более сложное сочетание. А кроме case, ещё и if остались, так что особых проблем нет. А если не нравиться - делайте вычисление в dll на каком Вам нравится компиляторе
Нашел одно предложение в документации "Операции увеличения/уменьшения
значения переменной не могут применяться в выражениях." Нахрена
они тогда нужны вообще?
И это называется С - подобный язык. Как писали разработчики в
одной из веток "... достаточно знать любой С - подобный язык,
чтобы изучить MQL...". Нет слов...
Лирическое отступление. Никогда не мог понять Кулибиных. Зачем изобретать новый язык,
когда достаточно разработать нормальный API и использовать любой
существующий компилятор (можно обрезанный) со своим фронтэндом.
Соображения типа проприетарности, песочницы или защиты от реверсинжиниринга
не выдерживают никакой критики. Эрго: или дохрена времени, денег,
амбиций, или надо было освоить средства.
Столько гнева из-за такого обнаруженного отличия MQL от С, которое по вашей же информации было чётко зафиксировано в документации?! Понятие "С-подобный" содержит смысл того, что MQL похож на C, но никак полностью не соответствует ему. Здесь на форуме постоянно обнаруживаются куча других отличий, которые также идут вразрез с языком С. Ну и что? Изначально самим трейдерам, большинство из которых знают о программировании только в общем плане из институтских лабораторных по ИВТ и для которых и разрабатывался сам терминал, абсолютно всё равно что изучать с нуля С или MQL. И там и здесь будут свои проблемы.
Нужно вам API - пожалуйста предлагалось несколько реализаций например вот здесь одно из них https://www.mql5.com/ru/forum/50385
Не нравится API сторонних авторов, пожалуйста, делайте свои dll с незамысловатым вызовом в советнике MT4. Как это сделать есть готовые примеры в самом терминале и здесь на форуме были варианты. В крайнем случае спрашивайте о проблемах - народ наверняка поможет.
В общем все на свете были бы просто счастливы если бы от заработка на Форекс трейдеров отделяла бы только вот такая вот небольшая техническая проблема, как неработоспособность инкрементов в выражениях ;o))) Начнёте реально что-то программировать в МТ4 и поймёте какая это всё мелочёвка, на которую не стоит тратить своё время. Оно вам ещё очень пригодится для понимания массы других проблем, связанных с автоторговлей.
Код:
double a[4];
int i =0;
double b = a[i++];
Компилятор:
'++' - illegal assignment used
и так с инкрементами везде в обращениях к массиву. Если это фича, то где документация!!!
Кажется, в С допустимо такое вот уродство:
if( a = b ) { c = d; } // условие оператора if не имеет логического значения;
// это не выражение, а оператор!
Не хочется лезть и проверять, но, кажется, такое "логическое условие" будет всегда иметь значение true - независимо от того, равны ли a и b. Согласно логике блюстителей чистоты непонятно чего - MQL4 или С - такая мерзость не должна быть запрещена и в MQL4. Тем не менее такая конструкция вызывает ошибку "=" - illegal assignment used. Когда я впервые увидел это сообщение, я просто отметил про себя, что да, есть отличия от С. Ну и что? Какому трейдеру нужны такие нюансы? По-моему, они только запутают его, и он долго будет искать логическую ошибку (самую трудную), случайно поставив "=" вместо "==".
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
double a[4];
int i =0;
double b = a[i++];
Компилятор:
'++' - illegal assignment used
и так с инкрементами везде в обращениях к массиву. Если это фича, то где документация!!!