TimeFrameCandle
Atom Ответить
09.05.2011


Добрый день. Версия - 3.0.19.
Как получить 2 последние пятиминутные свечи?

Код
var candleTimeFrame = TimeSpan.FromMinutes(5);

_candleManager = new CandleManager(_trader);
CandleToken token = _candleManager.RegisterCandles<TimeFrameCandle, TimeSpan>(_secur, candleTimeFrame);

var candles1 = _candleManager.GetTimeFrameCandle(_secur, candleTimeFrame, DateTime.Now - TimeSpan.FromDays(2));
var candles2 = _candleManager.GetTimeFrameCandle(_secur, candleTimeFrame, DateTime.Now);


В аргумент "период" (который DateTime вроде) что только не пробовал подставить - безрезультатно.
В частности candles1 и candles2 - null Cursing

Теги:


Спасибо:




8 Ответов
Ilya Gruntal

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


Дорогой hobo!
Если экспорт по DDE запущен (Таблица всех сделок) , то

Код

_candleManager = new CandleManager(_trader);
_candleManager.RegisterTimeFrameCandles(_secur, TimeSpan.FromMinutes(5));


Здесь вы говорите менеджеру свечек собирать свечки по пятиминуткам. Но поскольку вы сделали это только-только по коду, то свечки ещё не сформированы, процесс только запущен.
Дальше есть два варианта (как минимум). Первый это подписаться на события формирования свечек.

Код

_candleManager.NewCandles += DrawCandles;
_candleManager.CandlesChanged += DrawCandles;

private void DrawCandles(CandleToken token, IEnumerable<Candle> candles)
{
foreach (var candle in candles)
{
//candle <- свечка
}
}


Второй вариант, это вызывать GetTimeFrameCandles, кстати рекоммендую скачать версию 3.1.19 S# (обещали на выходных выпустить).
Но, эсли использовать этот метод, то вам нужно дождаться пока CandleManager сформирует все свечи внутри этого таймфрайма по таблице сделок, и поскольку это не мгновенный процесс, то вызывать GetTimeFrameCandles сразу после RegisterTimeframe неверно, и ничего вам не вернёт. Простейший способ - повесить на отдельную кнопку, ну или на событиях ждать...

Код

/ получить 100 свечек-пятиминуток
var candles = _candleManager.GetTimeFrameCandles(_secur, TimeSpan.FromMinutes(5), 100);
foreach (var candle in candles)
{
//candle <- свечка
}


А вообще документация рулит.
https://www.stocksharp.co...ce-9a56-4e9a001f0792.htm
Спасибо:

Ilya Gruntal

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


hobo Перейти
Добрый день. Версия - 3.0.19.
Как получить 2 последние пятиминутные свечи?
...
Cursing

Код

var candles = _candleManager.GetTimeFrameCandles(_secur, TimeSpan.FromMinutes(5), 2);

Спасибо: hobo

Mikhail Sukhov

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


hobo Перейти
В аргумент "период" (который DateTime вроде) что только не пробовал подставить - безрезультатно.
В частности candles1 и candles2 - null Cursing


https://stocksharp.ru/fo...66/sviechi-micex10index/
Спасибо:

hobo

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


По CandlesChanged - свечка приходит, но вот старые свечки получить бы.

https://stocksharp.ru/do...andles_CandleManager.htm
В ваших советах GetTimeFrameCandles используется - такого метода вообще не вижу, получаю "Ecng.Trading.Algo.Candles.CandleManager' does not contain a definition for 'GetTimeFrameCandles'. А вот GetTimeFrameCandle хочет DateTime, как третий аргумент.

Подписался на CandlesFinished - пришло 7 свечей. Почему именно 7 не знаю. В таблице "все сделки", первая сделка - 12 часов назад, график цены тоже самое показывает.
Автор топика
Спасибо:

Mikhail Sukhov

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


hobo Перейти
По CandlesChanged - свечка приходит, но вот старые свечки получить бы.

https://stocksharp.ru/do...andles_CandleManager.htm
В ваших советах GetTimeFrameCandles используется - такого метода вообще не вижу, получаю "Ecng.Trading.Algo.Candles.CandleManager' does not contain a definition for 'GetTimeFrameCandles'. А вот GetTimeFrameCandle хочет DateTime, как третий аргумент.


Код
using Ecng.Trading.Algo;


По хорошему, такие вещи лучше начинать с изучения примеров.

hobo Перейти

Подписался на CandlesFinished - пришло 7 свечей. Почему именно 7 не знаю. В таблице "все сделки", первая сделка - 12 часов назад, график цены тоже самое показывает.


Чуть больше деталей.
Спасибо:

hobo

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


Mikhail Sukhov Перейти
Код
using Ecng.Trading.Algo;


Да уж, не догадался.


Цитата:
Чуть больше деталей.


Код
_candleManager = new CandleManager(_trader);
var _candleTimeFrame = TimeSpan.FromMinutes(5);
CandleToken token = _candleManager.RegisterCandles<TimeFrameCandle, TimeSpan>(_secur, _candleTimeFrame);
_candleManager.CandlesFinished += GetOldCandles;


private void GetOldCandles(CandleToken token, IEnumerable<Candle> candles)
{
var candles2 = _candleManager.GetTimeFrameCandles(_secur, TimeSpan.FromMinutes(5), 25);
}

Сегодня вот такой поведение вижу: CandlesFinished срабатывает несколько раз, в candles свечи приходят порциями (7-16 по моим наблюдениям). Пробовал несколько раз, в последний раз получилось так (в порядке срабатывания события)
- Пришло 11 свечей, 16.55-17.45
- Пришло 12 свечей, нулевая = 17.50, остальные те же самые 11 свечек.
- Пришло 11 свечей, 17.50-18.40 и т.д.

Это ожидаемое поведение? Нужно дожидаться, пока нужное количество не сформируется?
Автор топика
Спасибо:

Mikhail Sukhov

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


hobo Перейти

Сегодня вот такой поведение вижу: CandlesFinished срабатывает несколько раз, в candles свечи приходят порциями (7-16 по моим наблюдениям). Пробовал несколько раз, в последний раз получилось так (в порядке срабатывания события)
- Пришло 11 свечей, 16.55-17.45
- Пришло 12 свечей, нулевая = 17.50, остальные те же самые 11 свечек.
- Пришло 11 свечей, 17.50-18.40 и т.д.

Это ожидаемое поведение? Нужно дожидаться, пока нужное количество не сформируется?


У вас Квик? Тогда да, ожидаемое. Квик сделки транслирует с самого начала сессии. Поэтому и свечки отдаются в начале пачками. Потом такое быть не должно. Если у вас так, то пришлите лог, где будет вижно, за какой период пришли свечки + отметку во времени на компьютере.
Спасибо: hobo

hobo

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


Потом по одной появляются, в листбокс выводил. Всем спасибо!
Автор топика
Спасибо:


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

loading
clippy