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