Чтение и вывод сделок из архива Гидры

Чтение и вывод сделок из архива Гидры


Здравствуйте! Я изучаю C# и библиотеку S#, до этого имел дело лишь с Бейсиком и Паскалем в пределах университетского курса. Для самообучения решил написать программу, которая берёт из архива Гидры котировки ценной бумаги и выводит их в таблицу. Проще говоря, решил сделать программу-аналог окна Гидры, которое в исходниках называется "TradesWindow.xaml". В процессе написаня я столкнулся с двумя трудностями: 1)Привязку данных к GridViewColumn удаётся осуществить только с помощью вставки кода DisplayMemberBinding="" в окно редактора XAML. А как сделать это с помощью средств Visual Studio (в разделе DataContext пусто)? 2)При отладке компилятор пишет: Ошибка 2 Требуется определение типа или пространства имен, либо признак конца файла Ошибка 3 Элемент "storage" не существует в текущем контексте. Ошибка 4 Элемент "security" не существует в текущем контексте. Ошибка 1 Требуется "}"

Вот исходный код:


namespace Sdelki
{
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Windows;
    using System.Xml.Linq;
    using System.Windows.Forms;

    using Ecng.Common;
    using Ecng.Interop;
    using Ecng.Serialization;
    
    using StockSharp.BusinessEntities;
    using StockSharp.Algo.Storages;
   
    using Microsoft.Win32;
    using MessageBox = Microsoft.Windows.Controls.MessageBox;

    public partial class MainWindow
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        //Указываем путь к базе данных
        private void _Fail_Click(object sender, RoutedEventArgs e)
        {
            var dlg = new FolderBrowserDialog();

            if (!_Baza.Text.IsEmpty())
                dlg.SelectedPath = _Baza.Text;

            if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                _Baza.Text = dlg.SelectedPath;
            }
        }

        //Выводим сделки в таблицу
        private void _Sdelki(object sender, RoutedEventArgs e)
        {

            //Проверяем, указан ли путь к базе данных
            if (_Baza.Text.IsEmpty() || !Directory.Exists(_Baza.Text))
            {
                MessageBox.Show(this, "Неправильный путь.");
                return;
            }

            // Создаем инструмент, который будем выводить в таблицу
            var security = new Security
            {
                Id = "RIU9@RTS",
                Code = "RIU9",
                Name = "RTS-9.09",
                MinStepSize = 5,
                MinStepPrice = 2,
                Exchange = Exchange.Test,
            };

            // Создаём хранилище, через которое будет производиться доступ к тиковой 
            // и котировочной базе данных
            var storage = new TradingStorage(new InMemoryStorage())
            {
                BasePath = _Baza.Text
            };

          //Ошибка 1   
          var tradeStorage = storage.GetTradeStorage(security);

            //Выводим сделки в таблицу
          private void FindedTrades_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
            {

            //Ошибка 3 и Ошибка 4  
            FindedTrades.ItemsSource = storage.GetTradeStorage(security, _Baza.Text)
                      .Load();  
            }
        }
    }
// Ошибка 2
} 

Я понимаю, что у профессиональных программистов мои вопросы вызовут улыбку [biggrin] , ибо для них тут нет сложностей. Но я бьюсь над этим второй день и чего только не перепробовал, но увы и ах... Подозреваю, что собака порылась в закрытых полях и свойствам для их чтения. Подскажите, в чём моя ошибка? И скажите пожалуйста, как вставлять код в сообщение так, чтобы он выглядел как в окне редактора Visual Studio?


Tags:


Thanks:


Mikhail Sukhov

Avatar
Date: 5/19/2012
Reply


Доктор Сальватор: Я понимаю, что у профессиональных программистов мои вопросы вызовут улыбку [biggrin]

Скорее усталость. Выделяйте код тегами. Старайтесь сделать свое сообщение привлекательным для ответов.

Thanks:

Moadip

Avatar
Date: 5/19/2012
Reply


Вот как простой пример.

CS


using System;
using System.Data;
using System.Windows;
using System.Windows.Forms;
using StockSharp.Algo.Storages;
using Ecng.Serialization;
using Ecng.Common;
using StockSharp.BusinessEntities;

namespace TradesTable
{
    public partial class MainWindow
    {
        public MainWindow()
        {
            InitializeComponent();
            StartDate.Value = DateTime.Today;
            EndDate.Value = DateTime.Today;
        }

        private void Load_Click(object sender, RoutedEventArgs e)
        {
			var security = new Security
			{
				Id = "RIM2@RTS", 
				Code = "RIM2",
				Name = "RTS-6.12",
				MinStepSize = 5,
				MinStepPrice = 3,
				Exchange = Exchange.Rts
			};

            var storage = new StorageRegistry(new InMemoryStorage());
            var tradeStorage = storage.GetTradeStorage(security, Path.Text);
            var reader = tradeStorage.CreateReader(StartDate.Value, EndDate.Value);

            var tradesTable = new DataTable("tradeTable");
            tradesTable.Columns.Add("Time");
            tradesTable.Columns.Add("Price");
            tradesTable.Columns.Add("Vol");
            tradesTable.Columns.Add("Direction");
            TradeGrid.ItemsSource = tradesTable.DefaultView;

            foreach (var trade in reader)
            {
                tradesTable.Rows.Add(trade.Time, trade.Price, trade.Volume, trade.OrderDirection);
            }
        }

        private void FindPath_Click(object sender, RoutedEventArgs e)
        {
            var dlg = new FolderBrowserDialog();

            if (!Path.Text.IsEmpty())
                dlg.SelectedPath = Path.Text;

            if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                Path.Text = dlg.SelectedPath;
            }
        }
    }
}

XAML


<Window x:Class="TradesTable.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
        Title="TradesTable" Height="407" Width="335" Topmost="True" WindowStartupLocation="CenterScreen">
    <Grid>
        <xctk:DateTimePicker Name="StartDate" Margin="0,23,0,0" Height="20" VerticalAlignment="Top" HorizontalAlignment="Left" Width="153" />
        <xctk:DateTimePicker Name="EndDate" Margin="0,23,1,0" Height="20" VerticalAlignment="Top" HorizontalAlignment="Right" Width="153" />
        <Button Content="Load" Height="23" Margin="0,44,1,0" Name="Load" VerticalAlignment="Top" Click="Load_Click" Focusable="False" />
        <DataGrid AutoGenerateColumns="true" Margin="0,73,1,0" Name="TradeGrid" />
        <TextBox Height="23" Name="Path" VerticalAlignment="Top" Margin="0,0,30,0" />
        <Button Content="..." Height="23" HorizontalAlignment="Right" Margin="0,-1,1,0" Name="FindPath" VerticalAlignment="Top" Width="23" Click="FindPath_Click" Focusable="False" />
    </Grid>
</Window>

А это насчет тегов

Thanks: Sergey Masyura Alexander Доктор Сальватор


Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy