TSLab
TSLab.proSupportTSLab LiveTSVerse
Rus
Rus
  • Торговая платформа TSLab
  • 📌Для новичков
    • Руководство для новичков
      • Создание лицензионного ключа для поставщика данных
      • Пример подключения текстовых котировок
      • Пример настройки поставщика данных
      • Пример создания скрипта в TSLab
      • Пример разработки торгового алгоритма в TSLab
      • Пример запуска торгового Агента
    • Обучение TSLab
  • 💻Установка TSLab
    • Руководство по установке TSLab
      • Системные требования
      • Установка TSLab
      • Необходимые ресурсы компьютера
    • Обновление TSLab
      • Подготовка к обновлению
      • Ночная сборка
      • Последние изменения в ночных сборках
      • Релизная версия
    • Удаление TSLab
    • Перезапуск TSLab
    • Решение проблем при установке и запуске программы
      • Проблемы, встречающиеся при установке TSLab
      • Проблемы, встречающиеся при запуске TSLab
      • Проблемы, встречающиеся при обновлении TSLab
    • Падения, зависания программы и отдельных модулей
      • Недостаточно квот для обработки команды
      • Ошибка при переходе по вкладкам
      • Проблема: Критическая ошибка при запуске TSLab через RemoteApp
      • Частные случаи падения TSLab из-за других программ
    • Журналы изменений
      • Журнал изменений TSLab 2.1
      • Журнал изменений TSLab 2.2
        • 2.2.26.0 - 2025/01/31
        • 2.2.25.0 - 2024/01/17
        • 2.2.24.0 - 2024/12/04
        • 2.2.23.0 - 2024/09/19
        • 2.2.22.0 - 2024/08/30
        • 2.2.21.0 - 2024/05/17
        • 2.2.20.0 - 2024/05/15
        • 2.2.19.0 - 2024/02/21
        • 2.2.18.0 - 2023/02/09
        • 2.2.17.0 - 2023/11/16
        • 2.2.16.0 - 2023/10/20
        • 2.2.15.0 - 2023/10/13
        • 2.2.14.0 - 2023/08/11
        • 2.2.13.0 - 2023/05/12
        • 2.2.12.0 - 2023/02/28
        • 2.2.11.0 - 2022/12/15
        • 2.2.10.0 - 2022/10/27
        • 2.2.9.0 - 2022/09/16
        • 2.2.7.0 - 2022/06/23
        • 2.2.5.0 - 2022/04/29
        • 2.2.3.0 - 2022/04/01
        • 2.2.2.0 - 2021/12/29
  • 💼Поставщики данных
    • Поставщики данных TSLab
    • Российские брокеры
      • Поставщик данных Алор Брокер
        • Настройка поставщика данных Алор (Алор)
        • Настройка поставщика данных Алор (RTS Plaza II)
        • АЛОР-Трейд Демо
        • Для этого логина нет доступа
      • Поставщик данных Финам
        • Настройка поставщиков данных Финам
          • Финам гарантийное обеспечение
          • Настройка поставщиков данных Transaq, Transaq HFT, TSLab Transaq+
          • Настройка поставщика данных Transaq Demo
        • Transaq ММА(ЕДП) режим Т+
        • Индикативные курсы. Индикативные инструменты
        • Особенности работы сервера Transaq
          • Единый счет Финам. Особенности
          • Особенность связанных заявок Transaq
          • Добавление счетов и смена Логина TransaqConnector
          • Transaq Can't lock SendLocker
          • Transaq: 'secid' isn't a number
        • Решение возможных проблем Финам
          • Ошибка 1004 Неверный идентификатор или Touch Memory
          • Не удалось инициализировать библиотеку
          • Не пришел список позиций
          • Не пришел список инструментов
        • Финам. Подключение. Какой поставщик данных выбрать
      • Поставщик данных БКС Брокер
        • Настройка поставщика данных BCS (QuikDDE)
      • Поставщик данных Т-Инвестиции
        • Т-Инвестиции. Возможные ошибки при работе с поставщиком
      • Поставщик данных Ricom Trust
        • Настройка поставщика данных Риком-Траст
      • PLAZA II
        • Файлы логов роутера
        • Настройка поставщика данных RTS Plaza II
        • Время синхронизации
        • Инструкция подключения SpectraCGate
          • services.msc Запуск от имени администратора
        • Пользовательское время начала торговли
        • Серверная ОС и скорость обработки Условной заявки
        • Тип логина Plaza II
      • QUIK
        • Поставщик данных QuikLua
        • Первая настройка QUIK Lua, не подключается, сообщения
        • Quik Lua - Решение возможных проблем
        • QuikLua проскальзывание в процентах
        • QuikLua - Настройка
        • Quik Junior
    • Криптовалютные биржи
      • Binance
        • Регистрация на сайте Binance
          • Регистрация учётной записи на сайте Криптовалютной биржи Binance
          • Настройка кошелька Криптовалютной биржи Binance Futures
          • Создание API ключа Binance для подключения торгового терминала TSLab
        • Регистрация на сайте TSLab.pro
          • Регистрация учётной записи на сайте TSLab Pro
          • Создание бесплатного поставщика данных Binance
        • Настройка поставщика данных Binance в TSLab
        • TSLab Binance Edition
          • Рабочее пространство TSLab Binance Edition
          • Настройка поставщика данных в TSLab Binance Edition
          • Ручная торговля (Manual trading)
        • Binance Futures Проскальзывание
        • Решения возможных проблем с поставщиком данных Binance
          • Сообщения биржи
          • Бан по IP за превышение UFR
          • Binance "We are experiencing a DNS issue"
          • Data history История инструментов
          • Invalid API-key, IP, or permissions for action
          • MIN_NOTIONAL filter error
          • Order's position side does not match user's setting
          • PERCENT_PRICE Filter failure
          • Server ERROR: The request could not be satisfied
          • Signature for this request is not valid
          • Timestamp for this request is outside of the recvWindow
          • Вам нужно создать новую учетную запись Binance
          • Заявки post-only на Binance
          • Процент от портфеля Binance
          • Тиковый и секундный график Binance
      • Bitget
        • Регистрация на официальном сайте Bitget
        • Создание бесплатного поставщика данных Bitget
        • Настройка поставщика данных Bitget в TSLab
      • Bitfinex
        • Margin trading
        • Object reference not set to an instance of an object
        • Настройка поставщика данных Bitfinex
      • BitMEX
        • Настройка поставщика данных BitMEX
          • Bitmex Невозможно определить формат URI
        • Особенность графиков
        • Bitmex. Частые проблемы
      • ByBit
        • Регистрация на официальном сайте ByBit
        • Создание бесплатного поставщика данных ByBit
        • Настройка поставщика данных ByBit в TSLab
        • ByBit. Частые вопросы
      • Deribit
        • Настройки поставщика данных Deribit
        • Deribit. Частые вопросы и полезная информация
        • Deribit. Возможные проблемы и их решения
        • Пример готового скрипта для Deribit
        • How to Connect TSLab to Deribit
      • Huobi
        • Настройка поставщика данных Huobi
        • Huobi order-value-min-error
      • KuCoin
        • Регистрация на официальном сайте KuCoin
        • Создание API ключа на сайте KuCoin
        • Оформление бесплатной лицензии KuCoin
        • Настройка поставщика данных KuCoin в TSLab
      • OKХ
        • Настройка аккаунта OKX
          • Регистрация учётной записи OKX
          • Создание API ключа на сайте OKX
          • Оформление бесплатной лицензии OKX
          • Настройка поставщика данных OKX в TSLab
          • Демо счёт OKX
        • TSLab OKX Edition
          • Рабочее пространство TSLab OKX Edition
          • Настройка поставщика данных OKX
          • Торговля на бирже OKX в TSLab
        • Особенности торговли на бирже OKX
          • Сообщения об ошибках OKX
          • Перевод средств между аккаунтами
          • Маржинальная торговля на бирже OKX
            • Настройка "Режим аккаунта"
          • Perpetual Swap особенности
          • Matching engine is being upgraded. Please try in about 1 minute
          • Исторические данные OKEX
          • Поддерживаемые рынки
          • Видимость своих сделок и своих заявок
          • Комиссии на бирже OKX
        • OKX. Частые проблемы
    • Международные брокеры
      • Поставщик данных Interactive Brokers
        • Начало работы с поставщиком данных Interactive Brokers
          • Установка и настройка терминала Trader Workstation (TWS)
          • Установка и настройка терминала IB Gateway
        • Особенности работы с поставщиком данных Interactive Brokers
        • Решение известных проблем Interactive Brokers
        • Загрузка инструментов пакетом
      • Поставщик данных Rithmic
        • Connection channel 'TradingSystem' changes state to 'ConnectionClosed'
    • Форекс
      • LMAX
        • TSLab FX Edition
        • Спецификация инструментов LMAX
        • Комиссия LMAX
    • Сервера истории
      • IQFeed
        • IQFeed_ENG
        • Настройка поставщика данных iQFeed (iQFeed)
        • Округление цен IQFeed
        • IQFeed + TWS(IB) Особенности
        • IQ Feed file log
      • Настройка поставщика данных Исторические данные
      • Текстовые файлы и Оффлайн поставщики данных
        • YahooFinance
        • Кешированные данные
        • Конвертирование тиков из TXT в BIN
        • Настройки поставщика Исторических данных
        • Оффлайн поставщик данных в формате CSV
        • Текстовые файлы с историческими данными
          • Импорт исторических данных txt
        • Программно читать и писать bin файлы
    • Особые ситуации
      • Россия
        • Обновление регионов для России в 2016
        • Общие настройки компьютера для России
      • Ошибка при подключении
      • Сonnection to switch on automatically at startup Windows
      • Настройка периода хранения кешей
  • 🤖Работа с программой
    • Главное меню
      • Файл
        • Настройки программы
      • Вид
        • Окно График
          • Особенности работы с Графиком в TSLab
          • Управление Графиком
        • Окно Котировки
        • Окно Очередь заявок
        • Окно Сделки по инструментам
      • Данные
        • Окно Поставщики
        • Добавить онлайн поставщик данных
        • Добавить оффлайн поставщик данных
      • Лаб
        • Окно Скрипты
          • Контейнер скриптов
      • Торговля
        • Окно Счетa
        • Окно Позиции
        • Окно Свои сделки
        • Окно Свои заявки
          • Перенести заявки и сделки в агент
        • Окно Агенты
          • Окно Агент
          • Торговые настройки агента
            • Пересчеты по событиям
            • Проскальзывание
          • Забыть текущие торговые ошибки
          • ПУ в окне Агенты
        • Окно Контроль работы агентов
        • Окно Менеджер команд
        • Окно Менеджер заявок
          • Привязка заявки выполненной вручную к агенту
        • Доска опционов
          • TSДоска опционов
        • Окно Управление рисками
          • Настройки для опционной торговли
          • Ограничение торговли на аукционах MOEX по времени
      • Инструменты
        • Резервное копирование и восстановление данных
        • Менеджер репозитория
        • Менеджер уведомлений
          • Фильтры Менеджера уведомлений
          • Справочный список номеров служебных сообщений
          • Настройка уведомлений для Yandex почты
          • Пример настройки уведомлений на Gmail
          • Telegram: An error occurred while sending the request
          • При стандартном выключении Windows из программы не приходят сообщения
        • Экспорт в Excel
      • Окна
      • Русские наименования в английском интерфейсе
    • Общий интерфейс
      • Строка состояния
      • Листы
      • Рабочая область
      • Таблицы
    • Визуальный редактор
      • Вкладки Лаборатории
        • Вкладка Редактор
          • Соединители
        • Вкладка График
          • Маркеры графика
            • Серый маркер сделки на графике
        • Вкладка Результаты
        • Вкладка Сделки
        • Вкладка Оптимизация (Результаты оптимизации)
        • Вкладка Параметры
        • Вкладка Доход
      • Свойства Лаборатории
        • Интервал пересчета скрипта
        • Показывать номер блока
        • Отключить генерацию позиций
      • Справочник блоков визуального конструирования
        • TSChannel
        • Служебные элементы
          • Контрольная панель
          • Обновляемое значение
          • Синтаксис блоков Формула, Логическая формула и Строковая формула
            • "Начинать с" в блоке Формула
          • Штамп времени
          • Экспорт и импорт значений
        • Циклы
        • Позиция
          • Фиктивное исполнение
        • Кластерный анализ
          • Торговая статистика
          • Кластерные блоки. Как работает кеширование.
        • Обработчики панели графика
          • Простое в сложном и сложное в простом. Уровни Фибоначчи
        • Индикаторы
        • Счета
        • Торговая математика
          • Бары котировочных данных
          • Сжать
          • Суммарные Спрос и Предложение
        • Объемный анализ
        • Опционные блоки
          • Опционы
          • Опционы (Индикаторы)
            • Глобальный Кеш
            • Last Value
          • Опционы (Побарные обработчики)
          • Опционы (Позиции)
          • Опционы (Deribit)
        • Market Position
        • Потоковые и не потоковые индикаторы
        • Самодельные индикаторы
      • Вопросы по созданию скриптов и индикаторов
        • Управление параметром индикатора из формулы. Адаптивные индикаторы.
      • Сообщения с ошибками
    • Торговля Агентами (Роботами)
      • Алгоритм исполнения сигналов агентом
      • Запуск и настройка агента
        • Настройка скрипта для торговли
        • Текущие параметры в агенте
        • Наборы параметров скрипта
        • Вопросы по Настройке агента
      • Остановка агента
      • Заменить тикеры по списку
      • Сообщения при торговле и исполнении агентов
        • "Пропущен сигнал" на не пропущенный сигнал
        • MIN_NOTIONAL filter error1
        • Nonce is too small Bitfinex
        • not enough exchange balance for
        • Order held while securities are located
        • The order could not be accepted because of the lack of a counterparty bid/offer in the market
        • Вам запрещена работа по данному торговому счету
        • Заявка не может быть отменена
        • Не могу выполнить сигнал по рынку
        • Попытка перевернуть позицию на баре, хотя это не разрешено
        • Превышено время ожидания
        • Статус заявки был изменен во время расчета
        • Условная заявка по сигналу 'xL' может не сработать
        • Цена не кратна минимальному шагу цены
        • Цена сделки вне лимита
      • Заявки. Время жизни. Сделки.
        • Типы заявок и их исполнение
        • Время выставления заявок
        • Время жизни заявок
        • Связанные заявки
        • Цена входа (расчетная)
        • Статусы заявок
        • Частичное исполнение заявки
        • Незапланированные сделки в момент подключения к брокеру
        • Отключение от брокера при выставленных условных и лимитных заявках
        • Время сделок в окне сообщений отличается от времени в таблице Свои сделки
      • Виртуальная позиция
      • Работа агента и особые ситуации
    • API
      • Введение в API
        • Установка Visual Studio
        • Создание проекта в Visual Studio
        • Первый скрипт (API)
        • Первый индикатор (API)
        • Отладка скриптов
        • Логирование
      • Написание скриптов на API
        • Данные по инструменту
        • Работа с позициями
        • Список сделок
        • Очередь заявок
        • Стандартные индикаторы и обработчики
        • Параметры скрипта
        • Кеширование индикаторов
        • Локальный и глобальный кеш
        • Несколько инструментов
      • Написание индикаторов на API
        • Потоковый индикатор
        • Побарный индикатор
        • Индикатор с предварительной обработкой
        • Индикатор с несколькими вычислениями
      • Графика
        • Вывод таблицы
      • Дополнительные возможности
        • Возможность делать свои оптимизаторы *
        • Скрипт на C++/CLI
        • Контрольная панель API
        • Результат из скрипта
        • Оптимизация. Пул массивов
      • Примеры
        • Пример стратегии Пробой канала Дончиана
        • Пример стратегии Пересечение скользящих средних
        • Пример индикатора
        • Индикатор расчета спреда двух инструментов
        • Пример скрипта с самостоятельным управлением заявками
        • Как ускорить обработку скрипта на API
        • Ссылки на примеры
      • Вопрос - Ответ
        • NotImplementedException
        • Атрибут HandlerParameter
        • Интерполяция строк
        • Как работать с событиями?
        • Не приходит информация в котировках
        • Нужно ли получать Close,Open,High,Low через Contex.GetData
        • Обращение через COM
        • Очередь заявок (Стакан)
        • Получить баланс позиции (чистая стоимость)
        • Получить настройки скрипта и агента
        • Получить данные всех агентов
        • Получить параметры скрипта
        • Получить результаты скрипта
        • Получить серверное время
        • Получить все заявки и сделки поставщика
        • Получить все инструменты поставщика
        • Принудительный пересчет скрипта
        • Работа с кешем
        • Работа с проскальзыванием
        • Создать контейнер со своей библиотекой dll
        • Скрипт из кодогенератора программы
        • Сравнивать две double нельзя
    • Возможные проблемы и решения
      • Не сохраняется конфигурация
      • Ошибка записи базы данных
    • Оптимизация
      • Недостаточная нагрузка на многоядерный процессор
  • 🎓Примеры скриптов и индикаторов
    • Примеры реализации скриптов в TSLab
      • SMA с адаптивным периодом
    • Примеры реализации индикаторов в TSLab
    • Примеры реализации стратегий в TSLab
      • Пример стратегии Сетка
      • Пример стратегии без параметров
      • Пример стратегии на основе Индекса товарного канала
      • Пример стратегии на основе Стандартного отклонения
      • Пример стратегии на основе индикатора Aroon
      • Пример стратегии на основе индикатора RSI
      • Пример стратегии на основе индикаторов ADX DI+ и DI-
    • Перенос скриптов и индикаторов из 1.2 в 2.0 или из 2.0 в 2.1
    • API examples
      • API. Plugins. Implementing IOptimizationMethod
      • API. Indicators
    • FAQ visual editor
  • 📈TSLab Опционы
    • Опционные скрипты
      • Deribit Script examples
        • Deribit Smile
      • Примеры опционных скриптов
        • Робот Buy Sell Volatility
        • Collect IV (ALL)
        • Collect IV (RW)
        • HV (ALL)
        • HV (RW)
        • HVIV
        • Notifications. Options scripts
        • Simm trading Real trading
        • Static Analysis
        • Рекомендации по примерам опционных скриптов
      • Изменение параметра IV ATM
    • TSLab Опционы для чайников - Записи вебинаров А.Кытманова
      • TSLab Опционы. Для чайников - цена, время, волатильность
      • TSLab Опционы. Для чайников - лучше сто раз увидеть
      • TSLab Опционы. Для чайников - поделись улыбкою своей
      • TSLab Опционы. Для чайников - ловкость рук
      • TSLab Опционы. Для чайников - дельта-хедж
      • TSLab Опционы. Для чайников - риск-менеджер
      • TSLab Опционы. Для чайников - вебинар по ч.1
      • TSLab Опционы. Для чайников - вебинар по ч.2, ч.3
      • TSLab Опционы. Для чайников - вебинар по ч.4
      • TSLab Опционы. Для чайников - вебинар по ч.5, ч.6
      • TSLab Опционы. Зигзаг
      • TSLab Опционы. Ликвидность
      • TSLab Опционы. Простая схема покупки/продажи волатильности
  • Сайт компании TSLab
    • Регистрация аккаунта на сайте компании TSLab
      • Блокировка доменных имен
    • Личный кабинет
      • Смена банковской карты
      • Возврат средств
      • Оформление лицензии для Поставщика данных в TSLab
        • Пояснения по лицензии
          • Криптобиржи. Лицензия TSLab
          • Тарифный план TSLab Lite
        • Лицензионный ключ для Классических поставщиков данных
        • Лицензионный ключ для Криптовалюных поставщиков данных
      • Редактирование данных в Личном кабинете
      • Решение возможных проблем с Личным кабинетом
    • Форум
    • Личный кабинет my.tslab.ru
    • Служба поддержки пользователей TSLab
      • Дамп памяти для программы TSLab
      • Лог файлы программы TSLab
      • Автоматический запуск программы после падения
    • TSLab brandbook
  • Общие вопросы
    • Общие вопросы
      • RD Client с мобильных устройств
      • Гарантийное обеспечение. Маржа.
        • MOEX
      • Перезагрузка компьютера
      • Синхронизация времени
      • Возможности для портфельного управляющего
      • Установка двух программ на один компьютер
      • Ссылки на прошлые версии программы
      • Support Macintosh
  • Наши ресурсы
    • YouTube
    • Группа в Telegram
    • Новостной канал
    • Группа в VK
    • Форум TSLab
