вызывает подозрение массив в параметрах функции, назнаю можно ли такое в этом языке, попробуй вызывать функцию OpeningSignal в цикле по массиву Date[10]
wrong parameters count означает, что задано неверное число параметров при вызове функции.
Видимо вы вместо массива из 10 элементов при вызове функции передаёте массив из другого количества элементов. Приведите место, где вы вызываете эту функцию в своей программе, из которого было бы понятно какое количество элементов в этом массиве на самом деле.
У меня всё прекрасно компилится без ошибок.
Видимо вы вместо массива из 10 элементов при вызове функции передаёте массив из другого количества элементов. Приведите место, где вы вызываете эту функцию в своей программе, из которого было бы понятно какое количество элементов в этом массиве на самом деле.
У меня всё прекрасно компилится без ошибок.
//+------------------------------------------------------------------+ //| test.mq4 | //| Copyright © 2006, MetaQuotes Software Corp. | //| http://www.metaquotes.net | //+------------------------------------------------------------------+ #property copyright "Copyright © 2006, MetaQuotes Software Corp." #property link "http://www.metaquotes.net" int OpenTimeRange=10; int ddd[10]; //+------------------------------------------------------------------+ //| script program start function | //+------------------------------------------------------------------+ int start() { //---- OpeningSignal(ddd); //---- return(0); } //+------------------------------------------------------------------+ bool OpeningSignal(int Date[10]) { bool OpenSignal; int cnt; OpenSignal=False; for (cnt=1; cnt<=10; cnt++) { if (Date[cnt]-TimeLocal()<=OpenTimeRange*60 && Date[cnt]-TimeLocal()>-3*60) {OpenSignal=True; break;} else {OpenSignal=False; continue;} } return(OpenSignal); }
Ошибка в объявлении функции. Массив можно передавать только по ссылке. Это делается так:
bool OpeningSignal(int& Date[])
Ошибка в объявлении функции. Массив можно передавать только по ссылке. Это делается так:
bool OpeningSignal(int& Date[])
Если это так, то почему приведённый мною выше пример не выдаёт ошибку при компиляции?
Мне кажется, что массивы можно передавать и без ссылок, если не требуется получить обратно изменённые данные массива.
Мне кажется, что массивы можно передавать и без ссылок, если не требуется получить обратно изменённые данные массива.
Да, Вы правы. Я проверил вот этим скриптом:
#property show_inputs void start() { int a[5]={1,2,3,4,5}; Print("Вывод массива из start()"); for (int i=0; i<6; i++) Print("a[",i,"]=",a[i]); func1(a); func2(a); } void func1(int a[2]) { Print("Вывод массива из func1()"); for (int i=0; i<7; i++) Print("a[",i,"]=",a[i]); } void func2(int& a[3]) { Print("Вывод массива из func2()"); for (int i=0; i<8; i++) Print("a[",i,"]=",a[i]); }
Дополнительно хочу обратить внимание, что в объявлении функции бесполезно указывать размерность массива. Поэтому правильнее и экономичнее на несколько символов будет определять так:
void func1(int a[]) {...} void func2(int& a[]) {...}
Solandr спасибо большое, не знал что при вызове функции нельзя упоминать размерность массива
Вероятно что когда передаешь параметр типа Array[10] функция передает десятый элемент массива а не массив из 10 элементов?
А не потому, что в массиве из десяти значений первое - 0, а последнее - 9?
Тогда выражение
for (cnt=1; cnt<=10; cnt++) будет глючить.
Тогда выражение
for (cnt=1; cnt<=10; cnt++) будет глючить.

Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Date[10] - массив дат важных событий, объявленный в Start{}
Функция сканирует не находимся ли мы неподалеку от одного из них, если да,
то выдает OpeningSignal()=True
Проблема :
при компиляции возникает ошибка wrong parameters count
Объясните пожалуйста в чем дело ;)