и снова GetTimeFrameCandles

и снова GetTimeFrameCandles
Atom
11/8/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


Tags:


Thanks:


1 2 3  >
Mikhail Sukhov

Avatar
Date: 11/8/2010
Reply


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

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

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

Thanks:

romanick

Avatar
Date: 11/9/2010
Reply


_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 пуст.

Thanks:

Mikhail Sukhov

Avatar
Date: 11/9/2010
Reply


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 =>


Значит нет истории. Обновляйте с Финама.
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