Интервал пересчета скрипта

Пересчет

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

В Свойствах лаборатории вы можете найти опцию, отвечающую за интервалы пересчета скрипта: Вкладка Скрипт -> Режимы обновления -> Интервал пересчета.

Режимы пересчета

Интервал

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

  • если в строке Интервальный период выбрать Тики и в строке Интервал выставить значение 250, то скрипт будет пересчитываться через каждые 250 сделок, совершенных на рынке.

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

ТаймФреймом - принято называть выбранный Интервал в совокупности с Интервальным периодом.

Тик - совершенная на рынке сделка.

Следует учесть, что сервера брокеров отдают историю только для "стандартных" таймфреймов, обычно это:

  • 1 Тик

  • 1 Минута

  • 5 Минут

  • 15 минут

  • 1 час

  • 1 день

Есть сервера, которые отдают только 1 минуту, 5 минут и 15 минут. Есть сервера (например у брокера Алор), где есть секундные данные. Они так же имеют стандарты 1 сек, 5, 15. Все остальные программа считает сама из доступной истории (с сервера брокера и "кеша", сохраненного на компьютере во время работы (накопленной истории)). Например, если нужен таймфрейм 7 минут, программа возьмет тики, накопленные при подключении и построит из них 7 минут. То есть это нестандартный таймфрейм. А если есть пропуск пятиминутного графика, то даже имея тиковый кеш, программа не построит график в офлайне, график будет скачан с сервера при подключении, так как является стандартным.

В TSLab решена проблема с данными для алготрейдинга, которые передают все без исключения брокеры. Это значения предторговой и послеторговой сессий, сбивающие индикаторы. На минутных, секундных и тиковых таймфреймах данные за пределами торговой сессии обрезаются. Из значений 15 минутных баров для некоторых брокеров строит часовые и дневные таймфреймы. Поэтому часто, при первом запуске программы дневные, часовые графики имеют короткую историю

Как работает "интервал" в агенте

Точкой отсчета является Закрытие бара(свечи). Как только бар выбранного таймфрейма закрывается, происходит пересчет скрипта (расчет индикаторов, логических условий, формул и т.д.) и отправляются данные брокеру (если таковые есть). Таким образом скрипт от одного закрытия бара до следующего (от пересчета до пересчета), ничего не знает о том, что возможно совершились какие-либо условия в этот период. Он узнает о них только на закрытии бара.

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

Интервал+ перв.сделка

"перв.сделка" - первая сделка текущего бара.

"Интервал+ перв.сделка" то же, что и "Интервал". Отличие, что пересчет происходит не по закрытию бара, а по открытию текущего бара.

Интервал (для событий)

"Интервал (для событий)" предназначен для работы с Событиями. Не отличается от пересчета Интервал в целом, но сильно отличается работой на текущем баре. Прочитайте статью: Пересчеты по событиям

Сделка

При данном пересчете свечи/бары будут рисоваться в зависимости от выбранного в свойствах таймфрейма. А пересчет будет проходить при каждой рыночной сделке на выбранном инструменте. Соответственно, этот пересчет отличается от "Интервала с таймфреймом 1 тик" только тем, что есть возможность нарисовать график отличный от 1 тика. "Сделка" предназначен для арбитражных стратегий и стратегий использующих только лимитные заявки. При данном пересчете необходимо учитывать, что в Торговых Настройках, параметры автооткрытия/закрытия, Ожидания и т.д. будут учитывать каждый пересчет, как один бар.

Пример:

Если при Интервале = 1 минута Вы использовали Автооткрытие = 10 минут, то при Интервале пересчета = Сделка нужно ставить Авооткрытие значительно больше. За одну минуту может проходить сотни сделок, соответственно за 10 минут может пройти и 2000 и 3.

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

Пок/Прод

Пересчет проходит при изменении Лучшего Бид или Аск.

Изменился объем лучшего бид - пересчет, изменилась цена лучшего бид - пересчет, то же, если изменился Аск.

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

Пок/Прод без объема

Пересчет проходит при изменении цены лучшего Бид или Аск.

Изменилась цена лучшего бид - пересчет, то же, если изменился Аск.

Данный пересчет так же предназначен для стратегий, с четко понимаемым алгоритмом выставления заявок. Есть Цена -> Поставили Лимитку. Без дополнительных условий, индикаторов, которые могут при пересечениях внутри бара давать множественные сигналы, которых при пересчете "Интервал" нет, т.е. которых нет в Лабораторном скрипте! Лабораторный скрипт всегда показывает то, что будет (приблизительно) в агенте при пересчете "Интервал".

Дополнительно Агент и скрипт пересчитываются в следующих случаях:

  • В редакторе скрипта используется блок Метроном

  • По вызову метода Recalc в API

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

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

Last updated