← Atrás

Почему не формируются свечки

Помогите плиз, по форуму смотрел не не чего не нашел чтобы решить проблему.

Проблема в следующем. Не могу получить свечки после регистрации:

Вот код:

_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; Хотя их по идее должно быть много. Конец сессии.

Comentarios (16)

Iniciar sesión o Crear cuenta, Inicie sesión o regístrese para dejar un comentario

Mikhail Sukhov
Mikhail Sukhov
  1. Страшные конструкции можно заменить на _candleManager.NewCandles +=_candleManager_NewCandles;

  2. _candleManager.CandlesFinished - это не история. Это "Событие окончания формирования свечек." (источник

http://stocksharp.com/doc/help/html/E_Ecng_Trading_Algo_CandleManager_CandlesFinished.htm) Поэтому свечки будут приходять туда с такой же частотой, что и в NewCandles. И метод GetTimeFrameCandles повлиять на это не может.

  1. А вот это уже интересно, что GetTimeFrameCandles не возвращает нужное количество... Может они еще не успели сформироваться? Потому как если робот загружен в конце сессии, то CandleManager требуется время для формирования свечек... Сколько раз до этого было вызвано _candleManager.NewCandles? Если вызывать (в качестве теста) из этого обработчика GetTimeFrameCandles, то возвращает столько же?
Гоша Батарейкин
Гоша Батарейкин Autor

Блин, чего я только не делал. Может дело в том что платформа 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 следующий код:

       var candles =

_candleManager.GetTimeFrameCandles(Property.Security, new TimeSpan(0, 1, 0), 100);

Результат candles.count() всегда равен количеству свечек которые уже получены 1, 2,3,4 т.е сколько минут прошло - столько и свечек.

Что делать? :(

Mikhail Sukhov
Mikhail Sukhov

Прошло с какого момента? С начала сессии? Так и должно быть. Или у Вас всегда 4 свечки возвращаются?

Гоша Батарейкин
Гоша Батарейкин Autor

Михаил, не так все печально со мной. :)

С начала сессии прошло как минимум часа 3. т.е свечек как минимум должно быть больше ста.

Гоша Батарейкин
Гоша Батарейкин Autor

Количество свечек каждый раз возвращается столько сколько проработала программа. Если работала 1 минут то одна свечка, две минуты - 2 свечки и т.д. Только программа начинает работать когда уже сессия в разгаре.

Mikhail Sukhov
Mikhail Sukhov

Интересное поведение. Еще такой вопрос. А сама то тики приходят с начала сессии? ITrader.NewTrades? У Вас есть какое-нибудь временное смещение с биржей?

Гоша Батарейкин
Гоша Батарейкин Autor

Да с обновлениями свечек все нормально. Свечки обновляются, по времени добавляются новые, а истории нет.

Mikhail Sukhov
Mikhail Sukhov

Не совсем понял... Это ответ на мой вопрос? Мой вопрос "А сама то тики приходят с начала сессии? ITrader.NewTrades? У Вас есть какое-нибудь временное смещение с биржей? "

Гоша Батарейкин
Гоша Батарейкин Autor

+4MSK

Гоша Батарейкин
Гоша Батарейкин Autor

Четырех часовая разница с Москвой.

Mikhail Sukhov
Mikhail Sukhov

Ага, я думаю в этом причина. Посмотрю на выходных что там.

Гоша Батарейкин
Гоша Батарейкин Autor

Попробовал поставить на компьютере московское время.... результат не изменился. Дело не в часовом поясе.

Mikhail Sukhov
Mikhail Sukhov

Хорошо. Такой тогда вопрос. Пример SampleCadles работает?

Гоша Батарейкин
Гоша Батарейкин Autor

Да работает. Я уже писал что может быть проблема в том, что я работаю на платформе WindowsForm.

На версии квика 5.16 и версии Stock# 2.0.1 работало все все прекрасно. Код в программе не менял.

Mikhail Sukhov
Mikhail Sukhov

Я думаю ошибка где то в логике, раз пример работает... Нет, от ГУИ не зависит.

Mikhail Sukhov
Mikhail Sukhov

Попробуйте создать минимальную программу со свечками. Так будет проще найти, что не так.