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


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

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

Вот код:

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


Теги:


Спасибо:




16 Ответов
Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 27.08.2010
Ответить


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

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

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

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

Спасибо:

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

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


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

Фотография
Автор статей Программист Трейдер
Дата: 27.08.2010
Ответить


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

Спасибо:

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

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


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

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

Автор топика
Спасибо:

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

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


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

Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 27.08.2010
Ответить


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

Спасибо:

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

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


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

Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 27.08.2010
Ответить


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

Спасибо:

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

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


+4MSK

Автор топика
Спасибо:

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

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


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

Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 27.08.2010
Ответить


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

Спасибо:

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

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


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

Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 27.08.2010
Ответить


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

Спасибо:

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

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


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

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

Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 27.08.2010
Ответить


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

Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 27.08.2010
Ответить


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

Спасибо:


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

loading
clippy