← Zurück

Как отобразить данные на графике из хранилища

Всем привет! Столкнулся с проблемой: как отобразить данные на графике из хранилища? Сначала генерирую сделки, потом записываю в хранилище, достаю, а дальше не могу понять как делать. Как отобразить тиковые или минутные графики? Подскажите кто знает. Вот код


<Window x:Class="StorageData.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:charting="http://schemas.stocksharp.com/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <charting:Chart x:Name="Chart" Height="300" Width ="475"/>
    </Grid>
</Window>


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

using StockSharp.BusinessEntities;
using StockSharp.Algo;
using StockSharp.Quik;
using Ecng.Common;
using StockSharp.Localization;
using StockSharp.Messages;
using StockSharp.Algo.Storages;
using StockSharp.Xaml.Charting;
using StockSharp.Algo.Candles;
using StockSharp.Algo.Indicators;
//using Ecng.Xaml;
//using Ecng.Collections;
//using System.Net;
//using Ookii.Dialogs.Wpf;


namespace StorageData
{
    /// <summary>
    /// Логика взаимодействия для MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            //int dfg = 2;
            //int ddf = dfg;

            var security = new Security
            {
                Id = "AAPL@NASDAQ",
                PriceStep = 0.1m,
                Decimals = 1,
            };



            var trades = new List<Trade>();

            // генерируем произвольные сделки
            for (var i = 1 - (1); i <= 100 - (1); i++)
            {
                var t = new Trade
                {
                    Time = DateTime.Today + TimeSpan.FromMinutes(i),
                    Id = i + (1),
                    Security = security,
                    Volume = RandomGen.GetInt(1, 10),
                    Price = RandomGen.GetInt(1, 100) * security.PriceStep ?? 1m + 99
                };

                trades.Add(t);
            }

            var storage = new StorageRegistry();

            var tradeStorage = storage.GetTradeStorage(security);

            tradeStorage.Save(trades);


            var loadedTrades = tradeStorage.Load(DateTime.Today, DateTime.Today + TimeSpan.FromMinutes(1000));


            //Console.WriteLine("1");
            foreach (var trade in loadedTrades)
            {
                Console.WriteLine("{0} {1} {2} {3}", trade.Id, trade.Time, trade.Volume, trade.Price);
            }
            //Console.WriteLine("2");






            ChartArea _candlesArea = new ChartArea();
            //ChartArea _indicatorsArea = new ChartArea();

            Chart.Areas.Add(_candlesArea);
            //Chart.Areas.Add(_indicatorsArea);


            //Chart.Draw(loadedTrades);
           
        }
    }
}

War dieses Thema hilfreich?

Thema teilen

Kommentare (4)

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

Иван З.
Иван З.

Вам вот эти примеры помогут https://github.com/StockSharp/StockSharp/tree/master/Samples/Testing

Mikhail Sukhov
dron3333
dron3333 Autor

Спасибо, посмотрю...

Сергей Гаврилов

В документации посмотрите раздел "Склеивание свечек, история + реал-тайм", там показано как создавать TradeStorageCandleBuilderSource. Для работы с историей в конструктор канлменеджера коннектор можете не передавать..

Если используете готовые свечи из хранилища, то прото задайте для свойства CandleManager.StorageRegistry ссылку на хранилище.

Mikhail Sukhov
dron3333
dron3333 Autor

Спасибо, тоже посмотрю...