<HELP> for explanation

Блог им. stdktim

Как в TS-LAB закрыться в конце дня?

1. На официальном форуме не нашел ответа.

2. Время в минутах не подходит так как я не знаю время последнего бара. (данный параметр можно будет использовать в реальной торговле, так как я понимаю что например конец дневной сессии 18:45, значит последний минутный бар после 18:44. и соответственно по времени можно сгенерировать сигнал для торговой операции во время открытия последнего бара).

3. формула close[i-n] не подходит, так как она просто вернет значение цены закрытия n баров назад, но вернет -то она его в текущий момент.

Изначальный вопрос такой:

хочу в бэктестинге закрыть позицию в конце дня, скажем на открытии последнего минутного бара.
Но мне не известно какой бар по времени последний (так как в разные года биржа закрывалась в разное время), поэтому нельзя написать закрыться в определенное время (скажем после 18:44 или после 23.49).

Единственный способ который я использовал ранее для бэктестинга закрытия позиции в конце дня — это «заглянуть» вперед, чтобы понять что текущий бар последний и на нем закрыться.

в метастоке использовал следующую формулу:
c1:=If( DayOfWeek()=Ref(DayOfWeek(),1) ,0,1);
(определение последнего бара текущего дня:
если день недели текущего бара такой же как день недели следующего бара, то вернуть 0, значит текущий бар не последний;
в противном случае вернуть 1 — текущий бар последний)

ref(c1,1)
(смещение на один бар назад относительно последнего, для генерации сигнала)
точнее проверка того что след. бар последний значит текущей предпоследний и на нем генерируем сигнал.

 Может есть еще какие-то способы решения вопроса?

Всем спасибо за содействие. 
 

1 (Time[i-1]-Time)<-100 вот так определяется конец дня… т.е. разница ремени текущего бара и прошлого больше чем таймфрейм
2 понятно что время конца прошлого дня = времени конца текущего дня… т.е. как только находим конец дня запоминаем время бара
3…
avatar

ves2010

ves2010, не совсем верно. В случае изменения окончания дня позиция не будет закрываться (закроется только на следующий день).
avatar

Vona

ves2010, конец прошлого дня не всегда равен концу текущего дня) по факту да Вы размышляете правильно, Но автор статьи хочет всегда знать наверняка когда последний бар. По вашей логике он всегда на 1 день будет ошибаться если биржа меняла время торгов что бывает в принципе не так часто и тратить время на решение это задачи просто не рентабельно.
ves2010, спасибо за еще один вариант определения…
avatar

Тимур

ves2010, Благодарю за еще один способ определения… но если я правильно понимаю, при применении данной формулы к фьючам, он вечерку посчитает следующим днем...(закроется два раза на окончании дневной сессии и окончании вечерней, так как клиринг обычно 15 минут или более, вечером)
avatar

Тимур

Интересный вопрос, плюсую. Желательно в кубиках, а не в C#.
avatar

Vona

нельзя наверняка знать какой бар последний. или привязываться к четким условиям (аля 18.44) или так же сделать кубик заглядывания в будущее.
avatar

Микаелян Саро

Микаелян Саро, а как сделать кубик заглядывания в будущее на n-баров относительно текущего? Это вообще реально в рамках TS-LAB? А то я нашел смещение только в одну сторону -1 -2 -3 ит.д. а вот в +1 +2 +3 не работает, пишет ошибку скрипта
avatar

Тимур

я так делаю если тф 5минут тот ":35:00", если М15 то :30:00 ...

DateTime alertTime = Convert.ToDateTime("" + TimeClose + ":35:00");

а это в цикле в самом начале
if (sec.Bars[i].Date.TimeOfDay > alertTime.TimeOfDay)
{
if (lp1 != null)
lp1.CloseAtMarket(i + 1, «LTime»);
if (lp2 != null)
lp2.CloseAtMarket(i + 1, «LTime»);

if (sp1 != null)
sp1.CloseAtMarket(i + 1, «STime»);
if (sp2 != null)
sp2.CloseAtMarket(i + 1, «STime»);

continue;
}
avatar

Дмитрий Черников

правда на первом баре дня тоже входа не будет, но там такие движухи лучше подождать
avatar

Дмитрий Черников

не дочитал до конца, если на минутном, то ":44:00" или ":43:00"
avatar

Дмитрий Черников

отсчитывайте количество баров в переменной.
Всего баров в дне = Х1
Х2=баров от начала дня
Если Х2=Х1-1, то close all
Как то так в одном советнике я считал до открытия американской сессии.
Трейдер Квадратный, благодарю за вариант, но если бы изначально было известно сколько баров в дне, этого вопроса не было бы.
avatar

Тимур

Трейдер Квадратный, а вы уверены что знаете количество баров в дне? а если биржа останавливала торги и есть пробелы в котировках… то ничего не выйдет
Ага, считайте бары, а потом бац и 21.09.15 с остановкой торгов.
avatar

Сергей Грошев


Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.

Залогиниться

Зарегистрироваться
....все тэги
Регистрация
UPDONW