Стратегии и роботы > Вопросы к Дмитрию (oxi) по EnterLongLimit ,CloseLongLimit

Обсуждение, описание стратегий и роботов, идеи для стратегий
vdm
Сообщения: 24
Зарегистрирован: 25 ноя 2016, 14:01
Благодарил (а): 10 раз
Поблагодарили: 2 раза

Вопросы к Дмитрию (oxi) по EnterLongLimit ,CloseLongLimit

Непрочитанное сообщение vdm » 21 янв 2018, 13:39

Уважаемый Дмитрий , подскажите пожалуйста , как поведет себя робот в следующих ситуациях

1. при выполнении 3 вызовов OnUpdate() выполнялась команда EnterLongLimit(1300,2) , вопрос в том , что мы получим в итоге ?
1. 3 лимитных заявки на покупку по 2 штук каждая
2. 1 заявку на 2 штуки
3. 1 заявку на 6 штук

2. Длинная позиция =6, при выполнении 3 вызовов OnUpdate() выполнялась команда CloseLongLimit(1400,2) , вопрос в том , что мы получим в итоге ?
1. 3 лимитных заявки на продажу по 2 штуки каждая
2. 1 заявку на 2 штуки
3. 1 заявку на 6 штук

Функция GetQuote() дает информацию только по лучшим котировкам на покупку и продажу. Есть ли какая то недокументированная возможность получить данные по всем котировкам в виде массива или коллекции ?

Вы давали информацию по функции GetActiveOrders() , которая возвращает коллекцию активных заявок. Можно ли как то получить из этой коллекции информацию по количеству и цене каждой заявки ?

vdm
Сообщения: 24
Зарегистрирован: 25 ноя 2016, 14:01
Благодарил (а): 10 раз
Поблагодарили: 2 раза

Re: Вопросы к Дмитрию (oxi) по EnterLongLimit ,CloseLongLimit

Непрочитанное сообщение vdm » 21 янв 2018, 13:48

Еще один вопросик по лимитам.
При создании заявки в АД я могу нажав кнопку рядом с количеством выбрать из выпадающего списка %Lim(от доступного лимита) , которая расчитает сколько штук я могу купить по инструменту с учетом моих рублевых активов а также ликвидных иструментов , которые есть в моих активах (с учетом их коэффициента риска) за вычетом всех активных заявок. Можно ли как то получить эту информацию в роботе ?

oxi
Сообщения: 160
Зарегистрирован: 20 сен 2016, 23:20
Благодарил (а): 11 раз
Поблагодарили: 65 раз

Re: Вопросы к Дмитрию (oxi) по EnterLongLimit ,CloseLongLimit

Непрочитанное сообщение oxi » 22 янв 2018, 19:16

ВАЖНО : Активная заявка на открытие/закрытие позиции у робота может быть только одна (не учитывая стоп).

ВОПРОС
1. при выполнении 3 вызовов OnUpdate() выполнялась команда EnterLongLimit(1300,2) , вопрос в том , что мы получим в итоге ?
1. 3 лимитных заявки на покупку по 2 штук каждая
2. 1 заявку на 2 штуки
3. 1 заявку на 6 штук

ОТВЕТ
Если заявки не исполняются, то будет одна заявка на 2 штуки
т.к. новая заявка снимаем текущую заявку (возможно со скорректированной ценой)


ВОПРОС
2. Длинная позиция =6, при выполнении 3 вызовов OnUpdate() выполнялась команда CloseLongLimit(1400,2) , вопрос в том , что мы получим в итоге ?
1. 3 лимитных заявки на продажу по 2 штуки каждая
2. 1 заявку на 2 штуки
3. 1 заявку на 6 штук

ОТВЕТ
Если заявки не исполняются, то будет одна заявка на 2 штуки
т.к. новая заявка снимаем текущую заявку (возможно со скорректированной ценой)

Судя по вопросам, возможно вы хотите реализовать сеточный алгоритм торговли?
В терминале Альфа-Директ4 данный алгоритм реализован в стратегии InvestGrid, доступной
Для скачивания в окне обновления.

ВОПРОС
Функция GetQuote() дает информацию только по лучшим котировкам на покупку и продажу. Есть ли какая то недокументированная возможность получить данные по всем котировкам в виде массива или коллекции ?

ОТВЕТ
Стакан ? Нет такой функции

ВОПРОС
Вы давали информацию по функции GetActiveOrders() , которая возвращает коллекцию активных заявок. Можно ли как то получить из этой коллекции информацию по количеству и цене каждой заявки ?

ОТВЕТ
В списке активных можно увидеть максимум 2 заявки (т.к. робот больше 2 заявок не может выставить): активная + стоп

