и снова GetTimeFrameCandles
Atom
08.11.2010


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

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


romanick

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

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

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


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

romanick

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


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

>>Экспорт тиков идет?
Не уверен. При нажатии кнопки "Экспорт DDE" процессор что-то делает примерно секунд 30, но вот этот код в том же Start_Click не выполняется.
Код
// начинаем вычислять скользящие средние
                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 пуст.
Спасибо:

Mikhail Sukhov

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


romanick
но вот этот код в том же Start_Click не выполняется.
Код
// начинаем вычислять скользящие средние
                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 пуст.


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

Код
var candles = File.ReadAllLines("LKOH_history.txt").Select(line =>


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

romanick

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


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

Mikhail Sukhov

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


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


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

romanick

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


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

Mikhail Sukhov

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


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


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

romanick

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


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

Mikhail Sukhov

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


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


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

romanick

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


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

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

loading
clippy