Страница 1 из 3

Как узнать количество отложников по инструменту?

Добавлено: 09 дек 2017, 11:46
Arteshka
Добрый день!!!
Подскажите, пожалуйста, как можно программно узнать количество выставленных отложных ордеров?
Спасибо!

Re: Как узнать количество отложников по инструменту?

Добавлено: 11 дек 2017, 12:06
oxi
1) Робот видит только свои заявки
2) Робот одновременно может выставить только одну активную заявку и одну стоповую
3) Количество активных заявок по роботу можно узнать так

var orders = GetActiveOrders();
var count = orders.Count;
ShowMessage(orders.Count);

for (int i = 0; i < count; i++)
ShowMessage(orders[i]);

Re: Как узнать количество отложников по инструменту?

Добавлено: 11 дек 2017, 12:15
evge
Дмитрий, в документации этого нет.
Будет ли она обновлена?

Re: Как узнать количество отложников по инструменту?

Добавлено: 11 дек 2017, 13:45
Arteshka
Спасибо огромное!!!
Пойду тестировать.

Re: Как узнать количество отложников по инструменту?

Добавлено: 11 дек 2017, 16:03
oxi
Будет.

Re: Как узнать количество отложников по инструменту?

Добавлено: 30 июн 2018, 20:04
MonteCristo
До сих пор не вижу в документации как получить информацию по активным ордерам.

Re: Как узнать количество отложников по инструменту?

Добавлено: 04 июл 2018, 15:33
oxi
Не обновили.

Функции работы с заявками
GetActiveOrders() – запрос списка активных заявок по роботу.
• OrderType – тип
• OrderDirection – направление
• Price - цена
• PriceAdditional – дополнительное значение цены (при BRS)
• Quantity – количество
• QuantityRest – оставшееся к покупке количество
• Sent – отправлино / неотправлено
• OperationState - статус
• AvailableActions – название действия (команды)
• AvailableSuperActions – название сигнала
• NumEDocument – номер

Код: Выделить всё

var orders = GetActiveOrders();
var count = orders.Count;
for (int i = 0;  i < count; i++)
{
   ShowMessage( String.Format( " OrderType = {0} OrderDirection = {1} Price = {2} PriceAdditional =         {3} Quantity = {4} QuantityRest = {5} Sent = {6} OperationState = {7} AvailableActions = {8} AvailableSuperActions = {9} NumEDocument = {10}",
orders[i].OrderType, orders[i].OrderDirection, orders[i].Price,orders[i].PriceAdditional,
orders[i].Quantity, orders[i].QuantityRest, orders[i].Sent, orders[i].OperationState, orders[i].AvailableActions, orders[i].AvailableSuperActions, orders[i].NumEDocument));
}

Получим следующий результат

OrderType = LMT
OrderDirection = Buy
Price = 22596
PriceAdditional – нет значения для LMT
Quantity = 1
QuantityRest = 1
Sent = True
OperationState = OrderAccepted
AvailableActions = EnterLongLimit
AvailableSuperActions = EnterLong
NumEDocument = 2876533381

Можно в ShowMessage передать саму заявку

Код: Выделить всё

{
   ShowMessage(orders[i]);
}


Результат будет следующего вида

Id=1 NumEDocument=2876533381 EnterLongLimit (LMT Buy 10, rest 10) Price=148,92 Status=OrderAccepted

Re: Как узнать количество отложников по инструменту?

Добавлено: 17 июл 2019, 13:51
Balalayka
Добрый день!
Чтобы не создавать новые темы, хотел бы в этой ветке задать вопрос.

Может ли кто-то показать, как на практике использовать данные функции GetActiveOrders(), например, мне нужно узнать есть ли открытый Стоп по роботу и самое главное как использовать эту информацию в коде робота. Допустим, если стопа нет, то выставить его.
Еще может глупый вопрос, но обязательно ли выводить данные GetActiveOrders() через ShowMessage?

Re: Как узнать количество отложников по инструменту?

Добавлено: 19 июл 2019, 13:12
Balalayka
Друзья, уточню вопрос, как получить значение (или несколько значений) функции GetActiveOrders() в переменную
Например, как получить в переменную значение Quantity или OrderDirection?

Заранее спасибо за помощь!

Re: Как узнать количество отложников по инструменту?

Добавлено: 19 июл 2019, 14:35
evge
Так выше Дмитрий (oxi) это и описал.
Ну там чуть изменить и будет в переменных.

Код: Выделить всё

var orders = GetActiveOrders();
var count = orders.Count;
for (int i = 0;  i < count; i++)
{
var Quantity = orders[i].Quantity;
var OrderDirection = orders[i].OrderDirection;
}