| / | Форум |
|
OniNePriletyat
23.05.2006 18:46
Если например из эксперта вызывается некоторая ф-ия, ей передается
некоторое количество параметров (например 4), например таких
(1,3,10,155). Внутри ф-ии эти параметры записываются в переменные
(например a,b,c,d). Каким образом эти переменные можно записать
в масив? Пробовал так int Masiv[4]={a,b,c,d}; не получилось.
void Funk(int a, int b, int c, int d) { int Masiv[4]; } int start() { Funk(1,3,10,155); return(0); }И второй вопрос, в документации есть описание как работать с масивами? Я нашел только Операции с масивами, и краткое упоминание здесь и здесь. |
|
Увеличьте эффективность групповой работы Поставьте TeamWox и увеличьте эффективность групповой работы в вашей компании. TeamWox позволяет хранить всю рабочую информацию в одном месте: письма, документы, файлы, платежи и история сообщений в чате. Так решается проблема сохранности данных и удобной групповой работы с ними. |
|
komposter
23.05.2006 19:33
Masiv[0] = a; Masiv[1] = b; ... |
|
OniNePriletyat
23.05.2006 19:59
Понял, вопрос был немного глупый :) Значит все сразу нельзя, спасибо!
|
|
komposter
23.05.2006 20:04
Ответ тоже был не очень умным =)))
По идее, так тоже должно работать: int Masiv[] = { a, b, c, d }; |
|
OniNePriletyat
23.05.2006 21:18
Я тоже думал что должно работать, попробовал, с цифрами получается, а с буквами оказывается нельзя. Нужно по одной загружать. Хорошо что мне нужно 4 значения загрузить, а не 444 :) |
|
komposter
24.05.2006 00:01
Наверное, правильнее всего было бы сделать параметром функции
массив, и передавать в неё не отдельные числа, а готовый (заполненный)
массив чисел ;)
|
|
RickD
24.05.2006 00:20
Тут фишка в чем.
int Masiv[] = { 1, 2, 3, 4 };
|
|
OniNePriletyat
24.05.2006 03:15
Функцию которую я написал приходится вызывать из эксперта 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ожет быть одной из | // | следующих величин: | // | http://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); } |
|
OniNePriletyat
24.05.2006 04:37
Экспериментально выявил как передавать в ф-ию сразу готовый масив, получилось :) void Funk(int Masiv[]) { Print("Третий элемент масива - ",Masiv[2]); } int start() { int bbb[4]={2,4,6,8}; Funk(bbb); return(0); }
|
|
OniNePriletyat
18.07.2006 22:03
Не могу записать данные в масив, что не правильно?
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); } |
|
komposter
18.07.2006 23:16
int Masiv[10]; int start() { for ( int i = 0; i < 10; i ++ ) { Masiv[i]=i * 2; Print(i,"-й элемент масива - ",Masiv[i]); } return(0); } |
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий