Здравствуйте. Благодарю за заботу о пользователях библиотеки. Я года три назад проходил у вас обучение, собрал себе роботов, которые мне хорошо поработали около года, потом у меня была пауза в торговле, после которой я не мог их подключить, поменялся квик, поменялась библиотека, пытался тогда на новой версии собрать то-же самое, но что-то не получилось нормально наладить закачку с финама и сращивание исторических свечей с данными из квика и я это дело оставил. Сейчас как раз вновь занялся роботами и вот с такой проблемой столкнулся. Не могу вывести на график свечи для визуального контроля, может это баг, может я что не так делаю.
// Конструктор
public WilliamsWindow(Connector _connector, Security _security, Portfolio _portfolio)
{
InitializeComponent();
_candleManager = new CandleManager(_connector);
TimeFrame = TimeSpan.FromHours(1);
_candleSeries = new CandleSeries(typeof(TimeFrameCandle), _security, TimeFrame);
_candleManager.Processing += (series, candle) =>
{
if (candle.State == CandleStates.Finished)
{
var values = new Dictionary<string, object>();
values.Add("Candle", candle);
OnPainted(values);
}
};
}
//Инициализация окна графика при загрузке главного окна
private void Window_Loaded(object sender, RoutedEventArgs e)
{
InitChart();
}
private void InitChart()
{
//создаем окно с графиком свечек
_chartWindow = new ChartWindow();
//создаем область на графике
_area = new ChartArea();
//добавляем область на график
_chartWindow.Chart.Areas.Add(_area);
//создаем элемент свечи
_candlesElem = new ChartCandleElement();
//добавляем элемент в область вывода графика
_area.Elements.Add(_candlesElem);
}
//Рисование
private void OnPainted(Dictionary<string, object> dictionary)
{
var chartElements = new Dictionary<IChartElement, object>();
Candle candle = (Candle)dictionary["Candle"];
if (candle.State == CandleStates.Finished)
{
//добавляем свечки и график индикатора в словарь
chartElements.Add(_candlesElem, candle);
}
if (chartElements.Count > 0)
{
_chartWindow.Chart.Draw(candle.OpenTime, (Dictionary<IChartElement, object>)chartElements);
}
}
//Кнопка старт
private void StartButtonClick(object sender, RoutedEventArgs e)
{
_candleManager.Start(_candleSeries);
}
//Вызов-скрытие окна графика
private void ChartWindowButtonClick(object sender, RoutedEventArgs e)
{
if (_chartWindow.IsVisible)
{
_chartWindow.Hide();
}
else
{
_chartWindow.Show();
}
}
}
}
Студия в списке ошибок пишет предупреждение, что метод Draw устарел, нужно использовать метод Draw.
Предупреждение 1 "StockSharp.Xaml.Charting.ChartHelper.Draw(StockSharp.Xaml.Charting.IChart, System.DateTimeOffset, System.Collections.Generic.IDictionary<StockSharp.Xaml.Charting.IChartElement,object>)" является устаревшим: "Use the Draw method instead."
Во время открытия окна с графиком выпадает ошибка на строке: <chart:Chart x:Name="Chart"/>
<chart:Chart x:Name="Chart"/>
В окне ошибки:
"System.Windows.Markup.XamlParseException" в PresentationFramework.dll
Дополнительные сведения: "Вызов конструктора для типа "StockSharp.Xaml.Charting.Chart", удовлетворяющего указанным ограничениям привязки, привел к выдаче исключения.": номер строки "7" и позиция в строке "10".
При запуске не из студии, а напрямую файла exe на том же месте тоже все виснет. Возможно, это не баг, может я сам что-то не так делаю, если подскажете - очень поможете.
Кроме того, хотел спросить. Мне для работы нужны минимум 50 последних часовых свечей, раньше я качал историю с финама и сращивал с данными из терминала, квик,
как я понимаю, строил последние свечи из таблицы сделок, то-есть только то что было после последнего вечернего клиринга, теперь же я пробовал выводить свечи с квика в дебаг и он выдает свечи за несколько дней. Получается квик изменился и теперь для моих целей история с финама не нужна. Я правильно понял или что-то у меня не так подгружалось? Действительно с квика теперь качаются свечи не только за последний день?
И ещё вопрос. Возможно ли подключать поддержку по скайпу на срок менее месяца, на день или хотя-бы неделю. Просто для того, чтоб задать пару вопросов, оплачивать целый месяц дороговато кажется.
Благодарю за помощь.