← Zurück

Exchange working time

У меня неправильно время окончания первой свечки считает вот этим методом: _nextTime = base.TimeFrame.GetCandleBounds(base.Trader).Max; Как можно узнать время начала работы биржи узнать? В блоге находил такое: var dateTime = DateTime.Today + exchange.WorkingTime.First().Min; Не работает. По-разному пробовал. А нельзя самому задавать время работы биржи, как это делается в прогах теханализа?

War dieses Thema hilfreich?

Thema teilen

Kommentare (17)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

Mikhail Sukhov
Mikhail Sukhov

А что значит не работает? Можете описать подробнее?

dart
dart Autor

Просто VS не даёт прописать First к WorkingTime. Пишет - не содержит определения для First: var dateTime = DateTime.Today + Exchange.Rts.WorkingTime.First().Min;

Метод GetCandleBounds начинает считать для РТС с 10:00 если я правильно понимаю. То есть к примеру: свеча с ТФ 57 мин, должна заканчиваться в 10:57 по идее.

Mikhail Sukhov
Mikhail Sukhov

Потому что используется LINQ Надо прописать using System.Linq

dart
dart Autor

По этой команде: _nextTime = base.TimeFrame.GetCandleBounds(base.Trader).Max у меня свечки отсчитываются со времени 0:00:00. То есть например, первая свечка с ТФ 4 часа начнётся (имеется ввиду candle.Time) в 8:00, следующие в 12:00, затем в 16:00 и т.д. А начало торгов в РТС 10:00, здесь всё верно.

Mikhail Sukhov
Mikhail Sukhov

А чему равен ITrader.MarketTime?

dart
dart Autor

Сейчас проверил для ТФ 3 часа. Время окончания текущей свечи _nextTime = 15:00. Соответственно предыдущие свечки начинались в 12:00. И candle.Time первой свечки этого дня = 9:00.

dart
dart Autor

base.Trader.MarketTime даёт текущее квиковское время, т.е. Москвы. Здесь всё время Московское указано. Сейчас для 3 часового ТФ я замерял _nexttime было равно 15:00. При этом MarketTime было равно 13:58:41. Всё в файле записано

Mikhail Sukhov
Mikhail Sukhov

Так а где проблема то?

dart
dart Autor

Так свечки рисуются неправильно. Сейчас пытаюсь перенести стратегию из Омеги в S#. Там свечки строятся с начала работы биржи, как и в любой другой проге теханализа. То есть к примеру первая 4-часовая свеча заканчивается в 14:00 А в S# по- другому - в 12:00. Соответственно не получается перенести. Свечки должны строиться с момента начала работы биржи. Это будет правильно.

Mikhail Sukhov
Mikhail Sukhov

Переносите с поправками. Свечки в S# строяться не с какого то момента. Они имеют свое собственно время. CandleManager строит свечки по тикам. Выражение же base.TimeFrame.GetCandleBounds(base.Trader).Max к свечкам относиться постольку, поскольку. Они лишь говорит, что текущая свечка (понятие текущая берется из ITrader.MarketTime) с длинной base.TimeFrame имеет такое то начало и окончание. Если Вы пишите, что ITrader.MarketTime возвращает все ок, то значит проблема в base.TimeFrame. Не нулю ли он равен?

dart
dart Autor

То есть для ТФ 4ч так писать? _nextTime = base.TimeFrame.GetCandleBounds(base.Trader).Max.AddHours(2)

base.Trader.MarketTime даёт текущее квиковское время. base.TimeFrame в данном примере и равен 4 часам.

dart
dart Autor

Так у меня и var candle = _candleManager.GetTimeFrameCandle(base.Security, base.TimeFrame, base.TimeFrame.GetCandleBounds(base.Trader).Min); candle.Time (время текущей свечи) = 8:00, затем 12:00 и т.д.

dart
dart Autor

А, понял. И вот тут так сделать: var candle = _candleManager.GetTimeFrameCandle(base.Security, base.TimeFrame, base.TimeFrame.GetCandleBounds(base.Trader).Min.AddHours(2));

Mikhail Sukhov
Mikhail Sukhov

Я бы не использовать GetCandleBounds напрямую. Данный метод вычисляет границы свечки не учитывая время работы биржи. Сделайте свой аналог, чтобы время было кратно началу работы биржи.

dart
dart Autor

Интересное явление. Как ввожу временную поправку, чтобы время свечи правильно считалось, текущая свеча получается всё время null. Как только поправку убираю, всё строится правильно, но при этом время свечи, естественно, считается не с начала работы биржи. Может всё-таки RegisterTimeFrameCandles имеет какую-то временную привязку?

Mikhail Sukhov
Mikhail Sukhov

В Вашем случае самый дешевый вариант - стоить свечки часовые. А их уже собирал в 4-ех часовые с нужного временного отсчета.

dart
dart Autor

Понятно, но у меня время свечи даже не кратно часу. Придётся выбирать самый малый ТФ, который кратен моему