При создании пользовательского индикатора можно указать один из 18 типов графического построения (способа отображения на главном окне графика или в подокне графика), значения которых указаны в перечислении ENUM_DRAW_TYPE. В зависимости от стиля рисования, может потребоваться от одного до четырех буферов значений (отмеченных как...
последовательность инициализации: (для тех кто не знает об этом)
Сначала переменные глобального уровня потом статические расположенные в зависимости от первоочерёдности функций, OnInit(), OnTick() или OnCalculate()... дальше мне было не интересно, а локальные в своё время. Так вот в этом коде получается, что функция вызывается до окончания инициализации статических переменных, отсюда и ошибка о которой идёт речь. Функция вызвана раньше чем инициализирована переменная
Значит если это обсуждалось между Вами и Alexey Viktorov, то даёт вам основания полагать, что это не баг? ) Причём этот человек сам заявляет, что его уровень знания программирования значительно ниже вашего. Т.е. его можно вычеркнуть из списка. Остаётесь только вы ) Обсудили сами с собой, значит это не баг )
Это баг. Такого не может быть в принципе, чтобы инициализация переменной была проигнорирована, и код продолжил выполняться, перескочив через неё. Это нонсенс. И порядок инициализации тут не имеет значения. Переменная либо инициализируется, либо компилятор выдаёт ошибку в этом месте. Третьего не дано. Иначе это не язык программирования, а чёрти что.
Значит если это обсуждалось между Вами и Alexey Viktorov, то даёт вам основания полагать, что это не баг? ) Причём этот человек сам заявляет, что его уровень знания программирования значительно ниже вашего. Т.е. его можно вычеркнуть из списка. Остаётесь только вы ) Обсудили сами с собой, значит это не баг )
Это баг. Такого не может быть в принципе, чтобы инициализация переменной была проигнорирована, и код продолжил выполняться, перескочив через неё. Это нонсенс. И порядок инициализации тут не имеет значения. Переменная либо инициализируется, либо компилятор выдаёт ошибку в этом месте. Третьего не дано. Иначе это не язык программирования, а чёрти что.
Вычеркнуть можешь, я никогда пальцы не растопыривал "какой я программист"...
А документацию прочесть мама не велит??? Специально для таких я вставил цитату из документации
Статическая переменная может быть проинициализирована соответствующей ее типу константой или константным выражением, в отличие от простой локальной переменной, которая может быть проинициализирована любым выражением.
Но никак не функцией.
Вот так работает
#property strict#property indicator_chart_windowint TestBrokenStatic()
{
staticint stInt = 101;
stInt++;
return stInt;
}
intOnInit()
{
staticint result = 0;
result = TestBrokenStatic();Print("TestStatic Expected result 102 - Actual result=", result);
result = TestBrokenStatic();
Print("TestStatic Expected result 103 - Actual result=", result);
returnINIT_SUCCEEDED;
}
intOnCalculate(constint rates_total,
constint prev_calculated,
constdatetime &time[],
constdouble &open[],
constdouble &high[],
constdouble &low[],
constdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[])
{
return rates_total;
}
2017.04.2913:49:51.546 !Test USDCHF,M15: TestStatic Expected result 103 - Actual result=1032017.04.2913:49:48.457 !Test USDCHF,M15: TestStatic Expected result 102 - Actual result=1022017.04.2913:49:40.089 Custom indicator Test\!Test USDCHF,M15: loaded successfully
Пишу код, используя форум (поиск) и кодобазу, как справочник или источник копи-пасты.
А ведь есть люди, кто использует и другие сервисы ресурса.у меня тоже самое, но....
сайт не доступен - значит обновляется.... можно выпить кружку кофе и сьесть пару кексиков.
ну глюки, ну невозможно зайти, ну .....
а что такое срочное, что аж бесит, когда доступа нет?
сайт не доступен - значит обновляется.... можно выпить кружку кофе и сьесть пару кексиков.
от такого количества кофе и кексиков - пузо начинает расти
Как вытащить PLOT_LABEL-свойство индикаторного буфера?
Баг с инициализацией статических переменных. В старых билдах его не было.
Кому не трудно, отравьте это в сервис-деск. У меня больше нет желания общаться с ними там.
Баг с инициализацией статических переменных. В старых билдах его не было.
Кому не трудно, отравьте это в сервис-деск. У меня больше нет желания общаться с ними там.
Это не баг, отсюда обсуждалось. Выжимка
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Особенности языка mql4, тонкости и приёмы работы
Alexey Viktorov, 2017.04.30 08:54
последовательность инициализации: (для тех кто не знает об этом)
Сначала переменные глобального уровня потом статические расположенные в зависимости от первоочерёдности функций, OnInit(), OnTick() или OnCalculate()... дальше мне было не интересно, а локальные в своё время. Так вот в этом коде получается, что функция вызывается до окончания инициализации статических переменных, отсюда и ошибка о которой идёт речь. Функция вызвана раньше чем инициализирована переменная
Это не баг, отсюда обсуждалось. Выжимка
Значит если это обсуждалось между Вами и Alexey Viktorov, то даёт вам основания полагать, что это не баг? ) Причём этот человек сам заявляет, что его уровень знания программирования значительно ниже вашего. Т.е. его можно вычеркнуть из списка. Остаётесь только вы ) Обсудили сами с собой, значит это не баг )
Это баг. Такого не может быть в принципе, чтобы инициализация переменной была проигнорирована, и код продолжил выполняться, перескочив через неё. Это нонсенс. И порядок инициализации тут не имеет значения. Переменная либо инициализируется, либо компилятор выдаёт ошибку в этом месте. Третьего не дано. Иначе это не язык программирования, а чёрти что.
Ещё один баг в новых билдах:
Эх, как же тут всё сыро. Думал, обновлюсь таки на новые билды, а то на старых уже Маркет не принимает продукты. А тут баг на баге!
Значит если это обсуждалось между Вами и Alexey Viktorov, то даёт вам основания полагать, что это не баг? ) Причём этот человек сам заявляет, что его уровень знания программирования значительно ниже вашего. Т.е. его можно вычеркнуть из списка. Остаётесь только вы ) Обсудили сами с собой, значит это не баг )
Это баг. Такого не может быть в принципе, чтобы инициализация переменной была проигнорирована, и код продолжил выполняться, перескочив через неё. Это нонсенс. И порядок инициализации тут не имеет значения. Переменная либо инициализируется, либо компилятор выдаёт ошибку в этом месте. Третьего не дано. Иначе это не язык программирования, а чёрти что.
Вычеркнуть можешь, я никогда пальцы не растопыривал "какой я программист"...
А документацию прочесть мама не велит??? Специально для таких я вставил цитату из документации
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Особенности языка mql4, тонкости и приёмы работы
Alexey Viktorov, 2017.04.29 12:50
А ничего что в справке написано что статическая переменная ... читайте сами
Но никак не функцией.
Вот так работает