Тимур
Тимур личный блог
15 сентября 2015, 17:12

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

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

Всем спасибо за содействие. 
15 Комментариев
  • ves2010
    15 сентября 2015, 17:22
    1 (Time[i-1]-Time)<-100 вот так определяется конец дня… т.е. разница ремени текущего бара и прошлого больше чем таймфрейм
    2 понятно что время конца прошлого дня = времени конца текущего дня… т.е. как только находим конец дня запоминаем время бара
    3…
  • Vona
    15 сентября 2015, 17:24
    Интересный вопрос, плюсую. Желательно в кубиках, а не в C#.
  • Микаелян Саро
    15 сентября 2015, 17:25
    нельзя наверняка знать какой бар последний. или привязываться к четким условиям (аля 18.44) или так же сделать кубик заглядывания в будущее.
  • Дмитрий Черников
    15 сентября 2015, 18:10
    я так делаю если тф 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;
    }

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн