Смотри, как бесплатно скачать роботов
Ищи нас в Telegram!
Ставь лайки и следи за новостями
Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят
Понравился скрипт?
Оцени его работу в терминале MetaTrader 5
Библиотеки

sToken - библиотека для MetaTrader 4

Просмотров:
2430
Рейтинг:
(6)
Опубликован:
2011.02.28 08:39
Обновлен:
2016.11.22 07:33
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

Скрипт с функциями для решения математических и логических выражений задаваемых строкой.

 

Поддерживаются все функции языка mql4: abs, arccos, arcsin, arctan, ceil, cos, exp, floor, log, max, min, mod, pow, rand, round, sin, sqrt, tan

Поддерживаются арифметические и логические действия: /, %, *, +, -, >, <, >=, <=, ==, !=, &&, ||.

Аргументами выражения могут быть числа, в том числе с десятичным разделителем (с точкой), пользовательские переменные и пользовательские массивы. При использовании пользовательских переменных и массивов необходимо дописать функции получения значений этих переменных и массивов. Имена переменных и массивов состоят из букв (регистр не имеет значения, так же и регистр всего выражения не имеет значения), элементы массивов определяются числом в квадратных скобках, например - e[0], e[1], f[0], f[1].

Порядок добавления пользовательских переменных и массивов

  

1. Зарегистрировать имя переменной или массива. Регистрация выполняется в массивах un (переменные) и uan (массивы).

string un[]={"a","b","c","d"};
string uan[]={"e","f"};

2. В функцию UserFunc(string FuncName) дописать вызов определенной функции при соответствущем аргументе функции.

string UserFunc(string FuncName){
   if(FuncName=="a")return(a());
   if(FuncName=="b")return(b());
   if(FuncName=="c")return(c());
   if(FuncName=="d")return(d());
   Alert("Функция для переменной "+FuncName+" не определена");
}


3. Написать функции для каждой из пользовательских переменных:

string a(){
   return("1");
}
string b(){
   return("2");
}
string c(){
   return("3");
}
string d(){
   return("4");
}

 
4. В функцию UserArray(string ArrName,int aIndex) дописать вызов определенной функции при соответствующем первом аргументе функции (переменной ArrName). Переменная aIndex будет определять индекс элемента пользовательского массива.

string UserArray(string ArrName,int aIndex){
   if(ArrName=="e")return(e(aIndex));
   if(ArrName=="f")return(f(aIndex));
   Alert("Функция для массива "+ArrName+" не определена");
}

5. Написать функции для каждого из пользовательских массивов:

string e(int Index){
   string v[]={"1","2","3","4","5","6","7","8","9"};
   return(v[Index]);
}

string f(int Index){
   string v[]={"10","20","30","40","50","60","70","80","90"};
   return(v[Index]);
}

 

Порядок использования

  

1. Объявить внешнюю переменную в которую пользователь будет вводить выражение.

2. Подготовить выражение - вызвать функцию Prepare().

int init(){
   Prepare();
}

3. По мере необходимости вызывать функцию SolveExpression().

double Result=SolveExpression();

Возможно добавление новых функций.

 

Добавление новых функций


1. Зарегистрировать новую функцию. Регистрация выполняется добавлением имени функции в массив a.

string a[]={"abs","arccos","arcsin","arctan","ceil","cos","exp","floor","log","max","min","mod","pow","rand","round","sin","sqrt","tan"};

2. В функцию SolveFunc(string Func,string & aRes[]) добавить код вычисления новой функции. Аргументы для вычисления функции будут находиться в массиве aRes[]. Функции могут иметь любое количество аргументов.

utter_up_dn utter_up_dn

В отличии от стандартных "фракталов" и всевозможных зиг-загов, индикатор показывает "внутреннюю структуру рынка" максимально приближенно к действительной.

Советник "Пробой дня" Советник "Пробой дня"

Советник работает stop ордерами на пробой прошлого дня или временного промежутка.

пробник пробник

советник использует RSI и volumes торгует только в бай

Система трех экранов Элдера Система трех экранов Элдера

Советник торгует по системе "трех экранов", описанной Элдером в книге "Как играть и выигрывать на бирже".