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


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

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

Теги:


Спасибо:


Mikhail Sukhov

Фотография
Дата: 09.11.2011
Ответить


Залил на КодеПлекс фикс.
Спасибо:

Marcopolo

Фотография
Дата: 09.11.2011
Ответить


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

Фотография
Дата: 09.11.2011
Ответить


Пофиксил.
Спасибо: Marcopolo

Marcopolo

Фотография
Дата: 10.11.2011
Ответить


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


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy