Здравствуйте!
Очень понравились компоненты OrderGrid и TradeGrid!
Подскажите, каким образом я могу изменить там цвет выделен бая или
села и каким образом туда можно добавить или удалить какой нибудь из
столбцов?
Спасибо!
Создать свой собственный контрол. Те, что входят в S# такого не умеют.
И я пока не думаю их развивать. Фактически, они появились благодаря
тому, что они потребовались в нескольких примерах. Вот код OrderGird:
///
/// Визуальный контрол-таблица, отображающая заявки (коллекцию
объектов класса ).
///
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,
Спасибо. А может быть исходник этого компонента сможете выложить?
Впервые сталкиваюсь с созданием компонентов в шарпе,потому исходник
компонента очень поможет в разборе ситуации....
Эта ошибка возникла из за моей ошибки: робот начинает открывать очень
большое количество ордеров(это мой баг), соответственно в таблице "мои
сделки" очень много строк и из за этого возникает данная ошибка. Вот
код моей вредоносной процедуры(не исправленной)
Эту процедуру делал для закрытия ордеров к определенному времени, она
вызывается на каждом тике после заданного времени. И косяк здесь в
том, что пока робот открывает рыночный ордер, противоположный тому,
что сейчас есть в рынке, эта процедура заново вызывается и открывается
еще один противоположный и таким образом получается очень много
сделок, привод зависает, а когда заново его включаю и начинаю делать
дде вывод, то появляется вышеописанная ошибка.
Она же, я полагаю может появиться если просто будет очень много сделок
и сделаем заново вывод по дде.
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);
Я правильно понял, что ошибка появляется не только в процессе работы
(продолжительной или не совсем), а даже тогда, когда Вы перезапустили
робота (вот тут уточняю, робота или ДДЕ) и сразу же получили ошибку?
Насчет большого объема заявок - не думаю. Таблица всех сделок содержит
такое количество заявок, что никакому роботу не создать такое
количество. И ничего, у все экспортируется на раз. Тем более, что при
перезапуске ДДЕ сделки, которые уже вызывались через событие
NewTrades, не будут более вызываться.
Ошибка вернулась)
В таблице "мои сделки" 50 ордеров, в таблице "Заявки" 80 ордеров. 23
стоп заявки
Включаю экспорт дде, экспортируются только стоп заявки, остальное
пусто.
Причем пробовал как своего робота, так и Ваши примеры..результат один.
Всяческие перезагрузки тоже результата не дали.
评论 (16)
登录 或 创建账户, 登录或注册以发表评论
Создать свой собственный контрол. Те, что входят в S# такого не умеют. И я пока не думаю их развивать. Фактически, они появились благодаря тому, что они потребовались в нескольких примерах. Вот код OrderGird:
EcngXaml:GridViewSort.PropertyName="Balance"> <GridViewColumn.CellTemplate>
<TextBlock Text="" TextAlignment="Right" /
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();
}
SelectionChangedEventArgs e) { this.OrderSelected.SafeInvoke(this); } }
Спасибо. А может быть исходник этого компонента сможете выложить? Впервые сталкиваюсь с созданием компонентов в шарпе,потому исходник компонента очень поможет в разборе ситуации....
Хотя уже не надо, разобрался. Спасибо
А это и был исходник.
Теперь вот какая ошибка появилась, которая возникает при дде экспорте данных если имеется много ордеров
Необработанное исключение типа "System.StackOverflowException" произошло в Ecng.Xaml.dll
Подскажите, в чем может быть дело?
Теперь возниклает вот какая проблема Когда много ордеров имею, то выскакивает вот эта ошибка при включении дде экспорта:
Необработанное исключение типа "System.StackOverflowException" произошло в Ecng.Xaml.dll
Подскажите, где копать?
Судя по всему, переполнение стека (много вызовов). А что сделали? Можете локализовать и послать исходники с багой?
Эта ошибка возникла из за моей ошибки: робот начинает открывать очень большое количество ордеров(это мой баг), соответственно в таблице "мои сделки" очень много строк и из за этого возникает данная ошибка. Вот код моей вредоносной процедуры(не исправленной) Эту процедуру делал для закрытия ордеров к определенному времени, она вызывается на каждом тике после заданного времени. И косяк здесь в том, что пока робот открывает рыночный ордер, противоположный тому, что сейчас есть в рынке, эта процедура заново вызывается и открывается еще один противоположный и таким образом получается очень много сделок, привод зависает, а когда заново его включаю и начинаю делать дде вывод, то появляется вышеописанная ошибка. Она же, я полагаю может появиться если просто будет очень много сделок и сделаем заново вывод по дде.
private void CloseAllOrd() {
CancelOrder(ord); } for (int i = this.StopOrders.Count() - 1; i >= 0; i--) { Order ord = this.StopOrders; if (ord.State == OrderStates.Active) CancelOrder(ord); }
x.Volume; if (x.Direction == OrderDirections.Sell) count -= x.Volume; }
secur.MinStepSize, Direction = OrderDirections.Sell, Type = OrderTypes.Limit, }; this.Trader.RegisterOrder(order); ВремяОтмены = DateTime.Now; } if (count < 0) {
secur.MinStepSize, Direction = OrderDirections.Buy, Type = OrderTypes.Limit, }; this.Trader.RegisterOrder(order);
Я правильно понял, что ошибка появляется не только в процессе работы (продолжительной или не совсем), а даже тогда, когда Вы перезапустили робота (вот тут уточняю, робота или ДДЕ) и сразу же получили ошибку?
Насчет большого объема заявок - не думаю. Таблица всех сделок содержит такое количество заявок, что никакому роботу не создать такое количество. И ничего, у все экспортируется на раз. Тем более, что при перезапуске ДДЕ сделки, которые уже вызывались через событие NewTrades, не будут более вызываться.
Да, совершенно верно. Ошибка появлялась даже если я полностью перезагружал робота и даже квик. И даже комп)
Ошибка вернулась) В таблице "мои сделки" 50 ордеров, в таблице "Заявки" 80 ордеров. 23 стоп заявки Включаю экспорт дде, экспортируются только стоп заявки, остальное пусто. Причем пробовал как своего робота, так и Ваши примеры..результат один. Всяческие перезагрузки тоже результата не дали.
Так может это просто потому, что в новой версии поменялся формат таблиц Квика? Вы сейчас на какой версии?
Сейчас пробую все на 1.6 до 1.7 пока ничего не обновлял...
Забыл добавить, никаких ошибок квик и робот не выкидывают Там где начинаем дде вывод сделал так
try {
сервер"); }
Никаких ошибок не возникает, мессадж бокс не выскакивает..
QuikTrader.DdeError что пишет?
Не успел вчера проверить... будем ждать следующего раза)