Набор математических и тригонометрических функций.
Функция |
Действие |
MathAbs |
Возвращает абсолютное значение (значение по модулю) переданного ей числа |
MathArccos |
Возвращает значение арккосинуса x в радианах |
MathArcsin |
Возвращает значение арксинуса x в радианах |
MathArctan |
Возвращает арктангенс x в радианах |
MathCeil |
Возвращает ближайшее сверху целое числовое значение |
MathCos |
Возвращает косинус числа |
MathExp |
Возвращает экспоненту числа |
MathFloor |
Возвращает ближайшее снизу целое числовое значение |
MathLog |
Возвращает натуральный логарифм |
MathLog10 |
Возвращает логарифм числа по основанию 10 |
MathMax |
Возвращает максимальное из двух числовых значений |
MathMin |
Возвращает минимальное из двух числовых значений |
MathMod |
Возвращает вещественный остаток от деления двух чисел |
MathPow |
Возводит основание в указанную степень |
MathRand |
Возвращает псевдослучайное целое число в диапазоне от 0 до 32767 |
MathRound |
Округляет число до ближайшего целого |
MathSin |
Возвращает синус числа |
MathSqrt |
Возвращает квадратный корень |
MathSrand |
Устанавливает начальное состояние генератора псевдослучайных целых чисел |
MathTan |
Возвращает тангенс числа |
MathIsValidNumber |
Проверяет корректность действительного числа |
MathExpm1 |
Возвращает значение выражения MathExp(x)-1 |
MathLog1p |
Возвращает значение выражения MathLog(1+x) |
MathArccosh |
Возвращает значение гиперболического арккосинуса |
MathArcsinh |
Возвращает значение гиперболического арксинуса |
MathArctanh |
Возвращает значение гиперболического арктангенса |
MathCosh |
Возвращает гиперболический косинус |
MathSinh |
Возвращает гиперболический синус |
MathTanh |
Возвращает гиперболический тангенс |
MathAbs
Возвращает абсолютное значение (значение по модулю) переданного ей числа.
double MathAbs( double value // число );
Параметры
value — [in] Числовая величина.
Возвращаемое значение
Значение типа double, больше или равно нулю.
Примечание
Вместо функции MathAbs() можно использовать функцию fabs().
MathArccos
Возвращает значение арккосинуса x в диапазоне 0 к π в радианах.
double MathArccos( double value // -1<val<1 );
Параметры
value — [in] Значение value между -1 и 1, арккосинус которого должен быть вычислен.
Возвращаемое значение
Арккосинус числа в радианах. Если value меньше -1 или больше 1, функция возвращает NaN (неопределенное значение).
Примечание
Вместо функции MathArccos() можно использовать функцию acos().
MathArcsin
Возвращает арксинус x в диапазоне от -π/2 до π/2 радианов.
double MathArcsin( double value // -1<value<1 );
Параметры
value — [in] Значение value между -1 и 1, арксинус которого должен быть вычислен.
Возвращаемое значение
Арксинус числа value в радианах в диапазоне от -π/2 до π/2 радианов. Если value меньше -1 или больше 1, функция возвращает NaN (неопределенное значение).
Примечание
Вместо функции MathArcsin() можно использовать функцию asin().
MathArctan
Возвращает арктангенс x. Если x равен 0, функция возвращает 0.
double MathArctan( double value // тангенс );
Параметры
value — [in] Число, представляющее тангенс.
Возвращаемое значение
MathArctan возвращает значение в диапазоне от -π/2 до π/2 радианов.
Примечание
Вместо функции MathArctan() можно использовать функцию atan().
MathCeil
Возвращает ближайшее сверху целое числовое значение.
double MathCeil( double val // число );
Параметры
val — [in] Числовая величина.
Возвращаемое значение
Числовое значение, представляющую наименьшее целое число, которое больше или равно val.
Примечание
Вместо функции MathCeil() можно использовать функцию ceil().
MathCos
Функция возвращает косинус угла.
double MathCos( double value // число );
Параметры
value — [in] Угол в радианах.
Возвращаемое значение
Значение типа double в диапазоне от -1 до 1.
Примечание
Вместо функции MathCos() можно использовать функцию cos().
MathExp
Возвращает значение числа e в степени d.
double MathExp( double value // степень для числа e );
Параметры
value — [in] Число, определяющее степень.
Возвращаемое значение
Число типа double. При переполнении функция возвращает INF (бесконечность), в случае потери порядка точности MathExp возвращает 0.
Примечание
Вместо функции MathExp() можно использовать функцию exp().
MathFloor
Возвращает ближайшее снизу целое числовое значение.
double MathFloor( double value // число );
Параметры
val — [in] Числовое значение.
Возвращаемое значение
Числовое значение, представляющее наибольшее целое число, которое меньше или равно value.
Примечание
Вместо функции MathFloor() можно использовать функцию floor().
MathLog
Возвращает натуральный логарифм.
double MathLog( double value // число для взятия логарифма );
Параметры
val — [in] Значение, логарифм которого должен быть вычислен.
Возвращаемое значение
Натуральный логарифм value в случае успеха. Если значение val отрицательно, функция возвращает NaN (неопределенное значение). Если value равно 0, функция возвращает INF (бесконечность) .
Примечание
Вместо функции MathLog() можно использовать функцию log().
MathLog
Возвращает логарифм числа по основанию 10.
double MathLog10( double val // число для взятия логарифма );
Параметры
val — [in] Значение, десятичный логарифм которого должен быть вычислен.
Возвращаемое значение
Десятичный логарифм val в случае успеха. Если значение val отрицательно, функция возвращает NaN (неопределенное значение). Если val равно 0, функция возвращает INF (бесконечность) .
Примечание
Вместо функции MathLog10() можно использовать функцию log10().
MathMax
Функция возвращает максимальное из двух числовых значений.
double MathMax( double value1, // первое число double value2 // второе число );
Параметры
value1 — [in] Первое числовое значение.
value2 — [in] Второе числовое значение.
Возвращаемое значение
Большее из двух чисел.
Примечание
Вместо функции MathMax() можно использовать функцию fmax(). Функции fmax(), fmin(), MathMax(), MathMin() могут работать с целыми типами без преобразования к типу double.
Если в функцию передаются параметры разных типов, то параметр младшего типа автоматически приводится к старшему типу. Тип возвращаемого значения соответствует старшему типу.
Если передаются данные одного типа, то никакого преобразования не производится.
MathMin
Функция возвращает минимальное из двух числовых значений.
double MathMin( double value1, // первое число double value2 // второе число );
Параметры
value1 — [in] Первое числовое значение.
value2 — [in] Второе числовое значение.
Возвращаемое значение
Меньшее из двух чисел.
Примечание
Вместо функции MathMin() можно использовать функцию fmin(). Функции fmax(), fmin(), MathMax(), MathMin() могут работать с целыми типами без преобразования к типу double.
Если в функцию передаются параметры разных типов, то параметр младшего типа автоматически приводится к старшему типу. Тип возвращаемого значения соответствует старшему типу.
Если передаются данные одного типа, то никакого преобразования не производится.
MathMod
Возвращает вещественный остаток от деления двух чисел.
double MathMod( double value, // делимое double value2 // делитель );
Параметры
value — [in] Значение делимого.
value2 — [in] Значение делителя.
Возвращаемое значение
Функция MathMod рассчитывает вещественный остаток f от val / y таким образом, что val = i * y + f , где i является целым числом, f имеет тот же знак, что и val, и абсолютное значение f меньше, чем абсолютное значение y.
Примечание
Вместо функции MathMod() можно использовать функцию fmod().
MathPow
Возводит основание в указанную степень.
double MathPow( double base, // основание double exponent // показатель степени );
Параметры
base — [in] Основание.
exponent — [in] Значение степени.
Возвращаемое значение
Значение основания, возведенного в указанную степень.
Примечание
Вместо функции MathPow() можно использовать функцию pow().
MathRand
Возвращает псевдослучайное целое число в диапазоне от 0 до 32767.
int MathRand();
Возвращаемое значение
Целое число в диапазоне от 0 до 32767.
Примечание
Перед первым вызовом функции необходимо использовать функцию MathSrand, чтобы перевести генератор псевдослучайных чисел в начальное состояние.
Примечание
Вместо функции MathRand() можно использовать функцию rand().
MathRound
Возвращает значение, округленное до ближайшего целого числа указанного числового значения.
double MathRound( double value // округляемое значение );
Параметры
value — [in] Числовая величина для округления.
Возвращаемое значение
Значение, округленное до ближайшего целого числа.
Примечание
Вместо функции MathRound() можно использовать функцию round().
MathSin
Возвращает синус указанного угла.
double MathSin( double value // число );
Параметры
value — [in] Угол в радианах.
Возвращаемое значение
Синус угла, указанного в радианах. Возвращает значение в диапазоне от -1 до 1.
Примечание
Вместо функции MathSin() можно использовать функцию sin().
MathSqrt
Возвращает квадратный корень числа.
double MathSqrt( double value // положительное число );
Параметры
value — [in] Положительная числовая величина.
Возвращаемое значение
Квадратный корень числа value. Если value отрицательно, MathSqrt возвращает NaN (неопределенное значение).
Примечание
Вместо функции MathSqrt() можно использовать функцию sqrt().
MathSrand
Устанавливает начальное состояние для генерации ряда псевдослучайных целых чисел.
void MathSrand( int seed // инициализирующее число );
Параметры
seed — [in] Начальное число для ряда случайных чисел.
Возвращаемое значение
Нет возвращаемого значения.
Примечание
Функция MathRand() предназначена для генерации последовательности псевдослучайных чисел. Вызов MathSrand() с определенным инициализирующим числом позволяет получать всегда одну и ту же последовательность псевдослучайных чисел.
Для гарантированного получения неповторяющейся последовательности используйте вызов MathSrand(GetTickCount()), так как значение GetTickCount() увеличивается с момента запуска операционной системы и не повторяется в течение 49 дней, пока не переполнится встроенный счетчик миллисекунд. Использование MathSrand(TimeCurrent()) не подходит по той причине, что функция TimeCurrent() возвращает время прихода последнего тика, которое может не меняться долгое время, например, в выходные дни.
Инициализацию генератора псевдослучайных чисел с помощью MathSrand() для индикаторов и экспертов лучше всего делать в обработчике OnInit(), это избавит от последующих многократных перезапусков генератора в OnTick() и OnCalculate().
Вместо функции MathSrand() можно использовать функцию srand().
Пример:
#property description "Индикатор демонстрирует центральную предельную теорему, которая гласит:" #property description "Сумма достаточно большого количества слабо зависимых случайных величин, " #property description "имеющих примерно одинаковые масштабы (ни одно из слагаемых не доминирует," #property description "не вносит в сумму определяющего вклада), имеет распределение, близкое к нормальному." #property indicator_separate_window #property indicator_buffers 1 #property indicator_plots 1 //--- свойства графического построения #property indicator_label1 "Label" #property indicator_type1 DRAW_HISTOGRAM #property indicator_color1 clrRoyalBlue #property indicator_style1 STYLE_SOLID #property indicator_width1 5 //--- input переменная input int sample_number=10; //--- индикаторный буфер для отрисовки распределения double LabelBuffer[]; //--- счетчик тиков double ticks_counter; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ void OnInit() { //--- связывание массива и индикаторного буфера SetIndexBuffer(0,LabelBuffer,INDICATOR_DATA); //--- развернем индикаторный буфер из настоящего в прошлое ArraySetAsSeries(LabelBuffer,true); //--- инициализируем генератор случайных чисел MathSrand(GetTickCount()); //--- инициализируем счетчик тиков ticks_counter=0; } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { //--- при нулевом счетчике обнулим буфер индикатора if(ticks_counter==0) ArrayInitialize(LabelBuffer,0); //--- увеличим счетчик ticks_counter++; //--- нужно периодически сбрасывать счетчик тиков, чтобы оживлять распределение if(ticks_counter>100) { Print("Обнулили значения индикатора, начнем заполнять ячейки снова"); ticks_counter=0; } //--- получим выборку случайных значений, как сумму трех чисел от 0 до 7 for(int i=0;i<sample_number;i++) { //--- вычисление индекса ячейки, куда выпадет случайное число как сумма трех других int rand_index=0; //--- получим три случайных числа от 0 до 7 for(int k=0;k<3;k++) { //--- остаток от деления на 7 вернет значение от 0 до 6 rand_index+=MathRand()%7; } //--- увеличим на единицу значение в ячейке с номером rand_index LabelBuffer[rand_index]++; } //--- выход из обработчика OnCalculate() return(rates_total); }
MathTan
Возвращает тангенс числа.
double MathTan( double rad // аргумент в радианах );
Параметры
rad — [in] Угол в радианах.
Возвращаемое значение
Тангенс числа rad. Если rad больше или равен 263 или меньше или равен -263, то происходит потеря значения и функция возвращает неопределенное число.
Примечание
Вместо функции MathTan() можно использовать функцию tan().
MathIsValidNumber
Проверяет корректность действительного числа
bool MathIsValidNumber( double number // число для проверки );
Параметры
number — [in] Проверяемое число.
Возвращаемое значение
Возвращает true, если проверяемое значение является допустимым вещественным числом. Если проверяемое значение является плюс или минус бесконечностью, либо «не числом» (NaN — not a number), функция возвращает false.
Пример:
double abnormal=MathArcsin(2.0); if(!MathIsValidNumber(abnormal)) Print("Внимание! MathArcsin(2.0) = ",abnormal);
MathExp1
Возвращает значение выражения MathExp(x)-1.
double MathExp1( double value // степень для числа e );
Параметры
value — [in] Число, определяющее степень.
Возвращаемое значение
Число типа double. При переполнении функция возвращает INF (бесконечность), в случае потери порядка точности MathExp1 возвращает 0.
Примечание
При значениях x близком к 0, функция MathExp1(x) даёт гораздо более точные значения, чем MathExp(x)-1.
Вместо функции MathExp1() можно использовать функцию expm1().
MathLog1p
Возвращает значение выражения MathLog(1+x).
double MathLog1p( double value // число для взятия логарифма );
Параметры
val — [in] Значение, логарифм которого должен быть вычислен.
Возвращаемое значение
Натуральный логарифм значения (value+1) в случае успеха. Если value < -1, то функция возвращает NaN (неопределенное значение). Если value равно -1, функция возвращает INF (бесконечность) .
Примечание
При значениях x близком к 0, функция MathLog1p(x) даёт гораздо более точные значения, чем MathLog(1+x).
Вместо функции MathLog1p() можно использовать функцию log1p().
MathArccosh
Возвращает значение гиперболического арккосинуса.
double MathArccosh( double value // 1 <= value < ∞ );
Параметры
val — [in] Значение value, гиперболический арккосинус которого должен быть вычислен.
Возвращаемое значение
Гиперболический арккосинус числа. Если value меньше +1, функция возвращает NaN (неопределенное значение).
Примечание
Вместо функции MathArccosh() можно использовать функцию acosh().
MathArcsinh
Возвращает значение гиперболического арксинуса.
double MathArcsinh( double value // -∞ < value < +∞ );
Параметры
val — [in] Значение value, арксинус которого должен быть вычислен.
Возвращаемое значение
Гиперболический арксинус числа.
Примечание
Вместо функции MathArcsinh() можно использовать функцию asinh().
MathArctanh
Возвращает значение гиперболического арктангенса.
double MathArctanh( double value // значение в дипазоне -1 < value < 1 );
Параметры
value — [in] Число в дипазоне -1 < value < 1, представляющее тангенс.
Возвращаемое значение
Гиперболический арктангенс числа.
Примечание
Вместо функции MathArctanh() можно использовать функцию atanh().
MathCosh
Возвращает гиперболический косинус числа.
double MathCosh( double value // число );
Параметры
value — [in] Значение.
Возвращаемое значение
Гиперболический косинус числа, значение в диапазоне от +1 до плюс бесконечности.
Примечание
Вместо функции MathCosh() можно использовать функцию cosh().
MathSinh
Возвращает гиперболический синус числа.
double MathSinh( double value // число );
Параметры
value — [in] Значение.
Возвращаемое значение
Гиперболический синус числа.
Примечание
Вместо функции MathSinh() можно использовать функцию sinh().
MathTanh
Возвращает гиперболический тангенс числа.
double MathTanh( double value // число );
Параметры
value — [in] Значение.
Возвращаемое значение
Гиперболический тангенс числа, значение в диапазоне от -1 до +1.
Примечание
Вместо функции MathTanh() можно использовать функцию tanh().