Коллеги!
Никак не соображу в чем проблема, вот код (версия 4.1.4) :
security = new Security { Id = "GAZP@EQNE", MinStepSize = 0.01m, Exchange = Exchange.Micex };
List<Trade> trades = makeDealsFromHistory(edtPathToHistoryFile.Text);
foreach (var trade in trades)
{
trade.Security = security;
trade.OrderDirection = OrderDirections.Sell;
}
DateTime from = trades.Min(trade => trade.Time).AddDays(-1);
DateTime to = trades.Max(trade => trade.Time).AddDays(1);
var builderSource = new RawConvertableCandleBuilderSource<Trade>(security, from , to, trades);
CandleSeries series = new CandleSeries(typeof(RangeHLCandle), security, edtStockRange.Value);
CandleManager candleManager = new CandleManager();
candleManager.Sources.Add(new RangeHLCandleBuilder { Sources = { builderSource }});
candleManager.Start(series);
List<RangeHLCandle> candles1 = series.GetCandles<RangeHLCandle>().ToList();
chartMain.Series[0].Points.DataBind(candles1, String.Empty, "LowPrice,HighPrice,OpenPrice,ClosePrice",
"Tooltip = HighPrice");
}
}
Вроде все делаю как в мануале и как во многих ветках форума тут, однако свечи упорно не формируются, список candles1 - пустой. Дело даже не доходит до методов CreateCandle, UpdateCandle, IsCandleFinishedBeforeChange в самой реализации RangeHLCandleBuilder : CandleBuilder<RangeHLCandle> , в метод GetSupportedRanges один раз заходит, судя по всему из candleManager.Start(series);
Помогите кто чем может!
Kommentare (16)
Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen
Судя по коду вы пытаетесь прочитать сделки из txt файла, собрать из них свечки и вывести в чарт.
По пунктам:
makeDealsFromHistory - это я так понимаю класс который берет сделки из txt и делает из них Trade. Так может сразу брать тики которые сохранены гидрой?
DateTime from = trades.Min(trade => trade.Time).AddDays(-1); DateTime to = trades.Max(trade => trade.Time).AddDays(1);
Не понятен смысл этих строк. допустим есть сделки с 10 по 20 октября. Тогда в from будет 9 ноября а в to 21. Для чего?😳
По пунктам 1 и 2 - они родились уже в процессе отладки
2.Сделки в текстовом файле за 29 число, время не указано. Эти строки для того, чтобы гарантировано они попали в период времени.
Проблема в том, что "Дело даже не доходит до методов CreateCandle, UpdateCandle, IsCandleFinishedBeforeChange"
Попробую сейчас со стандартными свечками.
Я вот думаю - может в Trade я какое то значимое свойство пропускаю? Заполняю при создании Trade свойства Id, Price, Volume , перед созданием RawConvertableCandleBuilderSource<Trade> проставляю Security и OrderDirection. Security везде одинаковая
C RangeCandle тоже не катит. Ощущение, что до строителя свечей дело вообще не доходит
Пример сделок в txt
Класс для парсинга txt файла
Магия какая-то ,у меня все точно так же переделано, свечей- 0. У Вас какая версия стокшарпа? у меня 4.1.1
Одна из последних сборок 4.1.5
Ваш пример у меня работает, буду копать. Спасибо !
Твою ж мать ! :) Знаете в чем бага была? А моем файле у сделок время 00:00:00, вот и за этого видимо по ним свечки не строились. С одной стороны - у Exchage.Rts есть четко указанные интервалы, с другой - ну для RangeCandle какая на фиг разница :)
Михаил, это бага, фича или known issue?
Коллеги, осталось чуть чуть до полной победы разума над бездушной машиной :)
в событии проверки на то, закончена свечка или нет мне надо сверить время пришедшей сделки со временем предыдущей.
Делаю так:
IList<ICandleBuilderSourceValue> data = Container.GetValues(series, candle).ToList();
но в итоге в data пусто. С контейнерами я ничего не химичил,вот оба конструктора:
public RangeHLCandleBuilder()
Отцы-основатели, ну вы хоть помогите :)
Даже тут i получается 0. В чем секрет, никто не знает? Версия стокшарпа 4.1.4
Нашел секрет. Почему то по умолчанию свойство Container.ValuesKeepTime = 00:00:00. Хотя в документации Время хранения ICandleBuilderSourceValue в памяти. По-умолчанию равно 2-ум дням. Но заметил - если в конструкторе
public RangeHLCandleBuilder()
Спасибо, поправим.
Михаил, хочу обратить внимание,что при Container.ValuesKeepTime = 00:00:00 свечки порезвей строятся. Ну или мне показалось.