Функция GetTime в ThinkScript

Синтаксис функции GetTime

GetTime();

Как видно из синтаксиса данная функция не принимает никаких параметров, но они собственные не нужны.

Описание функций GetTime:

Данная функция возвращает количество миллисекунд прошедших от 1 января 1970 года. Это означает что если сейчас к примеру 1 августа 2017 года 16:45, то функция вернет время, которое прошло с 1 января 1970 года 0:00 до 1 августа 2017 года 16:45 и покажет результат в миллисекундах. Естественно это число получится огромным.

getTime ThinkOrSwim

Функция getTime

Стоит обратить особое внимание на то, что данная функция возвращает количество прошедших миллисекунд не в реальном времени. Она смотрит на открытие бара. Предположим у нас установлен 5 минутный таймфрейм. Если время открытия бара равно 16:45, то тогда функция возвращает количество прошедших миллисекунд до 16:45. Далее время идёт, бар формируется, но даже если на текущий момент предположим время 16:47:15, то функция всё равно вернёт количество прошедших миллисекунд от 1 января 1970 года до 1 августа 2017 года 16:45. Чтобы в этом убедиться напишем такой пример:

AddLabel(yes, GetTime());

В этом примере мы вызвали функцию отображающую сообщение в левом верхнем углу графика. Передали результат работы функции GetTime. И теперь посмотрим что мы видим. Да, число большое, содержит более 12 символов, но как мы видим это число совершенно не меняется. Свеча формируется, время идет, Казалось бы количество миллисекунд должно увеличиваться, но этого не происходит. Пока текущий бар не завершит свое формирование, функция GetTime будет возвращать одно число. Когда появится новый бар, функция GetTime уже новое число, это число будет равняться количество прошедших миллисекунд от 1 января 1970 года 0:00 до времени открытие нового бара.

А теперь рассмотрим пример который приведён в справочнике ThinkOrSwim.

def isRollover = GetYYYYMMDD() != GetYYYYMMDD()[1];
def beforeStart = GetTime() < RegularTradingStart(GetYYYYMMDD());
def vol = if isRollover and beforeStart then volume else if beforeStart then vol[1] + volume else Double.NaN;
plot PreMarketVolume = vol;

В этом примере описано, Как можно посчитать объём который прошел на премаркете.

Давайте разберем подробно. В первой строке переменная isRollover принимает значение истина либо ложь. Если текущая дата не совпадает с предыдущей датой, тогда переменная isRollover принимает истинное значение, иначе ложь.Переменная beforeStart также принимает истинное значение либо ложное. В том случае если количество прошедших миллисекунд от 1 января 1970 года до текущего момента меньше, чем количество прошедших миллисекунд от 1 января 1970 года до открытия рынка, тогда переменная beforeStart принимает истинное значение. Если говорить простым языком, то это будет звучать так. Если время открытия текущего бара меньше чем время начало торговой сессии, тогда переменная beforeStart будет иметь истинное значение.

Переменная vol считает объем. Но считает она его следующим образом. Если переменные isRollover и beforeStart являются истиной, тогда в переменную vol помещаются объем текущего бара. Тут применили алгоритм сброса значения переменной. Когда наступил новый день текущая дата перестала совпадать с предыдущей датой и весь объём посчитанный в предыдущий день был заменён значением объема текущего бара.

На следующем баре в этот же день дата текущего бара и предыдущего бара будут совпадать, а значит первое условие не выполняется. В этом случае мы попадаем во второе условие где проверяем значение переменной beforeStart и если она истинно, к предыдущему значению переменной vol прибавляем объем текущего бара. И так будет происходить до того момента пока не откроется торговая сессия. Как только откроется торговая сессия переменная beforeStart примет ложное значение и второе условие не выполняется, в этом случае переменная vol примет значение Double.NaN

Постоянная ссылка на это сообщение: https://k-pavel.ru/funkcija-gettime-v-thinkscript/

avatar
1 Цепочка комментария
1 Ответы по цепочке
1 Последователи
 
Популярнейший комментарий
Цепочка актуального комментария
2 Авторы комментариев
pavelМихаил Авторы недавних комментариев

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

  Subscribe  
Новые Старые Популярные
Подписаться на
Михаил
Гость
Михаил

Павел, добрый вечер1
Что-то никак врубиться не могу, можно ли написать в ThinkScript:
plot signal = текущее время 11-00 и A>B и C<D и тогда акция высветиться или там будет 1. — указывающая что условие истинно. Если не сложно то можно пример КОДА, простые условия я написать могу, а вот условия со временем как-то не "догоняю".
Спасибо!