Помогите плиз, по форуму смотрел не не чего не нашел чтобы решить проблему.
Проблема в следующем. Не могу получить свечки после регистрации:
Вот код:
_candleManager.RegisterTimeFrameCandles(newSec, new TimeSpan(0, 1, 0));
_candleManager.NewCandles +=new Action<CandleToken,MultiDictionary<Candle,Trade>>(_candleManager_NewCandle);
Выдает две последние свечи и потом работает нормально. Т.е. добавляет к ряду свечек новые.
_candleManager.CandlesChanged += new Action<CandleToken,
MultiDictionary<Candle, Trade>>(_candleManager_CandlesChanged);
Работает тоже нормально. Последняя свеча изменяется.
_candleManager.CandlesFinished += new Action<CandleToken,
System.Collections.Generic.IEnumerable<Candle>>(_candleManager_CandlesFinihed) { Здесь, в этом событии, я хочу получить историю (код ниже). Хотя этот участок кода куда я только не вставлял.... ;) результат нулевой. т.е. свечей нет.... :( или их совсем мало 2 - 3.
var candles = _candleManager.GetTimeFrameCandles(_Trade.Stakan.Security, new TimeSpan(0, 1, 0), 100); candles.count() всегда 0 или 2-3; Хотя их по идее должно быть много. Конец сессии.
Kommentare (16)
Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen
Страшные конструкции можно заменить на _candleManager.NewCandles +=_candleManager_NewCandles;
_candleManager.CandlesFinished - это не история. Это "Событие окончания формирования свечек." (источник
http://stocksharp.com/doc/help/html/E_Ecng_Trading_Algo_CandleManager_CandlesFinished.htm) Поэтому свечки будут приходять туда с такой же частотой, что и в NewCandles. И метод GetTimeFrameCandles повлиять на это не может.
Блин, чего я только не делал. Может дело в том что платформа FindowsForm? ОC Windows 7, Visual Studio 10, Quik 5.17.0.159, Stock# - 2.3
Код программы:
_candleManager = new CandleManager(_Trade.Trader); _candleManager.NewCandles += ChartNewCandles; _candleManager.CandlesChanged += ChartCandlesChanged; candletoken = _candleManager.RegisterTimeFrameCandles(Property.Security, new TimeSpan(0, 1, 0));
Уже и задержки ставил типа: while (проверка времени) { Application.DoEvent();
все равно не помогает. Первая свеча, которая приходит в событие ChartNewCandles имеет дату ближайшей по времени свечи на графике, т.е. последней. Все больше не чего не происходит. Попробовал в обработчике события вставить ChartNewCandles следующий код:
_candleManager.GetTimeFrameCandles(Property.Security, new TimeSpan(0, 1, 0), 100);
Результат candles.count() всегда равен количеству свечек которые уже получены 1, 2,3,4 т.е сколько минут прошло - столько и свечек.
Что делать? :(
Прошло с какого момента? С начала сессии? Так и должно быть. Или у Вас всегда 4 свечки возвращаются?
Михаил, не так все печально со мной. :)
С начала сессии прошло как минимум часа 3. т.е свечек как минимум должно быть больше ста.
Количество свечек каждый раз возвращается столько сколько проработала программа. Если работала 1 минут то одна свечка, две минуты - 2 свечки и т.д. Только программа начинает работать когда уже сессия в разгаре.
Интересное поведение. Еще такой вопрос. А сама то тики приходят с начала сессии? ITrader.NewTrades? У Вас есть какое-нибудь временное смещение с биржей?
Да с обновлениями свечек все нормально. Свечки обновляются, по времени добавляются новые, а истории нет.
Не совсем понял... Это ответ на мой вопрос? Мой вопрос "А сама то тики приходят с начала сессии? ITrader.NewTrades? У Вас есть какое-нибудь временное смещение с биржей? "
+4MSK
Четырех часовая разница с Москвой.
Ага, я думаю в этом причина. Посмотрю на выходных что там.
Попробовал поставить на компьютере московское время.... результат не изменился. Дело не в часовом поясе.
Хорошо. Такой тогда вопрос. Пример SampleCadles работает?
Да работает. Я уже писал что может быть проблема в том, что я работаю на платформе WindowsForm.
На версии квика 5.16 и версии Stock# 2.0.1 работало все все прекрасно. Код в программе не менял.
Я думаю ошибка где то в логике, раз пример работает... Нет, от ГУИ не зависит.
Попробуйте создать минимальную программу со свечками. Так будет проще найти, что не так.