Вопросы новичка в S# (Закрыта)
Atom
01.12.2010
ttt


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

Теги:


Спасибо: Николай_Флёров


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

Фотография
Дата: 22.02.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//в квике нет новой заявки
Спасибо:

a.dobryn

Фотография
Дата: 24.02.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)
{
..... //в итоге в том случае, если заявка уже исполнена и возникла ошибка, сюда не приходит
}
Спасибо:

a.dobryn

Фотография
Дата: 24.02.2011


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

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

skuvv

Фотография
Дата: 24.02.2011


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

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

Метод подходит если не планируется делать Replace заявки, после Replace IsCanceled=true
Спасибо:

a.dobryn

Фотография
Дата: 24.02.2011


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

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

Метод подходит если не планируется делать Replace заявки, после Replace IsCanceled=true


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

a.dobryn

Фотография
Дата: 24.02.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
Спасибо:

esper

Фотография
Дата: 25.02.2011


Mikhail Sukhov
esper

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


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

esper

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


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


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

Спасибо:

Mikhail Sukhov

Фотография
Дата: 25.02.2011


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


Не могу воспроизвести.
Спасибо:

esper

Фотография
Дата: 26.02.2011


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


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


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

freelancer

Фотография
Дата: 02.03.2011


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

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

loading
clippy