Я не могу сказать что я очень тщательно искал ответ на свой вопрос, но всёж в силу своих возможностей потратил не один час )
Не люблю задавать вопросы не найдя предварительно решения (возможно и корявого) )
Вопрос в общем то у меня был простой, как котировки из обычного текстового файла закинуть, либо в bin формат гидры, либо напрямую получить из них CandleSeries
Вот что-то сделал. По крайней мере оно работает...
Код
private void ConvertRoutine()
{
TimeSpan timeFrame = TimeSpan.FromMinutes(5);
CandleManager cm = new CandleManager();
Security sec = new Security
{
Id = "EUR5@EUR",
Code = "EUR5",
Name = "EURUSD",
MinStepSize = 0.0001M,
ExchangeBoard = ExchangeBoard.Test,
};
CandleSeries cs = new CandleSeries(typeof(TimeFrameCandle), sec, timeFrame);
cm.Start(cs, StartDate, EndDate);
cm.Container.CandlesKeepTime = EndDate - StartDate;
foreach (OHLC candle in candlesList)
{
if(candle.Date<StartDate || candle.Date>EndDate) continue;
Candle newC = new TimeFrameCandle();
newC.ClosePrice = candle.Close;
newC.CloseTime = candle.Date;
newC.CloseVolume = candle.Volume;
newC.HighPrice = candle.High;
newC.HighTime = candle.Date;
newC.HighVolume = candle.Volume;
newC.LowPrice = candle.Low;
newC.LowTime = candle.Date;
newC.LowVolume = candle.Volume;
newC.OpenPrice = candle.Open;
newC.OpenTime = candle.Date;
newC.OpenVolume = candle.Volume;
newC.Security = sec;
newC.Arg = timeFrame;
newC.RelativeVolume = 0;
newC.Series = cs;
newC.TotalPrice = candle.Close;
newC.TotalVolume = candle.Volume;
newC.State = CandleStates.Finished;
cm.Container.AddCandle(cs, newC);
}
var storage = new StorageRegistry();
var candleStorage =
storage.GetCandleStorage<TimeFrameCandle, TimeSpan>(sec, timeFrame);
candleStorage.Save(cs.GetCandles<TimeFrameCandle>());
}
Здесь candlesList это массив объектов
Код
public class OHLC
{
public DateTime Date { get; set; }
public decimal Open { get; set; }
public decimal High { get; set; }
public decimal Low { get; set; }
public decimal Close { get; set; }
public int Volume { get; set; }
}
Его мы получаем считывая текстовой файл
Ccылка на простенький конвертер с подобным кодом
Скрины-инструкцииКодИ собственно вопросы:
- как то же самое сделать адекватным образом? :)
- кроме тогоЕсли просто прописать в References dllки
Ecng.Common, Ecng.ComponentModel, Ecng.Serialization, StockSharp.Algo,
StockSharp.BusinessEntities, StockSharp.Logging
То при выполнении candleStorage.Save(cs.GetCandles<TimeFrameCandle>());
вылезает следующая ошибка:
Инициализатор типа "Ecng.Reflection.Emit.AssemblyHolder" выдал исключение.
Подробнее об ошибке по
ссылке, чтобы не захламлять пост
Ссылка на версию программы с ошибкой
Если же заменить StockSharp.Algo.dll в References на исходники - проект StockSharp.Algo, то всё работает
Более того, если после этого удалить этот проект и опять поставить StockSharp.Algo.dll в References, то всё равно всё работает. Видимо что-то связанное с assembly - а в этой теме я не силён )
Спасибо тем, кто смог осилить этот пост ))