Powered by GitBook
LogoLogo

Мы в соцсетях

  • Группа в Telegram
  • Новости TSLab
  • Vkontakte
  • YouTube канал TSLab Live

Наши веб-сайты

  • TSLab
  • Служба поддержки
On this page
  • Блок Сжать
  • Работа блока Сжать на примере канала Дончиана
  • Блок Разжать
  • Использование блока Разжать.
  • Первый сжатый бар дублируется
  • Сжать в самодельном индикаторе
  • Работа с нестандартными таймфреймами
  • Сжать пример порядка расчета

Was this helpful?

Export as PDF
  1. Работа с программой
  2. Визуальный редактор
  3. Справочник блоков визуального конструирования
  4. Торговая математика

Сжать

Last updated 2 years ago

Was this helpful?

Блок Сжать

Скачайте и откройте в Редакторе скриптов скрипт СЖАТИЕ.tscript (Лаб - Скрипты - Загрузить из файла)

Скрипт даёт возможность работать на нескольких таймфреймах одновременно. Допустим, в источнике у нас 1 минута, и мы можем получать данные от нескольких таймфреймов при использовании нескольких блоков сжатия, (например от 15 минут, от часовика, или от 33 минут). Например, мы можем получать данные и рассчитывать сигнал на часе или на других таймфреймах, а заявки выставлять на таймфрейме 1 секунда.

