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

Обсуждение, описание стратегий и роботов, идеи для стратегий
Balalayka
Сообщения: 38
Зарегистрирован: 21 сен 2018, 10:57
Благодарил (а): 2 раза
Поблагодарили: 3 раза

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

Непрочитанное сообщение Balalayka » 22 июл 2019, 15:01

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;
}


Евгений спасибо!
Теперь буду знать, что так можно :)
А подобная схема справедлива в отношении всех подобных функций? Например, GetFinInfo() GetPosition() ?

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

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

Непрочитанное сообщение evge » 22 июл 2019, 15:10

var position = GetPosition();
position.Price – учетная цена
position.LongPosition – позиция Long (положительная величина)
position.ShortPosition – позиция Short (положительная величина)
position.Position – позиция по инструменту (положительная – позиция long, отрицательная – short)

аналогично и в FinInfo();

GetFinInfo() – функция возврата информации по инструменту, используемому в стратегии
• Lot– Размер торгового лота, штук (аналог LotSize()). Тип int
• PriceStep – Текущая стоимость шага цены (аналог GetPriceStep()). Тип double
• PriceStepCost – Текущая стоимость шага цены. Тип double
• UpPrice – Верхний предельный уровень цены заявки. Тип double
• DownPrice – Нижний предельный уровень цены заявки. Тип double
• GtBuy – Гарантийные требования биржи для открытия длинной позиции, руб/шт. Тип double
• GtSell – Гарантийные требования биржи для открытия «короткой» позиции, руб/шт. Тип double

var I = GetFinInfo();
var UpPrice = I.UpPrice;
var DownPrice = I.DownPrice;
никогда такого не было и вот опять

Balalayka
Сообщения: 38
Зарегистрирован: 21 сен 2018, 10:57
Благодарил (а): 2 раза
Поблагодарили: 3 раза

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

Непрочитанное сообщение Balalayka » 23 июл 2019, 10:50

Евгений добрый день!

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

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

if ( (CurrentPosition() == 1) && (Quantity == 0) )
{                                                     
StopLoss(AverPrice() + P5 * GetPriceStep(), SignalPriceType.Price);
}


Имя Quantity отсутствует в контексте. Где допускаю ошибку?

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

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

Непрочитанное сообщение evge » 23 июл 2019, 12:05

Приветствую!

За циклом надо объявлять.
Переменную объявленную в цикле не будет видно за его пределами.

А вообще не понятен смысл такого способа.

В итоге в вашем Quantity будет значение из последнего ордера.

Какой смысл перебирать тогда в цикле?
никогда такого не было и вот опять

Balalayka
Сообщения: 38
Зарегистрирован: 21 сен 2018, 10:57
Благодарил (а): 2 раза
Поблагодарили: 3 раза

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

Непрочитанное сообщение Balalayka » 23 июл 2019, 13:18

evge писал(а):За циклом надо объявлять.
Переменную объявленную в цикле не будет видно за его пределами.


Понял

evge писал(а):
А вообще не понятен смысл такого способа.

В итоге в вашем Quantity будет значение из последнего ордера.

Какой смысл перебирать тогда в цикле?


Я честно говоря и не знаю нужен здесь цикл или нет :?:
Просто именно такой способ описан и в документации и ранее в теме.

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

Евгений, если не затруднит, покажите пример как сделать это оптимальным способом?

Balalayka
Сообщения: 38
Зарегистрирован: 21 сен 2018, 10:57
Благодарил (а): 2 раза
Поблагодарили: 3 раза

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

Непрочитанное сообщение Balalayka » 24 июл 2019, 09:09

evge писал(а):var position = GetPosition();
position.Price – учетная цена
position.LongPosition – позиция Long (положительная величина)
position.ShortPosition – позиция Short (положительная величина)
position.Position – позиция по инструменту (положительная – позиция long, отрицательная – short)

аналогично и в FinInfo();

GetFinInfo() – функция возврата информации по инструменту, используемому в стратегии
• Lot– Размер торгового лота, штук (аналог LotSize()). Тип int
• PriceStep – Текущая стоимость шага цены (аналог GetPriceStep()). Тип double
• PriceStepCost – Текущая стоимость шага цены. Тип double
• UpPrice – Верхний предельный уровень цены заявки. Тип double
• DownPrice – Нижний предельный уровень цены заявки. Тип double
• GtBuy – Гарантийные требования биржи для открытия длинной позиции, руб/шт. Тип double
• GtSell – Гарантийные требования биржи для открытия «короткой» позиции, руб/шт. Тип double

var I = GetFinInfo();
var UpPrice = I.UpPrice;
var DownPrice = I.DownPrice;


На основе вашего примера

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

var orders = GetActiveOrders();
var Quantity = orders.Quantity;


Не удалось найти метод расширения Quantity

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

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

Непрочитанное сообщение evge » 24 июл 2019, 11:34

var orders = GetActiveOrders();
var Quantity = orders[x].Quantity;

где x - индекс от 0 до orders.Count.
никогда такого не было и вот опять

Balalayka
Сообщения: 38
Зарегистрирован: 21 сен 2018, 10:57
Благодарил (а): 2 раза
Поблагодарили: 3 раза

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

Непрочитанное сообщение Balalayka » 24 июл 2019, 12:06

evge писал(а):var orders = GetActiveOrders();
var Quantity = orders[x].Quantity;

где x - индекс от 0 до orders.Count.


[x] - же нужно объявлять? Это будет х = 0 ? :|

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

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

Непрочитанное сообщение evge » 24 июл 2019, 12:12

x - индекс, может быть числом, может быть переменной, параметром :)
никогда такого не было и вот опять

Balalayka
Сообщения: 38
Зарегистрирован: 21 сен 2018, 10:57
Благодарил (а): 2 раза
Поблагодарили: 3 раза

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

Непрочитанное сообщение Balalayka » 24 июл 2019, 12:28

evge писал(а):x - индекс, может быть числом, может быть переменной, параметром :)


Тогда еще глупый вопрос разрешите
Если я объявляю [х] равным 1, что это будет значит в рамках вышеуказанного кода? т.е. какая логика воздействия на orders[x].Quantity;


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

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

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