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


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

<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);

}
}
}

Теги:


Спасибо:




4 Ответов
Иван З.

Фотография
Курсы Автор статей Благотворитель
Дата: 04.01.2016
Ответить


Вам вот эти примеры помогут https://github.com/Stock...e/master/Samples/Testing
Спасибо: Mikhail Sukhov

dron3333

Фотография
Дата: 06.01.2016
Ответить


Спасибо, посмотрю...
Автор топика
Спасибо:

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

Фотография
Курсы
Дата: 08.01.2016
Ответить


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

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

dron3333

Фотография
Дата: 13.01.2016
Ответить


Спасибо, тоже посмотрю...
Автор топика
Спасибо:


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy