и снова 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

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


romanick: ODE0� Т.е. я пытаюсь получить 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