← Zurück

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

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

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

War dieses Thema hilfreich?

Thema teilen

Kommentare (4)

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

Mikhail Sukhov
Mikhail Sukhov

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

Marcopolo
Marcopolo Autor

Да, сейчас в будущее не "убегает", но как и в топике про РТС через выходные не переходит. Возможно необходимо инкрементировать 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 Autor

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