Блок Сжать очень простой. Он строит больший указанный интервал из баров, полученных из источника.

В блоке первый параметр Интервал. Про него нужно знать, что он может быть только кратен интервалу в источнике. Если в Источнике стоит 5 минут, то в блоке Сжать, может быть 5, 10, 15, 20 и т.д. минут. И соответственно не может быть меньше, чем в Источнике.

Если в Источнике выбран интервал времени 1 минута, то в блоке Сжать интервал может быть равным или больше 1 минуты.

Работа блока Сжать на примере канала Дончиана

В простом примере алгоритма канала Дончиана в источнике стоит 1 минута, а индикаторы рассчитываются от часового интервала. Строим индикаторы от сжатия, в котором интервал один час, а скрипт пересчитывается и выставляет заявки на интервале одна минута.

В простом блоке Сжать, все бары начинаются от начала загруженной истории (от начала графика) и если у Вас стандартный таймфрейм, кратный 24 часам (или например часовику, как в приведенном примере), то можно использовать простой блок Сжать. 15 минут, 30 минут, все интервалы построятся ровно, без смещений.

Блок Сжать (Расширенный)

Если Вам необходим не стандартный таймфрейм, например 53 минуты, то Вам, возможно, понадобится выравнивание по определенному часу, допустим ровно в 10 часов утра. Сама проблема, почему это может понадобиться кроется в работе блока.

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

