Содержание

Циклы


Группа блоков визуального конструирования "Циклы" доступна в программе TSLab начиная с версии 2.1

Подробную информацию о TSLab 2.1 можно найти на странице: TSLab 2.1

Цикл

Входы блока

  • Целое число. Не обязательный вход. Любое целое число, через который можно управлять количеством итераций на каждой свече торгового цикла (но не более заданного максимального количества). Если на вход ничего не подано, то цикл всегда имеет заданное максимальное количество итераций.

Выходы блока

  • Число. Текущий номер итерации от 0 до N-1

Параметры блока

  • Макс.Количество - задает максимальное количество итераций.

Принцип работы блока

У блока Цикл сверху есть служебный соединитель для связи с блоками открытия позиций или обновляемыми значениями(простое и обновляемое значение цикла). Таким образом, обозначается вход в цикл (начало расчета цикла).
Если данный соединитель ни с чем не соединен, то началом расчета цикла считается первая формула (или логическая формула), на которую подан выход из блока Цикл и в которой присутствует обращение к блоку Цикл по его имени.

Окончанием цикла считаются блоки:

  • Добавить позицию в цикле
  • Результат цикла
  • Результат цикла логический
  • Результаты цикла при выводе блока на график
  • Сумма цикла
  • И цикла
  • Или цикла

Все блоки, которые находятся в связях между началом цикла и окончанием цикла, участвуют в расчете результатов работы цикла.
Блоки (потоковые и не потоковые обработчики), соединенные от блока, находящегося в цикле, автоматически привязываются к циклу и их нельзя привязать к другому циклу.
Для удобства, при включенной настройке "Показывать номер кубика" в свойствах скрипта, Все блоки, принадлежащие циклу, имеют двойную нумерацию.

Обратите внимание

Привязка к циклу прерывается с блоками "Результат(ы) цикла". Значение этих блоков далее используется вне цикла. В такой блок копируется последнее полученное значение из связанного блока.
Физический смысл - блоки Результат и Результаты включают все блоки, которые подвязаны к циклу, в сам цикл.



Добавить позицию в цикле

Входы блока

  • Позиция - обязательный вход. Тип входных данных: Позиция.
  • Условие - обязательный вход. Тип входных данных: Логическое значение.
  • Цена - не обязательный вход. Тип входных данных: Число. Если Цена не указана, берет цену из основной позиции.
  • Количество - не обязательный вход. Тип входных данных: Число. Если Количество не указано, берет из основной позиции.

Выходы блока

  • Без выходов

Параметры блока

  • Использовать Виртуальное закрытие. При включении параметра проверяется IsVirtualClosed в IPosition. Параметр необходим для случаев, когда пропущен сигнал закрытия позиции, чтобы не было новых пропусков.
    Он говорит о том, что сигнал позиции выдан скриптом, но реальная заявка еще не прошла. Например, ожидается автозакрытие. При включенной опции Цикл будет переходить к следующей свободной итерации, при выключенной, новых открытий позиции не будет.

Принцип работы блока

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

Физический смысл

При работе блока, в программе, на каждом баре выполняется два цикла:

  1. Первый цикл проверяет какие позиции необходимо закрыть и закрывает их.
  2. Во втором цикле открываются новые позиции, для которых есть сигналы. (на том же баре)

Если места в итерациях цикла не хватает (все итерации заняты позициями), то выводится сообщение, что не хватает места для открытия позиции. При этом исполнение цикла не прерывается.

Как работает добавление позиции

По исполнении кода закрытия позиций, может встретится блок "Добавить позицию в цикле". Если условие, приходящее в блок - true, то выполняется поиск (путем перебора) свободного, не имеющего активных позиций на текущей свече, номера N итерации и выполняется открытие позиции "Signal:N".
В данном случае "Условие" на входе в блок является триггером для создания позиции и заполнения новой итерации.



И цикла

Входы блока

  • Логическое значение

Выходы блока

  • Логическое значение

Параметры блока

  • Без параметров

Принцип работы блока

Если на всех итерациях логические значения принимают значение true, то на выходе блока возвращается значение true на баре (на пересчёте). Если одно из логические значения принимает значение false, то на выходе блока возвращается значение false.



Или цикла

Входы блока

  • Логическое значение