oxi
Сообщения: 160
Зарегистрирован: 20 сен 2016, 23:20
Благодарил (а): 11 раз
Поблагодарили: 65 раз

Re: Вопросы к Дмитрию (oxi) по EnterLongLimit ,CloseLongLimit

Непрочитанное сообщение oxi » 22 янв 2018, 19:40

ВОПРОС
При создании заявки в АД я могу нажав кнопку рядом с количеством выбрать из выпадающего списка %Lim(от доступного лимита) , которая расчитает сколько штук я могу купить по инструменту с учетом моих рублевых активов а также ликвидных иструментов , которые есть в моих активах (с учетом их коэффициента риска) за вычетом всех активных заявок. Можно ли как то получить эту информацию в роботе ?

ОТВЕТ
Нет. Это отдельный запрос на сервер, он обрабатывается долго (и за один проход OnUpdate() не исполнится)

Есть функция, которая получает количество денег по портфелю (разделу)
var money = GetCurrencyPosition(RazdelGroupType.MICEX);
RazdelGroupType– тип рынка,
• MICEX – Рынок ценных бумаг
• FORTS – ФОРТС
• SELT – Валютный рынок

vdm
Сообщения: 24
Зарегистрирован: 25 ноя 2016, 14:01
Благодарил (а): 10 раз
Поблагодарили: 2 раза

Re: Вопросы к Дмитрию (oxi) по EnterLongLimit ,CloseLongLimit

Непрочитанное сообщение vdm » 22 янв 2018, 20:49

Спасибо за ответы
oxi писал(а):ВОПРОС
Вы давали информацию по функции GetActiveOrders() , которая возвращает коллекцию активных заявок. Можно ли как то получить из этой коллекции информацию по количеству и цене каждой заявки ?

ОТВЕТ
В списке активных можно увидеть максимум 2 заявки (т.к. робот больше 2 заявок не может выставить): активная + стоп


То что будет max 2 заявки , я понял
Поясню подробнее

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

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

Мне нужно по каждой заявке получить подробную информацию - цену , количество и тип (Buy,Sell)
Как получить цену я разобрался - orders[i].Price
Хотелось бы узнать в каких свойствах хранятся данные по количеству и типу заявки ?


oxi писал(а):ОТВЕТ
Стакан ? Нет такой функции


Задача стоит в автоматизации торговли на спреде низколиквидных инструментов (облигации , паевые фонды)
Дело в том , что заявки на покупку , продажу нужно выставлять не по лучшим ценам а сразу за маркетмэйкером. А его позиция как правило отстоит на несколько шагов от лучших цен.И без скана стакана ее никак не определить. Поэтому ,может учтете мое пожелание и в будущем добавите возможность получить доступ к стакану. Это не просто моя блажь а жизненная необходимость

oxi
Сообщения: 160
Зарегистрирован: 20 сен 2016, 23:20
Благодарил (а): 11 раз
Поблагодарили: 65 раз

Re: Вопросы к Дмитрию (oxi) по EnterLongLimit ,CloseLongLimit

Непрочитанное сообщение oxi » 23 янв 2018, 17:47

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

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

var orders = GetActiveOrders();
var count = orders.Count;
for (int i = 0;  i < count; i++)
{
ShowMessage( String.Format( " {0} {1} {2} {3} {4} {5} {6} {7} {8} {9}",
orders[i].OrderType,orders[i].OrderDirection,orders[i].Price,orders[i].PriceAdditional,
orders[i].Quantity,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
Sent = True
OperationState = OrderAccepted
AvailableActions = EnterLongLimit
AvailableSuperActions = EnterLong
NumEDocument = 2876533381

Аватара пользователя
evge
Администратор
Сообщения: 1654
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 64 раза
Поблагодарили: 305 раз
Контактная информация:

Re: Вопросы к Дмитрию (oxi) по EnterLongLimit ,CloseLongLimit

Непрочитанное сообщение evge » 23 янв 2018, 19:30

Хотелось бы эти и другие скрытые возможности в документацию :)
никогда такого не было и вот опять

vdm
Сообщения: 24
Зарегистрирован: 25 ноя 2016, 14:01
Благодарил (а): 10 раз
Поблагодарили: 2 раза

Re: Вопросы к Дмитрию (oxi) по EnterLongLimit ,CloseLongLimit

Непрочитанное сообщение vdm » 24 янв 2018, 11:04

oxi писал(а):Функции работы с заявками
GetActiveOrders() – запрос списка активных заявок по роботу.
Quantity - количество

Quantity - это , насколько я понял , первоначальное количество . А остаток заявки как то можно узнать ?


Вернуться в «Стратегии и роботы»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 13 гостей