и снова GetTimeFrameCandles
Atom
08.11.2010
romanick


Что-то не понятное всё-таки с методом GetTimeFrameCandles.
Посмотрел все ветки форума на эту тему ответа не нашёл.

1. Берём пример SampleSMA.
2. Открываем SMAStrategy.cs и в метод OnRunning, перед строкой base.OnRunning(); дописываем:

Код
var candlesForTest = _candleManager.GetTimeFrameCandles(base.Security, TimeSpan.FromMinutes(5), 14);

Т.е. я пытаюсь получить 14 последних 5-ти минутных свечек.

Так вот, candlesForATR.Count() всегда равна нулю...
Что я делаю не так?

Может быть это из-за того что счёт учебный на терминале Quik-Junior?

Версия StockSharp 2.5.1

Теги:


Спасибо:


< 1 2 3  >
Mikhail Sukhov

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


romanick
>>Через _candleManager.GetTimeFrameCandles но только после того, как они построятся
Хм. Т.е. на момент запуска стратегии (выполнение OnRunning) они просто не успевают строится?
А как мне узнать когда они построятся? Событие какое-то есть? Или просто проверять дату последней свечи?


CandleManager.NewCandles
Спасибо:

Alexander

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


romanick
>>Через _candleManager.GetTimeFrameCandles но только после того, как они построятся
Хм. Т.е. на момент запуска стратегии (выполнение OnRunning) они просто не успевают строится?
А как мне узнать когда они построятся? Событие какое-то есть? Или просто проверять дату последней свечи?



я вот так делаю в стратегиях:
Код
_candleManager.CandlesFinished += CandleManagerCandlesFinished;
...
void CandleManagerCandlesFinished(CandleToken arg1, System.Collections.Generic.IEnumerable<Candle> arg2)
{
_candlesFinished = true;
}
...

protected override bool OnProcess()
{
if (!_candlesFinished)
{
AddLog(StrategyErrorStates.None, "Свечки ещё не сформированы...", new object());
return true;
}
...
}
Спасибо:

romanick

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


Нет, не то. Попробую сформулировать вопрос по другому.

Код
_candleManager.NewCandles += (token, candles) =>
            {
                if (token == minutesToken)
                {
                    RobotLog.Add("NewCandles count="+candles.Count().ToString()+
                     "last="+candles.Last().Time.ToString());
                }
            };

Код
            _candleManager.CandlesFinished += (token, candles) =>
            {
                if (token == minutesToken)
                {
                    RobotLog.Add("CandlesFinished count="+candles.Count().ToString()+
                     "last="+candles.Last().Time.ToString());
                }
            };


Код
protected override bool OnProcess(){
...
var candlesForATR = _candleManager.GetTimeFrameCandles(base.Security, TimeSpan.FromMinutes(1), 14);
            RobotLog.Add("all count="+candlesForATR.Count().ToString());
...
}


В первых двух случаях candles.Count() равно 1, что логично. В третьем равно количеству минут прошедших со старта робота. Т.е. изначально свечей нет вообще и появляются они только во время работы робота. Мне же нужно получить 14 свечей которые были ДО старта робота. Нужно это для инициализации индикатора.
Как быть?
Спасибо:

Alexander

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


romanick

В первых двух случаях candles.Count() равно 1, что логично. В третьем равно количеству минут прошедших со старта робота. Т.е. изначально свечей нет вообще и появляются они только во время работы робота. Мне же нужно получить 14 свечей которые были ДО старта робота. Нужно это для инициализации индикатора.
Как быть?


Нельзя получить свечки за другой день напрямую (т.к. они строятся из всех сделок).
Чтобы это всё же сделать - пишешь код на qpile, добавляешь в квике таблицу-портфель и уже её экспортируешь.
Спасибо:

romanick

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


Alexander
romanick

В первых двух случаях candles.Count() равно 1, что логично. В третьем равно количеству минут прошедших со старта робота. Т.е. изначально свечей нет вообще и появляются они только во время работы робота. Мне же нужно получить 14 свечей которые были ДО старта робота. Нужно это для инициализации индикатора.
Как быть?


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


[confused] [confused] [confused] [confused]
И что нет другого non-hemorrhoids-way?
Спасибо:

Mikhail Sukhov

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


romanick

В первых двух случаях candles.Count() равно 1, что логично. В третьем равно количеству минут прошедших со старта робота. Т.е. изначально свечей нет вообще и появляются они только во время работы робота. Мне же нужно получить 14 свечей которые были ДО старта робота. Нужно это для инициализации индикатора.
Как быть?


Ключевое выражение - старт робота. Оно неправильное. Робот - это программа. А данные нужны стратегии (программа может иметь от 0 до N стратегий). Поэтому регистрацию свечек нужно запускать после подключения программы к Квику, но до запуска самой стратегии. О стратегиях написано в документации.
Спасибо:

Mikhail Sukhov

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


romanick


[confused] [confused] [confused] [confused]
И что нет другого non-hemorrhoids-way?


Запускать робот после 10:30 + 14 * 5. или брать историю откуда то извне (например, как я сделал это в примере).
Спасибо:

Alexander

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


Mikhail Sukhov
romanick

В первых двух случаях candles.Count() равно 1, что логично. В третьем равно количеству минут прошедших со старта робота. Т.е. изначально свечей нет вообще и появляются они только во время работы робота. Мне же нужно получить 14 свечей которые были ДО старта робота. Нужно это для инициализации индикатора.
Как быть?


Ключевое выражение - старт робота. Оно неправильное. Робот - это программа. А данные нужны стратегии (программа может иметь от 0 до N стратегий). Поэтому регистрацию свечек нужно запускать после подключения программы к Квику, но до запуска самой стратегии. О стратегиях написано в документации.



А если свечки, к примеру, минутки, не нужны активным стратегиям?
У меня, к примеру, есть стратегии на 5-минутках, есть на минутках. Запускаю регистрацию свечек как раз во время старта стратегий сейчас (т.к. в настройках робота могут быть минутные стратегии выключены, зачем тогда их регистрировать?).
Или они в любом случае занимают мало ресурсов, поэтому можно спокойно регистрировать всё, что только может потенциально понадобиться?
Спасибо:

Mikhail Sukhov

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


Alexander

А если свечки, к примеру, минутки, не нужны активным стратегиям?
У меня, к примеру, есть стратегии на 5-минутках, есть на минутках. Запускаю регистрацию свечек как раз во время старта стратегий сейчас (т.к. в настройках робота могут быть минутные стратегии выключены, зачем тогда их регистрировать?).
Или они в любом случае занимают мало ресурсов, поэтому можно спокойно регистрировать всё, что только может потенциально понадобиться?


Кушаем много только старт. Потом все работает как обычно. Плюс у свечек свой поток, а у стратегий свои.
Спасибо:

sinc

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


у меня тоже не получается экспортировать свечки. запускаю пример SampleCandles. Во-первых, не всегда загружется список инструментов, иногда вместо названий инструментов загружаются числа и пустые строки. Во-вторых, событие NewCandles не вызывается. что может быть не так?

вот картиночка http://www.sharemania.ru/0122592
Спасибо:
< 1 2 3  >

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

loading
clippy