Выходы блока

  • Логическое значение

Параметры блока

  • Без параметров

Принцип работы блока

Если в одной из итераций логическое значение принимает значение true, то на выходе блока возвращается значение true на баре (на пересчёте), иначе возвращается значение false. На входе результаты логических значений работы цикла, например, логическая формула.



Логические результаты цикла

Входы блока

  • Логическое значение. Логические значения результатов работы цикла.

Выходы блока

  • Логическое значение. Список логических значений каждой итерации

Параметры блока

  • Без параметров

Принцип работы блока

Вывести на график можно. График отобразит все итерации цикла. Результаты блока можно передать в другой цикл, при поддержке одинакового количества итераций.
Вложенные циклы не поддерживаются.

Обратите внимание

Находясь в цикле, при работе с блоками Формула необходимо учитывать, что если написать  Значение>РезультатыЦикла(от Значение1), проверка пройдет только по текущему результату. Т.е. сравнится Значение1 со Значением1.

Находясь в цикле, если в блоке Логическая формула записать ЛогическиеРезультатыЦикла, то Логическая формула вернет значение последней итерации.



Логический результат цикла

Входы блока

  • Логическое значение - обязательный вход. Список логических значений результатов работы цикла, например, логическая формула, находящаяся в цикле или любой блок, отдающий логические значения
  • Число - не обязательный вход. Номер итерации

Выходы блока

  • Логическое значение. Список логических значений каждой итерации

Параметры блока

  • Номер итерации. Указывает с какой итерации необходимо скопировать значение для вывода его на бар.

Принцип работы блока

Выводит логическое значение из цикла на бар по номеру итерации.



Максимум цикла

Входы блока

  • Число

Выходы блока

  • Число

Параметры блока

  • Без параметров

Принцип работы блока

Проходит по всем итерациям цикла и находит максимальное значение.



Минимум цикла

Входы блока

  • Число

Выходы блока

  • Число

Параметры блока

  • Без параметров

Принцип работы блока

Проходит по всем итерациям цикла и находит минимальное значение.



Обновляемое значение цикла

Входы блока

  • Число
  • Логическое значение
  • Логическое значение

Выходы блока

  • Число

Параметры блока

  • Номер итерации. Указывает с какой итерации необходимо скопировать значение для вывода его на бар.

Принцип работы блока

Обычное обновляемое значение в цикле переходит со старой итерации на значение новой итерации. Обновляемое значение цикла работает с массивом значений итераций. На выходе список вещественных значений. Для каждой итерации цикла ведется свое отдельное, независимое обновляемое значение.

Обратите внимание

Работа в самодельных индикаторах, нюанс

Самодельный индикатор с блоком "Обновляемое значение цикла", начинает работать, если в конце расчетов стоит блок Результат или Результаты цикла.

Другие блоки, включаются сразу.
Включение в цикл можно посмотреть, если включить в свойствах "Показывать номер кубика".



Результат цикла

Входы блока

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

Выходы блока

  • Число

Параметры блока

  • Индекс - указывает с какой итерации необходимо скопировать вещественное значение для вывода его на бар.
  • Использовать последний индекс

Принцип работы блока

Отдает значение по номеру итерации и выводит значение на бар.



Результаты цикла

Входы блока

  • Число. Значения результатов работы цикла.

Выходы блока

  • Массив значения каждой итерации на каждом баре

Параметры блока

  • Без параметров

Принцип работы блока

Можно вывести на график. Можно передать в другой цикл, при поддержке одинакового количества итераций.
Вложенные циклы не поддерживаются.

Служебный соединитель, для вывода параметра в контрольную панель.

Обратите внимание

Находясь в цикле, при работе с блоками Формула необходимо учитывать, что если написать  Значение>РезультатыЦикла(от Значение1), проверка пройдет только по текущему результату. Т.е. сравнится Значение1 со Значением1, а не по всем итерациям.



Сумма цикла

Входы блока

  • Число. Значения результатов работы цикла. (например, формула, обновляемое значение, любой блок, который находится в цикле)

Выходы блока

  • Число

Параметры блока

  • Без параметров

Принцип работы блока

Результат - сумма значений всех итераций цикла.




Примеры: Цикл | Cycle

  • No labels