Объявление double dest_array[100][6] перенеси в хидер (до init()). Тогда dest_array будет как бы глобальным и сможешь получить к нему доступ в любом месте. И вызов твоей функции будет выглядеть: f0 = Fatl(1); и тело функции остается без изменения, единственно в объявлении самой функции ссылка на массив не нужна, т.е.
double Fatl(int i)
{
...
}
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.
Покажите пример, а то надо пару числовых параметров передать в тройке, и никак не могу понять, как их там взять ...
При визарде пустой (только с служебным заголовком) файл UserFunc.mql создается, а примеров в хелпе не нашел ...
Да и еще! Есть где-то русская версия файла dictionary.dic? Было бы неплохо иметь словарь на русском в MetaEditor.
Покажите пример, а то надо пару числовых параметров передать в тройке, и никак не могу понять, как их там взять ...
Извините, а Вы программировать умеете?
Если нет, то лучше почитать книжки по программированию (экспресс обучение путем вопросов
в форуме - не самый лучший вариант).
Умею! Но я нинашел нигде примера как использовать такие функции, если еще и передаются параметры!
Когда такую функцию вызываешь внутри эксперта, то она и выполняется в контексте данного експерта, но так и не понял, как же все таки получить внутри функции переданные ей параметры ....
Я смотрел вашу документацию (если и иметь в виду файл dictionary.dic) и ничего в ней не нашел ...
Не сказать, что мне помогут книжки по программированию, в данном случае ...
Не надо дергать друг-друга за самолюбие!
Я задал конкретный вопрос, и надеялся получить нормальный ответ ... Вы бы вообще могли не отвечать мне, если у вас не было желания мне помочь!
Если вас не затруднит ответьте хотя бы на словах ... Вот ситуация ...
Когда такую функцию вызываешь внутри эксперта, то она и выполняется в контексте данного експерта, но так и не понял, как же все таки получить внутри функции переданные ей параметры ....
Я смотрел вашу документацию (если и иметь в виду файл 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 у себя.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Такая штука не работает. А как должно быть?
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]
....
}
Заранее спасибо.