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

Связанный список. - библиотека для MetaTrader 5

Просмотров:
1381
Рейтинг:
(11)
Опубликован:
2019.05.02 12:48
Обновлен:
2019.05.03 16:30
\MQL5\Include\ \MQL5\Scripts\
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

Шаблон класса, реализующий связанный список для работы с объектами наследуемыми от класса CObject.

Класс СObject - является аналогом класса CObject из стандартной библиотеки со следующими изменениями:

  1. Изменены названия членов класса и методов, для того, чтобы освободить часто используемые имена Prev и Next для использования в наследуемых классах.
  2. Добавлен публичный метод ResetObjIterators(): очистка ссылок на связанные объекты.
  3. Добавлен деструктор, в котором происходит связывание объектов, связанных с удаляемым.

Описание класса CList.

Публичных членов класса нет.

Конструктор (пока только по умолчанию, возможно будут и другие):

  • СList() - создает список с нулевым размером.

Деструктор: в зависимости от режима работы, вызывает (устанавливается по умолчанию) или нет деструкторы всех объектов списка. Установка режима производится методом void SetDestructMode (bool mIsDeletable). ВНИМАНИЕ, при использовании режима без вызова деструкторов - возможна утечка памяти.

Публичные методы класса:

Во всех случаях, когда mPos=INT_MIN, действие производится в текущей позиции.

  • int GetIterator() - возвращает порядковый номер текущего объекта списка.
  • int GetSize() - возвращает размер списка.
  • bool IsEmpty() -возвращает true, если список пуст.
  • bool IsFirst() - возвращает true, если указатель указывает на первый объект списка или список пуст.
  • bool IsLast() - возвращает true, если указатель указывает на последний объект списка или список пуст.
  • bool IsDeletable() - возвращает true, если при уничтожении объекта списка, будут вызваны деструкторы всех членов списка.
  • T* It() - возвращает указатель на текущий объект списка.
  • T* Begine() - возвращает указатель на первый объект списка.
  • T* End() - возвращает указатель на последний объект списка.
  • T* Next(int mCount=1) - возвращает объект следующий от текущего на указанное значение позиций, по умолчанию, возвращает следующий. Если текущий объект последний в списке, то возвращает NULL.
  • T* Prev(int mCount=1) - возвращает объект предшествующий текущему на указанное значение позиций, по умолчанию, возвращает предыдущий. Если текущий объект первый в списке, то возвращает NULL.
  • T* Push(T* mPtr,int mPos=INT_MIN) - добавляет новый объект mPtr  на указанную mPos позицию в списке, при этом объект, который находился на указанной позиции, становится следующим по списку. Возвращает указатель на новый объект в списке.
  • T* PushBack(T* mPtr) - добавляет новый объект в конец списка и возвращает указатель на него.
  • T* PushFirst(T* mPtr) - добавляет новый объект в начало списка и возвращает указатель на него.
  • T* PushNext(T* mPtr) - добавляет новый объект на позицию, следующую за текущей.
  • T* Swap(T* mPtr,int mPos=INT_MIN) - производит замену объекта находящегося по указанной позиции на новый объект mPtr и возвращает указатель на заменяемый объект. При пустом списке производит добавление объекта в список и возвращает NULL.
  • T* Insert(T* mPtr, int mPos=INT_MIN) - производит замену объекта находящегося по указанной позиции на новый объект mPtr, возвращает указатель на него и вызывает деструктор заменяемого объекта. При пустом списке производит добавление объекта в список и возвращает указатель на него.
  • T* Move(int mPos=INT_MIN) - производит удаление объекта, по указанной позиции списка и возвращает указатель на него. Указатель в списке перемещается на следующий объект, а в случае, если объект находился на последнем месте, то на предыдущий.
  • T* PopFirst() - производит удаление первого объекта списка и возвращает указатель на него. Указатель в списке перемещается на первый объект списка.
  • T* PopBack() - производит удаление последнего объекта списка и возвращает указатель на него. Указатель в списке перемещается на последний объект списка.
  • T* Erace(int mPos=INT_MIN) - производит удаление объекта, по указанной позиции списка, без вызова его деструктора. Возвращает указатель на объект следующий за удаляемым. Если удаляемый объект был последним в списке, то возвращает указатель на предыдущий объект, если удаляется единственный объект списка, то возвращается NULL. ВНИМАНИЕ возможна утечка памяти.
  • T* Delete(int mPos=INT_MIN) - производит удаление объекта, по указанной позиции списка, с вызовом его деструктора. Возвращает указатель на объект следующий за удаляемым. Если удаляемый объект был последним в списке, то возвращает указатель на предыдущий объект, если удаляется единственный объект списка, то возвращается NULL.
  • void DeleteAll() - удаляет все объекты списка, вызывая их деструкторы. Список становится пустым.
  • void SetDestructMode (bool mIsDeletable) - устанавливает режим работы деструктора. Этот режим определяет, будут ли последовательно вызваны деструкторы объектов входящих в список.
Перегруженный оператор [] - возвращает указатель на объект по указанному положению и переносит указатель списка на него.
Система линейных алгебраических уравнений на каждом баре Система линейных алгебраических уравнений на каждом баре

Индикатор на два окна на примере решения системы линейных алгебраических уравнений любой размерности

iMA iMACD EA iMA iMACD EA

Индикатор iMA (Moving Average, MA) в качестве фильтра тренда и индикатор iMACD (Moving Average Convergence/Divergence, MACD) в качестве подтверждающих сигналов

Multi signal panel Multi signal panel

Сигнальная панель на базе трёх индикаторов и пяти таймфреймов

Pound trade Pound trade

Торговая стратегия на отскок уровня дня