Чтобы решить эту проблему, необходимо использовать блок Сжать (Расширенный) который можно настроить так, чтобы сжатие строило бары не от начала истории, а от определенного часа в сутках или, например, от начала каждого часа, если используемый нестандартный таймфрейм.

Рассмотрим несколько иллюстраций, чтобы понять настройки расширенного блока сжать.

Давайте посмотрим на проблему вблизи. Нестандартный таймфрейм без выравнивания. Сжатые бары в один и тот же час в разные дни имеют разное время. Смотрим на сжатый бар в районе двадцати одного часа каждый день. .... В настройках блока у нас стоит 53 минуты, выравнивание не стоит. Таким образом бары построены просто от начала истории. Если сейчас поставить выравнивание 1440 минут, т.е. сутки, то теперь каждые 24 часа программа начинает строить бары от нуля часов нуля минут. Теперь, если посмотреть на график какого-то бара каждый день, например в 21 час, начало нестандартного таймфрейма всегда одинаково, то есть мы включили привязку построения баров к началу суток. Эта привязка к 00 часам действует всегда для определения параметров блока.

Как сделать выравнивание ровно в 10 часов утра.

Используется параметр Сдвиг выравнивания. Если поставить параметр Сдвиг равный 600 (600 минут -> 10 часов), то с такими параметрами Сжатие выравнивается каждые сутки ровно в 10:00, а не в 12 ночи.

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

