Странные ошибки

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Viktar Dzemikhau
3397
Viktar Dzemikhau  

Добрый день.

Сегодня я обнаружил, что у меня не работает то, что работало всегда. По сути, не работают функции, которые я импортирую из библиотек. Но я не буду усложнять свой вопрос. Вот самый элементарный вариант индикатора, который ничего не делает, а лишь показывает то, что я хочу продемонстрировать.

//+------------------------------------------------------------------+
//|                                                           hm.mq5 |
//|                                                              hoz |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "hoz"
#property link      ""
#property version   "1.00"
#property indicator_chart_window

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit() {
  return INIT_SUCCEEDED;
}
//====================================================================================================================
// 1.1 Возвращает количество баров в окне торгового инструмента активного окна на заданном таймфрейме. ===============
int barsTotal(ENUM_TIMEFRAMES tf = PERIOD_CURRENT) {    // ТаймФрейм, количество баров которого требуется получить
//---
  return Bars(_Symbol, tf);
}
//===================================================================================================================
// Определение индекса бара, с которого необходимо производить перерасчет. ===========================================
int recalcIndex(int barsTotal,        // Количество пришедших баров таймфрейма открытого графика
                int countedBars) {    // Количество уже обработанных баров таймфрейма открытого графика
//---
  int barsTotalOtherTF = barsTotal();
//---
  return 1;
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[]) {
//---
   
//--- return value of prev_calculated for next call
  return rates_total;
}

Ошибка в строке:

int barsTotalOtherTF = barsTotal();

Вот что вижу в журнале:

')' - expression expected       hm.mq5  27      36

Как это понимать вообще? Обновление кривое или у меня с операционной системой что-то случилось?

Файлы:
hm.mq5 5 kb
Ihor Herasko
22733
Ihor Herasko  

Здесь нет ничего странного. Ведь функция и переменная названы одинаково: barsTotal. Компилятор не может понять, к чему именно Вы хотите обратиться.

Называйте функции с заглавной литеры, а переменные - со строчной. Тогда и не будет возникать подобных проблем.

Viktar Dzemikhau
3397
Viktar Dzemikhau  
На самом деле, я удивлён. Реально, я пользуюсь своими библиотеками не первый месяц (около года), и такого косяка не было. Сейчас появился На 4-ке такая реализация работает тоже стабильно. Видимо в 5-ку добавили что-то. Всё-равно, это не нормально, когда функция с чёткой сигнатурой путается с переменённой. Жесть..((
Aleksey Mavrin
3712
Aleksey Mavrin  
если ещё стрикт включите много ещё чего узнаете про свой код))
Artyom Trishkin
Модератор
61092
Artyom Trishkin  
Aleksey Mavrin:
если ещё стрикт включите много ещё чего узнаете про свой код))
В MQL5 strict по умолчанию.
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий