← Zurück

Отрисовка индикаторов.

Добрый день! Пытаюсь вывести на график простую скользящую среднюю. Делаю все как написано тут: http://doc.stocksharp.ru/html/b8e71f65-00e3-41f7-af6e-69bf38a2c5bb.htm Скользящая отрисовывается не корректно. Почему так происходит? Есть ли пример с отрисовкой индикатора на графике?

Kommentare (8)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

Support
Support

Что значит некорректно?

Support
Support

Ясно, свой код скопируйте и пришлите...

Константин
Константин Autor

Отредактировал по быстрому чтоб проще читалось. В работе не изменилось ничего.


using System;
using System.ComponentModel;
using System.Linq;
using System.Windows;
using Ecng.Common;
using Ecng.Xaml;
using StockSharp.Algo.Candles;
using StockSharp.Algo.Indicators;
using StockSharp.BusinessEntities;
using StockSharp.Messages;
using StockSharp.Quik;
using StockSharp.Xaml.Charting;

namespace Chart
{
    /// <summary>
    /// Логика взаимодействия для MainWindow.xaml
    /// </summary>
    public partial class MainWindow
    {
        private CandleManager _candleManager;
        private CandleSeries _candleSeries;
        private WindowChart _windowChart;
        private ChartArea _area;
        private ChartCandleElement _candleElement;
        private ChartIndicatorElement _smaElement;
        private readonly QuikTrader _trader;


        public MainWindow()
        {
            InitializeComponent();

            _trader = new QuikTrader(@"C:\Program Files\QUIK-Junior\info.exe");
            _trader.NewSecurities += security => this.GuiAsync(() =>
            {
                SesurityComboBox.ItemsSource = _trader.Securities;
            });
            _trader.Connect();

        }
        protected override void OnClosing(CancelEventArgs e)
        {
            if (!_trader.IsNull())
                _trader.Dispose();
            base.OnClosing(e);
        }
        private SimpleMovingAverage _sma = new SimpleMovingAverage() { Length = 10 };

        private void ShowChartClick(object sender, RoutedEventArgs e)
        {
            _windowChart = new WindowChart();
            _windowChart.Chart.IsAutoRange = true;

            _area = new ChartArea();
            _area.YAxises.First().AutoRange = true;
            _windowChart.Chart.Areas.Add(_area);

            _candleElement = new ChartCandleElement();
            _area.Elements.Add(_candleElement);

            _smaElement = new ChartIndicatorElement()
            {
                Title = "SMA",
            };
            _area.Elements.Add(_smaElement);

            _candleSeries = new CandleSeries(typeof(TimeFrameCandle), (Security) SesurityComboBox.SelectedItem, TimeSpan.FromMinutes(1));
            _candleManager = new CandleManager(_trader);
            _candleManager.Processing += (series, candle) => this.GuiAsync((() =>
            {
                if (CandleStates.Finished == candle.State)
                {
                    var msaValue = _sma.Process(candle);

                    var data = new ChartDrawData();

                    data.Group(candle.OpenTime).
                    Add(_candleElement, candle).
                    Add(_smaElement, msaValue);

                    _windowChart.Chart.Draw(data);
                }
            }));

            _candleSeries.BuildCandlesMode = BuildCandlesModes.Build;
            _candleManager.Start(_candleSeries);
            _windowChart.Show();
        }
    }

}


Support
Support

Вроде все правильно... Я ваш код проверю и отвечу...

Support
Support

Во вложении код мувинга, который номально график строит..

Константин
Константин Autor

Здравствуйте. Архив пустой, хоть и размер 43 Kb. Проверьте пожалуйста архив. Возможно у меня архиватор глючит.

Support
Support

Неправда, скачал, все распаковалось..

Константин
Константин Autor

Winrar не хотел показывать содержимое почему то. Установил 7zip и распаковал.