Еще пример чтобы лучше понять логику сжатия и посмотреть на еще один параметр. Рассмотрим те же 11 минут, но выравнивание будем делать каждые три часа, с условием, что первый бар должен начаться ровно в 10:00 утра.

В данном случае используем Сдвиг (сдвиг всегда работает от последнего выравнивания). Если посмотреть на бары, то они начинали строиться:

  • в 00:00 часов;

  • в 03:00 часа ночи;

  • в 06:00 часов утра;

  • в 09:00 часов утра.

Так вот, между этим девятичасовым началом построения и десятью утрам остается 5 минут. Именно на него мы и сдвинули построение баров вправо.

Сдвиг в простом блоке Сжатия делает всё то же самое, только от начала построения баров. В простом блоке Сжатия он может понадобиться, например, если сессия начинается не в 10 утра, а в 10.30 утра. Старые блоки в программе могут изменяться, но только если не влияют на скрипты, которые у пользователей уже построены на этих блоках. Поэтому, как правило, в программе бывает, что появляется новый блок с новым названием, а старый остается.

Здесь следует заметить, если еще не стало понятно, почему собственно нет баров в ноль часов? Ответ прост - не было сделок на рынке, были бы сделки, бары бы нарисовались. Поэтому для тестирования инструментов бирж, работающих 24/7, выравнивание вряд ли понадобится.

