← Voltar

Подгрузка данных в индикатор

При тестировании столкнулся с проблемой: когда начинаю обрабатывать свечи и добавляю их в какой либо индикатор, пусть будет SMA, через метод process - в нем нет прошлых свечей. Откуд их взять чтобы добавить туда еще до старта. Свечи прошлых дней, или сессий, если я вдруг перезагрузил прогу? Кстати в примере тестирования SMA на исторических данных этот косяк тоже присутствует и первые 10 свечей обе средние идут вровень. И не смотря на это в конструкторе есть тщетная попытка выяснить кто из них ниже _isShortLessThenLong = ShortSma.GetCurrentValue() < LongSma.GetCurrentValue();

Собоственно как бы туда залить данные из прошлого? Откуда? Неужели необходимо вести базу ручками и загружать оттуда все до текущего момента? Может существует более простая реализация?

Este tópico foi útil?

Compartilhar tópico

Comentários (6)

Entrar ou Criar conta, Faça login ou cadastre-se para deixar um comentário

Mikhail Sukhov
Mikhail Sukhov

Гуглите Прогрев стратегии

kesot
kesot Autor

интересная терминология, что то ничего не нарыл. хоть общую идею подскажите, чем заполнять индикаторы перед стартом стратегии?

kesot
kesot Autor

зачем тему то в курилку кинули? чтобы ее вообще никто никогда не увидел? хоть бы в общий раздел кинули.

Иван З.
Иван З.

Посмотрите вот этот код в SampleSMA

				IEnumerable<Candle> candles = CultureInfo.InvariantCulture.DoInCulture(() => File.ReadAllLines("LKOH_history.txt").Select(line =>
				{
					var parts = line.Split(',');
					var time = (parts[0] + parts[1]).ToDateTime("yyyyMMddHHmmss");
					return (Candle)new TimeFrameCandle
					{
						OpenPrice = parts[2].To<decimal>(),
						HighPrice = parts[3].To<decimal>(),
						LowPrice = parts[4].To<decimal>(),
						ClosePrice = parts[5].To<decimal>(),
						TimeFrame = _timeFrame,
						OpenTime = time,
						CloseTime = time + _timeFrame,
						TotalVolume = parts[6].To<decimal>(),
						Security = _lkoh,
						State = CandleStates.Finished,
					};
				}).ToArray());

				var lastCandleTime = default(DateTime);

				// начинаем вычислять скользящие средние
				foreach (var candle in candles)
				{
					ProcessCandle(candle);
					lastCandleTime = candle.OpenTime;
				}

вот как раз здесь идет наполнение свечами, только свечи берутся из LKOH_history.txt. А если смотреть документацию http://www.stocksharp.com/doc/ так там есть "Инициализация самой стратегии и заполнение его историческими данными: " На форуме если искать то тоже найдете ответ.

vsnoopy83
vsnoopy83

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

kesot
kesot Autor

Ну то есть в итоге все равно получается, что нужно сохранять каждый раз все свечи и сделки, и загружать перед стартом. Просто думал может быть есть какой то метод чтобы загрузить от брокера хистори, как это происходит в терминалах, ведь когда открываешь какой-нибудь график в том же Transaq - он рисует любой промежуток, а не с того момента как ты подключился. Точно нет ничего подобного?