2008年12月19日金曜日
夕場まで通して見れるようになった
売買が成立した時の値を歩み値として記録していく上で、FutureData.CurrentPriceStatusの値によるデータの選別の仕方が良く分からないので、今まで
fsdRwl.EnterUpgradeableReadLock();
try {
if (seq.Footer.Prev[0].IsHeader ||
(seq.Footer.Prev[0].Item.Performance < item.Performance
&& seq.Footer.Prev[0].CompareTo(item) < 0)) {
fsdRwl.EnterWriteLock();
try {
try {
seq.Insert(item);
} catch (InvalidOperationException) {
//showTrace("Confliction!");
}
} finally {
fsdRwl.ExitWriteLock();
}
}
} finally {
fsdRwl.ExitUpgradeableReadLock();
}
こういうコードを書いていた。なお、最終時刻より時刻が真に増加した場合にのみ追加するコードになっているので、ロジカルにはInvalidOperationExceptionのキャッチは要らない。
で、これだと後場から夕場までを通してみる事ができない。一度出来高がリセットされるから。
というわけで選別する条件を
seq.Footer.Prev[0].IsHeader ||
(seq.Footer.Prev[0].Item.Performance != item.Performance
&& seq.Footer.Prev[0].CompareTo(item) < 0)
に直した。これで夕場まで通して見れるようになった。
fsdRwl.EnterUpgradeableReadLock();
try {
if (seq.Footer.Prev[0].IsHeader ||
(seq.Footer.Prev[0].Item.Performance < item.Performance
&& seq.Footer.Prev[0].CompareTo(item) < 0)) {
fsdRwl.EnterWriteLock();
try {
try {
seq.Insert(item);
} catch (InvalidOperationException) {
//showTrace("Confliction!");
}
} finally {
fsdRwl.ExitWriteLock();
}
}
} finally {
fsdRwl.ExitUpgradeableReadLock();
}
こういうコードを書いていた。なお、最終時刻より時刻が真に増加した場合にのみ追加するコードになっているので、ロジカルにはInvalidOperationExceptionのキャッチは要らない。
で、これだと後場から夕場までを通してみる事ができない。一度出来高がリセットされるから。
というわけで選別する条件を
seq.Footer.Prev[0].IsHeader ||
(seq.Footer.Prev[0].Item.Performance != item.Performance
&& seq.Footer.Prev[0].CompareTo(item) < 0)
に直した。これで夕場まで通して見れるようになった。
2 件のコメント:
Test
test
test
コメントを投稿