Снова про передачу массивов в функцию
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
Покажите пример, а то надо пару числовых параметров передать в тройке, и никак не могу понять, как их там взять ...
При визарде пустой (только с служебным заголовком) файл UserFunc.mql создается, а примеров в хелпе не нашел ...
Да и еще! Есть где-то русская версия файла dictionary.dic? Было бы неплохо иметь словарь на русском в MetaEditor.
Извините, а Вы программировать умеете?
Если нет, то лучше почитать книжки по программированию (экспресс обучение путем вопросов
в форуме - не самый лучший вариант).
Когда такую функцию вызываешь внутри эксперта, то она и выполняется в контексте данного експерта, но так и не понял, как же все таки получить внутри функции переданные ей параметры ....
Я смотрел вашу документацию (если и иметь в виду файл dictionary.dic) и ничего в ней не нашел ...
Не сказать, что мне помогут книжки по программированию, в данном случае ...
Не надо дергать друг-друга за самолюбие!
Я задал конкретный вопрос, и надеялся получить нормальный ответ ... Вы бы вообще могли не отвечать мне, если у вас не было желания мне помочь!
Если вас не затруднит ответьте хотя бы на словах ... Вот ситуация ...
UserFunction("SetVolatility()", iVolatility, iDiapason);
Как мне в теле функции SetVolatility() получит два последних параметра? Визард содает шаблон:
/*[[ Name := SetVolatility() Author := Иванов Константин ]]*/
И все ... Как теперь мне работать с переданными параметрами iVolatility и iDiapason?
основная программа:
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 у себя.
Такая штука не работает. А как должно быть?
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]
....
}
Заранее спасибо.