и снова GetTimeFrameCandles

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


Что-то не понятное всё-таки с методом 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/8/2010
Reply


romanick

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

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

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


_candleManager.RegisterCandles вызывается? Экспорт тиков идет?
Thanks:

romanick

Avatar
Date: 11/9/2010
Reply


>>_candleManager.RegisterCandles вызывается?
Повторюсь, это Ваш пример, - SampleSMA. Конечно вызывается в методе Start_Click перед стартом стратегии.

>>Экспорт тиков идет?
Не уверен. При нажатии кнопки "Экспорт DDE" процессор что-то делает примерно секунд 30, но вот этот код в том же Start_Click не выполняется.
Code
// начинаем вычислять скользящие средние
                foreach (var candle in candles)
                {
                    _strategy.LongSma.Add(candle);
                    _strategy.ShortSma.Add(candle);

                    // если все скользящие сформировались, то начинаем их отрисовывать
                    if (index >= _strategy.LongSma.Length)
                        DrawSmaLines(candle.Time);

                    index++;

                    _lastCandleTime = candle.Time;
                }

т.е. candles пуст.
Thanks:

Mikhail Sukhov

Avatar
Date: 11/9/2010
Reply


romanick
но вот этот код в том же Start_Click не выполняется.
Code
// начинаем вычислять скользящие средние
                foreach (var candle in candles)
                {
                    _strategy.LongSma.Add(candle);
                    _strategy.ShortSma.Add(candle);

                    // если все скользящие сформировались, то начинаем их отрисовывать
                    if (index >= _strategy.LongSma.Length)
                        DrawSmaLines(candle.Time);

                    index++;

                    _lastCandleTime = candle.Time;
                }

т.е. candles пуст.


В коде выше написано следующее:

Code
var candles = File.ReadAllLines("LKOH_history.txt").Select(line =>


Значит нет истории. Обновляйте с Финама.
Thanks:

romanick

Avatar
Date: 11/9/2010
Reply


>>Значит нет истории. Обновляйте с Финама.
Вот этот момент мне не понятен... Разве история не формируется непосредственно в процессе торговли? И разве при вызове _trader.StartExport() она не загружается в _сandleManager?
Thanks:

Mikhail Sukhov

Avatar
Date: 11/9/2010
Reply


romanick
>>Значит нет истории. Обновляйте с Финама.
Вот этот момент мне не понятен... Разве история не формируется непосредственно в процессе торговли? И разве при вызове _trader.StartExport() она не загружается в _сandleManager?


Смотря как делать. В примере SampleSMA история берется из текстового файла. Мы сейчас говорим о примере или о вообще?
Thanks:

romanick

Avatar
Date: 11/9/2010
Reply


Наверное всё же "вообще". Моя задача - получить 14 последних баров. Разве вызвать StartExport() и зарегистрировать TimeFrame недостаточно? Ещё надо что-то делать?
Thanks:

Mikhail Sukhov

Avatar
Date: 11/9/2010
Reply


romanick
Наверное всё же "вообще". Моя задача - получить 14 последних баров. Разве вызвать StartExport() и зарегистрировать TimeFrame недостаточно? Ещё надо что-то делать?


Если 14 5-минуток то история не нужна. Тогда я не понимаю, зачем Вы привели тот кусок кода, который вам не нужен. Выкиньте его. Я пример скорее всего придется переделать, так как там много мест на историю завязано.
Thanks:

romanick

Avatar
Date: 11/9/2010
Reply


Да, с куском кода я действительно попал пальцем в небо. :)
>>Если 14 5-минуток то история не нужна.
А как же всё-таки получить их?
Thanks:

Mikhail Sukhov

Avatar
Date: 11/9/2010
Reply


romanick
Да, с куском кода я действительно попал пальцем в небо. :)
>>Если 14 5-минуток то история не нужна.
А как же всё-таки получить их?


Через _candleManager.GetTimeFrameCandles но только после того, как они построятся. А в реальном приложении нужно использовать _candleManager.NewCandles.
Thanks:

romanick

Avatar
Date: 11/9/2010
Reply


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

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

loading
clippy