Блог им. 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)
(смещение на один бар назад относительно последнего, для генерации сигнала)
точнее проверка того что след. бар последний значит текущей предпоследний и на нем генерируем сигнал.

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

Всем спасибо за содействие. 
  • Ключевые слова:
  • Ts-Lab
★3
15 комментариев
1 (Time[i-1]-Time)<-100 вот так определяется конец дня… т.е. разница ремени текущего бара и прошлого больше чем таймфрейм
2 понятно что время конца прошлого дня = времени конца текущего дня… т.е. как только находим конец дня запоминаем время бара
3…
avatar
ves2010, не совсем верно. В случае изменения окончания дня позиция не будет закрываться (закроется только на следующий день).
avatar
ves2010, конец прошлого дня не всегда равен концу текущего дня) по факту да Вы размышляете правильно, Но автор статьи хочет всегда знать наверняка когда последний бар. По вашей логике он всегда на 1 день будет ошибаться если биржа меняла время торгов что бывает в принципе не так часто и тратить время на решение это задачи просто не рентабельно.
avatar
ves2010, спасибо за еще один вариант определения…
avatar
ves2010, Благодарю за еще один способ определения… но если я правильно понимаю, при применении данной формулы к фьючам, он вечерку посчитает следующим днем...(закроется два раза на окончании дневной сессии и окончании вечерней, так как клиринг обычно 15 минут или более, вечером)
avatar
Интересный вопрос, плюсую. Желательно в кубиках, а не в C#.
avatar
нельзя наверняка знать какой бар последний. или привязываться к четким условиям (аля 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;
}
правда на первом баре дня тоже входа не будет, но там такие движухи лучше подождать
не дочитал до конца, если на минутном, то ":44:00" или ":43:00"
отсчитывайте количество баров в переменной.
Всего баров в дне = Х1
Х2=баров от начала дня
Если Х2=Х1-1, то close all
Как то так в одном советнике я считал до открытия американской сессии.
Трейдер Квадратный, благодарю за вариант, но если бы изначально было известно сколько баров в дне, этого вопроса не было бы.
avatar
Трейдер Квадратный, а вы уверены что знаете количество баров в дне? а если биржа останавливала торги и есть пробелы в котировках… то ничего не выйдет
Ага, считайте бары, а потом бац и 21.09.15 с остановкой торгов.
avatar

теги блога Тимур

....все тэги



UPDONW
Новый дизайн