Ставь лайки и следи за новостями
Поставь на него ссылку - пусть другие тоже оценят
Оцени его работу в терминале MetaTrader 5
- Просмотров:
- 2510
- Рейтинг:
- Опубликован:
- 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[]. Функции могут иметь любое количество аргументов.

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

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

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

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