Вызываю метод, он выдает все минутные свечки за день, и среди них попадаются пары с одинаковым временем (формат time O H L C V): 12:57:00 187035 187035 187035 187035 1 12:57:00 187025 187125 187020 187125 744
Настоящая свечка такая:
12:57:00 187025 187125 187020 187125 745
Причем у одной из парных свечек объем всегда равен единице. Что характерно, баг проявился только когда мой одноядерный проц оказался загружен на 100%.
コメント (16)
ログイン または アカウントを作成, コメントを残すにはログインまたは新規登録してください
Приведите код, как именно выводите.
Вывода так и не увидел. Но по коду кое что понятно. Вы в событии новых свечек вызываете CandleManager.GetTimeFrameCandles (получение диапазона). Вполне может быть так, что по Вашему диапазону будет получено более одной свечки.
Запустил тест (переделав его, так как махинации со временем мне остались не понятны) и увидел следующее. Действительно, в логе свечки двоятся. Но они двоятся не из-за того, что метод GetTimeFrameCandles возвращает два раза одну и ту же свечку, а из-за передаваемого диапазона. Последняя запрашиваемая свечка из предыдущего диапазона была равна первой из следующего. Если у Вас так же, то в этом и причина.
Вывод - это далее foreach (var candle in newCandles) . Понятно, что по моему диапазону может быть более одной свечки =) Непонятно, почему у некоторых из них одинаковое значение candle.Time.
Да, слона я не увидел... Чтобы точно все определить, можете полностью привести код вывода в лог.
Лог получается такой:
Нет, у меня диапазон запрашивается один раз при запуске робота, свечки двоятся внутри одного диапазона.
Насколько я вижу по приведенному коду, диапазон конструируется не при запуске, а внутри события. Может выводить диапазон так же в лог?
Еще одно наблюдение. Сравниваю свечки, полученные через S# c загруженными с финама. Иногда попадается следующее:
То есть 2 сделки из свечки 15:57 записались в свечку 15:56, как видно по объему и ценам. У вас такое не воспроизводится?
А так не сравнивал. А что говорит Квик? Какие он свечки строит?
Насчет диапазона я немного неправильно выразился. При старте робота один раз запрашивается диапазон из многих свечек, начиная с 10:00 текущего дня. Далее запрашиваются отдельные свечки по мере их прихода. Проблема с двойными свечками проявляется как раз при запросе одного большого диапазона.
Вывод диапазона в лог и дальнейший разбор полетов.
Уточню, вы имеете в виду вывод в лог дат из Range<DateTime> при вызове GetTimeFrameCandles?
Да.