Вопросы новичка в S#

Вопросы новичка в S# (Locked)
Atom
12/1/2010
ttt


Добрый день. Очень понравилась идея использования Вашей библиотеки для реализации роботов. Подскажите, пожалуйста:

  1. Как идентифицировать заявку? //например, выставляю заявку buy RIZ0 4 контракта по цене 160500. Каким образом далее смогу ее отслеживать? Вариант с использованием таблицы сделок не подходит - необходимо реализовать контроль исполнения заявок пользуясь исключительно информацией из таблицы заявок. С языком C# только начал разбираться, возможно поэтому не нашел в представленных в дистрибутиве S# проектах примеров контроля состояния заявки по ее уникальному признаку.
  2. Верно ли я понимаю суть работы с Квиком: для реализации автономного робота необходимо организовать два потока на C#:
  • первый: выполняет функции получения данных из Квика через DDE сервер (используя библиотеку S#);
  • второй: непосредственно реализует алгоритм выставления и снятия заявок. Можно ли обойтись одним потоком?


<< < 8 9 10 11 12  > >>
skuvv

Avatar
Date: 2/22/2011


Опять про Replace. Попробывал пару вариантов и безуспешно. Верхний вариант с отслеживанием нового ордера (по TransactionId), нижние отслеживание старого ордера


//Ecng.Trading.BusinessEntities.Order _NewOrder = _trader.ReRegisterOrder(Order, newPrice, (int)newQty);
21.02.2011 22:16:59 [Sending New Order] GZH1 Price: 19745 Qty: 1
21.02.2011 22:17:00 [parse_order] 79897973
21.02.2011 22:17:00 [_trader_OrdersChanged] order status Active
21.02.2011 22:17:00 [_trader_OrdersChanged] Thread: EventDispatcher thread #заявки
21.02.2011 22:17:00 [_trader_OrdersChanged] order Accepted Done
21.02.2011 22:17:00 [parse_order] 79897973
21.02.2011 22:17:00 [_trader_OrdersChanged] order status Active
21.02.2011 22:17:00 [_trader_OrdersChanged] Thread: EventDispatcher thread #заявки
21.02.2011 22:17:00 [parse_order] 79897973
21.02.2011 22:17:00 [_trader_OrdersChanged] order status Active
21.02.2011 22:17:31 [Replace] 19715 x 1
21.02.2011 22:17:31 [parse_order] 79897974
21.02.2011 22:17:31 [_trader_OrdersChanged] order status NULL
21.02.2011 22:17:31 [_trader_OrdersChanged] Thread: null
21.02.2011 22:17:32 [_trader_OrdersChanged] Thread: EventDispatcher thread #заявки
21.02.2011 22:17:32 [_trader_OrdersChanged] Thread: EventDispatcher thread #заявки
21.02.2011 22:17:32 [parse_order] 79897974
21.02.2011 22:17:32 [_trader_OrdersChanged] order status NULL
->в квике новая заявка без transaction id

//_trader.ReRegisterOrder(Order,  newPrice, (int)newQty);
21.02.2011 23:29:53 [Sending New Order] GZH1 Price: 19799 Qty: 1
21.02.2011 23:29:53 [parse_order] 84292206
21.02.2011 23:29:54 [_trader_OrdersChanged] order status Active
21.02.2011 23:29:54 [_trader_OrdersChanged] order Accepted Done
21.02.2011 23:29:55 [_trader_OrdersChanged] Thread: EventDispatcher thread #заявки
21.02.2011 23:29:55 [parse_order] 84292206
21.02.2011 23:29:55 [_trader_OrdersChanged] order status Active
21.02.2011 23:29:55 [_trader_OrdersChanged] Thread: EventDispatcher thread #заявки
21.02.2011 23:29:55 [parse_order] 84292206
21.02.2011 23:29:55 [_trader_OrdersChanged] order status Active
21.02.2011 23:29:59 [Replace] 19759 x 1
21.02.2011 23:30:00 [_trader_OrdersChanged] Thread: null
21.02.2011 23:30:00 [parse_order] 84292206
21.02.2011 23:30:00 [_trader_OrdersChanged] order status Done
21.02.2011 23:30:00 [_trader_OrdersChanged] order Replaced Done
21.02.2011 23:30:01 [_trader_OrdersChanged] Thread: EventDispatcher thread #заявки
21.02.2011 23:30:01 [parse_order] 84292206
21.02.2011 23:30:01 [_trader_OrdersChanged] order status Done
21.02.2011 23:30:01 [_trader_OrdersChanged] order Replaced Done
21.02.2011 23:30:01 [_trader_OrdersChanged] Thread: EventDispatcher thread #заявки
21.02.2011 23:32:15 [Replace] 19752 x 1
->нет events//в квике новая заявка без transaction id

_trader.ReRegisterOrder(OrderList.ElementAt(index).Key, _order);
21.02.2011 23:48:30 [Sending New Order] GZH1 Price: 19809 Qty: 1
21.02.2011 23:48:31 [parse_order] 85085851
21.02.2011 23:48:31 [_trader_OrdersChanged] order status Active
21.02.2011 23:48:31 [_trader_OrdersChanged] order Accepted Done
21.02.2011 23:48:31 [_trader_OrdersChanged] Thread: EventDispatcher thread #заявки
21.02.2011 23:48:32 [parse_order] 85085851
21.02.2011 23:48:32 [_trader_OrdersChanged] order status Active
21.02.2011 23:48:32 [_trader_OrdersChanged] Thread: EventDispatcher thread #заявки
21.02.2011 23:48:32 [parse_order] 85085851
21.02.2011 23:48:32 [_trader_OrdersChanged] order status Active
21.02.2011 23:48:36 [Replace] 19803 x 1
->нет events//в квике нет новой заявки

Thanks:

a.dobryn

Avatar
Date: 2/24/2011


Mikhail Sukhov:

D_Alex: а что произойдет, если пробовать снять заявку, у которой статус Done? кроме сообщения о невозможности сделать это. Как можно отловить подобное событие?

ITrader.OrdersFailed

глупый вопрос, а после этого события и выдачи messagebox, функция, в которой находилась строка CancelOrder продолжает работать дальше?

написано так:

 MainWindow.Instance.CancelOrder(MainWindow.Instance._ordersWindow.Orders[orderNum]);
                                                            
if (MainWindow.Instance._ordersWindow.Orders[orderNum].IsCanceled() == false)                               
{
    .....  //в итоге в том случае, если заявка уже исполнена и возникла ошибка, сюда не приходит
}
Thanks:

a.dobryn

Avatar
Date: 2/24/2011


и еще вопрос - можно как-то узнать, что заявка была именно снята, а не исполнена, и наоборот?

upd: ой, я подобный вопрос уже спрашивала. Надо использовать метод TraderHelper..::.IsCanceled

Thanks:

skuvv

Avatar
Date: 2/24/2011


D_Alex: и еще вопрос - можно как-то узнать, что заявка была именно снята, а не исполнена, и наоборот?

upd: ой, я подобный вопрос уже спрашивала. Надо использовать метод TraderHelper..::.IsCanceled Метод подходит если не планируется делать Replace заявки, после Replace IsCanceled=true

Thanks:

a.dobryn

Avatar
Date: 2/24/2011


skuvv:

D_Alex: и еще вопрос - можно как-то узнать, что заявка была именно снята, а не исполнена, и наоборот?

upd: ой, я подобный вопрос уже спрашивала. Надо использовать метод TraderHelper..::.IsCanceled Метод подходит если не планируется делать Replace заявки, после Replace IsCanceled=true

не планирую =) спасибо за информацию =)

