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

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

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

Описание:

Рассматривается двумерный массив значений типа double в терминах БД. Массив состоит из С колонок и R строк. Подразумевается, что значения в колонке нормализованы одинаково.

Основные реализованные функции:

1. Array.Sort(double &a[], int order[], int sort.mode=MODE_QUICK3)

- сортировка массива в произвольном порядке колонок, в произвольном направлении каждой колонки. Реализован алгоритм сортировки quicksort-3way (http://www.sorting-algorithms.com/quick-sort-3-way). Краткое описание: время сортировки стремится к O(R·lg(R)) (быстрый, для сравнения: пузырьковый метод сортировки имеет время порядка O(R^2)), взаимный порядок строк с одинаковыми значениями ключа сортировки не сохраняется (нестабильный), сортировка "почти упорядоченных" данных занимает меньшее время в сравнении с random-последовательностью (адаптивный). Здесь a - упорядочиваемый массив, order - перечень колонок упорядочивания, с указанием направления сортировки. Направление указывается знаком. С этой целью нумерация колонок по абсолютному значению начинается с 1 (!). Например, задать упорядочивание массива по a[0] ASC, a[3] DESC, a[2] ASC, a[5] DESC

int order[] = { 1, -4, 3, -6};
Array.Sort(a, order);

2. Array.Group(double &a[][], int groups[], int sums[], double &dest[][])

- группировка строк массива с совпадающими ключами, опционно - с вычислением сумм в указываемых дополнительно колонках. Здесь a и groups - см. выше по аналогии, sums - перечень суммируемых колонок (нумерация также с 1; хотя насущной необходимости в этом не было, ввел по аналогии с массивами групп и сортировки во избежание дополнительной путаницы), dest - выходной массив. Перед суммированием массив сортируется автоматически (дополнительной сортировки перед вызовом процедуры не требуется).

double a[10000][9];

...... // work with array

double d[][5];

int g[] = { -1, 2, 5}, s[] = { 6, 7};

Array.Group(a, g, s, d);

3. Array.Select(double &a[][], double & filter[][], double & dest[][])

- выборка из массива подмножества, удовлетворяющего заданным критериям. Здесь a и dest - см. выше по аналогии, filter - массив состоящий из трех колонок и произвольного количества строк, описывающий набор условий. Условия простейшие - нахождение значения колонки в диапазоне минимального и максимального значений. filter[1..C][0] - номер колонки; filter[][1] - min, filter[][2] - max. Требование к dest - количество колонок равное С. Строки добавятся автоматически. Исходный массив не сортируется (простой перебор).

При необходимости можно воспользоваться служебными функциями Array.Swap(a, i1, i2) (меняет местами строки массива a с номерами i1 и i2) и Array.Compare(a, i1, i2, order) (сравниваются строки i1 и i2 массива а в разрезе указанного набора (по ключам) order, возвращаемые значения - {-1| 0| 1}).

Прилагается скрипт, иллюстрирующий возможности библиотеки.

Установка:

experts\libraries\ArrayEx.mq4

experts\scripts\Sort_Array.mq4

ytg_DveMashki_ind_w_Signals ytg_DveMashki_ind_w_Signals

Очень удобный индикатор ytg_DveMashki_ind автора Yuriy Tokman, дополнен двумя сигнальными линиями. Полезная примочка для любителей EWA

macd sample 1010 macd sample 1010

Эксперт может делать 10000 USD в месяц, иногда меньше, но он всегда прибыльный

Дневной откат Дневной откат

Советник пытается работать на откате движения цены за торговые сутки. Если цена прошла достаточное движение за сессию (оптимизируемая величина), то есть надежда отработать тени дневной свечи. Внутри кода все пояснения.

DELETE_ALLS_AROWS DELETE_ALLS_AROWS

Скрипт удаляет графические значки от ордеров.