Снова про передачу массивов в функцию

 
Просмотрел весь форум, но так до конца и не понял - как ?

Такая штука не работает. А как должно быть?

int start() {
double dest_array[100][6], f0;
ArrayCopyRates(dest_array,Symbol(),PERIOD_H1);

f0 = Fatl(dest_array,1);
}

double Fatl(double dest_array[100][6],int i) {
double FatlBuffer;

FatlBuffer=
0.2149840610*dest_array[i+0][4]
+0.2065763732*dest_array[i+1][4]
+0.1903728890*dest_array[i+2][4]

....
}

Заранее спасибо.
 
Объявление double dest_array[100][6] перенеси в хидер (до init()). Тогда dest_array будет как бы глобальным и сможешь получить к нему доступ в любом месте. И вызов твоей функции будет выглядеть: f0 = Fatl(1); и тело функции остается без изменения, единственно в объявлении самой функции ссылка на массив не нужна, т.е.
double Fatl(int i)
{
...
}
 
Масив надо передавать по ссылке через &.


Вот простой рабочий пример:
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
   double  MyArray[8];
//----
   AutoFillArray(MyArray,8);
   Print("[0]=",MyArray[0]," [7]=",MyArray[7]);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void AutoFillArray(double &arr[],int items)
  {
   for(int i=0;i<items;i++) arr[i]=i;
  }



Выдает следующий ответ:

2005.01.04 22:57:54	test EURCHF,M1: loaded successfully
2005.01.04 22:57:54	test EURCHF,M1: [0]=0 [7]=7
2005.01.04 22:57:54	test EURCHF,M1: removed
 
Нигде не нашел примера для MQLII, как в файле пользовательской функции доступиться к переданному параметру...
Покажите пример, а то надо пару числовых параметров передать в тройке, и никак не могу понять, как их там взять ...
При визарде пустой (только с служебным заголовком) файл UserFunc.mql создается, а примеров в хелпе не нашел ...
Да и еще! Есть где-то русская версия файла dictionary.dic? Было бы неплохо иметь словарь на русском в MetaEditor.
 
Покажите пример, а то надо пару числовых параметров передать в тройке, и никак не могу понять, как их там взять ...


Извините, а Вы программировать умеете?
Если нет, то лучше почитать книжки по программированию (экспресс обучение путем вопросов
в форуме - не самый лучший вариант).
 
Умею! Но я нинашел нигде примера как использовать такие функции, если еще и передаются параметры!
Когда такую функцию вызываешь внутри эксперта, то она и выполняется в контексте данного експерта, но так и не понял, как же все таки получить внутри функции переданные ей параметры ....
Я смотрел вашу документацию (если и иметь в виду файл dictionary.dic) и ничего в ней не нашел ...
Не сказать, что мне помогут книжки по программированию, в данном случае ...
Не надо дергать друг-друга за самолюбие!
Я задал конкретный вопрос, и надеялся получить нормальный ответ ... Вы бы вообще могли не отвечать мне, если у вас не было желания мне помочь!
Если вас не затруднит ответьте хотя бы на словах ... Вот ситуация ...
UserFunction("SetVolatility()", iVolatility, iDiapason);


Как мне в теле функции SetVolatility() получит два последних параметра? Визард содает шаблон:

/*[[
	Name := SetVolatility()
	Author := Иванов Константин
]]*/ 


И все ... Как теперь мне работать с переданными параметрами iVolatility и iDiapason?

 
зайдите на нашу страницу, посвящённую тройке "MetaTrader 3" и скачайте оттуда "Руководство пользователя MetaQuotes Language II"
 
Пример:
основная программа:
  var: retval(0);
  retval=UserFunction("SetVolatility",0.25,10);
  print("Return value is ",retval);



файл SetVolatility.mql в каталоге /functions

Inputs : iVolatility(0),iDiapason(0);

Print("iVolatility= ",iVolatility," iDiapason= ",iDiapason);
return(iVolatility);



К сожалению, в MQL2 с функциями неудобно работать. В MetaTrader 4 мы все изменили
и проблем практически нет (все С-подобно).

 
Ринат, с интересом рассматриваю новый язык. Скажите, насколько он соответствует стандартному Си?
Увидел передачу аргумента не по значению, а по адресу и очень удивился - продвинутый язык ;)

Теперь бы ещё сделать обработчики исключений, изменить саму логику работы эксперта - и цены ему не будет!
 
Благодарю за ответ! Теперь мне все понятно!
Если не сложно, то ответьте на последний вопрос...
Те дилинговые центры, которые сейчас работают на "тройке", так и будут продолжать на ней работать?
Более конкретно - переход на четверку для них легок в техническом и финансовом плане? Или они так и останутся на тройке еще долгое время? Как быстро (в перспективе) получит распространение "четверка"?
 
Скажите, насколько он соответствует стандартному Си?


Соответствует достаточно для наших целей, но нет опасной адресной арифметики.
Обработчиков исключений не будет - это лишнее.

Более конкретно - переход на четверку для них легок в техническом и финансовом плане?


Достаточно легок, многие компании ждут окончания первичного бета-тестирования чтобы запустить
демо-торги на МетаТрейдер4 у себя.
Причина обращения: