Подгрузка данных в индикатор
Atom Ответить
22.01.2014


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

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

Теги:


Спасибо:




6 Ответов
Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 23.01.2014
Ответить


Гуглите Прогрев стратегии
Спасибо:

kesot

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


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

kesot

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


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

Иван З.

Фотография
Курсы Автор статей Благотворитель
Дата: 24.01.2014
Ответить


Посмотрите вот этот код в 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.
А если смотреть документацию https://www.stocksharp.ru/doc/ так там есть "Инициализация самой стратегии и заполнение его историческими данными: "
На форуме если искать то тоже найдете ответ.
Спасибо:

vsnoopy83

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


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

kesot

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


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


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

loading
clippy