Artyom Trishkin: Это не очень хорошо. У вас наверное при компиляции предупреждения были? Нужно в таких случаях избавляться от причин предупреждений, а не от #property strict
Когда было прописано #property strict, то компилятор выдавал ошибки в каждом цикле for(), что переменные должны иметь тип, и поэтому в каждом цикле приходилось прописывать int i и int p. После этого компилятор ошибок не выдавал, но линия не строилась. Когда убрал #property strict, то компилятор уже не требовал объявлять тип в каждом цикле, и линия построилась.
Timur1988: Когда было прописано #property strict, то компилятор выдавал ошибки в каждом цикле for(), что переменные должны иметь тип, и поэтому в каждом цикле приходилось прописывать int i и int p. После этого компилятор ошибок не выдавал, но линия не строилась. Когда убрал #property strict, то компилятор уже не требовал объявлять тип в каждом цикле, и линия построилась.
Типичный случай эксплуатации неявных ошибок в логике. После того, как компилятор стал "строже", самообман исчезает потихоньку.
Всё хотел спросить, зачем там столько одинаковых циклов?
И почему вас никак не напрягает ошибка "выход за пределы массива" при запуске индикатора на графике?
пополнила баланс теперь не могу найти где терминал с реальным счетом вечно вылазит демо счет
Терминал тот же, нужно просто перелогиниться на реальный счёт. Как это делается: Файл - Подключиться к торговому счёту - указать в открывшемся окошке номер счёта, пароль и сервер. Все эти данные выдал ДЦ, в случае чего спрашивайте их.
Timur1988: Когда было прописано #property strict, то компилятор выдавал ошибки в каждом цикле for(), что переменные должны иметь тип, и поэтому в каждом цикле приходилось прописывать int i и int p. После этого компилятор ошибок не выдавал, но линия не строилась. Когда убрал #property strict, то компилятор уже не требовал объявлять тип в каждом цикле, и линия построилась.
ответ предельно простой -- у вас идёт банальный выход за пределы массива -- и по этой ошибке ваш индикатор прекращает свою работу
А как тогда посчитать сумму цен закрытия в каждом измерении??? По поводу одинаковых циклов, то я, из-за ограниченного знания программирования и алгоритмов, ничего лучше не придумал, чтобы выбирать тот элемент массива из нужного измерения, который был необходим для подстановки в формулу.
Timur1988: А как тогда посчитать сумму цен закрытия в каждом измерении??? По поводу одинаковых циклов, то я, из-за ограниченного знания программирования и алгоритмов, ничего лучше не придумал, чтобы выбирать тот элемент массива из нужного измерения, который был необходим для подстановки в формулу.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Это не очень хорошо. У вас наверное при компиляции предупреждения были? Нужно в таких случаях избавляться от причин предупреждений, а не от #property strict
пополнила баланс теперь не могу найти где терминал с реальным счетом вечно вылазит демо счет
Когда было прописано #property strict, то компилятор выдавал ошибки в каждом цикле for(), что переменные должны иметь тип, и поэтому в каждом цикле приходилось прописывать int i и int p. После этого компилятор ошибок не выдавал, но линия не строилась. Когда убрал #property strict, то компилятор уже не требовал объявлять тип в каждом цикле, и линия построилась.
Типичный случай эксплуатации неявных ошибок в логике. После того, как компилятор стал "строже", самообман исчезает потихоньку.
Всё хотел спросить, зачем там столько одинаковых циклов?
И почему вас никак не напрягает ошибка "выход за пределы массива" при запуске индикатора на графике?
Например, вот тут:
{
for(int p=0; p<m; p++)
{
sum_x[i][p]=sum_x[i][p-1]+Price_CloseX[i][p];
sum_y[i][p]=sum_y[i][p-1]+Price_CloseY[i][p];
}
}
пополнила баланс теперь не могу найти где терминал с реальным счетом вечно вылазит демо счет
Когда было прописано #property strict, то компилятор выдавал ошибки в каждом цикле for(), что переменные должны иметь тип, и поэтому в каждом цикле приходилось прописывать int i и int p. После этого компилятор ошибок не выдавал, но линия не строилась. Когда убрал #property strict, то компилятор уже не требовал объявлять тип в каждом цикле, и линия построилась.
ответ предельно простой -- у вас идёт банальный выход за пределы массива -- и по этой ошибке ваш индикатор прекращает свою работу
{
for(int p=0; p<m; p++)
{
sum_x[i][p]=sum_x[i][p-1]+Price_CloseX[i][p];
sum_y[i][p]=sum_y[i][p-1]+Price_CloseY[i][p];
}
}
for(int i=1; i<n; i++)
{
for(int p=0; p<m; p++)
{
Mx[i][p]=sum_x[p+1][m-1]/(n-1);
My[i][p]=sum_y[p+1][m-1]/(n-1);
увидеть эту ошибку можно на этапе выполнения -- запустить индикатор и посмотреть запись лога на вкладке Терминал -- Эксперты:
Типичный случай эксплуатации неявных ошибок в логике. ...
Типичный случай эксплуатации неявных ошибок в логике. После того, как компилятор стал "строже", самообман исчезает потихоньку.
Всё хотел спросить, зачем там столько одинаковых циклов?
И почему вас никак не напрягает ошибка "выход за пределы массива" при запуске индикатора на графике?
Например, вот тут:
{
for(int p=0; p<m; p++)
{
sum_x[i][p]=sum_x[i][p-1]+Price_CloseX[i][p];
sum_y[i][p]=sum_y[i][p-1]+Price_CloseY[i][p];
}
}
По поводу одинаковых циклов, то я, из-за ограниченного знания программирования и алгоритмов, ничего лучше не придумал, чтобы выбирать тот элемент массива из нужного измерения, который был необходим для подстановки в формулу.
ответ предельно простой -- у вас идёт банальный выход за пределы массива -- и по этой ошибке ваш индикатор прекращает свою работу
{
for(int p=0; p<m; p++)
{
sum_x[i][p]=sum_x[i][p-1]+Price_CloseX[i][p];
sum_y[i][p]=sum_y[i][p-1]+Price_CloseY[i][p];
}
}
for(int i=1; i<n; i++)
{
for(int p=0; p<m; p++)
{
Mx[i][p]=sum_x[p+1][m-1]/(n-1);
My[i][p]=sum_y[p+1][m-1]/(n-1);
увидеть эту ошибку можно на этапе выполнения -- запустить индикатор и посмотреть запись лога на вкладке Терминал -- Эксперты:
А как тогда посчитать сумму цен закрытия в каждом измерении???
По поводу одинаковых циклов, то я, из-за ограниченного знания программирования и алгоритмов, ничего лучше не придумал, чтобы выбирать тот элемент массива из нужного измерения, который был необходим для подстановки в формулу.
Например так:
for(int i=1; i<n; i++)
{for(int p=1; p<m; p++)
{
sum_x[i][p]=sum_x[i][p-1]+Price_CloseX[i][p];
sum_y[i][p]=sum_y[i][p-1]+Price_CloseY[i][p];
}
}
Скажите, плиз, как исправить эту ошибку?
Чтобы эту ошибку исправить -- надо понимать вашу формулу -- что, зачем и как вы считаете.
И только тогда получится перебрать ваш алгоритм и устранить выход за пределы массива.
Методом "тыка" и непониманием формулы -- вы устраните ошибку, но сделаете неправильным расчёт.
p.s. Распишите словами подробно что и зачем вы считаете -- можете подробно прокомментировать свой код -- и тогда поймём как надо исправить эту ошибку.