← 戻る

Безусловный вызов FinamTradeSource.CommitLoad()

Доброго времени суток. Метод FinamTradeSource.CommitLoad() вызывается даже если не каких данных загружено не было (например по причине того дата близка к текущей). В CommitLoad производится инкремент: security.ExtensionInfo["FinamLastTradeTime"] = (date + TimeSpan.FromDays(1)).To<long>();

В результате если получение данных стартует более одного раза в сутки, то FinamLastTradeTime "убегает" в будущее.

このトピックは参考になりましたか?

トピックを共有

コメント (4)

ログイン または アカウントを作成, コメントを残すにはログインまたは新規登録してください

Mikhail Sukhov
Mikhail Sukhov

Залил на КодеПлекс фикс.

Marcopolo
Marcopolo 著者

Да, сейчас в будущее не "убегает", но как и в топике про РТС через выходные не переходит. Возможно необходимо инкрементировать FinamLastTradeTime в случае "пустого" дня, если мы дальше от текущего дня чем FinamOffset. То есть видимо в любом случае передавать весь список:

source.CommitLoad(data.Keys);

но в CommitLoad инкрементировать только в случае если мы дальше от текущего дня чем FinamOffset:

public void CommitLoad(IEnumerable<Security> securities) { if (securities == null) throw new ArgumentNullException("securities"); foreach (var security in securities) { var date = security.ExtensionInfo["FinamLastTradeTime"].To<DateTime>(); if (date + TimeSpan.FromDays(_settings.FinamOffset) < DateTime.Today) { security.ExtensionInfo["FinamLastTradeTime"] = (date + TimeSpan.FromDays(1)).To<long>(); _storage.Securities.Save(security); } } }

Mikhail Sukhov
Mikhail Sukhov

Пофиксил.

Marcopolo
Marcopolo 著者

Да, судя по всему заработало. Спасибо!