Работа с OrderGrid и TradeGrid

Работа с OrderGrid и TradeGrid
Atom
1/31/2010
AndreiFX


Здравствуйте! Очень понравились компоненты OrderGrid и TradeGrid! Подскажите, каким образом я могу изменить там цвет выделен бая или села и каким образом туда можно добавить или удалить какой нибудь из столбцов? Спасибо!


Tags:


Thanks:


1 2  >
Mikhail Sukhov

Avatar
Date: 2/1/2010
Reply


Создать свой собственный контрол. Те, что входят в S# такого не умеют. И я пока не думаю их развивать. Фактически, они появились благодаря тому, что они потребовались в нескольких примерах. Вот код OrderGird:

<ListView.View> <GridViewColumn.CellTemplate> <TextBlock Text="" TextAlignment="Right" /

                                           </DataTemplate>
                                    </GridViewColumn.CellTemplate>
                            </GridViewColumn>
                            <GridViewColumn Width="45" Header="Баланс"

EcngXaml:GridViewSort.PropertyName="Balance"> <GridViewColumn.CellTemplate> <TextBlock Text="" TextAlignment="Right" /

                                           </DataTemplate>
                                    </GridViewColumn.CellTemplate>
                            </GridViewColumn>
                            <GridViewColumn Width="60" Header="Цена"

EcngXaml:GridViewSort.PropertyName="Price"> <GridViewColumn.CellTemplate> </GridViewColumn.CellTemplate> <GridViewColumn.CellTemplate> <DataTemplate.Triggers> </DataTemplate.Triggers> </GridViewColumn.CellTemplate> <GridViewColumn.CellTemplate> <DataTemplate.Triggers> </DataTemplate.Triggers> </GridViewColumn.CellTemplate> </ListView.View>

///

/// Визуальный контрол-таблица, отображающая заявки (коллекцию объектов класса ). /// public partial class OrderGrid { /// /// Создать объект класса . /// public OrderGrid() { this.Orders = new SynchronisedObservableList(); InitializeComponent(); }

           /// <summary>
            /// Коллекция заявок, которые необходимо отобразить.
            /// </summary>
            public IList<Order> Orders { get; private set; }

           /// <summary>
            /// Происходит при новом выделении заявки.
            /// </summary>
            public event EventHandler<EventArgs> OrderSelected;

           /// <summary>
            /// Выбранная заявка.
            /// </summary>
            public Order SelectedOrder
            {
                    get
                    {
                            return this.SelectedOrders.FirstOrDefault();
                    }
            }

           /// <summary>
            /// Выбранный заявки.
            /// </summary>
            public IEnumerable<Order> SelectedOrders
            {
                    get
                    {
                            return _orders.SelectedItems.Cast<Order>();
                    }
            }

           private void _orders_SelectionChanged(object sender,

SelectionChangedEventArgs e) { this.OrderSelected.SafeInvoke(this); } }

Thanks:

AndreiFX

Avatar
Date: 2/1/2010
Reply


Спасибо. А может быть исходник этого компонента сможете выложить? Впервые сталкиваюсь с созданием компонентов в шарпе,потому исходник компонента очень поможет в разборе ситуации....

Thanks:

AndreiFX

Avatar
Date: 2/2/2010
Reply


Хотя уже не надо, разобрался. Спасибо

Thanks:

Mikhail Sukhov

Avatar
Date: 2/2/2010
Reply


А это и был исходник.

Thanks:

AndreiFX

Avatar
Date: 2/23/2010
Reply


Теперь вот какая ошибка появилась, которая возникает при дде экспорте данных если имеется много ордеров

Необработанное исключение типа "System.StackOverflowException" произошло в Ecng.Xaml.dll

Подскажите, в чем может быть дело?

Thanks:

AndreiFX

Avatar
Date: 2/23/2010
Reply


Теперь возниклает вот какая проблема Когда много ордеров имею, то выскакивает вот эта ошибка при включении дде экспорта:

Необработанное исключение типа "System.StackOverflowException" произошло в Ecng.Xaml.dll

Подскажите, где копать?

Thanks:

Mikhail Sukhov

Avatar
Date: 2/25/2010
Reply


Судя по всему, переполнение стека (много вызовов). А что сделали? Можете локализовать и послать исходники с багой?

Thanks:

AndreiFX

Avatar
Date: 2/25/2010
Reply


Эта ошибка возникла из за моей ошибки: робот начинает открывать очень большое количество ордеров(это мой баг), соответственно в таблице "мои сделки" очень много строк и из за этого возникает данная ошибка. Вот код моей вредоносной процедуры(не исправленной) Эту процедуру делал для закрытия ордеров к определенному времени, она вызывается на каждом тике после заданного времени. И косяк здесь в том, что пока робот открывает рыночный ордер, противоположный тому, что сейчас есть в рынке, эта процедура заново вызывается и открывается еще один противоположный и таким образом получается очень много сделок, привод зависает, а когда заново его включаю и начинаю делать дде вывод, то появляется вышеописанная ошибка. Она же, я полагаю может появиться если просто будет очень много сделок и сделаем заново вывод по дде.

private void CloseAllOrd() {

           for (int i = Limits.Count() - 1; i >= 0; i--)
            {
                Order ord = Limits;
                if (ord.State == OrderStates.Active)

CancelOrder(ord); } for (int i = this.StopOrders.Count() - 1; i >= 0; i--) { Order ord = this.StopOrders; if (ord.State == OrderStates.Active) CancelOrder(ord); }

           count = 0;
            foreach (MyOrderss x in Trades)
            {
                if (x.Direction == OrderDirections.Buy) count +=

x.Volume; if (x.Direction == OrderDirections.Sell) count -= x.Volume; }

           if (count > 0)
            {
                var order = new Order
                {
                    Account = acc,
                    Volume = count,
                    Security = secur,
                    Price = secur.BestBid - otst *

secur.MinStepSize, Direction = OrderDirections.Sell, Type = OrderTypes.Limit, }; this.Trader.RegisterOrder(order); ВремяОтмены = DateTime.Now; } if (count < 0) {

               var order = new Order
                {
                    Account = acc,
                    Volume = -count,
                    Security = secur,
                    Price = secur.BestAsk + otst *

secur.MinStepSize, Direction = OrderDirections.Buy, Type = OrderTypes.Limit, }; this.Trader.RegisterOrder(order);

       }
    }
Thanks:

Mikhail Sukhov

Avatar
Date: 2/25/2010
Reply


Я правильно понял, что ошибка появляется не только в процессе работы (продолжительной или не совсем), а даже тогда, когда Вы перезапустили робота (вот тут уточняю, робота или ДДЕ) и сразу же получили ошибку?

Насчет большого объема заявок - не думаю. Таблица всех сделок содержит такое количество заявок, что никакому роботу не создать такое количество. И ничего, у все экспортируется на раз. Тем более, что при перезапуске ДДЕ сделки, которые уже вызывались через событие NewTrades, не будут более вызываться.

Thanks:

AndreiFX

Avatar
Date: 3/1/2010
Reply


Да, совершенно верно. Ошибка появлялась даже если я полностью перезагружал робота и даже квик. И даже комп)

Thanks:
1 2  >

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

loading
clippy