Блок Разжать

Разжатие в программе происходит автоматически, если в вычислениях, в рамках одной формулы или графика, встречаются сжатые (данные от Сжать) и не сжатые данные (от Источника).

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

Разжатие сильно зависит от порядка расчета. Подробнее прочитайте в разделе:

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

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

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

Использование блока Разжать.

Скачайте и откройте в Редакторе скриптов скрипт Разжатие.tscript (Лаб - Скрипты - Загрузить из файла)

Если необходимо получить какие-либо индикаторы и вычисления в приведенном виде к базовому таймфрейму в источнике, необходимо перед разжатием подсчитать, что необходимо получить в рамках данного Сжатия и только конечный расчет использовать для Разжатия. Например, если нужно использовать ЕМА, мы его полностью считаем и только конечный результат выводим в Разжатие, после чего его можно использовать с данными от источника или Разжатиями от других интервалов, других Сжатий.

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

На примере: Базовый интервал расчета 1 минута. Для расчета индикаторов использовано сжатие в интервал 1 час. 12.00 часовой бар начинается в 12.00 часов, это будет первая минутная свеча и в 12.59 начинается последняя минутная свеча.

При разжатии индикаторов: 1-й метод: значение 12.00 начинает действовать (станет доступно для расчетов внутри скрипта) с закрытия минутного бара 12.59

2-й метод: значение 12.00 начинает действовать (станет доступно для расчетов внутри скрипта) с закрытия минутного бара 12.00.

3-й метод: значение 12.00 начинает действовать (станет доступно для расчетов внутри скрипта) с закрытия минутного бара 13.00.

2-й метод не рекомендуется применять для тестирования стратегий, т.к. будут "заглядывания в будущее", то есть значение сжатого индикатора будет доступно до окончания часа!

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

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

Метод, используемый блоком Разжать по умолчанию выбирается в свойствах скрипта:

Первый сжатый бар дублируется

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

Игнорируйте первый сжатый бар, любой анализ начинайте со второго сжатого бара.

Сжать в самодельном индикаторе

Не рекомендуется использовать Сжать в самодельном индикаторе. Расчеты могут быть очень длительными.

Работа с нестандартными таймфреймами

Короткое видео о способах решения проблем, возникающих при работе с нестандартными таймфреймами.

Сжать пример порядка расчета

Две полностью одинаковые логические формулы выдают разные данные.

  1. В исходном скрипте есть два абсолютно одинаковых блока Bull_HandedDw и Bull_HandedDw1, которые показывают разный результат. Почему?

  2. Визуально по графу Блок И не связан с Bull_HandedDw. Почему удаление И влияет на Bull_HandedDw. И главное, как пользователь это должен понять.

Влияет последовательность добавления блоков в редактор.

Один добавлен До блока "И", другой после. Блоку И нужно было разжать данные. Значит второй блок будет рассчитан с разжатыми, а первый со сжатыми.

Т.е. чтобы этот скрипт одинаково считался, нужно разорвать связь между HammerUp и "И" через блок "Разжать".

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

Особая ситуация с блоком

🤖
Обновляемое значение (разжимается автоматически).
Сжать пример порядка расчета
51KB
СЖАТИЕ.tscript
27KB
СЖАТИЕ_примерДончиана.tscript
24KB
Разжатие.tscript