выставление стоп заявок
Atom Ответить
09.02.2011


Пытаюсь зарегистрировать стоп заявку


public void NewOrder(Order order)
{
if (order == null)
throw new ArgumentNullException("order");
order.Portfolio = (Portfolio)this.Portfolios.SelectedValue;

this._trader.RegisterOrder(order);
}


мне выдает

Вызывающий поток не может получить доступ к данному объекту, так как владельцем этого объекта является другой поток.


Теги:


Спасибо:




12 Ответов
Alexander

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


mr leng Перейти
Пытаюсь зарегистрировать стоп заявку


public void NewOrder(Order order)
{
if (order == null)
throw new ArgumentNullException("order");
order.Portfolio = (Portfolio)this.Portfolios.SelectedValue;

this._trader.RegisterOrder(order);
}


мне выдает

Вызывающий поток не может получить доступ к данному объекту, так как владельцем этого объекта является другой поток.




Всё правильно пишет.
Значит NewOrder работает в другом потоке чем был создан this.Portfolios.
Поэтому доступ к объекту this.Portfolios.SelectedValue невозможен
Спасибо:

Greene-nsk

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


mr leng Перейти
Пытаюсь зарегистрировать стоп заявку


public void NewOrder(Order order)
{
if (order == null)
throw new ArgumentNullException("order");
order.Portfolio = (Portfolio)this.Portfolios.SelectedValue;

this._trader.RegisterOrder(order);
}


мне выдает

Вызывающий поток не может получить доступ к данному объекту, так как владельцем этого объекта является другой поток.



Используйте Dispatcher и Invoke, или this.GuiAsync(Action), которую Михаил написал - можно в примерах посмотреть.
Спасибо: mr leng

mr leng

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


спасибо)
Автор топика
Спасибо:

mr leng

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


еще такой вопросик возник))) насколько я понял id в стоп-заявке не возвращается, но есть TransactionId, но по TransactionId не получается отменить стоп-заявку(
как можно отменить конкретную стоп-заявку или узнать что именно она исполнилась?
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 10.02.2011
Ответить


mr leng Перейти
еще такой вопросик возник))) насколько я понял id в стоп-заявке не возвращается, но есть TransactionId, но по TransactionId не получается отменить стоп-заявку(
как можно отменить конкретную стоп-заявку или узнать что именно она исполнилась?


В примере Sample для стоп заявок ID появляется?
Спасибо:

mr leng

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


нет)
но там же мы сами ручками выбираем ордер который снимем
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 10.02.2011
Ответить


mr leng Перейти
нет)


Таблица стоп заявок довольно сложная. Думаю колонку какую забыли добавить.

mr leng Перейти

но там же мы сами ручками выбираем ордер который снимем


А дальше пример как Квику говорит что снять? Вот ту, третьей с верху?
Спасибо:

mr leng

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


)))))
var order = this.SelectedOrder;
this.CancelOrder.IsEnabled = order != null && order.State == OrderStates.Active;


я пробую снять заявку таким образом
var or = base.Trader.Orders.First(o => o.Id == _id);
base.Trader.CancelOrder(or);

на что получаю ответ что последовательность не содержит соответствующий элемент хотя заявка уже зарегистрированна
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 10.02.2011
Ответить


mr leng Перейти
)))))
var order = this.SelectedOrder;
this.CancelOrder.IsEnabled = order != null && order.State == OrderStates.Active;


я пробую снять заявку таким образом
var or = base.Trader.Orders.First(o => o.Id == _id);
base.Trader.CancelOrder(or);

на что получаю ответ что последовательность не содержит соответствующий элемент хотя заявка уже зарегистрированна


Дык, это значит, что по _id нет такой заявки. Может она еще не пришла, может сам _id неправильный. Запустите отладчик и посмотрите, что за значение и какие есть заявки?
Спасибо:

mr leng

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


на обычные ордера id получается сразу а на стоп-ордера null
насколько понимаю надо через StopOrdersFailed проверять регистрацию заявки и оттуда брать id??
Автор топика
Спасибо:

Greene-nsk

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


mr leng Перейти
на обычные ордера id получается сразу а на стоп-ордера null
насколько понимаю надо через StopOrdersFailed проверять регистрацию заявки и оттуда брать id??


StopOrdersFailed возникает , когда заявка не может быть выставлена, например. Тогда ее и не будет в ITrader.Orders.
А для обычных заявок Вы где _id берете? Там же и для стоп ордеров берите.
Спасибо:

mr leng

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


Для обычных заявок сразу после регистрации заявки получаю id
но почему-то с стоп-заявкой так не проходит

MainWindow.Instance.NewOrder(stopOrder);
_id = stopOrder.Id;
_ids = stopOrder.TransactionId;

получаю таким образом, но id всегда пустой
а ids через раз(
Автор топика
Спасибо:


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

loading
clippy