Masiv[0] = a; Masiv[1] = b; ...
Понял, вопрос был немного глупый :) Значит все сразу нельзя, спасибо!
Ответ тоже был не очень умным =)))
По идее, так тоже должно работать:
По идее, так тоже должно работать:
int Masiv[] = { a, b, c, d };
Я тоже думал что должно работать, попробовал, с цифрами получается, а с буквами оказывается нельзя. Нужно по одной загружать. Хорошо что мне нужно 4 значения загрузить, а не 444 :)
Наверное, правильнее всего было бы сделать параметром функции
массив, и передавать в неё не отдельные числа, а готовый (заполненный)
массив чисел ;)
Тут фишка в чем.
int Masiv[] = { 1, 2, 3, 4 };
При такой записи выделение памяти и инициализация массива происходят
на этапе компиляции.
Значения переменных известны лишь на этапе выполнения, потому
компилятор и ругается.
Функцию которую я написал приходится вызывать из эксперта 7-8
раз с разными параметрами. Так что если сделать параметром ф-ии
масив, то мне пришлось бы в эксперте объявить 7-8 разных масивов.
Думаю что в моем случае все таки удобнее загружать данные в
масив именно внутри ф-ии. Хотя если объявив внутри эксперта
несколько масивов в общем скорость работы программы увеличится,
то я бы именно так и сделал. Но на счет того как быстрее будут
ити вычисления я не знаю.
Что касается тонкостей о том когда выделяется память, то мне до этого далеко, наверно не все сразу :)
А ф-ию я все таки дописал, проверил, работает так как я и хотел. Если кому то интересно то могу выложить. Вся критика и замечания принимаются :)
Что касается тонкостей о том когда выделяется память, то мне до этого далеко, наверно не все сразу :)
А ф-ию я все таки дописал, проверил, работает так как я и хотел. Если кому то интересно то могу выложить. Вся критика и замечания принимаются :)
// +---------------------------------------------------------------------------+ // | Ф-ия OrderScan | // | Ищет и выберает последний ордер среди указанных типов торговых операций. | // | Возвращает тип торговой операции выбранного ордера. Поиск производит | // | среди 'закрытых и удаленных ордеров' или 'открытых и отложенных', в | // | зависимости от входных параметров. Если ордер соответствующего типа не | // | найден - ф-ия возвращает значение "-1", при этом выбран будет последний | // | ордер в сответствующем списке. Если ф-ии был передан неправильный входной | // | параметр pool, или небыло передано ни одного значения type, она | // | возвращает "-2". | // | | // | int OrderScan(string pool, int type1, int tyte2, int type3, ...) | // | | // | Параметры: | // | pool - Источник данных для выбора. Mожет быть одной из следующих величин: | // | "MODE_TRADES" - ордер выбирается среди открытых и отложенных | // | ордеров. | // | "MODE_HISTORY" - ордер выбирается среди закрытых и удаленных | // | ордеров. | // | type - Тип торговых операций, которые нужно искать, указывается через | // | запятую, не более 6, но не мение одного. Mожет быть одной из | // | следующих величин: | // | https://docs.mql4.com/ru/constants/trading | // | 0 - (OP_BUY) Покупка | // | 1 - (OP_SELL) Продажа | // | 2 - (OP_BUYLIMIT) Отложенный ордер BUY LIMIT | // | 3 - (OP_SELLLIMIT) Отложенный ордер SELL LIMIT | // | 4 - (OP_BUYSTOP) Отложенный ордер BUY STOP | // | 5 - (OP_SELLSTOP) Отложенный ордер SELL STOP | // | | // +---------------------------------------------------------------------------+ int OrderScan(string area, int a=-1, int b=-1, int c=-1, int d=-1, int e=-1, int f=-1) { int n; int total=-1; int masiv[4]; masiv[0]=a; masiv[1]=b; masiv[2]=c; masiv[3]=d; masiv[4]=e; masiv[5]=f; if(area=="MODE_TRADES") {total=OrdersTotal(); n=1;} if(area=="MODE_HISTORY") {total=HistoryTotal(); n=2;} if(total==-1) {Print("Ф-ии OrderScan был передан неправильный параметр pool"); return(-2);} if(masiv[0]==-1) {Print("Ф-ии OrderScan небыло передано ни одного параметра type"); return(-2);} for(int i=1; i<=total; i++) // Перебираем все ордера { switch(n) { case 1: OrderSelect(total-i,SELECT_BY_POS,MODE_TRADES); break; case 2: OrderSelect(total-i,SELECT_BY_POS,MODE_HISTORY); break; } for(int m=0; m<=5; m++) { if(OrderType()==masiv[m]) { return(masiv[m]); } } } return(-1); }
Экспериментально выявил как передавать в ф-ию сразу готовый масив, получилось :)
void Funk(int Masiv[]) { Print("Третий элемент масива - ",Masiv[2]); } int start() { int bbb[4]={2,4,6,8}; Funk(bbb); return(0); }
Не могу записать данные в масив, что не правильно?
int Masiv[]; int i, j; bool m=true; int start() { while(m) { Masiv[i]=j; i++; j=j+2; Print(i-1,"-й элемент масива - ",Masiv[i-1]); if(j>=20) break; } m=false; return(0); }
int Masiv[10]; int start() { for ( int i = 0; i < 10; i ++ ) { Masiv[i]=i * 2; Print(i,"-й элемент масива - ",Masiv[i]); } return(0); }
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
И второй вопрос, в документации есть описание как работать с масивами? Я нашел только Операции с масивами, и краткое упоминание здесь и здесь.