Интервал пересчета скрипта
Пересчет
Что такое пересчет? Это момент расчета всего скрипта и передачи брокеру заявок (если скрипт сформировал Сигнал для программы). В программе предусмотрено несколько разных по своей сути пересчетов и сделано это для того, что бы охватить полный спектр возможных задач.
В Свойствах лаборатории вы можете найти опцию, отвечающую за интервалы пересчета скрипта: Вкладка Скрипт -> Режимы обновления -> Интервал пересчета.
Режимы пересчета
Интервал
Самый распространенный режим пересчета - Интервал (выбран по умолчанию для нового скрипта). Интервал предназначен для очень широкого спектра задач, где расчет индикаторов и выставление заявок должны проходить, только с определенным интервалом. При выборе режима Интервал Вы даете задачу программе рассчитывать скрипт с определенным интервалом, выбранным в свойствах (Интервальный период + Интервал). "Интервальный период" может быть тиковым, секундным, минутным, дневным, месячным. Так например:
если в строке Интервальный период выбрать Тики и в строке Интервал выставить значение 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