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

Библиотека GlobalArray - разделяемое хранилище массивов в памяти - библиотека для MetaTrader 4

Просмотров:
2996
Рейтинг:
(8)
Опубликован:
2009.11.24 09:17
Обновлен:
2016.11.22 07:33
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

При написании торговых систем, состоящих из нескольких компонентов, иногда требуется передать массивы данных из одного модуля (индикатора, советника) в другой. В случае отдельных значений это легко сделать с помощью глобальных переменных МетаТрейдера, но если речь идет о большом объеме данных, то приходится создавать временные файлы, хотя удобнее было бы осуществить передачу в памяти. Для этих целей предназначена библиотека GlobalArray.

Один из случаев, когда она нужна, - это если значения рассчитываемых индексных буферов индикатора лежат в разных диапазонах, но их следует одновременно отрисовать. К сожалению, МетаТрейдер не позволяет привязывать один и тот же индикатор к разным окнам и затем назначать каждому буферу конкретное окно (подокно) для вывода, хотя это было бы удобно. Вынужденная попытка вывести все буфера в одно окно приводит, очевидно, к диспропорциям в отображении, и может потребовать искусственного масштабирования одного или нескольких буферов. Конечно, существуют решения этой проблемы путем дублирования кода (или самого) индикатора, но если расчет требует ощутимого времени, то такое задваивание неэффективно.

Чтобы этого избежать, можно сохранить значения буфера, требующего отдельного масштаба, в глобальный массив с помощью функции GlobalArraySet, и написать небольшой индикатор-заглушку для отображения этого массива в отдельном окне, предварительно прочитав его с помощью функции GlobalArrayGet.

Полный набор функций библиотеки:

int GlobalArraySet(string ID, double Array[], int ArrayCount);
int GlobalArrayGet(string ID, double& Array[], int ArrayCount);
int GlobalArraySize(string ID);
int GlobalArrayDelete(string ID);

Их назначение:

  • GlobalArraySet - сохраняет под именем ID массив Array размером ArrayCount; возвращает 0 в случае успеха или код ошибки;

коды ошибок: 1 - массив пуст (нераспределен); 2 - неверный размер (допускается от 1 до 100000); 3 - указанный ID уже используется;

  • GlobalArrayGet - считывает в массив Array данные из глобального массива ID размером ArrayCount; значение параметра ArrayCount должно совпадать с размером хранящегося в глобальной памяти массива, поэтому перед вызовом GlobalArrayGet следует вызвать GlobalArraySize; сам массив Array должен иметь размер не менее ArrayCount; функция возвращает 0 в случае успеха или код ошибки;

коды ошибок: 1 - неверный ID - нет такого массива; 2 - не соответствуют размеры сохраненного и считываемого объема данных;

  • GlobalArraySize - возвращает размер глобального массива ID;

коды ошибок: -1 - неверный ID;

  • GlobalArrayDelete - удаляет глобальный массив по имени ID;

коды ошибок: 1 - неверный ID.

Файлы

  • GlobalArray.mqh - заголовочный файл в папку \experts\include;
  • GlobalArrayTest.mq4 - тестовый скрипт в папку \experts\scripts;
  • GlobalArray.dll - библиотека в папку \experts\libraries;
  • GlobalArrayCppv1.zip - исходный код (для тех, кто захочет что-то усовершенствовать).

Первая версия библиотеки - возможны баги.

Распространяется "как есть", без гарантии соответствия чьим-либо ожиданиям. ;-)

Выложена обновленная версия 1.0.1 (багфикс): 24 ноября 2009 17:12 MSK.

I Love You, Masha... I Love You, Masha...

Пакет индикаторов построенных на мувингах с очень широким спектром регулируемых настроек. По умолчанию - как всегда, старый добрый дядя Вильямс...

Кластерная средняя Кластерная средняя

Данный индикатор показывает отклонения скользящих средних по валютной паре, с учетом заданных гармоник колебаний валютных индексов.

Volume_from_futures Volume_from_futures

Отображение тиковых объемов фьючерсных инструментов, на графике валютной пары рынка спот.

Stochastic3 показывает графики 3х периодов в одном окне Stochastic3 показывает графики 3х периодов в одном окне

Stochastic3 показывает графики 3х периодов в одном окне и вычисляет среднюю линию