и снова GetTimeFrameCandles


и снова GetTimeFrameCandles
Atom
11/8/2010


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

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

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

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

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

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

Версия StockSharp 2.5.1

Tags:


Thanks:


< 1 2 3  >
Mikhail Sukhov

Avatar
Date: 11/9/2010
Reply


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


CandleManager.NewCandles
Thanks:

Alexander

Avatar
Date: 11/9/2010
Reply


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



я вот так делаю в стратегиях:
Code
_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;
}
...
}
Thanks:

romanick

Avatar
Date: 11/9/2010
Reply


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

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

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


Code
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 свечей которые были ДО старта робота. Нужно это для инициализации индикатора.
Как быть?
Thanks:

Alexander

Avatar
Date: 11/9/2010
Reply


romanick

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


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

romanick

Avatar
Date: 11/9/2010
Reply


Alexander
romanick

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


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


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

Mikhail Sukhov

Avatar
Date: 11/9/2010
Reply


romanick

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


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

Mikhail Sukhov

Avatar
Date: 11/9/2010
Reply


romanick


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


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

Alexander

Avatar
Date: 11/9/2010
Reply


Mikhail Sukhov
romanick

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


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



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

Mikhail Sukhov

Avatar
Date: 11/9/2010
Reply


Alexander

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


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

sinc

Avatar
Date: 11/9/2010
Reply


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

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

Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy