int TF[6]={1,5,15,30,60,240};
for(int TF=0;TF<6;TF++)
for(int i=iBars(NULL,TF[TF]);i>=0;)
Компилятор выдаёт это:
'[' - array required 2030
В справке и учебнике ничего не сказано о использовании массивов в таймсериях, можно ли исправить проблему? Как по другому можно сделать перебор всех свечей на нескольких ТФ?
Ekburg: Подскажите в чём проблема в этом кусочке кода:
int TF[6]={1,5,15,30,60,240};
for(int TF=0;TF<6;TF++) TF[TF] ???????
TF - описан как массив из 6 элементов. т.е. есть: TF[0]=1, TF[1]=5, TF[2]=15, TF[3]=30 TF[4]=60 TF[5]=240 Обращение к TF без квадратных скобок, т.е. без указания индекса - бессмысленно. Какой элемент массива использовать? Предполагаю, что можно что-то вроде for(int NTF=0;NTF<6;NTF++) for(int i=iBars(NULL,TF[NTF]);i>=0;)
LRA: TF - описан как массив из 6 элементов. т.е. есть: TF[0]=1, TF[1]=5, TF[2]=15, TF[3]=30 TF[4]=60 TF[5]=240 Обращение к TF без квадратных скобок, т.е. без указания индекса - бессмысленно. Какой элемент массива использовать? Предполагаю, что можно что-то вроде for(int NTF=0;NTF<6;NTF++) for(int i=iBars(NULL,TF[NTF]);i>=0;)
artmedia70:
Спасибо, ребят)
То есть, то, что в первом операторе for(int TF=0;TF<6;TF++) я задал переменную TF, то компилятор путает его с массивом?
Ekburg: переменную TF компилятор путает с массивом?
Дело хуже... Дважды объявляется TF 1) как массив 2) как целая переменная. Второе объявление закрывает (делает невидимым, почти уничтожает) первое.
Компилятор выдает сначала предупреждение: declaration of 'TF' hides local declaration ... Второе объявление TF скрывает предыдущее. Теперь TF уже не массив, а целая переменная. Поэтому последующее применение TF[] требует наличия массива, который уже скрыт, и ошибка: '[' - array required Требуется массив.
Дело хуже... Дважды объявляется TF 1) как массив 2) как целая переменная. Второе объявление закрывает (делает невидимым, почти уничтожает) первое.
Компилятор выдает сначала предупреждение: declaration of 'TF' hides local declaration ... Второе объявление TF скрывает предыдущее. Теперь TF уже не массив, а целая переменная. Поэтому последующее применение TF[] требует наличия массива, который уже скрыт, и ошибка: '[' - array required Требуется массив.
От оно что.. ясно, большое спасибо.
Всё поправил, ошибок больше не выдаёт (впрочем, меня смутил тот факт, когда я объявил вместо переменной TF переменную f, не было ошибок с использованием далее в коде TF[TF]),
но скрипт не открывается в терминале, может дело в предупреждениях?
Сервис -> Настройки -> Графики Макс баров истории и Макс баров в окне
Теперь скорость. Большинство индикаторов на каждом тике обрабатывают лишь один, последний бар. Или 2 при появлении нового бара. Но есть индикаторы, которые или по ошибке программирования или по специфическому алгоритму на каждом тике пересчитывают много или даже все бары. Во-первых, надо их выявить. Это можно сделать с помощью диспетчера задач, определив нагрузку на процессор. Или, что точнее, вставить в индикатор что-то вроде
Вряд ли индикатор должен пересчитывать все бары. Надо проверить 1) что возвращает индикатор оператором return 2) количество пересчитываемых баров в коде индикатора. 3) Макс баров в окне 4) индикаторы, вызываемые функцией iCustom, не обязаны находиться на графике. Иначе получается дублирование и увеличение нагрузки на процессор.
Для повышения грамотности текст набираю в Word и копирую через буфер обмена. А то 4 синтаксические и 1 запятая...
С ошибками это запросто. Спасибо за ответ, который ничем не помог. Так то я более чем просто юзер мкуль. Всё что Вы мне написали уже давно мною известно и опробовано, индикатор считается у меня один раз и то с приходом нового бара, считает он только один бар, я же выкладывал его там всё чётко видно. Максимальная история баров в окне у меня максимально. Я так думаю что может брокер моросит. Вот например сегодня, сохранил данные по золоту в ксв файл, но они почему то стали координально отличатся от файла, который я сохранял вчера. В течении дня вроде как всё гладко, но посмотрим что завтра будет...
Ekburg!!!Все предупреждения надо устранить. Первое предупреждение означает, что оператор не имеет эффекта - отброшен компилятором - это плохо. Последнее предупреждение - размер локальной переменной (массив) превышает 512 кБ и потому его нет - это очень плохо. Остальные предупреждения - возможно использование неинициализированной переменной. Это как на карту деньги забыли положить, а пытаемся тратить. Надо проверить все ветви программы. Иногда компилятор перестраховывается. Тогда надо объявлять так: int x=0; string y=""; bool z=false;
Доброго времени суток! Вопрос следующего характера, не могу никак понять, при компилировании индикатора получаю всегда разные значения. Существует ли проверка вызова индикатора результат работы iCustom??? Есть подозрения что какието индикаторы не успевают подгружатся, поэтому происходит то что сигналы скачут. Можно как то проверить что iCustom подгрузился правильно???
Ekburg!!!Все предупреждения надо устранить. Первое предупреждение означает, что оператор не имеет эффекта - отброшен компилятором - это плохо. Последнее предупреждение - размер локальной переменной (массив) превышает 512 кБ и потому его нет - это очень плохо. Остальные предупреждения - возможно использование неинициализированной переменной. Это как на карту деньги забыли положить, а пытаемся тратить. Надо проверить все ветви программы. Иногда компилятор перестраховывается. Тогда надо объявлять так: int x=0; string y=""; bool z=false;
Доброго времени суток, коллеги!
Подскажите в чём проблема в этом кусочке кода:
Обращение к TF без квадратных скобок, т.е. без указания индекса - бессмысленно. Какой элемент массива использовать?
Предполагаю, что можно что-то вроде for(int NTF=0;NTF<6;NTF++) for(int i=iBars(NULL,TF[NTF]);i>=0;)
Доброго времени суток, коллеги!
Подскажите в чём проблема в этом кусочке кода:
TF - описан как массив из 6 элементов. т.е. есть: TF[0]=1, TF[1]=5, TF[2]=15, TF[3]=30 TF[4]=60 TF[5]=240
Обращение к TF без квадратных скобок, т.е. без указания индекса - бессмысленно. Какой элемент массива использовать?
Предполагаю, что можно что-то вроде for(int NTF=0;NTF<6;NTF++) for(int i=iBars(NULL,TF[NTF]);i>=0;)
Спасибо, ребят)
То есть, то, что в первом операторе for(int TF=0;TF<6;TF++) я задал переменную TF, то компилятор путает его с массивом?
Дело хуже... Дважды объявляется TF 1) как массив 2) как целая переменная. Второе объявление закрывает (делает невидимым, почти уничтожает) первое.
Компилятор выдает сначала предупреждение: declaration of 'TF' hides local declaration ... Второе объявление TF скрывает предыдущее. Теперь TF уже не массив, а целая переменная. Поэтому последующее применение TF[] требует наличия массива, который уже скрыт, и ошибка: '[' - array required Требуется массив.
Дело хуже... Дважды объявляется TF 1) как массив 2) как целая переменная. Второе объявление закрывает (делает невидимым, почти уничтожает) первое.
Компилятор выдает сначала предупреждение: declaration of 'TF' hides local declaration ... Второе объявление TF скрывает предыдущее. Теперь TF уже не массив, а целая переменная. Поэтому последующее применение TF[] требует наличия массива, который уже скрыт, и ошибка: '[' - array required Требуется массив.
От оно что.. ясно, большое спасибо.
Всё поправил, ошибок больше не выдаёт (впрочем, меня смутил тот факт, когда я объявил вместо переменной TF переменную f, не было ошибок с использованием далее в коде TF[TF]),
но скрипт не открывается в терминале, может дело в предупреждениях?
Сервис -> Настройки -> Графики Макс баров истории и Макс баров в окне
Теперь скорость. Большинство индикаторов на каждом тике обрабатывают лишь один, последний бар. Или 2 при появлении нового бара. Но есть индикаторы, которые или по ошибке программирования или по специфическому алгоритму на каждом тике пересчитывают много или даже все бары. Во-первых, надо их выявить. Это можно сделать с помощью диспетчера задач, определив нагрузку на процессор. Или, что точнее, вставить в индикатор что-то вроде
Вряд ли индикатор должен пересчитывать все бары. Надо проверить 1) что возвращает индикатор оператором return 2) количество пересчитываемых баров в коде индикатора. 3) Макс баров в окне 4) индикаторы, вызываемые функцией iCustom, не обязаны находиться на графике. Иначе получается дублирование и увеличение нагрузки на процессор.
Для повышения грамотности текст набираю в Word и копирую через буфер обмена. А то 4 синтаксические и 1 запятая...
Ekburg!!! Все предупреждения надо устранить. Первое предупреждение означает, что оператор не имеет эффекта - отброшен компилятором - это плохо. Последнее предупреждение - размер локальной переменной (массив) превышает 512 кБ и потому его нет - это очень плохо. Остальные предупреждения - возможно использование неинициализированной переменной. Это как на карту деньги забыли положить, а пытаемся тратить. Надо проверить все ветви программы. Иногда компилятор перестраховывается. Тогда надо объявлять так: int x=0; string y=""; bool z=false;
Ekburg!!! Все предупреждения надо устранить. Первое предупреждение означает, что оператор не имеет эффекта - отброшен компилятором - это плохо. Последнее предупреждение - размер локальной переменной (массив) превышает 512 кБ и потому его нет - это очень плохо. Остальные предупреждения - возможно использование неинициализированной переменной. Это как на карту деньги забыли положить, а пытаемся тратить. Надо проверить все ветви программы. Иногда компилятор перестраховывается. Тогда надо объявлять так: int x=0; string y=""; bool z=false;
первое и последнее предупреждение устранил.
хорошо, понял, попробую)