Циклы-обложка

Предлагаю обсудить новый функционал, внедренный разработчиками программы, начиная с версии ТСЛаб 2.1. Так как вопросов по теме Циклы на данный момент до сих пор очень много, то считаю, что любой опыт по этому вопросу может быть полезен.

Первое с чего хотелось бы начать — это доступные на данный момент инструменты.

Краткое описание по ним можно найти в документации на сайте TSLab.

Давайте постараемся по максимуму выстроить логическую цепочку.

Прежде чем разбирать работу кубиков хотелось бы изложить свое понимание циклов ТСЛаб, буду благодарен любым пояснениям, если я что-то не так понимаю.

Чтобы у всех, кто знакомиться с этой темой, было одно и тоже понимание, то предлагаю принять, что цикл ТСЛаб — анализ данных при каждом пересчёте на периоде N

Для примера, простой цикл — это блок МинимумЗа

Если разложить этот пример по полочкам, то по сути, мы можем получить результат этого блока как минимум тремя способами.

1. Непосредственно использовать блок МинимумЗа и указать, например, в нем период равным 2.
2. Запрограммировать самостоятельно при помощи блока Минимум… Минимум За = Наименьшее (Минимум[-1], Минимум)
3. Использовать цикл

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

Для этого построим простой алгоритм пересечения 2-х ЕМА и выведем результат работы блоков на график. А так же для дальнейшего удобства и анализа работы алгоритма активируем в настройках показ номеров кубиков.

Схема алгоритма пересечения 2-х скользящих
Схема-пересечения-2х-МА

График с отображением пересечение скользящих
График-и-пересечение-МА

Давайте сформулируем задачу и поставим цели.

Цели и задачи:
1. Получить массив цен каждого пересечения скользящих за период N дней.
2. Визуализировать данные на графике.
3. Получить возможность использовать любое значение из полученного массива в дальнейших вычислениях.

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

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

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

Способ А: Просто указать количество баров в параметре блока [Макс. количество]

Способ Б: Подать на вход целое число, прописанное в константе или полученное в результате каких-то математических вычислений блоком [Формула]

Способ В: Подключить сверху к служебному соединителю блок открытия позиции или обновляемое значение. Например, бар входа и будет баром начала цикла.

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

2. Чтобы решить 1-ю задачу будем использовать блок [Обновляемое значение цикла]. Данный блок участвует в расчетах на каждом баре, записывает и хранит результат в виде массива значений. Мы будем помещать в этот блок цены пересечений из нашего алгоритма, которые были сформированы на указанном нами периоде.

3. Для решения 2-й задачи мы воспользуемся блоком [Результаты цикла]. Данный блок является блоком выхода и он хранит уже рассчитанные и обработанные данные на всем периоде. Данные также хранятся в виде массива и могут быть использованы для вывода на график или для передачи в другой цикл.

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

4. Решение 3-й задачи может быть реализовано при помощи блока [Результат цикла]. Данный блок позволяет изъять из полученного массива результатов любое значение, содержащееся в массиве и использовать его для дальнейших вычислений или других действий.

Проведем модернизацию нашего алгоритма с учетом вышеуказанных пунктов:
Схема-скрипта-с-Циклами

Результат работы алгоритма в данном случае будет иметь вид:
График-работы-циклов

Чтобы определить в какой ячейке находится тот или иной ценовой уровень на графике достаточно поднести курсор к линии:
результат-цикла

Разобраться с работой других блоков по аналогии, я думаю, не составит большого труда. Однако хотелось бы указать на сильные и слабые стороны циклов, которые я для себя отметил.

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

2. Одной из самых сильных сторон на мой взгляд является возможность получения из цикла множества результатов, при этом количество результатов практически не влияет на производительность, так как выполняется за один проход. По сути мы можем получить кучу массивов с различными полезными для нас данными и использовать эти данные по нашему усмотрению.

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

4. Неоспоримым плюсом также является и то, что с появлением этого инструмента отпала необходимость городить огород с целью запоминания необходимых ключевых значений, что занимало дополнительное время, а так же сильно загромождало схему по сути ненужными вспомогательными блоками.

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

Скачать конечный вариант скрипта для TSLab можно тут: https://cloud.mail.ru/public/9hio/oVzFyWmPu


ПРИМЕР ПО ЦИКЛАМ В ТСЛАБ. ЧАСТЬ №1

 


Вы уже сейчас можете начать изучать Видео курс- роботы в TSLab и научиться самому делать любых роботов!

Можно записаться на следующий поток ОнЛайн курса «Создание роботов в TSLab без программирования», информацию по которому можно посмотреть тут->

Также можете научиться программировать роботов на нашем Видео курсе «Роботы для QUIK на языке Lua»

Если же вам не хочется тратить время на обучение, то вы просто можете выбрать уже готовые роботы из тех, что представлены у нас ДЛЯ TSLab, ДЛЯ QUIK, ДЛЯ MT5, ДЛЯ КРИПТОВАЛЮТЫ!

Также можете посмотреть совершенно бесплатные наработки для МТ4, Квика, МТ5. Данный раздел также постоянно пополняется.

Не откладывайте свой шанс заработать на бирже уже сегодня!