Thanks:

a.dobryn

Avatar
Date: 2/24/2011


D_Alex:

Mikhail Sukhov:

D_Alex: а что произойдет, если пробовать снять заявку, у которой статус Done? кроме сообщения о невозможности сделать это. Как можно отловить подобное событие?

ITrader.OrdersFailed

глупый вопрос, а после этого события и выдачи messagebox, функция, в которой находилась строка CancelOrder продолжает работать дальше?

написано так:

MainWindow.Instance.CancelOrder(MainWindow.Instance._ordersWindow.Orders[orderNum]);

if (MainWindow.Instance._ordersWindow.Orders[orderNum].IsCanceled() == false)
{ ..... //в итоге в том случае, если заявка уже исполнена и возникла ошибка, сюда не приходит }


проблема решена, надо использовать try{} catch(), так как "невозможно снять заявку" это exception
Thanks:

esper

Avatar
Date: 2/25/2011


Mikhail Sukhov:

esper: Вариац. маржа - ?

Да, это недоделка. Было желание вычислять текущее значение денег на ФОРТС, но не потом сдался. Надо это куда-то деть. Предлагаю в Portfolio.Leverage.

esper: Акт. покупка - ? Акт. продажа - ?

Их сумма записывается в Position.BlockedValue

С этим можно сказать разобрались. А вот еще такой вопрос, есть портфель по деривативам, подписываюсь на новую запись в таблице и на изменение данных, событие изменения данных возникает до события новой записи, это нормальная ситуация?

Thanks:

Mikhail Sukhov

Avatar
Date: 2/25/2011


esper: А вот еще такой вопрос, есть портфель по деривативам, подписываюсь на новую запись в таблице и на изменение данных, событие изменения данных возникает до события новой записи, это нормальная ситуация?

Не могу воспроизвести.

Thanks:

esper

Avatar
Date: 2/26/2011


Mikhail Sukhov:

esper: А вот еще такой вопрос, есть портфель по деривативам, подписываюсь на новую запись в таблице и на изменение данных, событие изменения данных возникает до события новой записи, это нормальная ситуация?

Не могу воспроизвести.

У меня тоже не всегда удается повторить эту ситуацию, если удасться найти что приводит к ней, то отпишусь здесь.

Thanks:

freelancer

Avatar
Date: 3/2/2011


Здравствуйте. Все цены инструмента (лучшая покупка, продажа и т.д.) у меня равны нулю почему-то (событие SecuritiesChanged). И даже в примере "Sample". Почему так ? Версия - последняя

Thanks:
<< < 8 9 10 11 12  > >>

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

loading
clippy