← 戻る

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

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

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

このトピックは参考になりましたか?

トピックを共有

コメント (6)

ログイン または アカウントを作成, コメントを残すにはログインまたは新規登録してください

Mikhail Sukhov
Mikhail Sukhov

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

kesot
kesot 著者

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

kesot
kesot 著者

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

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

Посмотрите вот этот код в 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 著者

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