Тимур
Тимур личный блог
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:26
      ves2010, не совсем верно. В случае изменения окончания дня позиция не будет закрываться (закроется только на следующий день).
    • Микаелян Саро
      15 сентября 2015, 17:29
      ves2010, конец прошлого дня не всегда равен концу текущего дня) по факту да Вы размышляете правильно, Но автор статьи хочет всегда знать наверняка когда последний бар. По вашей логике он всегда на 1 день будет ошибаться если биржа меняла время торгов что бывает в принципе не так часто и тратить время на решение это задачи просто не рентабельно.
  • 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;
    }
  • Дмитрий Черников
    15 сентября 2015, 18:11
    правда на первом баре дня тоже входа не будет, но там такие движухи лучше подождать
  • Дмитрий Черников
    15 сентября 2015, 18:13
    не дочитал до конца, если на минутном, то ":44:00" или ":43:00"
  • Трейдер Квадратный
    15 сентября 2015, 22:38
    отсчитывайте количество баров в переменной.
    Всего баров в дне = Х1
    Х2=баров от начала дня
    Если Х2=Х1-1, то close all
    Как то так в одном советнике я считал до открытия американской сессии.
    • Дмитрий Черников
      16 сентября 2015, 09:50
      Трейдер Квадратный, а вы уверены что знаете количество баров в дне? а если биржа останавливала торги и есть пробелы в котировках… то ничего не выйдет
  • Сергей Грошев
    26 сентября 2015, 17:28
    Ага, считайте бары, а потом бац и 21.09.15 с остановкой торгов.

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

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