Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 1039

[Удален]  

Доброго времени суток, коллеги!

Подскажите в чём проблема в этом кусочке кода: 

   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        20      30
В справке и учебнике ничего не сказано о использовании массивов в таймсериях, можно ли исправить проблему? Как по другому можно сделать перебор всех свечей на нескольких ТФ?
Спасибо большое!
[Удален]  
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;)
 
Ekburg:

Доброго времени суток, коллеги!

Подскажите в чём проблема в этом кусочке кода: 

int TF[6]={1,5,15,30,60,240};
for(int i=0; i<6; i++) int b=iBars(NULL,TF[i]);
[Удален]  
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   Требуется массив.

[Удален]  
LRA:

Дело хуже... Дважды объявляется TF  1) как массив  2) как целая переменная. Второе объявление закрывает (делает невидимым, почти уничтожает) первое.

Компилятор выдает сначала предупреждение: declaration of 'TF' hides local declaration ...  Второе объявление TF скрывает предыдущее. Теперь TF уже не массив, а целая переменная. Поэтому последующее применение TF[] требует наличия массива, который уже скрыт, и ошибка: '[' - array required   Требуется массив.



От оно что.. ясно, большое спасибо.

Всё поправил, ошибок больше не выдаёт (впрочем, меня смутил тот факт, когда я объявил вместо переменной TF переменную f, не было ошибок с использованием далее в коде TF[TF]),

но скрипт не открывается в терминале,  может дело в предупреждениях?

 

 
LRA:

Сервис -> Настройки -> Графики  Макс баров истории  и  Макс баров в окне  


Теперь скорость. Большинство индикаторов на каждом тике обрабатывают лишь один, последний бар. Или 2 при появлении нового бара. Но есть индикаторы, которые или по ошибке программирования или по специфическому алгоритму на каждом тике пересчитывают много или даже все бары. Во-первых, надо их выявить. Это можно сделать с помощью диспетчера задач, определив нагрузку на процессор. Или, что точнее, вставить в индикатор что-то вроде

Вряд ли индикатор должен пересчитывать все бары. Надо проверить 1) что возвращает индикатор оператором return  2) количество пересчитываемых баров в коде индикатора. 3) Макс баров в окне  4) индикаторы, вызываемые функцией iCustom, не обязаны находиться на графике. Иначе получается дублирование и увеличение нагрузки на процессор.

Для повышения грамотности текст набираю в Word и копирую через буфер обмена. А то 4 синтаксические и 1 запятая...

     


С ошибками это запросто. Спасибо за ответ, который ничем не помог. Так то я более чем просто юзер мкуль. Всё что Вы мне написали уже давно мною известно и опробовано, индикатор считается у меня один раз и то с приходом нового бара, считает он только один бар, я же выкладывал его там всё чётко видно. Максимальная история баров в окне у меня максимально. Я так думаю что может брокер моросит. Вот например сегодня, сохранил данные по золоту в ксв файл, но они почему то стали координально отличатся от файла, который я сохранял вчера. В течении дня вроде как всё гладко, но посмотрим что завтра будет...
[Удален]  

Ekburg!!!  Все предупреждения надо устранить. Первое предупреждение означает, что оператор не имеет эффекта - отброшен компилятором - это плохо. Последнее предупреждение - размер локальной переменной (массив) превышает 512 кБ и потому его нет - это очень плохо. Остальные предупреждения - возможно использование неинициализированной переменной. Это как на карту деньги забыли положить, а пытаемся тратить. Надо проверить все ветви программы. Иногда компилятор перестраховывается. Тогда надо объявлять так: int x=0;  string y="";  bool z=false;

 
Доброго времени суток! Вопрос следующего характера, не могу никак понять, при компилировании индикатора получаю всегда разные значения. Существует ли проверка вызова индикатора результат работы iCustom??? Есть подозрения что какието индикаторы не успевают подгружатся, поэтому происходит то что сигналы скачут. Можно как то проверить что iCustom подгрузился правильно???
[Удален]  
LRA:

Ekburg!!!  Все предупреждения надо устранить. Первое предупреждение означает, что оператор не имеет эффекта - отброшен компилятором - это плохо. Последнее предупреждение - размер локальной переменной (массив) превышает 512 кБ и потому его нет - это очень плохо. Остальные предупреждения - возможно использование неинициализированной переменной. Это как на карту деньги забыли положить, а пытаемся тратить. Надо проверить все ветви программы. Иногда компилятор перестраховывается. Тогда надо объявлять так: int x=0;  string y="";  bool z=false;

первое и последнее предупреждение устранил.

хорошо, понял, попробую)