- В стандартную библиотеку включена MQL5-версия библиотеки численного анализа ALGLIB.
Возможности библиотеки
- Линейная алгебра
- Решение систем уравнений — линейных и нелинейных
- Интерполяция
- Оптимизация
- Быстрое преобразование Фурье
- Численное интегрирование
- Линейная и нелинейная аппроксимация по методу наименьших квадратов
- Решение обыкновенных дифференциальных уравнений
- Вычисление специальных функций
- Описательная статистика и проверка гипотез
- Анализ данных — классификация, регрессия
- Реализация алгоритмов линейной алгебры, интерполяции и т.д. в арифметике высокой точности (с использованием MPFR)
Как использовать
Файлы библиотеки ALGLIB расположены в каталоге
\MQL5\Include\Math\Alglib. Для использования функций включите основной
файл библиотеки в свою программу:
#include <Math\Alglib\alglib.mqh>
В стандартную библиотеку включены функции работы с математической статистикой. Теперь в MQL5 доступны возможности языка R — одного из лучших инструментов статистической обработки и анализа данных.
Возможности библиотеки
Статистическая библиотека содержит функции для расчета
статистических характеристик данных, а также функции для работы со
статистическими распределениями:
- Функции для расчета статистических характеристик элементов массива
- Функции для работы со статистическими распределениями:
нормальное распределение, логнормальное распределение, бета-распределение и т.д.
Как использовать
Файлы статистической библиотеки расположены в каталоге
\MQL5\Include\Math\Stat. Для использования включите файл с нужными
функциями в свою программу, например:
#include <Math\Stat\Binomal.mqh>
#include <Math\Stat\Cauchy.mqh>
Подробное описание функций библиотеки читайте в статье Статистические распределения в MQL5 - берем лучшее из R.
-
В стандартную библиотеку включена MQL5-версия библиотеки Fuzzy, в которой реализованы системы нечеткого логического вывода Мамдани и Сугено.
Возможности библиотеки
- 13 функций принадлежностей
- Гибкая форма написания правил для нечетких систем
- Система нечеткого логического вывода Мамдани
- Система нечеткого логического вывода Сугено
- 5 методов дефаззификации для систем типа Мамдани
- Неограниченное количество входных и выходных переменных
Как использовать
Файлы библиотеки Fuzzy расположены в каталоге
\MQL5\Include\Math\Fuzzy. Для использования включите файл с нужными
функциями в свою программу, например:
#include <Math\Fuzzy\mamdanifuzzysystem.mqh>
#include <Math\Fuzzy\sugenofuzzysystem.mqh>
Подробное описание библиотеки можно найти в Code Base: Fuzzy - библиотека для работы с нечеткой логикой
- Добавлено свойство CHART_QUICK_NAVIGATION для
включения/отключения строки быстрой навигации на графике. Для изменения и
получения состояния свойства используйте функции ChartSetInteger и
ChartGetInteger.
Строка
вызывается нажатием клавиши Enter или Space. При помощи нее можно
быстро переместиться к заданной дате на графике, переключить символ и
таймфрейм. Если ваша MQL5-программа обрабатывает нажатия клавиш Enter
или Space, отключите свойство CHART_QUICK_NAVIGATION, чтобы терминал не
перехватывал эти события. При этом останется возможность вызова строки
навигации двойным кликом мыши.
- Добавлены функции FileLoad и FileSave для легкого чтения и
сохранения массивов в файлы. В отличие от FileRead* и FileWrite*,
этим функциям не требуется хэндл файла. FileLoad и FileSave работают с
массивами числовых типов, а также с простыми структурами, не имеющими
строк, динамических массивов или
объектов класса.
long FileLoad(
const string filename,
void &buffer[],
uint common_flag=0
);
bool FileSave(
const string filename,
const void &buffer[],
uint common_flag=0
);
Пример записи массива тиков в файл с последующим чтением этих данных:
input int ticks_to_save=1000;
void OnStart()
{
string filename=_Symbol+"_ticks.bin";
MqlTick ticks[];
int copied=CopyTicks(_Symbol,ticks,COPY_TICKS_ALL,0,ticks_to_save);
if(copied!=-1)
{
PrintFormat(" CopyTicks(%s) copied %d ticks",_Symbol,copied);
if(!GetLastError()==0)
PrintFormat("%s: Ticks are not synchronized. Error=",_Symbol,copied,_LastError);
if(!FileSave(filename,ticks,FILE_COMMON))
PrintFormat("FileSave() failed, error=%d",GetLastError());
}
else
PrintFormat("Failed CopyTicks(%s), Error=",_Symbol,GetLastError());
ArrayFree(ticks);
long count=FileLoad(filename,ticks,FILE_COMMON);
if(count!=-1)
{
Print("Time\tBid\tAsk\tLast\tVolume\tms\tflags");
for(int i=0;i<count;i++)
{
PrintFormat("%s.%03I64u:\t%G\t%G\t%G\t%I64u\t0x%04x",
TimeToString(ticks[i].time,TIME_DATE|TIME_SECONDS),ticks[i].time_msc%1000,
ticks[i].bid,ticks[i].ask,ticks[i].last,ticks[i].volume,ticks[i].flags);
}
}
}
- Модифицировано отображение пользовательского индикатора с режимом
рисования DRAW_CANDLES. Теперь для этого стиля можно задавать от одного
до трех цветов, в зависимости от этого меняется внешний вид свечей.
Если указан один цвет, все свечи на графике будут полностью окрашены этим цветом.
#property indicator_label1 "One color candles"
#property indicator_type1 DRAW_CANDLES
#property indicator_color1 clrGreen
Если указано два цвета, контуры свечи будут отрисовываться первым цветом, а тело — вторым цветом.
#property indicator_label1 "Two color candles"
#property indicator_type1 DRAW_CANDLES
#property indicator_color1 clrGreen,clrWhite
Если указано три цвета, контур свечи будет нарисован первым цветом, а цвет бычьей и медвежьей свечей будет задаваться вторым и третьим цветом.
#property indicator_label1 "One color candles"
#property indicator_type1 DRAW_CANDLES
#property indicator_color1 clrGreen,clrWhite,clrRed
Таким
образом, с помощью стиля DRAW_CANDLES можно создавать собственные
пользовательские варианты раскраски свечей. Все цвета можно также менять
динамически в процессе работы индикатора с помощью функции
PlotIndexSetInteger(индекс_построения_DRAW_CANDLES, PLOT_LINE_COLOR,
номер_модификатора, цвет) , где номер_модификатора можеть иметь
следующие значения:
- 0 – цвет контура и теней
- 1– цвет тела бычьей свечи
- 2 – цвет тела медвежьей свечи
PlotIndexSetInteger(0,PLOT_LINE_COLOR,0,clrBlue);
PlotIndexSetInteger(0,PLOT_LINE_COLOR,1,clrGreen);
PlotIndexSetInteger(0,PLOT_LINE_COLOR,2,clrRed);
- Исправлен ряд ошибок и ускорена работа с тиковой историей при помощи функций CopyTicks.
- Разрешено использование операторов в интерфейсах.
Обновлена документация.