Циклы

Цикл

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

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

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

Входы блока

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

Выходы блока

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

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

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

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

  • Результат цикла логический

  • Результаты цикла при выводе блока на график

  • Сумма цикла

  • И цикла

  • Или цикла

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

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

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

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

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

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

Входы блока

  • Позиция - обязательный вход. Тип входных данных: Позиция.

  • Условие - обязательный вход. Тип входных данных: Логическое значение.

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

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

Выходы блока

  • Без выходов

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

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

  1. Первый цикл проверяет какие позиции необходимо закрыть и закрывает их.

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

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

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

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

И цикла

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

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

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

Входы блока

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

Выходы блока

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

Или цикла

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

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

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

Входы блока

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

Выходы блока

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

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

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

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

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

Входы блока

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

Выходы блока

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

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

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

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

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

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

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

  • Индекс - логический результат по номеру итерации цикла

  • Использовать последний индекс - всегда использовать последний номер итерации цикла

Входы блока

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

  • Число - для управления выбором номера итерации

Выходы блока

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

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

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

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

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

Входы блока

  • Число

Выходы блока

  • Число

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

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

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

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

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

Входы блока

  • Число

Выходы блока

  • Число

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

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

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

  • Начальное - Начальное значение блока.

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

Входы блока

  • Число

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

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

Выходы блока

  • Число

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

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

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

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

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

  • Использовать последний индекс

Входы блока

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

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

Выходы блока

  • Число

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

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

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

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

Входы блока

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

Выходы блока

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

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

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

Сумма цикла

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

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

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

Входы блока

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

Выходы блока

  • Число

Last updated